[gelöst] ZigBee2MQTT und 5 Kanal Steckdosenleiste

Begonnen von Wernieman, 16 Dezember 2025, 13:43:15

Vorheriges Thema - Nächstes Thema

Wernieman

Hallo Freunde,

ich habe mir eine 5 Kanal Steckdosenleiste gekauft (4 gang switch, with USB) und in ZigBee2MQTT angelernt. Funktioniert dort super. Dann wollte ich es in FHEM nachkonfigurieren und scheitere tewas.

Da es keinen Prototyp für diesen in FHEM giebt, habe ich mir den zigbee2mqtt_5channel_split genommen und angepasst. Die erste Steckdose funktioniert (Abgesehen davon, das bei associatedWith nur die ersten 2 Drinstehen, das kann aber durch meine manuelle Nachkonfigurierung passiert sein).

define zigbee_Steckdosenleiste_1 MQTT2_DEVICE zigbee_Steckdosenleiste_1
attr zigbee_Steckdosenleiste_1 comment Channel 1 for zigbee_Steckdosenleiste_1
attr zigbee_Steckdosenleiste_1 devicetopic zigbee2mqtt/Steckdosenleiste_1
attr zigbee_Steckdosenleiste_1 icon message_socket
attr zigbee_Steckdosenleiste_1 jsonMap state:availability state_l1:state state_l2:0 state_l3:0 state_l4:0 state_l5:0
attr zigbee_Steckdosenleiste_1 model zigbee2mqtt_5channel_split
attr zigbee_Steckdosenleiste_1 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state}) if defined $ret->{state};; return $ret }
attr zigbee_Steckdosenleiste_1 room MQTT2_DEVICE
attr zigbee_Steckdosenleiste_1 setList on:noArg $DEVICETOPIC/set {"state_l1":"ON"}\
  off:noArg $DEVICETOPIC/set {"state_l1":"OFF"}\
  toggle:noArg $DEVICETOPIC/set {"state_l1":"TOGGLE"}
attr zigbee_Steckdosenleiste_1 setStateList on off toggle
#   CFGFN     
#   CID        zigbee_Steckdosenleiste_1
#   DEF        zigbee_Steckdosenleiste_1
#   FUUID      69414d84-f33f-a76c-26b1-167e8d18b0fd754d
#   IODev      mqtt2s
#   LASTInputDev mqtt2s
#   MSGCNT     137
#   NAME       zigbee_Steckdosenleiste_1
#   NR         317
#   STATE      off
#   TYPE       MQTT2_DEVICE
#   eventCount 146
#   mqtt2s_CONN mqtt2s_172.28.5.3_34200
#   mqtt2s_MSGCNT 137
#   mqtt2s_TIME 2025-12-16 13:35:20
#   .DT:
#     DEVICETOPIC zigbee2mqtt/Steckdosenleiste_1
#   .attraggr:
#   .attrminint:
#   JSONMAP:
#     state      availability
#     state_l1   state
#     state_l2   0
#     state_l3   0
#     state_l4   0
#     state_l5   0
#   OLDREADINGS:
#   READINGS:
#     2025-12-16 13:16:04   IODev           mqtt2s
#     2025-12-16 13:17:14   associatedWith  zigbee_Steckdosenleiste_1_CH2,zigbee_Steckdosenleiste_1_CH3
#     2025-12-16 13:17:14   attrTemplateVersion 20220913
#     2025-12-16 13:35:20   child_lock      UNLOCK
#     2025-12-16 13:35:20   linkquality     255
#     2025-12-16 13:35:20   power_outage_memory_l1 restore
#     2025-12-16 13:35:20   state           off
#   hmccu:
#
setstate zigbee_Steckdosenleiste_1 off
setstate zigbee_Steckdosenleiste_1 2025-12-16 13:16:04 IODev mqtt2s
setstate zigbee_Steckdosenleiste_1 2025-12-16 13:17:14 associatedWith zigbee_Steckdosenleiste_1_CH2,zigbee_Steckdosenleiste_1_CH3
setstate zigbee_Steckdosenleiste_1 2025-12-16 13:17:14 attrTemplateVersion 20220913
setstate zigbee_Steckdosenleiste_1 2025-12-16 13:35:20 child_lock UNLOCK
setstate zigbee_Steckdosenleiste_1 2025-12-16 13:35:20 linkquality 255
setstate zigbee_Steckdosenleiste_1 2025-12-16 13:35:20 power_outage_memory_l1 restore
setstate zigbee_Steckdosenleiste_1 2025-12-16 13:35:20 state off

ABER .. alle anderen 4 Kanäle funktionieren  nur in der Anzeige, d.h. ich kann nicht über FHEM schalten, es passiert überhaupt nichts. Hier mal die Definition der 2.
define zigbee_Steckdosenleiste_1_CH2 MQTT2_DEVICE
attr zigbee_Steckdosenleiste_1_CH2 comment Channel 2 for zigbee_Steckdosenleiste_1
attr zigbee_Steckdosenleiste_1_CH2 devicetopic zigbee2mqtt/Steckdosenleiste_1
attr zigbee_Steckdosenleiste_1_CH2 icon message_socket
attr zigbee_Steckdosenleiste_1_CH2 jsonMap state_l2:state state_l1:0 state_l3:0 state_l5:0 state_l5:0 state:0 consumption:0 linkquality:0 power:0 temperature:0
attr zigbee_Steckdosenleiste_1_CH2 model zigbee2mqtt_5channel_split
attr zigbee_Steckdosenleiste_1_CH2 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state}) if defined $ret->{state};; return $ret }
attr zigbee_Steckdosenleiste_1_CH2 room MQTT2_DEVICE
attr zigbee_Steckdosenleiste_1_CH2 setList on:noArg $DEVICETOPIC/set {"state_l2":"ON"}\
  off:noArg $DEVICETOPIC/set {"state_l2":"OFF"}\
  toggle:noArg $DEVICETOPIC/set {"state_l2":"TOGGLE"}
attr zigbee_Steckdosenleiste_1_CH2 setStateList on off toggle
#   CFGFN     
#   CID        zigbee_Steckdosenleiste_1
#   DEF       
#   FUUID      69414dc9-f33f-a76c-836c-460bfaf5b5f68068
#   IODev      mqtt2s_SSL
#   LASTInputDev mqtt2s
#   MSGCNT     144
#   NAME       zigbee_Steckdosenleiste_1_CH2
#   NR         318
#   STATE      off
#   TYPE       MQTT2_DEVICE
#   eventCount 151
#   mqtt2s_CONN mqtt2s_172.28.5.3_34200
#   mqtt2s_MSGCNT 144
#   mqtt2s_TIME 2025-12-16 13:38:33
#   .DT:
#   .attraggr:
#   .attrminint:
#   JSONMAP:
#     consumption 0
#     linkquality 0
#     power      0
#     state      0
#     state_l1   0
#     state_l2   state
#     state_l3   0
#     state_l5   0
#     temperature 0
#   READINGS:
#     2025-12-16 13:17:14   IODev           mqtt2s_SSL
#     2025-12-16 13:17:14   associatedWith  zigbee_Steckdosenleiste_1,zigbee_Steckdosenleiste_1_CH3
#     2025-12-16 13:17:14   attrTemplateVersion 20220913
#     2025-12-16 13:38:33   child_lock      UNLOCK
#     2025-12-16 13:38:33   power_outage_memory_l1 restore
#     2025-12-16 13:38:33   state           off
#     2025-12-16 13:38:33   state_l4        OFF
#     2025-12-16 13:26:07   state_l5        OFF
#   hmccu:
#
setstate zigbee_Steckdosenleiste_1_CH2 off
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:17:14 IODev mqtt2s_SSL
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:17:14 associatedWith zigbee_Steckdosenleiste_1,zigbee_Steckdosenleiste_1_CH3
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:17:14 attrTemplateVersion 20220913
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:38:33 child_lock UNLOCK
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:38:33 power_outage_memory_l1 restore
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:38:33 state off

Wie schon gesagt, unter der Oberfläche von ZigBee2MQTT kann ich die Dosen der Leiste komplett schalten und dort wird für die obige Dose angezeigt:
State (Endpoint: l2)
Probiere jetzt schon länger und irgendwie komme ich nicht weiter. Hat jemand eine Idee, wie ich das Problem gefasst bekomme und eventuell sogar, wie ich es löse?

Wenn mehr Daten und Infos gewünscht, liefere ich sie gerne, nur aktuell weiß ich nicht, was gewünscht sein könnte .....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Wernieman

#1
Ich sehe gerade:

ich habe 2 mqtt-IO-Device, einmal mit und ein mal ohne SSL. Die Dose1 der Steckdosenleiste geht über das normale (mqtt2s), die anderen dagegen über die 2. (mqtt2s_SSL). ZigBee2MQTT ist bei mir aktuell (noch) über die ohne SSL angebunden, deshalb könnte es sein, das der Schaltbefehl über das falsche IO-Device rausgeht. Nur ... wie korrigiert man dieses?

Edit:
Ja über die attribute ... hätte ich drauf kommen können. leider war es nicht die Lösung, hier die korrigierte Config:
define zigbee_Steckdosenleiste_1_CH2 MQTT2_DEVICE
attr zigbee_Steckdosenleiste_1_CH2 IODev mqtt2s
attr zigbee_Steckdosenleiste_1_CH2 comment Channel 2 for zigbee_Steckdosenleiste_1
attr zigbee_Steckdosenleiste_1_CH2 devicetopic zigbee2mqtt/Steckdosenleiste_1
attr zigbee_Steckdosenleiste_1_CH2 icon message_socket
attr zigbee_Steckdosenleiste_1_CH2 jsonMap state_l2:state state_l1:0 state_l3:0 state_l4:0 state_l5:0 state:0 consumption:0 linkquality:0 power:0 temperature:0
attr zigbee_Steckdosenleiste_1_CH2 model zigbee2mqtt_5channel_split
attr zigbee_Steckdosenleiste_1_CH2 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP);; $ret->{state}=lc($ret->{state}) if defined $ret->{state};; return $ret }
attr zigbee_Steckdosenleiste_1_CH2 room MQTT2_DEVICE
attr zigbee_Steckdosenleiste_1_CH2 setList on:noArg $DEVICETOPIC/set {"state_l2":"ON"}\
  off:noArg $DEVICETOPIC/set {"state_l2":"OFF"}\
  toggle:noArg $DEVICETOPIC/set {"state_l2":"TOGGLE"}
attr zigbee_Steckdosenleiste_1_CH2 setStateList on off toggle
#   CFGFN     
#   CID        zigbee_Steckdosenleiste_1
#   DEF       
#   FUUID      69414dc9-f33f-a76c-836c-460bfaf5b5f68068
#   IODev      mqtt2s
#   LASTInputDev mqtt2s
#   MSGCNT     204
#   NAME       zigbee_Steckdosenleiste_1_CH2
#   NR         318
#   STATE      set_off
#   TYPE       MQTT2_DEVICE
#   eventCount 216
#   mqtt2s_CONN mqtt2s_172.28.5.3_34200
#   mqtt2s_MSGCNT 204
#   mqtt2s_TIME 2025-12-16 13:50:33
#   .DT:
#   .attraggr:
#   .attrminint:
#   JSONMAP:
#     consumption 0
#     linkquality 0
#     power      0
#     state      0
#     state_l1   0
#     state_l2   state
#     state_l3   0
#     state_l4   0
#     state_l5   0
#     temperature 0
#   OLDREADINGS:
#   READINGS:
#     2025-12-16 13:49:46   IODev           mqtt2s
#     2025-12-16 13:17:14   associatedWith  zigbee_Steckdosenleiste_1,zigbee_Steckdosenleiste_1_CH3
#     2025-12-16 13:17:14   attrTemplateVersion 20220913
#     2025-12-16 13:50:33   child_lock      UNLOCK
#     2025-12-16 13:50:33   power_outage_memory_l1 restore
#     2025-12-16 13:50:45   state           set_off
#   hmccu:
#
setstate zigbee_Steckdosenleiste_1_CH2 set_off
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:49:46 IODev mqtt2s
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:17:14 associatedWith zigbee_Steckdosenleiste_1,zigbee_Steckdosenleiste_1_CH3
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:17:14 attrTemplateVersion 20220913
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:50:33 child_lock UNLOCK
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:50:33 power_outage_memory_l1 restore
setstate zigbee_Steckdosenleiste_1_CH2 2025-12-16 13:50:45 state set_off

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

betateilchen

Zwei MQTT2_DEVICES für die Steckdosenleiste anlegen und das jeweilige IODev zuordnen.

In der setList und der readingList nur die Befehle für die jeweils gewünschten Steckdosen angeben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wernieman

Das habe ich doch mittlerweile?

In der "setlist" steht doch für die 2. Dose der Leiste:
on:noArg $DEVICETOPIC/set {"state_l2":"ON"}
  off:noArg $DEVICETOPIC/set {"state_l2":"OFF"}
  toggle:noArg $DEVICETOPIC/set {"state_l2":"TOGGLE"}

Analog für alle anderen auch. Aber nur bei der ersten Funktioniert es. habe das IODev mittlerweile auch passend eingestellt.

Sorry wenn ich Dich falsch verstehe ... und ja, zigbee2mqtt ist für alle anderen Geräte normal erreichbar und funktioniert
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Wernieman

Wer lesen kann ist klar im Vorteil, es gab auch ein 5Kanal Template und dort steht im Commend:
"NOTE: Might need a FHEM restart to work properly."

Und ja ... das wird benötigt. Warum auch immer .... jetzt funktioniert es.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Beta-User

Zitat von: Wernieman am 16 Dezember 2025, 15:09:04Und ja ... das wird benötigt. Warum auch immer .... jetzt funktioniert es.
Soweit ich mich erinnere, wird intern ein "copy" ausgeführt. Dadurch werden auch alle internen Datenstrukturen mit kopiert, und das macht dann Probleme...
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wernieman

D.h. bei solchen Geräten, welche gesplittet werden, sollte man bei Problemen immer an einen reboot denken?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

betateilchen

Nach jedem copy-Befehl, der ein Gerät betrifft, das ein IODev hat, empfiehlt sich ein FHEM Neustart. Das ist nicht mqtt-spezifisch.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Beta-User

Zitat von: betateilchen am 16 Dezember 2025, 17:45:04Nach jedem copy-Befehl, der ein Gerät betrifft, das ein IODev hat, empfiehlt sich ein FHEM Neustart. Das ist nicht mqtt-spezifisch.
Jepp. Nur halt allgemein wenig bekannt.

Soweit ich mich erinnere, kann man das per defmod reparieren, was eventuell ein Teil der tasmota-templates macht ...
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wernieman

Nur das man bei einem Template ein copy macht ist eben nicht sofort ersichtlich. Das war der Hauptgrund.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Beta-User

Zitat von: Wernieman am 16 Dezember 2025, 19:00:22Nur das man bei einem Template ein copy macht ist eben nicht sofort ersichtlich. Das war der Hauptgrund.
Es sollte eigentlich vorher angezeigt werden, welche Befehle da abgearbeitet werden.
Bin unsicher, ob es "bessere" Optionen gäbe, aber man lernt nie aus...
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors