Hallo,
ich hänge schon seit Stunden daran ohne eine Lösung zu finden und zwar möchte ich diesen json Ausdruck:
{"ZbReceived":{"0xB1D1":{"Device":"0xB1D1","Temperature":21,"Humidity":53.44,"Pressure":1015,"PressureScale":-1,"PressureScaledValue":10156,"SeaPressure":1015,"Endpoint":1,"LinkQuality":52}}}
kürzen sodass er hinterher so aussieht:
{"Temperature":21,"Humidity":53.44,"Pressure":1015,"PressureScale":-1,"PressureScaledValue":10156,"SeaPressure":1015,"Endpoint":1,"LinkQuality":52}
um hinterher mit epandJSON sauber die einzelne Readings zu erhalten.
Ich versuche zur Zeit das Problem mit einer DOIF Schleife zu lösen:
define TasmotaZigbeeSetDeviceReadings DOIF ([TasmotaZigbeeKoordinator:Sensor] =~ "0x0B1C")
(
({my $msg = ReadingsVal('TasmotaZigbeeKoordinator','Sensor','');; $msg =~ s/{"ZbReceived//;; fhem("setreading IkeaRemoteControl1 Message $msg")})
)
Die Anweisung $msg =~ s/{"ZbReceived//
scheitert offensichtlich an der "{". Ich habe alles versucht, gegooglet usw. aber einer Lösung bin ich leider nicht näher gekommen.
MMn. solltest du mit dieser Art Device besser auf MQTT2_DEVICE ausweichen und dem Tasmota auch eine SetOption verpassen, damit er für jede ZigBee-ID einen eigenen Topic-Pfad aufmacht. Bei MQTT2_DEVICE haben wir schon die Routinen (via attrTemplate), um mit zigbee2tasmota umzugehen. Just my2ct.
Ansonsten kannst du auch den Code aus den betreffenden attrTemplate "klauen" und für MQTT_DEVICE anpassen.
Danke für die Antwort. Ich habe mqtt2 überhapt zum ersten mal eingerichtet und den Tasmota2Zigbee Koordinator auf mqtt2 eingerichtet. Es hat soweit funktioniert und die Zigbee Devices werden angelegt.
Die Readings sind zb. "ZbReceived_0xB1D1_BatteryPercentage". Das war eigentlich der Grund warum ich mit dem Perl-Ausdruck und replace angefangen hatte. Ich wollte die Readings ohne "ZbReceived_0xB1D1_" haben, weil ich den teil als unflexibel erachte. Na ja ist jetzt nicht so tragisch. Immerhin habe ich jetzt eine gute Basis mit mqtt2 für Tasmota.
Es gibt passende attrTemplate dafür ;) , mir ist schon klar, dass das ohne Tricks drumrum komisch ist. Wiki konsultieren...
Wow! Tatsache! So einfach war die Lösung. Danke ;D