FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Medel am 22 September 2023, 19:40:52

Titel: Seltsames Verhalten JSONMAP
Beitrag von: Medel am 22 September 2023, 19:40:52
Hallo,

habe folgende JSONMAP erstellt:
ZbReceived_0x3D33_LinkQuality:LinkQuality
ZbReceived_0x3D33_CurrentPositionLiftPercentage:Position
ZbReceived_0x3D33_TuyaMovingState:TuyaMovingState
ZbReceived_0x3D33_TuyaCalibration:TuyaCalibration
ZbReceived_0x3D33_TuyaCalibrationTime:TuyaCalibrationTime

wenn ich die Zeile direkt mit einem Zeilenwechsel (Enter) abschließe wird wird jede zweite nicht ersetzt und das Original nicht aktualisiert
wenn ich die Zeile mit einem Leerzeichen mit anschließendem Zeilenwechsel (Enter) abschließe wird wird jede zweite nicht ersetzt, das Original wird aktualisiert

oder gibt es eine andere Möglichkeit "ZbReceived_0x3D33_" wegzubekommen.
Es wurde gewünscht dass ich meine zwei Beiträge verlinke, hier der Link wie ich das Device aus einem Json bekomme:
https://forum.fhem.de/index.php?topic=135069.0
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: frober am 23 September 2023, 08:22:47
Hast du die JSONMAP in einem externen Editor (Windows) erstellt oder direkt die Config bearbeitet?
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: Medel am 23 September 2023, 08:42:34
Direkt in der Fhem Oberfläche
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: frober am 23 September 2023, 08:54:36
Hmm, momentan habe ich sonst keine Idee. Bei mir funktioniert es mit mehreren Zeilen.
Vielleicht weiß Rudi weiter...
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: TomLee am 23 September 2023, 09:06:57
Vermutung, lange schon kein Update mehr gemacht.
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: Medel am 23 September 2023, 09:22:20
Update letzte Woche
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: TomLee am 23 September 2023, 09:27:11
Warum verheimlichst du die komplette Device-Definition ?
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: Medel am 23 September 2023, 10:09:27
Hier die Komplette Definition:
defmod MQTT2_z2t_3D33 MQTT2_DEVICE z2t_3D33
attr MQTT2_z2t_3D33 IODev mymqtt2_client

attr MQTT2_z2t_3D33 jsonMap ZbReceived_0x3D33_LinkQuality:LinkQuality\
ZbReceived_0x3D33_CurrentPositionLiftPercentage:Position\
ZbReceived_0x3D33_TuyaMovingState:TuyaMovingState\
ZbReceived_0x3D33_TuyaCalibration:TuyaCalibration\
ZbReceived_0x3D33_TuyaCalibrationTime:TuyaCalibrationTime

attr MQTT2_z2t_3D33 readingList tele/tasmota2zigbee/3D33/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP,,"CurrentPositionLiftPercentage") }
tele/tasmota2zigbee/3D33/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP,,"LinkQuality") }
tele/tasmota2zigbee/3D33/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP,,"TuyaMovingState") }
tele/tasmota2zigbee/3D33/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP,,"TuyaCalibration") }
tele/tasmota2zigbee/3D33/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP,,"TuyaCalibrationTime") }

attr MQTT2_z2t_3D33 room MQTT
attr MQTT2_z2t_3D33 setList open:noArg    cmnd/tasmota2zigbee/Zbsend { "device":"0x3D33", "send":{"ShutterOpen":""} }\
close:noArg   cmnd/tasmota2zigbee/Zbsend { "device":"0x3D33", "send":{"ShutterClose":""} }\
stop:noArg    cmnd/tasmota2zigbee/Zbsend { "device":"0x3D33", "send":{"ShutterStop":""} }\
attr MQTT2_z2t_3D33 setStateList open close stop
Habe gerade festgestellt dass es ohne den Filtereintrag (5. Wert in json2nameValue) geht, aber wie bekomme ich dann die vielen generierten readings unterdrückt ohne sie alle in der jsonmap aufzuführen zu müssen.
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: TomLee am 23 September 2023, 11:49:03
ZitatHabe gerade festgestellt dass es ohne den Filtereintrag (5. Wert in json2nameValue) geht, aber wie bekomme ich dann die vielen generierten readings unterdrückt ohne sie alle in der jsonmap aufzuführen zu müssen.

Ich, Laie, hab bisher noch nicht genau verstanden was genau gewünscht ist.
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: rudolfkoenig am 23 September 2023, 11:58:12
ZitatHier die Komplette Definition:
Der Abschnitt nach jsonMap wurde vmtl. manuell bearbeitet, koennte von einem readingList stammen.
Mehrere readingsList Eintraege mit dem gleichen Regexp beim gleichen MQTT2_DEVICE funktionieren nicht.
Ein ",," in dem Funktionsaufruf in diesen Zeilen ist gleichwertig mit einem ",", das war fuer mich auch neu. Damit ist der letzte Wert Parameter #4.

ZitatHabe gerade festgestellt dass es ohne den Filtereintrag (5. Wert in json2nameValue) geht, aber wie bekomme ich dann die vielen generierten readings unterdrückt ohne sie alle in der jsonmap aufzuführen zu müssen.
Sowohl filter wie auch negfilter werden als Regexp ausgewertet.
In einem Regexp kann man mehrere Werte durch | getrennt auffuehren, also
(CurrentPositionLiftPercentage|LinkQuality|...)
Klammer ist notwendig, wenn man das ganze in ^$ einschliessen will.
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: Medel am 23 September 2023, 12:37:53
ZitatDer Abschnitt nach jsonMap wurde vmtl. manuell bearbeitet
habe fehlenden Teil ergänzt, da war noch ein Kommentar und die Icon Definition darüber. Dabei habe ich offensichtlich den ersten Teil des Readings rausgelöscht.

Zitat(CurrentPositionLiftPercentage|LinkQuality|...)
das Funktioniert so nicht, ohne "" kommt eine Fehlermeldung:
Bareword "CurrentPositionLiftPercentage" not allowed while "strict subs" in use at (eval 321008) line 1.
Bareword "LinkQuality" not allowed while "strict subs" in use at (eval 321008) line 1.

Wenn ich es mit "" mache werden die Readings nicht aktualisiert
tele/tasmota2zigbee/3D33/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP,,"CurrentPositionLiftPercentage|LinkQuality"|"TuyaMovingState"|"TuyaCalibration"|"TuyaCalibrationTime") }
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: rudolfkoenig am 23 September 2023, 13:43:44
Zitathabe fehlenden Teil ergänzt,
Damit fuehrt mein Kommentar bei nachfoilgenden Lesern zur Verwirrung.

ZitatDabei habe ich offensichtlich den ersten Teil des Readings rausgelöscht.
Und das \ am Zeilenende wohl auch.
Z.Zt. noch unkorrigiert.

Zitatdas Funktioniert so nicht, ohne "" kommt eine Fehlermeldung:
Die Zeile wird als perl evaluiert, da sollte man auch die perl-Syntax beachten.

ZitatWenn ich es mit "" mache werden die Readings nicht aktualisiert
Im Beispiel sind (z.Zt) definitiv zu viele ", das duerfte eigentlich zu einer Meldung im Log fuehren.
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: Otto123 am 23 September 2023, 13:56:23
Ein Parameter -> in dem Fall ein String -> nur einmal " "
Ich denke so:
tele/tasmota2zigbee/3D33/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP,,"CurrentPositionLiftPercentage|LinkQuality|TuyaMovingState|TuyaCalibration|TuyaCalibrationTime") }oder ->
ZitatKlammer ist notwendig, wenn man das ganze in ^$ einschliessen will.
tele/tasmota2zigbee/3D33/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP,,"(CurrentPositionLiftPercentage|LinkQuality|TuyaMovingState|TuyaCalibration|TuyaCalibrationTime)" ) }
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: Medel am 23 September 2023, 14:46:25
Habe es mal so geändert:
defmod MQTT2_z2t_3D33 MQTT2_DEVICE z2t_3D33
attr MQTT2_z2t_3D33 IODev mymqtt2_client

attr MQTT2_z2t_3D33 jsonMap ZbReceived_0x3D33_CurrentPositionLiftPercentage:Position\
ZbReceived_0x3D33_TuyaMovingState:TuyaMovingState\
ZbReceived_0x3D33_TuyaCalibration:TuyaCalibration\
ZbReceived_0x3D33_TuyaCalibrationTime:TuyaCalibrationTime

attr MQTT2_z2t_3D33 readingList \
tele/tasmota2zigbee/3D33/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP,,"(CurrentPositionLiftPercentage|LinkQuality|TuyaMovingState|TuyaCalibration|TuyaCalibrationTime)") }

attr MQTT2_z2t_3D33 room MQTT
attr MQTT2_z2t_3D33 setList open:noArg    cmnd/tasmota2zigbee/Zbsend { "device":"0x3D33", "send":{"ShutterOpen":""} }\
close:noArg   cmnd/tasmota2zigbee/Zbsend { "device":"0x3D33", "send":{"ShutterClose":""} }\
stop:noArg    cmnd/tasmota2zigbee/Zbsend { "device":"0x3D33", "send":{"ShutterStop":""} }
attr MQTT2_z2t_3D33 setStateList open close stop


Leider geht es immer noch nicht ganz. Der erste Eintrag "CurrentPositionLiftPercentage" wird nicht aktualisiert, auch nicht ohne die Klammern
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: TomLee am 23 September 2023, 15:05:35
Ich hab immer noch nicht verstanden um was es geht, was soll das jetzt bringen alle Keys des Json im Filterparameter aufzulisten, wenn doch eh alle Werte später gewollt sind, wozu dann filtern ?
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: Medel am 23 September 2023, 15:17:42
Es sind noch viel mehr Werte. Es macht mehr Sinn zu Filtern als im jsonmap rauszunehmen
Titel: Aw: Seltsames Verhalten JSONMAP
Beitrag von: TomLee am 23 September 2023, 15:26:49
Bisher reim ich mir zusammen zu deinem Anliegen eine Umsetzung in dem anderen Thread gezeigt zu haben.