Ziel: telegraf soll sie in eine influxdb speichern.
Verwende MQTT und MQTT_GENERIC_BRIDGE damit ein Wandthermostat HM-TC-IT-WM-W-EU seine Werte versenden kann.
attr HM_418B2D_Climate mqttPublish measured-temp|desired-temp|humidity:topic={"fhem/$device"} measured-temp|desired-temp|humidity:qos=1 measured-temp|desired-temp|humidity:retain=0
Im mosquitto kommt das Topic und die Werte an aber ohne Bezug zum $name und eben nicht als json.
Wenn ich es um "json:expression={toJSON({name=>$name,value=>$value})}" ergänze ändert sich daran leider nichts.
Was ich gerne hätte wäre: fhem/HM_418B2D_Climate Message: {"measured-temp":"21.7"}
Was mache ich falsch? Vielen Dank im Voraus.
Zitat von: elo am 21 Januar 2020, 15:49:25
Wenn ich es um "json:expression={toJSON({name=>$name,value=>$value})}" ergänze ändert sich daran leider nichts.
In der commandref ist da immer ein "!" dabei. Würde die Erweiterung daher (ungetestet!) so gestalten:
.*!json:expression={toJSON({name=>$name,value=>$value})}
Nein, nicht "json:expression=..." sondern <reading>:expression. Also measured-temp|desired-temp|humidity:expression=... Oder gleich *:expression=...
Das "!" dient einem anderen Zweck: damit kann man mehrere regeln dem gleiche Reading zuordnen (z.B. ein Reading an zwei Topics senden). Alles, was nach dem ! kommt, dient nur der Unterscheidung, ist aber nicht Teil der Reading-Namen.
Perfekt, funktioniert! Vielen Dank!
attr HM_418B2D_Climate mqttPublish measured-temp|desired-temp|humidity:topic={"fhem/$device"} measured-temp|desired-temp|humidity:qos=1 measured-temp|desired-temp|humidity:retain=0 measured-temp|desired-temp|humidity:expression={toJSON({$name=>$value})}
fhem/HM_418B2D_Climate {"desired-temp":"22.5"}
fhem/HM_418B2D_Climate {"humidity":"43"}
fhem/HM_418B2D_Climate {"measured-temp":"21.8"}
Telegraf erwartet scheinbar, dass Zahlenwerte "float" nicht in Hochkommata "quoted" übergeben werden.
Darauf kann ich in fhem keinen Einfluss nehmen oder?
Na ja, es sollte gehen, die toJSON-Funktion manuell nachzubilden, ist ja nichts mehrdimensionales...
Ungetestet etwa in der Art:
expression={"{\"$name\":".$value."}"}
Kann sein, dass du die inneren Klammern auch noch escapen mußt.
Funktioniert wie beschrieben, finde die Daten jetzt in der influxdb. Vielen Dank!