Hauptmenü

JSON an FHEM

Begonnen von wolwin, 25 September 2018, 16:02:12

Vorheriges Thema - Nächstes Thema

DS_Starter

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Hallo zusammen,

habe die JSON Zerlegung auf meinem Testsystem erfolgreich testen können.
Dazu habe ich auf meinem Prod.System ein Log2Syslog-Device im Maintenance-Mode als Sender angelegt und auf meinem Testsystem einen Collector.

Die RAW-Definition des Collectors:


defmod SyslogServer_BSD Log2Syslog
attr SyslogServer_BSD TLS 0
attr SyslogServer_BSD disable 0
attr SyslogServer_BSD makeEvent reading
attr SyslogServer_BSD parseProfile raw
attr SyslogServer_BSD port 7514
attr SyslogServer_BSD protocol TCP
attr SyslogServer_BSD rateCalcRerun 80
attr SyslogServer_BSD room DbLog
attr SyslogServer_BSD stateFormat state : Transfered_logs_per_minute
attr SyslogServer_BSD verbose 3


Dann habe ich noch ein expandJSON-Device angelegt mit dieser RAW-Definition:


defmod ej expandJSON .*SyslogServer_BSD.*:.*MSG_.*:.\{.*}
attr ej room DbLog


Mit dem Profil "parseProfile = raw" im Log2Syslog-Device wird der empfangene String im Reading "MSG_<Host>" angelegt. Der Regex im expandJSON-Device matcht auf dieses Reading.

Zum Test habe ich diesen Test-String über TCP an der Collector gesendet:


{   "markers": [     {       "name": "Rixos The Palm Dubai",       "position": [25.1212, 55.1535]    },     {       "name": "Shangri-La Hotel",       "location": [25.2084, 55.2719]     },     {       "name": "Grand Hyatt",       "location": [25.2285, 55.3273]     }   ] }


Das erfolgreich zerlegte JSON wird in einzelnen Readings im Ursprungsdevice (SyslogServer_BSD) abgelegt wie im anghängten Screenshot zu sehen. Klappt prima.

Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

wolwin

Zitat von: DS_Starter am 27 September 2018, 21:30:29
Hallo zusammen,
habe die JSON Zerlegung auf meinem Testsystem erfolgreich testen können.
Hallo Heiko,
habe Deine Konfiguration übernommen (beim TSL Parameter kam ein Fehler) - mit http://<IP>:<Port>?<JSON> oder http://<IP>:<Port>/fhem?<JSON> war ich nicht erfolgreich - was mache ich falsch?
Gruss
Wolfram

DS_Starter

Hallo Wolfram,

Mit Http(s) wird es wahrscheinlich auch nicht so einfach funktionieren.
In dem Fall brauchst du als Empfänger auch einen Webserver, mein Modul arbeitet direkt mit dem TCP/UDP-Stack.  Ich war der Hoffnung du könntest einfach tcp oder udp angeben um einen String zu senden, so wie es viele Netzwerkgeräte für Syslog-Ziele anbieten.
Wenn das ginge könntest du es so machen wie ich es beschrieben habe.

LG,
Heiko



Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

wolwin

Zitat von: DS_Starter am 30 September 2018, 21:38:49
Mit Http(s) wird es wahrscheinlich auch nicht so einfach funktionieren.
Hallo Heiko,
geht dann leider nicht so einfach - trotzdem Danke für die Unterstützung!!
Gruß
Wolfram

DS_Starter

Ja, schade. Aber du könntest nochmal die Idee mit HTTPSRV aufgreifen, die Cooltux weiter vorn erwähnt hatte. Vllt. dann der Ansatz den du weiter verfolgen könntest.

Grüße
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Tsturm

Hallo Wolfgang,
Hast Du mittlerweile eine stabile Lösung gefunden? Würde auch gerne den push vom Weatherman nutzen... Listing wäre klasse. Leider kann der WM kein MQTT direkt machen...
Viele Grüße - Timmo

Tsturm

Kurzes Update - Heiko hat sein Modul log2syslog so modifiziert, dass auch schlechte TCP Verbindungen abgefangen werden.

Mit Log2Syslog kann man dann im Raw-Modus die JSON-Message empfangen, dann über expandJSON oder Regex das Telegramm auswerten und weitermachen. Log2Syslog von Heiko (im Footer) nutzen, die Version (5.8.0), mit der das klappt, ist noch im Beta.

https://forum.fhem.de/index.php/topic,75426.msg959652.html#msg959652

VG Timmo