Hallo zusammen,
mit dem tool RTL_433 möchte ich über einen SDR DVB T Stick Sensoren auslesen und über mqtt dann an fhem übergeben.
Auf dem Raspberry läuft lokal mosquitto. Der MQTT String RTL_433/JSON MQTT wird in fhem auch gefunden.
rtl_433 -f 868290000 -M hires -M level -F json | mosquitto_pub -h 127.0.0.1 -i RTL_433 -l -t RTL_433/JSON
Die Daten kommen lt. log im Json Format für die unterschiedlichen verschieden Sensoren.
Bsp:
19.02.10 13:43:01 5: publish received for RTL_433/JSON, {"time" : "2019-02-10 13:43:01.224998", "brand" : "LaCrosse", "model" : "TX29-IT", "id" : 58, "battery" : "OK", "newbattery" : 0, "temperature_C" : 19.400, "humidity" : 51, "mic" : "CRC", "mod" : "FSK", "freq1" : 868.333, "freq2" : 868.218, "rssi" : -0.138, "snr" : 32.006, "noise" : -32.602}
2019.02.10 13:43:01 5: calling readingsSingleUpdate(Klima,,{"time" : "2019-02-10 13:43:01.224998", "brand" : "LaCrosse", "model" : "TX29-IT", "id" : 58, "battery" : "OK", "newbattery" : 0, "temperature_C" : 19.400, "humidity" : 51, "mic" : "CRC", "mod" : "FSK", "freq1" : 868.333, "freq2" : 868.218, "rssi" : -0.138, "snr" : 32.006, "noise" : -32.602},1)
2019.02.10 13:43:02 5: publish received for RTL_433/JSON, {"time" : "2019-02-10 13:43:01.754673", "brand" : "LaCrosse", "model" : "TX29-IT", "id" : 15, "battery" : "OK", "newbattery" : 0, "temperature_C" : 18.700, "humidity" : 58, "mic" : "CRC", "mod" : "FSK", "freq1" : 868.335, "freq2" : 868.222, "rssi" : -0.119, "snr" : 32.483, "noise" : -33.113}
2019.02.10 13:43:02 5: calling readingsSingleUpdate(Klima,,{"time" : "2019-02-10 13:43:01.754673", "brand" : "LaCrosse", "model" : "TX29-IT", "id" : 15, "battery" : "OK", "newbattery" : 0, "temperature_C" : 18.700, "humidity" : 58, "mic" : "CRC", "mod" : "FSK", "freq1" : 868.335, "freq2" : 868.222, "rssi" : -0.119, "snr" : 32.483, "noise" : -33.113},1)
2019.02.10 13:43:03 5: publish received for RTL_433/JSON, {"time" : "2019-02-10 13:43:02.814357", "brand" : "LaCrosse", "model" : "TX29-IT", "id" : 16, "battery" : "OK", "newbattery" : 0, "temperature_C" : 5.600, "humidity" : 91, "mic" : "CRC", "mod" : "FSK", "freq1" : 868.330, "freq2" : 868.230, "rssi" : -0.101, "snr" : 30.903, "noise" : -31.352}
2019.02.10 13:43:03 5: calling readingsSingleUpdate(Klima,,{"time" : "2019-02-10 13:43:02.814357", "brand" : "LaCrosse", "model" : "TX29-IT", "id" : 16, "battery" : "OK", "newbattery" : 0, "temperature_C" : 5.600, "humidity" : 91, "mic" : "CRC", "mod" : "FSK", "freq1" : 868.330, "freq2" : 868.230, "rssi" : -0.101, "snr" : 30.903, "noise" : -31.352},1)
2019.02.10 13:43:03 5: publish received for RTL_433/JSON, {"time" : "2019-02-10 13:43:02.945649", "brand" : "LaCrosse", "model" : "TX29-IT", "id" : 40, "battery" : "OK", "newbattery" : 0, "temperature_C" : 20.500, "humidity" : 51, "mic" : "CRC", "mod" : "FSK", "freq1" : 868.328, "freq2" : 868.220, "rssi" : -0.138, "snr" : 32.464, "noise" : -33.113}
2019.02.10 13:43:03 5: calling readingsSingleUpdate(Klima,,{"time" : "2019-02-10 13:43:02.945649", "brand" : "LaCrosse", "model" : "TX29-IT", "id" : 40, "battery" : "OK", "newbattery" : 0, "temperature_C" : 20.500, "humidity" : 51, "mic" : "CRC", "mod" : "FSK", "freq1" : 868.328, "freq2" : 868.220, "rssi" : -0.138, "snr" : 32.464, "noise" : -33.113},1)
2019.02.10 13:43:05 5: publish received for RTL_433/JSON, {"time" : "2019-02-10 13:43:05.051078", "brand" : "LaCrosse", "model" : "TX29-IT", "id" : 9, "battery" : "OK", "newbattery" : 0, "temperature_C" : 19.600, "humidity" : 55, "mic" : "CRC", "mod" : "FSK", "freq1" : 868.324, "freq2" : 868.212, "rssi" : -0.100, "snr" : 31.252, "noise" : -31.730}
..
Ziel ist eine Auswertung der Temperatur und Luftfeuchtigkeit der einzelnen Sensoren zu bekommen.
Leider komme ich hier nicht weiter und wäre über konkrete Vorschläge sehr dankbar.
Auch mit der command ref bin ich leider nicht so recht nicht weiter gekommen.
Ich habe es auch schon mit dem modul expandJSON vesucht, wobei mir nicht klar ist, wie ich es für diesen Fall konkret anlegen muss.
Könnt ihr mir sagen, wie ich an die einzelnen Sensordaten komme.
Internals:
CHANGED
FUUID 5c4d9869-f33f-2d42-8e3d-49efe7e8b86d08d3
IODev mosquitto
NAME Klima
NR 73
STATE incoming publish received
TYPE MQTT_DEVICE
READINGS:
2019-01-28 17:16:43 transmission-state incoming publish received
message_ids:
sets:
subscribe:
#
subscribeExpr:
^.*$
subscribeQos:
#
subscribeReadings:
RTL_433/JSON:
Attributes:
IODev mosquitto
autoSubscribeReadings #
room 9.9_MQTT
stateFormat transmission-state
subscribeReading_ RTL_433/JSON
verbose 5
Vielen Dank schon einmal.
Vorab: Willkommen im Forum.
Mit expandJSON kenne ich mich nicht aus, vielleicht tust du dich mit den MQTT2-Modulen ggf. leichter, die "können" JSON auch direkt.
Ein grundsätzliches Problem sehe ich allerdings in der Art und Weise, wie die JSON-Daten reinkommen: Es schient ja jeweils pro ID ein Datensatz zu sein, alles kommt am selben Ort an. Man müßte demnach erst die ID extrahieren und dann erst das eigentliche JSON so auspacken, dass das ganze entweder in einem eigenen Device landet (Dummy) oder eben in dem MQTT(2)-Device mit einem passenden ID-Präfix ausgepackt wird. Schau dir dazu mal "json2nameValue()" in fhem.pl an.
Viel Erfolg!
Beta-User
Sorry, für die späte Rückmeldung und vielen Dank für die Hinweise. Ich werde mir das einmal näher ansehen.