Silvercrest Lidl Mehrfachsteckdose und zigbee2mqtt_3channel_split

Begonnen von onkel-tobi, 29 Oktober 2021, 17:17:12

Vorheriges Thema - Nächstes Thema

onkel-tobi

Hallo zusammen,

irgendwie scheine ich noch was falsch zu machen im Hinblick auf das 3channel split template.
Und zwar ist es so, dass die readinglist teilweise so angepasst wird (automatisch), dass die Geräte einen falschen Status erhalten.
Da ich nicht ausschließen konnte, da was kaputt konfiguriert zu haben, habe ich sowohl im zigbee2mqtt als auch im fhem erst mal alle devices gelöscht und entsprechend mit dem template neu angelegt.
Nun sieht channel 1 inzwischen wieder so aus und die readinglist ist ja wieder falsch?!

Internals:
   CID        zigbee_0xec1bbdfffeab9944
   DEF        zigbee_0xec1bbdfffeab9944
   DEVICETOPIC zigbee2mqtt/0xec1bbdfffeab9944
   FUUID      617b8c4e-f33f-daf3-4799-628a01a9304fc69e
   IODev      m2c
   LASTInputDev m2c
   MSGCNT     9
   NAME       eg_wz_zb2
   NR         6101
   STATE      off
   TYPE       MQTT2_DEVICE
   m2c_MSGCNT 9
   m2c_TIME   2021-10-29 17:07:51
   JSONMAP:
     state      availability
     state_l1   state
     state_l2   0
     state_l3   0
   OLDREADINGS:
   READINGS:
     2021-10-29 07:53:18   IODev           m2c
     2021-10-29 17:02:25   associatedWith  MQTT2_zigbee_pi
     2021-10-29 07:54:45   attrTemplateVersion 20201213
     2021-10-29 17:07:34   linkquality     5
     2021-10-29 17:07:51   state           OFF
Attributes:
   alias      Sky
   comment    Channel 1 for MQTT2_zigbee_0xec1bbdfffeab9944, see also MQTT2_zigbee_0xec1bbdfffeab9944_CH2 and MQTT2_zigbee_0xec1bbdfffeab9944_CH3
   devicetopic zigbee2mqtt/0xec1bbdfffeab9944
   eventMap   { dev=>{ON=>'on',OFF=>'off'} }
   genericDeviceType switch
   homebridgeMapping On=state,cmdOnOn=state,valueOn=ON,valueOff=OFF
   icon       message_socket
   jsonMap    state:availability state_l1:state state_l2:0 state_l3:0
   model      zigbee2mqtt_3channel_split
   readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
zigbee2mqtt/0xec1bbdfffeab9944/1/set:.* { json2nameValue($EVENT) }
zigbee2mqtt/0xec1bbdfffeab9944/3/set:.* { json2nameValue($EVENT) }
   room       Homekit,MQTT2_DEVICE,Wohnzimmer
   setList    on:noArg $DEVICETOPIC/1/set {"state":"ON"}
  off:noArg $DEVICETOPIC/1/set {"state":"OFF"}
  toggle:noArg $DEVICETOPIC/1/set {"state":"TOGGLE"}
   setStateList on off toggle


Vielleicht hat ja noch wer einen Tipp für mich?

Gruß,
Tobi

Beta-User

Glaskugel meint, du hast einen externen Server am Start und setzt Befehle auch von anderer Seite ab?

Dann solltest du mal nach ignoreRegexp am MQTT2_CLIENT schauen und die set-Befehle abfangen. Falls das nicht hilft, schauen wir weiter, aber bitte die angepinnten "was sollte man liefern"-Hinweise beachten.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

onkel-tobi

Sorry, mqtt config sollte stimmen, hatten wir schon mal gecheckt. Hätte ich aber liefern müssen...
Ich habe aber eben noch folgendes festgestellt:
Laut https://www.zigbee2mqtt.io/devices/HG06338.html#lidl-hg06338
müssen die channels mit state_l1, state_l2 und state_l3 gesetzt werden.
Habe nun mal testweise die setlist angepasst:
on:noArg $DEVICETOPIC/set {"state_l1":"ON"}
  off:noArg $DEVICETOPIC/set {"state_l1":"OFF"}
  toggle:noArg $DEVICETOPIC/set {"state_l1":"TOGGLE"}

Und so wird auch korrekt geschaltet und ich sehe es im zigbee2mqtt frontend entsprechend.
Vielleicht ist das jetzt ein anderes Modell als das für das das Template gemacht wurde.
Ich werde das am WE entsprechend weiter testen und beobachten.

Gruß,
Tobi

Beta-User

Das mit state_lx habe ich jetzt bei dem 3-kanaligen reingebastelt, ich vermute, es gab entsprechende Änderungen bei zigbee2mqtt. Da könnte auch noch mehr kommen, es gab im "contribute"-Thread neulich auch einen Hinweis in diese Richtung.

Aber nochmal zu
zigbee2mqtt/0xec1bbdfffeab9944/3/set:.* { json2nameValue($EVENT) }
Imo ist das ein Befehl _an_ das Device und keine Info _vom_ Device. Diese Topics haben imo in FHEM nichts verloren und sollten direkt am IO abgefangen werden. Leider erfasst der in https://wiki.fhem.de/wiki/MQTT2_CLIENT#ignoreRegexp dargestellte default diesen Fall hier nicht, vermutlich würde es reichen, wenn du den mittleren Teil ("[^/]+") mit ".+" ersetzt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

HomeAlone

Hallo zusammen,
ich habe ein Problem mit dieser Mehrfachsteckdose von Lidl (Silvercrest HG06338) und dem zugehörigen Template (zigbee2mqtt_3channel_split).

Um Fremdquellen auszuschließen habe ich Node Red runtergefahren.
Die Steckerleiste ließ sich problemlos in zigbee2mqtt einbinden und funktioniert von dort aus fehlerfrei.

Folgendes passiert in fhem:

  • Nach Schalten eines beliebigen Kanals in zigbee2mqtt, erkennt fhem automatisch ein device MQTT2_zigbee_wz_Mehrfachsteckdose_TV. (Iin zigbee2mqtt heißt es wz_Mehrfachsteckdose_TV).
  • Wenn ich dem fhem device das attrTemplate zigbee2mqtt_3channel_split zuweise legt fhem zwei weitere devices an.

    • MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2
    • MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3

soweit, so gut.  ;)

Aber...
Mit den Parametern stimmt etwas nicht. Ich habe mir den Teil des attrTemplates angeschaut, bin damit aber etwas überfordert.

Das passiert, wenn ich in zigbee2mqtt die Channels schalte:
zigbee2mqtt -> fhem:
Ch1 an -> ch1 und ch3 an
Ch2 an -> nichts passiert
Ch3 an -> ch2 an

Beim Ausschalten verhält sich das Ganze entsprechend.

Hier die raw definition der drei devices, wie von fhem angelegt:
Channel 1:
defmod MQTT2_zigbee_wz_Mehrfachsteckdose_TV MQTT2_DEVICE zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV alias MQTT2_zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV comment Channel 1 for MQTT2_zigbee_wz_Mehrfachsteckdose_TV, see also MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 and MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV devicetopic zigbee2mqtt/wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV genericDeviceType switch
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV icon message_socket
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV jsonMap state:availability state_l1:state state_l2:0 state_l3:0
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV model zigbee2mqtt_3channel_split
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV room MQTT2_DEVICE
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV setList on:noArg $DEVICETOPIC/1/set {"state_l1":"ON"}\
  off:noArg $DEVICETOPIC/1/set {"state_l1":"OFF"}\
  toggle:noArg $DEVICETOPIC/1/set {"state_l1":"TOGGLE"}
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV setStateList on off toggle

setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-05 14:57:59 IODev mosquittoATnucgulp
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-05 14:59:05 associatedWith MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2,MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-05 14:59:05 attrTemplateVersion 20220622


Channel 2:
defmod MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 MQTT2_DEVICE zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 alias MQTT2_zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 comment Channel 2 for MQTT2_zigbee_wz_Mehrfachsteckdose_TV, see also MQTT2_zigbee_wz_Mehrfachsteckdose_TV and MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 devicetopic zigbee2mqtt/wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 genericDeviceType switch
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 icon message_socket
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 jsonMap state_l3:state state_l1:0 state_l2:0 state:0 consumption:0 linkquality:0 power:0 temperature:0
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 model zigbee2mqtt_3channel_split
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 room MQTT2_DEVICE
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 setList on:noArg $DEVICETOPIC/l2/set {"state_l2":"ON"}\
  off:noArg $DEVICETOPIC/l2/set {"state_l2":"OFF"}\
  toggle:noArg $DEVICETOPIC/l2/set {"state_l2":"TOGGLE"}
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 setStateList on off toggle

setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 on
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 14:59:04 IODev mosquittoATnucgulp
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 14:59:05 associatedWith MQTT2_zigbee_wz_Mehrfachsteckdose_TV,MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 14:59:05 attrTemplateVersion 20220622
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_applicationVersion 69
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_dateCode
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_friendlyName wz_Mehrfachsteckdose_TV
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_hardwareVersion 1
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_ieeeAddr 0xec1bbdfffeaedd43
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_manufacturerID 4098
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_manufacturerName _TZ3000_1obwwnmq
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_model HG06338
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_networkAddress 1108
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_powerSource Mains (single phase)
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_stackVersion 0
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_type Router
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 device_zclVersion 3
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 last_seen 1659704409487
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-05 15:00:09 state on


Chanel 3:
defmod MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 MQTT2_DEVICE zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 alias MQTT2_zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 comment Channel 3 for MQTT2_zigbee_wz_Mehrfachsteckdose_TV, see also MQTT2_zigbee_wz_Mehrfachsteckdose_TV and MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 devicetopic zigbee2mqtt/wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 genericDeviceType switch
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 icon message_socket
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 jsonMap state:availability state_l1:state state_l2:0 state_l3:0
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 model zigbee2mqtt_3channel_split
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 room MQTT2_DEVICE
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 setList on:noArg $DEVICETOPIC/l3/set {"state_l3":"ON"}\
  off:noArg $DEVICETOPIC/l3/set {"state_l3":"OFF"}\
  toggle:noArg $DEVICETOPIC/l3/set {"state_l3":"TOGGLE"}
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 setStateList on off toggle

setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 on
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 14:59:05 IODev mosquittoATnucgulp
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 14:59:05 associatedWith MQTT2_zigbee_wz_Mehrfachsteckdose_TV,MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 14:59:05 attrTemplateVersion 20220622
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_applicationVersion 69
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_dateCode
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_friendlyName wz_Mehrfachsteckdose_TV
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_hardwareVersion 1
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_ieeeAddr 0xec1bbdfffeaedd43
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_manufacturerID 4098
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_manufacturerName _TZ3000_1obwwnmq
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_model HG06338
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_networkAddress 1108
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_powerSource Mains (single phase)
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_stackVersion 0
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_type Router
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 device_zclVersion 3
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 last_seen 1659704409487
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 linkquality 80
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-05 15:00:09 state on



Ich habe mittels eines mqtt-clients abgefangen, was von zigbee2mqtt gesendet wird, wenn man von dort aus der GUI schaltet:


topic:
zigbee2mqtt/wz_Mehrfachsteckdose_TV
payload:
{"device":{"applicationVersion":69,"dateCode":"","friendlyName":"wz_Mehrfachsteckdose_TV","hardwareVersion":1,"ieeeAddr":"0xec1bbdfffeaedd43","manufacturerID":4098,"manufacturerName":"_TZ3000_1obwwnmq","model":"HG06338","networkAddress":1108,"powerSource":"Mains (single phase)","stackVersion":0,"type":"Router","zclVersion":3},"last_seen":1659712990266,"linkquality":76,"state_l1":"ON","state_l2":"OFF","state_l3":"OFF"}


Möchte ich die Steckdose über einen MQTT-Client steuern, muss ich noch ein set an das topic hängen, ohne set geht es nicht:

topic:
zigbee2mqtt/wz_Mehrfachsteckdose_TV/set
payload: { "state_l1": "OFF",  "state_l2": "OFF",   "state_l3": "OFF" }


Mir ist aber nicht ganz klar, was ich im attrTemplate ändern muss, damit die Schaltungen korrekt angezeigt werden.

Vermutlich wird die readingList dafür verwendet auf die Ereignisse aus zigbee2mqtt zu reagieren? Hier komme ich mit der RegEx aber leider nicht klar, weshalb ich hier nicht weiter auf Ursachensuche gehen konnte.
Die setList der Channels funktioniert genauso, wie erwartet, wobei der Pfad /l[n] (zumindest bei meiner Mehrfachsteckdose) nicht nötig wäre um zu schalten.
zigbee2mqtt/wz_Mehrfachsteckdose_TV/set und
zigbee2mqtt/wz_Mehrfachsteckdose_TV/set/l2  (oder l1 oder l3) machen dasselbe.

Kann mir hier vielleicht jemand weiterhelfen?

P.S.: Ich habe gerade noch herausgefunden, dass es wohl mehrere Versionen der Mehrfachsteckerleiste gibt: https://github.com/Koenkk/zigbee2mqtt/issues/9564 eventuell liegt mein Problem ja auch genau daran?

Viele Grüße
Sascha

Beta-User

Hmm, jsonMap für Kanal 2 und Kanal 3 enthält einen falschen Inhalt, ein update ist im svn (war ein kleiner Typo, kommt ab morgen).

Zum direkt fixen - bei Kanal 2 sollte folgendes rein:
state_l2:state state_l1:0 state_l3:0 state:0 consumption:0 linkquality:0 power:0 temperature:0
Kanal 3:
state_l3:state state_l1:0 state_l2:0 state:0 consumption:0 linkquality:0 power:0 temperature:0
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

HomeAlone

Hab es gerade ausprobiert: Funktioniert!

Vielen Dank!

Liebe Grüße
Sascha

Beta-User

 :) Gerne!
Sorry für die Umstände und Danke für die vollständigen list -r - ohne die hätte ich mich vermutlich erst mal durch die Doku gewühlt, was sich denn da ggf. geändert hatte ::) ....

Vielleicht noch ein paar Anmerkungen:
- es wäre auf alle Fälle klasse, wenn du auch einfach nochmal das attrTemplate nach dem update testen könntest (nicht dass da sonst noch was verbogen ist)
- Das attrTemplate fühlt sich irgendwie "unfertig" an, und wie gesagt: in die Doku hatte ich nicht geschaut, wie das "aktuelle Soll" denn dazu aussieht. Es gab hier ja schon mal eine im Sande verlaufene Rückfrage. An sich würde ich gerne den "aktuellen Standard" einbauen und "geht aus Kompabilitäts-Gründen noch" vermeiden (betr. hier ggf. die setList-Topics etc). Wäre gut, jemand könnte die aktuelle Doku mal durchforsten und das ggf. auch austesten.
- readingList ist dafür zuständig, eingehende Infos auszuwerten. jsonMap ist dabei eine "Helfer-Info", die bei der Langform von json2nameValue() mit verarbeitet wird. Wenn man es etwas detaillierter wissen will, wie die Daten unverarbeitet aussehen, hilft ein Blick auf die "Roh-Daten", die man am jeweiligen MQTT2-IO sichtbar machen kann (direkt in FHEMWEB), zum Verständnis meiner Vorgehensweise hilft vielleicht der "Schritt für Schritt"-Artikel im Wiki.
- ich gehe davon aus, dass zigbee2mqtt seinerseits bereits einen Abstraktionslevel bereitstellt, der derartige Geräte (unabhängig von der Hard- und firmware-Generation) "von außen" einheitlich darstellt bzw. ansprechbar macht. Falls das falsch ist, müßte man ggf. 2 Fassungen des attrTemplate anbieten (bitte dann ZDF statt Spekulationen)...

Grüße,

Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

HomeAlone

Zitat von: Beta-User am 05 August 2022, 19:27:09
- es wäre auf alle Fälle klasse, wenn du auch einfach nochmal das attrTemplate nach dem update testen könntest (nicht dass da sonst noch was verbogen ist)
Gerne - ich gebe dann Rückmeldung.

Zitat von: Beta-User am 05 August 2022, 19:27:09
- Das attrTemplate fühlt sich irgendwie "unfertig" an, und wie gesagt: in die Doku hatte ich nicht geschaut, wie das "aktuelle Soll" denn dazu aussieht. Es gab hier ja schon mal eine im Sande verlaufene Rückfrage.
Meinst Du die hier: https://wiki.fhem.de/wiki/AttrTemplate also ob der attrTemplate Eintrag zu zigbee2mqtt_3channel_split der dort vorgegebenen Syntax entspricht?

Zitat von: Beta-User am 05 August 2022, 19:27:09
An sich würde ich gerne den "aktuellen Standard" einbauen und "geht aus Kompabilitäts-Gründen noch" vermeiden (betr. hier ggf. die setList-Topics etc). Wäre gut, jemand könnte die aktuelle Doku mal durchforsten und das ggf. auch austesten.
Wenn Du mir noch einen kleinen Wink mit dem Zaunpfahl gibst, was der "aktuelle Standard" ist, kann ich es zumindest einmal versuchen, empfinde es aber jetzt schon als etwas kryptisch.  :-[

Zitat von: Beta-User am 05 August 2022, 19:27:09
- readingList ist dafür zuständig, eingehende Infos auszuwerten. jsonMap ist dabei eine "Helfer-Info", die bei der Langform von json2nameValue() mit verarbeitet wird. Wenn man es etwas detaillierter wissen will, wie die Daten unverarbeitet aussehen, hilft ein Blick auf die "Roh-Daten", die man am jeweiligen MQTT2-IO sichtbar machen kann (direkt in FHEMWEB), zum Verständnis meiner Vorgehensweise hilft vielleicht der "Schritt für Schritt"-Artikel im Wiki.
OK, das werde ich mir anschauen, wie man die Rohdaten sichtbar machen kann. Zum "Schritt für Schritt"-Artikel: intuitiv hätte ich jetzt obigen Wiki-Artikel oder den hier: https://wiki.fhem.de/wiki/Zigbee2mqtt angenommen. In beiden gibt es aber keinen Schritt für Schritt Artikel.

Zitat von: Beta-User am 05 August 2022, 19:27:09
- ich gehe davon aus, dass zigbee2mqtt seinerseits bereits einen Abstraktionslevel bereitstellt, der derartige Geräte (unabhängig von der Hard- und firmware-Generation) "von außen" einheitlich darstellt bzw. ansprechbar macht. Falls das falsch ist, müßte man ggf. 2 Fassungen des attrTemplate anbieten (bitte dann ZDF statt Spekulationen)...
Das vermute ich auch, da ja das Verhalte mit unterschiedlicher Firmware-Version anders ist. Das, was in zigbee2mqtt geändert wurde, damit unterschiedliche Firmwareversionen des Devices funktionieren, sind folgende Zeilen bei der Inklusion:

            const endpoint = device.getEndpoint(1);
            await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);

Zudem wird jedem Device ein fingerprint zugewiesen. Bei dem hier:
        fingerprint: [
            {modelID: 'TS011F', manufacturerName: '_TZ3000_wzauvbcs'}, // EU
            {modelID: 'TS011F', manufacturerName: '_TZ3000_1obwwnmq'},
            {modelID: 'TS011F', manufacturerName: '_TZ3000_4uf3d0ax'}, // FR
            {modelID: 'TS011F', manufacturerName: '_TZ3000_vzopcetz'}, // CZ
            {modelID: 'TS011F', manufacturerName: '_TZ3000_vmpbygs5'}, // BS
        ],
        model: 'HG06338',
        vendor: 'Lidl',

Daher vermute ich mal, dass die Darstellung als Lidl, HG06338 angewandt wird, wenn einer der fingerprints zutrifft. Und beim Anlernen wird dann eine der "Versions" dafür sorgen, dass alles korrekt eingebunden wird.

Beta-User

Zitat von: HomeAlone am 05 August 2022, 21:47:27
Gerne - ich gebe dann Rückmeldung.
OK, ab 7:45/8:00 Uhr müßte das dann mitkommen.

Zitat
Meinst Du die hier:
Nein, eher das, was auf den zigbee2mqtt.io bzw. blakadder-Seiten zu finden ist. Da stehen in der Regel die Topic-Payload/JSON-Strukturen.

Dazu sollte dann das attrTemplate passen, also das, was man an "Quelltext" vor dem Anwenden sieht (im DetailView des Devices) bzw. das, was dann daraus generiert wird.
Zitat
Wenn Du mir noch einen kleinen Wink mit dem Zaunpfahl gibst, was der "aktuelle Standard" ist, kann ich es zumindest einmal versuchen, empfinde es aber jetzt schon als etwas kryptisch.  :-[
Sorry, ich kann es kaum weniger kryptisch schreiben, weil ich sonst die konkreten Seiten selbst raussuchen müßte...

ZitatZum "Schritt für Schritt"-Artikel:

Geint gewesen war https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt

ZitatDas vermute ich auch, da ja das Verhalte mit unterschiedlicher Firmware-Version anders ist.
Die von dir gefundene(n) Stelle(n) scheinen zu passen: Da geht es darum, dass bestimmte Devices mit unterschiedlicher (Hersteller?-) Kennung gleich behandelt werden sollen.
Da das "relativ wenig" Code ist, scheint die Funktionalität auf der zigbee-Seite dann sogar 1:1 gleich zu sein. Das 3-Kanal-attrTemplate ist im übrigen auch "nur" als eine Erweiterung eines bestehenden 2-kanaligen entstanden ;) ; wobei da auch in zigbee2mqtt irgendeine Art genereller Syntaxwechsel dazwischen war, wenn ich mich richtig entsinne... Es mußte also angepaßt werden, aber das 2-kanalige funktionierte dann auch mit der neuen Syntax (Topic/Payload-Struktur) immer noch. Irgendwie in der Art halt. Genau darum die Frage, wie denn jetzt der "aktuelle Standard" für mehrkanalige ein/aus-Aktoren auf der zigbee2mqtt-Seite aussieht ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

HomeAlone

Zitat von: Beta-User am 05 August 2022, 22:02:44
OK, ab 7:45/8:00 Uhr müßte das dann mitkommen.

Update gemacht und in Ruhe getestet. Leider gibt es noch Fehler. Gestern hatte ich lediglich die Funktion aus der zigbee2mqtt GUI überpüft, diese funktioniert auch weiterhin fehlerfrei. Was noch Fehler aufweist, ist das Schalten in der fhem GUI:

  • CH1 ON -> Lampe von CH3 geht an (wird gelb), Steckdose Channel Channel 3 wird angeschaltet.
  • CH2 ON -> Lampe von CH2 geht an, Steckdose Channel 2 wird angeschaltet.
  • CH3 ON -> Lampe von CH1 geht an, Steckdose Channel 1 wird angeschaltet.
D.h. 3 schaltet 1 und umgekehrt.

Was auch auffällt: Wenn ich in der GUI den Channel 1 anschalte, ändert sich die Anzeige bei "Save config":
Last unsaved structural changes:
  attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV rea...
  attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2...
  attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3...


Ich habe die config frisch nach einem reboot und dann nach Schalten des channel 1 abgespeichert und verglichen.

Ein bißchen OT: Hierzu habe ich einen Wunsch veröffentlicht, dass dies aus fhem etwas besser unterstützt wird: https://forum.fhem.de/index.php/topic,128654.0.html

Zurück zum Thema. :)
Hier die Unterschiede.

Device Channel 1 vorher:

attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }


Device Channel 1 nachher:

attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }\
zigbee2mqtt/wz_Mehrfachsteckdose_TV/1/set:.* { json2nameValue($EVENT) }


Was zudem auffällt ist dass bei den setstates das associatedWith anders ist:
vorher:
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 12:19:24 associatedWith MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2,MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3

nachher:
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 12:22:01 associatedWith MQTT2_zigbee2mqtt

dasselbe gilt auch für Channel 2 und 3.


Device Channel 2 vorher:

attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }


Device Channel 2 nachher:

attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }\
zigbee2mqtt/wz_Mehrfachsteckdose_TV/1/set:.* { json2nameValue($EVENT) }



Device Channel 3 vorher:

attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }


Device Channel 3 nachher:

attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }\
zigbee2mqtt/wz_Mehrfachsteckdose_TV/1/set:.* { json2nameValue($EVENT) }


Dies wie gesagt nur beim Schalten über die fhem GUI - beim Schalten über die zigbee2mqtt GUI ändert sich nichts in der config!

Beta-User

#11
Zitat von: HomeAlone am 06 August 2022, 17:36:09
Eventuell kannst Du mit dem von mir Gefundenen schon etwas anfangen, um das anzupassen?
Klar! Wollte grade fragen, ob man diesen "Zwischenteil" in den set-Topics braucht, update ist schon im svn.

Allerdings bist du mit der Erweiterung der readingList mAn. einem (beliebten) Irrtum aufgesessen....
Zitatzu definieren und bei der readingList den Unterpfad ebenfalls zu entfernen:

$DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP); $ret->{state}=lc($ret->{state}); return $ret }
zigbee2mqtt/wz_Mehrfachsteckdose_TV/set:.* { json2nameValue($EVENT) }

Was als Anweisung _an das Gerät_ geschickt wird, sollte mAn. nie als Reading verwertet werden (höchstens in der Form  "set on" etc.). Hier ist es (aber nur scheinbar) kein Problem, weil jsonMap nicht greift! Sowas sollte man per ignoreRegexp rausfischen, und das letzte update sollte dann auch bewirken, dass ggf. nur der erste Kanal überhaupt erweitert wird, wenn man es nicht auf dem "korrekten" Weg macht...

(Ich hoffe, ich habe das jetzt halbwegs verständlich erklärt?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

HomeAlone

Zitat von: Beta-User am 05 August 2022, 22:02:44
Nein, eher das, was auf den zigbee2mqtt.io bzw. blakadder-Seiten zu finden ist. Da stehen in der Regel die Topic-Payload/JSON-Strukturen.

OK, die Defs (Abschnitt Exposes) stehen, denke ich, hier:
https://www.zigbee2mqtt.io/devices/HG06338.html

Bei blackadder befindet sich lediglich ein Lin auf das github repo, wo die Änderungen für die letzte Version der Steckerleiste gemacht wurden:  https://zigbee.blakadder.com/Lidl_HG06338.html

Aus der Anleitung bei zigbee2mqtt:
ZitatSwitch (l1 endpoint)

The current state of this switch is in the published state under the state_l1 property (value is ON or OFF). To control this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"state_l1": "ON"}, {"state_l1": "OFF"} or {"state_l1": "TOGGLE"}. To read the current state of this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"state_l1": ""}.

gleiches glibt für l2 und l3.
Dort steht nichts von einem expliziten Unterpfad 1, l2 oder l3, das set kommt direkt nach dem Device-Namen. opic.

Daher müsste es bei der setList im template ausreichend sein:

attr DEVICE setList \
  on:noArg $\DEVICETOPIC/set {"state_l1":"ON"}\
  off:noArg $\DEVICETOPIC/set {"state_l1":"OFF"}\
  toggle:noArg $\DEVICETOPIC/set {"state_l1":"TOGGLE"}
attr DEVICE setStateList on off toggle


zu definieren und bei der readingList den Unterpfad ebenfalls zu entfernen:

$DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP); $ret->{state}=lc($ret->{state}); return $ret }
zigbee2mqtt/wz_Mehrfachsteckdose_TV/set:.* { json2nameValue($EVENT) }


Habe das mal für alle drei Channels gemacht und siehe da: Es funktioniert. :) Die Schaltergebnisse werden auch in der zigbee2mqtt GUI korrekt angezeigt.

Habe es auch sicherheitshalber in der anderen Richtung mit einem externen mqtt-Client, und mit meinen MQTT2_CLIENT gepublished: Funktioniert beides einwandfrei (Bsp MQTT2_CLIENT):
set mosquittoAtnucgulp publish zigbee2mqtt/wz_Mehrfachsteckdose_TV/set {"state_l1":"OFF"}

Der Vollständigkeit halber die config der drei Channels, wie es bei mir einwandfrei funktioniert:
Channel 1:

defmod MQTT2_zigbee_wz_Mehrfachsteckdose_TV MQTT2_DEVICE zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV alias MQTT2_zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV comment Channel 1 for MQTT2_zigbee_wz_Mehrfachsteckdose_TV, see also MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 and MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV devicetopic zigbee2mqtt/wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV genericDeviceType switch
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV icon message_socket
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV jsonMap state:availability state_l1:state state_l2:0 state_l3:0
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV model zigbee2mqtt_3channel_split
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }\
zigbee2mqtt/wz_Mehrfachsteckdose_TV/set:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV room MQTT2_DEVICE
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV setList on:noArg $DEVICETOPIC/set {"state_l1":"ON"}\
  off:noArg $DEVICETOPIC/set {"state_l1":"OFF"}\
  toggle:noArg $DEVICETOPIC/set {"state_l1":"TOGGLE"}
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV setStateList on off toggle

setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV off
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:09:45 IODev mosquittoATnucgulp
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:10:56 associatedWith MQTT2_zigbee2mqtt
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 12:19:25 attrTemplateVersion 20220805
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_applicationVersion 69
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_dateCode
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_friendlyName wz_Mehrfachsteckdose_TV
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_hardwareVersion 1
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_ieeeAddr 0xec1bbdfffeaedd43
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_manufacturerID 4098
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_manufacturerName _TZ3000_1obwwnmq
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_model HG06338
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_networkAddress 1108
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_powerSource Mains (single phase)
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_stackVersion 0
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_type Router
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 device_zclVersion 3
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 last_seen 1659799600011
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 linkquality 80
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:09:23 set
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:26:40 state off
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:10:56 state_l1 OFF
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 16:59:05 state_l2 OFF
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV 2022-08-06 17:09:24 wz_Mehrfachsteckdose_TV_1_set


Channel 2:
defmod MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 MQTT2_DEVICE zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 alias MQTT2_zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 comment Channel 2 for MQTT2_zigbee_wz_Mehrfachsteckdose_TV, see also MQTT2_zigbee_wz_Mehrfachsteckdose_TV and MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 devicetopic zigbee2mqtt/wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 genericDeviceType switch
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 icon message_socket
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 jsonMap state_l2:state state_l1:0 state_l3:0 state:0 consumption:0 linkquality:0 power:0 temperature:0
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 model zigbee2mqtt_3channel_split
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }\
zigbee2mqtt/wz_Mehrfachsteckdose_TV/set:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 room MQTT2_DEVICE
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 setList on:noArg $DEVICETOPIC/set {"state_l2":"ON"}\
  off:noArg $DEVICETOPIC/set {"state_l2":"OFF"}\
  toggle:noArg $DEVICETOPIC/set {"state_l2":"TOGGLE"}
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 setStateList on off toggle

setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 off
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:09:45 IODev mosquittoATnucgulp
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:10:56 associatedWith MQTT2_zigbee2mqtt
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 12:19:25 attrTemplateVersion 20220805
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_applicationVersion 69
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_dateCode
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_friendlyName wz_Mehrfachsteckdose_TV
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_hardwareVersion 1
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_ieeeAddr 0xec1bbdfffeaedd43
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_manufacturerID 4098
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_manufacturerName _TZ3000_1obwwnmq
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_model HG06338
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_networkAddress 1108
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_powerSource Mains (single phase)
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_stackVersion 0
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_type Router
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 device_zclVersion 3
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 last_seen 1659799600011
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:09:23 set
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:26:40 state off
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:10:56 state_l1 OFF
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 16:59:05 state_l2 OFF
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2 2022-08-06 17:09:24 wz_Mehrfachsteckdose_TV_1_set


Channel 3:
defmod MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 MQTT2_DEVICE zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 alias MQTT2_zigbee_wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 comment Channel 3 for MQTT2_zigbee_wz_Mehrfachsteckdose_TV, see also MQTT2_zigbee_wz_Mehrfachsteckdose_TV and MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH2
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 devicetopic zigbee2mqtt/wz_Mehrfachsteckdose_TV
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 genericDeviceType switch
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 icon message_socket
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 jsonMap state_l3:state state_l1:0 state_l2:0 state:0 consumption:0 linkquality:0 power:0 temperature:0
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 model zigbee2mqtt_3channel_split
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state});; return $ret }\
zigbee2mqtt/wz_Mehrfachsteckdose_TV/set:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 room MQTT2_DEVICE
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 setList on:noArg $DEVICETOPIC/set {"state_l3":"ON"}\
  off:noArg $DEVICETOPIC/set {"state_l3":"OFF"}\
  toggle:noArg $DEVICETOPIC/set {"state_l3":"TOGGLE"}
attr MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 setStateList on off toggle

setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 off
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:09:45 IODev mosquittoATnucgulp
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:10:56 associatedWith MQTT2_zigbee2mqtt
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 12:19:25 attrTemplateVersion 20220805
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_applicationVersion 69
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_dateCode
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_friendlyName wz_Mehrfachsteckdose_TV
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_hardwareVersion 1
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_ieeeAddr 0xec1bbdfffeaedd43
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_manufacturerID 4098
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_manufacturerName _TZ3000_1obwwnmq
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_model HG06338
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_networkAddress 1108
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_powerSource Mains (single phase)
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_stackVersion 0
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_type Router
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 device_zclVersion 3
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 last_seen 1659799759430
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:09:23 set
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:29:19 state off
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:10:56 state_l1 OFF
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 16:59:05 state_l2 OFF
setstate MQTT2_zigbee_wz_Mehrfachsteckdose_TV_CH3 2022-08-06 17:09:23 wz_Mehrfachsteckdose_TV_1_set

Ich wußte nicht, ob die setstates notwendig sind oder nicht - daher sicherheitshalber mit drin.

Wie das attrTemplate jetzt angepasst werden müsste, damit das so da erscheint, ist mir leider noch nicht klar. Eventuell kannst Du mit dem von mir Gefundenen schon etwas anfangen, um das anzupassen?

Liebe Grüße
Sascha

HomeAlone

Zitat von: Beta-User am 29 Oktober 2021, 17:31:19
Glaskugel meint, du hast einen externen Server am Start und setzt Befehle auch von anderer Seite ab?

Glaskugel bekommt erst einmal einen Gummipunkt :)
Ich nutzte zusätzlich Node Red, welches die zigbee2mqtt messages weiterverarbeitet, um dies und das zu machen. Bei meinen Test fahre ich den Container immer runter, um dies als Fehlerquelle ausschließen zu können.

Zitat von: Beta-User am 29 Oktober 2021, 17:31:19Dann solltest du mal nach ignoreRegexp am MQTT2_CLIENT schauen und die set-Befehle abfangen. Falls das nicht hilft, schauen wir weiter, aber bitte die angepinnten "was sollte man liefern"-Hinweise beachten.

Das ignore hatte ich wie in der Anleitung angegeben eingefügt - die Änderungen am Device werden dennoch erzeugt. Es ist interessanterweise genau der Teil, den ich dann gändert habe, damit es vollständig funktioniert.

Aber natürlich hast Du Recht, dass Du, um sinnvoll helfen zu können, alle Infos brauchst.
Hier die Infos:

  • neueste Version von fhem installiert
  • MQTT-Broker: Extern, mosquitto über MQTT2_CLIENT, config weiter unten
  • MQTT_GENERIC_BRIDGE definiert, config weiter unten

Config MQTT2_CLIENT:

defmod mosquittoATnucgulp MQTT2_CLIENT nucgulp:1883
attr mosquittoATnucgulp alias mosquittoATnucgulp
attr mosquittoATnucgulp autocreate simple
attr mosquittoATnucgulp clientOrder MQTT_GENERIC_BRIDGE MQTT2_DEVICE
attr mosquittoATnucgulp devStateIcon .*opened:mqtt_broker:disconnect .*disconnected:mqtt_broker@red:connect
attr mosquittoATnucgulp icon mqtt_broker
attr mosquittoATnucgulp ignoreRegexp cmnd/[^:"]+:|homeassistant/[^:"]+/config:|shellies/[^:"]+/command:|zigbee2mqtt/[^/]+/set:|milight/0x[0-9a-fA-F]{1,4}/.*/[0-8]:|tasmota/discovery/
attr mosquittoATnucgulp room MQTT2_DEVICE,Zentralen
attr mosquittoATnucgulp subscriptions setByTheProgram

setstate mosquittoATnucgulp opened
setstate mosquittoATnucgulp 2022-08-06 14:35:16 lastPublish zigbee2mqtt/wz_Mehrfachsteckdose_TV/set:{"state_l2":"ON"}
setstate mosquittoATnucgulp 2022-08-06 17:09:50 state opened


Config MQTT_GENERIC_BRIDGE:

defmod mqttGenericBridge MQTT_GENERIC_BRIDGE
attr mqttGenericBridge alias mqttGenericBridge
attr mqttGenericBridge globalDefaults sub:base=mqttGenericBridge/set pub:base=mqttGenericBridge
attr mqttGenericBridge group MQTT2_DEVICE
attr mqttGenericBridge icon mqtt_bridge_1
attr mqttGenericBridge room MQTT2_DEVICE,Zentralen
attr mqttGenericBridge stateFormat dev: device-count in: incoming-count out: outgoing-count

setstate mqttGenericBridge dev: 11 in: 0 out: 0
setstate mqttGenericBridge 2022-08-06 17:09:49 IODev mosquittoATnucgulp
setstate mqttGenericBridge 2022-02-22 23:24:43 attrTemplateVersion 20211208_MGB_M2D
setstate mqttGenericBridge 2022-08-06 17:09:49 device-count 11
setstate mqttGenericBridge 2022-08-06 17:09:44 incoming-count 0
setstate mqttGenericBridge 2022-08-06 17:09:44 outgoing-count 0
setstate mqttGenericBridge 2022-08-06 17:09:49 transmission-state IO device initialized (mqtt2)
setstate mqttGenericBridge 2022-08-06 17:09:44 updated-reading-count 0
setstate mqttGenericBridge 2022-08-06 17:09:44 updated-set-count 0


list TYPE=autocreate:

Internals:
   FUUID      5cd105c9-f33f-2afc-2f5c-5d87254b235eca8d
   NAME       autocreate
   NOTIFYDEV  global
   NR         14
   NTFY_ORDER 50-autocreate
   STATE      active
   TYPE       autocreate
Attributes:
   alias      autocreate
   filelog    ./log/%NAME-%Y.log
   ignoreTypes CUL_HM.*

Beta-User

Klar hilft die Info weiter! Wollte grade fragen, ob man diesen "Zwischenteil" in den set-Topics braucht, update ist schon im svn.

Allerdings bist du mit der Erweiterung der readingList mAn. einem (beliebten) Irrtum aufgesessen...

Was als Anweisung _an das Gerät_ geschickt wird, sollte mAn. nie als Reading verwertet werden (höchstens in der Form  "set on" etc.). Hier ist es (aber nur scheinbar) kein Problem, weil jsonMap nicht greift! Sowas sollte man per ignoreRegexp rausfischen, und das letzte update sollte dann auch bewirken, dass ggf. nur der erste Kanal überhaupt erweitert wird, wenn man es nicht auf dem "korrekten" Weg macht...

Allerdings hatte die von dir jetzt gezeigte ignoreRegexp diesen Teil nicht abgefangen, weil ja der Zwischenteil noch drin war => ist raus => readingList bliebt auch in Kanal 1 "sauber...

(So jedenfalls die Theorie ::) ).

(Ich hoffe, ich habe das jetzt halbwegs verständlich erklärt?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files