Template für Shelly Power Strip 4 Gen4

Begonnen von drhirn, 27 März 2026, 11:06:30

Vorheriges Thema - Nächstes Thema

drhirn

Ich habe hier schon angekündigt, dass ich an einem MQTT2 Template für den http://www.shelly.com/de/products/shelly-power-strip-4-gen4 arbeite. Ich mache hier einen neuen Thread auf um ein paar Fragen stellen zu können, ohne dass im Original-Thread die Übersicht verloren geht.

Zitat von: Beta-User am 27 März 2026, 07:26:32devStateIcon braucht man nicht zu löschen, wenn man es hinterher gleich wieder (anders) setzt.
Macht Sinn  ;D

Zitat von: Beta-User am 27 März 2026, 07:26:32Die "Pseudo-Perl" readingList-Zeilen kann man m.E. zusammenfassen, der Spur nach "(ble|cloud|whatever):.* {}".
Check

Zitat von: Beta-User am 27 März 2026, 07:26:32bleibt bei copy bzw. MAKECOPIES nicht devicetopic erhalten?
Sieht so aus. Hab's entfernt.

Zitat von: Beta-User am 27 März 2026, 07:26:32das attrTemplate "set_associatedWith" habe ich neulich mal so geändert, dass per "\MAKECOPIES=1" gleich den defmod mit ausführt.
Du meinst, ich könnte folgenden Block entfernen?
loop:#:2:3:4
defmod DEVICE_CH# MQTT2_\DEVICE
loop:END
Wenn ich das tue, habe ich nach dem setzen des Templates lauter doppelte Devices in der "Probably associated with"-Liste:
FileLog_shellystrip01 active FileLog
shellystrip01_CH2 on MQTT2_DEVICE
shellystrip01_CH2 on MQTT2_DEVICE
shellystrip01_CH3 on MQTT2_DEVICE
shellystrip01_CH3 on MQTT2_DEVICE
shellystrip01_CH4 on MQTT2_DEVICE
shellystrip01_CH4 on MQTT2_DEVICE
Ich hab die Vermutung, das hängt mit dem Umbenennen davor zusammen. Kann das sein?

ZitatFunktional kann ich wenig sagen, vermute aber, dass man pro Kanal noch jsonMap anders setzen sollte.
Was nährt diesen Verdacht in dir?

ZitatEndlich jemand, der sich zielführend mit der "normalen" Syntax für die Shelly auseinandersetzt
Was ist für dich die "normale" Syntax?

Beta-User

Zitat von: drhirn am 27 März 2026, 11:06:30Du meinst, ich könnte folgenden Block entfernen?
Ja.
Zitat von: drhirn am 27 März 2026, 11:06:30Wenn ich das tue, habe ich nach dem setzen des Templates lauter doppelte Devices in der "Probably associated with"-Liste:
Weiß nicht genau, wo das herkommt, aber letztlich sollte das eine Unsauberkeit sein, die spätestens nach dem nächsten FHEM-Start erledigt ist.

Zitat von: drhirn am 27 März 2026, 11:06:30Was nährt diesen Verdacht in dir?
Weiß nicht so recht; du verwendest in einigen Zeilen der readingList $JSONMAP, mappst aber effektiv nur drei Elemente, die mir irgendwie nach der rpc-Variante aussehen.
Muss nichts heißen, aber solange ich keine Readings bzw. JSON-Infos gesehen habe, kann ich dazu nur mein Bauchgefühl wiedergeben, und das besagt halt, dass das "dünn" ist hier...

Zitat von: drhirn am 27 März 2026, 11:06:30Was ist für dich die "normale" Syntax?
"Generic MQTT" (ohne aktives rpc).
Auch hier: ich habe keine solche Geräte, und auch nicht das Bedürfnis nach denselben...
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

drhirn

Zitat von: Beta-User am 30 März 2026, 07:48:55Weiß nicht genau, wo das herkommt, aber letztlich sollte das eine Unsauberkeit sein, die spätestens nach dem nächsten FHEM-Start erledigt ist.
Das bleibt leider. Auch nach mehreren Neustarts.

Zitat von: Beta-User am 30 März 2026, 07:48:55Weiß nicht so recht; du verwendest in einigen Zeilen der readingList $JSONMAP, mappst aber effektiv nur drei Elemente, die mir irgendwie nach der rpc-Variante aussehen.
Muss nichts heißen, aber solange ich keine Readings bzw. JSON-Infos gesehen habe, kann ich dazu nur mein Bauchgefühl wiedergeben, und das besagt halt, dass das "dünn" ist hier...
Ah, verstehe. Ich dachte mir, falls jemand sein Device anpassen will, muss er nicht extra die ReadingList ändern. Ich hab das geändert.
Da sind keine rpc Infos dabei. Mein Device schickt gar keine mehr. Sind alles generische Infos.

Zitat von: Beta-User am 30 März 2026, 07:48:55Auch hier: ich habe keine solche Geräte, und auch nicht das Bedürfnis nach denselben...
Ich schick dir eh keines ;D

Hier ein List des kompletten "Root"-Devices inkl. aller aktuellen Readings. Wie bekomme ich denn weg, dass bei einem x_... (x_statusUpdate z.B.) Befehl ein eigenes Reading geschrieben wird?
define shellystrip01 MQTT2_DEVICE shellystrip01
attr shellystrip01 comment Channel 1 for shellystrip01, see also shellystrip01_CH2, shellystrip01_CH3 and shellystrip01_CH4
attr shellystrip01 devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot': '10px-kreis-gruen';; $onl = FW_makeImage($onl);; my $light = FW_makeImage(ReadingsVal($name,'state','off'));; my $cons = ReadingsNum($name,'power',0);; my $total = round(ReadingsNum($name,'energy_total',0)/1000,2);; my $ip = ReadingsVal($name,'wifi_sta_ip','none');; qq(<a href="http://$ip" target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a><div>Verbrauch: $cons W / Total: $total kwh</div>)}
attr shellystrip01 devicetopic shellies/shellystrip01
attr shellystrip01 icon message_socket
attr shellystrip01 jsonMap output:state aenergy_total:energy_total apower:power freq:frequency
attr shellystrip01 model powerstripg4
attr shellystrip01 readingList $DEVICETOPIC/online:.* online\
  $DEVICETOPIC:.* {}\
  $DEVICETOPIC/announce:.* { json2nameValue($EVENT) }\
  $DEVICETOPIC/command:.* {}\
  $DEVICETOPIC/command/switch_0:.* {}\
  $DEVICETOPIC/status:.* {}\
  $DEVICETOPIC/status/mqtt:.* { json2nameValue($EVENT,'mqtt_') }\
  $DEVICETOPIC/status/sys:.* { json2nameValue($EVENT,'sys_') }\
  $DEVICETOPIC/status/switch_0:.* { $EVENT =~ s/"output":true/"state":"on"/g;; $EVENT =~ s/"output":false/"state":"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\
  $DEVICETOPIC/status/wifi:.* { json2nameValue($EVENT,'wifi_') }\
  $DEVICETOPIC/status/(ble|cloud|knx|powerstrip_ui|ws|zigbee):.* {}
attr shellystrip01 room MQTT2_DEVICE
attr shellystrip01 setList toggle:noArg $DEVICETOPIC/command/switch:0 toggle\
  on:noArg $DEVICETOPIC/command/switch:0 on\
  off:noArg $DEVICETOPIC/command/switch:0 off\
  on-for-timer $DEVICETOPIC/command/switch:0 on,$EVTPART1\
  off-for-timer $DEVICETOPIC/command/switch:0 off,$EVTPART1\
  x_statusUpdate:noArg $DEVICETOPIC/command status_update\
  x_getDeviceInfo:noArg $DEVICETOPIC/command announce\
  x_check_update:noArg $DEVICETOPIC/command ota_update_check\
  x_update:noArg $DEVICETOPIC/command ota_update_to_stable
attr shellystrip01 setStateList on off toggle on-for-timer off-for-timer
attr shellystrip01 webCmd :
#   CFGFN     
#   CID        shellystrip01
#   DEF        shellystrip01
#   FUUID      69ca30c8-f33f-98a0-f669-92adfc464f18bce2
#   IODev      Mosquitto
#   LASTInputDev Mosquitto
#   MSGCNT     17
#   Mosquitto_MSGCNT 17
#   Mosquitto_TIME 2026-03-30 10:14:41
#   NAME       shellystrip01
#   NR         97
#   STATE      off
#   TYPE       MQTT2_DEVICE
#   eventCount 17
#   JSONMAP:
#     aenergy_total energy_total
#     apower     power
#     freq       frequency
#     output     state
#   OLDREADINGS:
#   READINGS:
#     2026-03-30 10:14:00   IODev           Mosquitto
#     2026-03-30 10:14:14   aenergy_by_minute_1 0.000
#     2026-03-30 10:14:14   aenergy_by_minute_2 0.000
#     2026-03-30 10:14:14   aenergy_by_minute_3 0.000
#     2026-03-30 10:14:14   aenergy_minute_ts 1774858440
#     2026-03-30 10:14:37   app             PowerStripZB
#     2026-03-30 10:14:14   associatedWith  shellystrip01_CH2,shellystrip01_CH3,shellystrip01_CH4
#     2026-03-30 10:14:14   attrTemplateVersion 20230104
#     2026-03-30 10:14:37   auth_en         false
#     2026-03-30 10:14:14   current         0.000
#     2026-03-30 10:14:14   energy_total    2718.227
#     2026-03-30 10:14:14   frequency       50.0
#     2026-03-30 10:14:37   fw_id           20250819-150402/ga0def2d
#     2026-03-30 10:14:37   gen             4
#     2026-03-30 10:14:37   id              shellypstripg4-98a31679e360
#     2026-03-30 10:14:37   mac             98A31679E360
#     2026-03-30 10:14:37   model           S4PL-00416EU
#     2026-03-30 10:14:14   mqtt_connected  true
#     2026-03-30 10:14:37   name            shellystrip01
#     2026-03-30 10:14:14   online          true
#     2026-03-30 10:14:14   pf              0.00
#     2026-03-30 10:14:14   power           0.0
#     2026-03-30 10:14:14   ret_aenergy_by_minute_1 0.000
#     2026-03-30 10:14:14   ret_aenergy_by_minute_2 0.000
#     2026-03-30 10:14:14   ret_aenergy_by_minute_3 0.000
#     2026-03-30 10:14:14   ret_aenergy_minute_ts 1774858440
#     2026-03-30 10:14:14   ret_aenergy_total 0.000
#     2026-03-30 10:14:37   slot            1
#     2026-03-30 10:14:14   source          mqtt
#     2026-03-30 10:14:14   state           off
#     2026-03-30 10:14:14   sys_cfg_rev     59
#     2026-03-30 10:14:14   sys_fs_free     466944
#     2026-03-30 10:14:14   sys_fs_size     917504
#     2026-03-30 10:14:14   sys_kvs_rev     0
#     2026-03-30 10:14:14   sys_last_sync_ts 1774856869
#     2026-03-30 10:14:14   sys_mac         98A31679E360
#     2026-03-30 10:14:14   sys_ram_free    128388
#     2026-03-30 10:14:14   sys_ram_min_free 108684
#     2026-03-30 10:14:14   sys_ram_size    312480
#     2026-03-30 10:14:14   sys_reset_reason 3
#     2026-03-30 10:14:14   sys_restart_required false
#     2026-03-30 10:14:14   sys_schedule_rev 0
#     2026-03-30 10:14:14   sys_time        10:14
#     2026-03-30 10:14:14   sys_unixtime    1774858454
#     2026-03-30 10:14:14   sys_uptime      687092
#     2026-03-30 10:14:14   sys_utc_offset  7200
#     2026-03-30 10:14:14   sys_webhook_rev 0
#     2026-03-30 10:14:37   ver             1.7.99-powerstripg4prod1
#     2026-03-30 10:14:14   voltage         232.1
#     2026-03-30 10:14:14   wifi_bssid      56:91:e3:29:a9:6e
#     2026-03-30 10:14:14   wifi_rssi       -75
#     2026-03-30 10:14:14   wifi_ssid       wifi+2@jft.at
#     2026-03-30 10:14:14   wifi_sta_ip     10.168.1.89
#     2026-03-30 10:14:14   wifi_sta_ip6_1  fe80::9aa3:16ff:fe79:e360
#     2026-03-30 10:14:14   wifi_status     got ip
#     2026-03-30 10:14:37   x_getDeviceInfo set
#     2026-03-30 10:14:41   x_statusUpdate  set undefined
#
setstate shellystrip01 off
setstate shellystrip01 2026-03-30 10:14:00 IODev Mosquitto
setstate shellystrip01 2026-03-30 10:14:14 aenergy_by_minute_1 0.000
setstate shellystrip01 2026-03-30 10:14:14 aenergy_by_minute_2 0.000
setstate shellystrip01 2026-03-30 10:14:14 aenergy_by_minute_3 0.000
setstate shellystrip01 2026-03-30 10:14:14 aenergy_minute_ts 1774858440
setstate shellystrip01 2026-03-30 10:14:37 app PowerStripZB
setstate shellystrip01 2026-03-30 10:14:14 associatedWith shellystrip01_CH2,shellystrip01_CH3,shellystrip01_CH4
setstate shellystrip01 2026-03-30 10:14:14 attrTemplateVersion 20230104
setstate shellystrip01 2026-03-30 10:14:37 auth_en false
setstate shellystrip01 2026-03-30 10:14:14 current 0.000
setstate shellystrip01 2026-03-30 10:14:14 energy_total 2718.227
setstate shellystrip01 2026-03-30 10:14:14 frequency 50.0
setstate shellystrip01 2026-03-30 10:14:37 fw_id 20250819-150402/ga0def2d
setstate shellystrip01 2026-03-30 10:14:37 gen 4
setstate shellystrip01 2026-03-30 10:14:37 id shellypstripg4-98a31679e360
setstate shellystrip01 2026-03-30 10:14:37 mac 98A31679E360
setstate shellystrip01 2026-03-30 10:14:37 model S4PL-00416EU
setstate shellystrip01 2026-03-30 10:14:14 mqtt_connected true
setstate shellystrip01 2026-03-30 10:14:37 name shellystrip01
setstate shellystrip01 2026-03-30 10:14:14 online true
setstate shellystrip01 2026-03-30 10:14:14 pf 0.00
setstate shellystrip01 2026-03-30 10:14:14 power 0.0
setstate shellystrip01 2026-03-30 10:14:14 ret_aenergy_by_minute_1 0.000
setstate shellystrip01 2026-03-30 10:14:14 ret_aenergy_by_minute_2 0.000
setstate shellystrip01 2026-03-30 10:14:14 ret_aenergy_by_minute_3 0.000
setstate shellystrip01 2026-03-30 10:14:14 ret_aenergy_minute_ts 1774858440
setstate shellystrip01 2026-03-30 10:14:14 ret_aenergy_total 0.000
setstate shellystrip01 2026-03-30 10:14:37 slot 1
setstate shellystrip01 2026-03-30 10:14:14 source mqtt
setstate shellystrip01 2026-03-30 10:14:14 state off
setstate shellystrip01 2026-03-30 10:14:14 sys_cfg_rev 59
setstate shellystrip01 2026-03-30 10:14:14 sys_fs_free 466944
setstate shellystrip01 2026-03-30 10:14:14 sys_fs_size 917504
setstate shellystrip01 2026-03-30 10:14:14 sys_kvs_rev 0
setstate shellystrip01 2026-03-30 10:14:14 sys_last_sync_ts 1774856869
setstate shellystrip01 2026-03-30 10:14:14 sys_mac 98A31679E360
setstate shellystrip01 2026-03-30 10:14:14 sys_ram_free 128388
setstate shellystrip01 2026-03-30 10:14:14 sys_ram_min_free 108684
setstate shellystrip01 2026-03-30 10:14:14 sys_ram_size 312480
setstate shellystrip01 2026-03-30 10:14:14 sys_reset_reason 3
setstate shellystrip01 2026-03-30 10:14:14 sys_restart_required false
setstate shellystrip01 2026-03-30 10:14:14 sys_schedule_rev 0
setstate shellystrip01 2026-03-30 10:14:14 sys_time 10:14
setstate shellystrip01 2026-03-30 10:14:14 sys_unixtime 1774858454
setstate shellystrip01 2026-03-30 10:14:14 sys_uptime 687092
setstate shellystrip01 2026-03-30 10:14:14 sys_utc_offset 7200
setstate shellystrip01 2026-03-30 10:14:14 sys_webhook_rev 0
setstate shellystrip01 2026-03-30 10:14:37 ver 1.7.99-powerstripg4prod1
setstate shellystrip01 2026-03-30 10:14:14 voltage 232.1
setstate shellystrip01 2026-03-30 10:14:14 wifi_bssid 56:91:e3:29:a9:6e
setstate shellystrip01 2026-03-30 10:14:14 wifi_rssi -75
setstate shellystrip01 2026-03-30 10:14:14 wifi_ssid wifi+2@jft.at
setstate shellystrip01 2026-03-30 10:14:14 wifi_sta_ip 10.168.1.89
setstate shellystrip01 2026-03-30 10:14:14 wifi_sta_ip6_1 fe80::9aa3:16ff:fe79:e360
setstate shellystrip01 2026-03-30 10:14:14 wifi_status got ip
setstate shellystrip01 2026-03-30 10:14:37 x_getDeviceInfo set
setstate shellystrip01 2026-03-30 10:14:41 x_statusUpdate set undefined

Beta-User

Zitat von: drhirn am 30 März 2026, 10:22:18Das bleibt leider. Auch nach mehreren Neustarts.
Seltsam, aber wohl nichts unbekanntes: https://forum.fhem.de/index.php?msg=1354388
Komme vermutlich nicht so schnell dazu, mir die tiefere Ursache dafür anzuschauen, sollte aber letztlich kein funktionales Problem sein.

Zitat von: drhirn am 30 März 2026, 10:22:18Ah, verstehe. Ich dachte mir, falls jemand sein Device anpassen will, muss er nicht extra die ReadingList ändern. Ich hab das geändert.
Das mache ich hin und wieder auch so, dass der "Platzhalter" bleibt.

"Komisch" kam mir nur vor, dass dazu kam, dass Präfixe gesetzt waren.

"online" kommt jetzt noch doppelt (auf zwei Topics), vermutlich könnte man einen stilllegen und das ganze nach LWT=>online/offline umbiegen, was imo mehr MQTT-like ist (Geschmacksfrage, zugegebenermaßen).

Zitat von: drhirn am 30 März 2026, 10:22:18Wie bekomme ich denn weg, dass bei einem x_... (x_statusUpdate z.B.) Befehl ein eigenes Reading geschrieben wird?
Pack die setter auch in setStateList, falls du mit den Nebenwirkungen leben kannst...
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

drhirn

Zitat von: Beta-User am 30 März 2026, 11:26:41Komme vermutlich nicht so schnell dazu, mir die tiefere Ursache dafür anzuschauen, sollte aber letztlich kein funktionales Problem sein.
Ok, dann baue ich die Zeilen aus und harre der Dinge.

Zitat von: Beta-User am 30 März 2026, 11:26:41"online" kommt jetzt noch doppelt (auf zwei Topics), vermutlich könnte man einen stilllegen und das ganze nach LWT=>online/offline umbiegen, was imo mehr MQTT-like ist (Geschmacksfrage, zugegebenermaßen).
Online kommt eigentlich nur über das Topic "online". Wo hast du das zweite gesehen? Es gibt sonst noch mqtt_connected, aber das ist eigentlich ganz streng genommen was anderes.
Wie würde ich das umbiegen? Meine Versuche führen alle nur zu leeren Readingnamen.

Zitat von: Beta-User am 30 März 2026, 11:26:41Pack die setter auch in setStateList, falls du mit den Nebenwirkungen leben kannst...
Die Nebenwirkungen sind unangenehm. Hmm. Muss ich drüber nachdenken. Danke auf jeden Fall für den Lösungsweg!

drhirn

Zitat von: drhirn am 30 März 2026, 12:08:51Wie würde ich das umbiegen? Meine Versuche führen alle nur zu leeren Readingnamen.

Zufällig gerade in einem anderen Thread Thema gewesen:
attr DEVICE readingList $\DEVICETOPIC/online:.* {my %map=(true=>"online",false=>"offline");; { LWT=>$map{$EVENT}||$EVENT } }

drhirn

Aktueller Stand des Templates:

name:shellyPowerStripG4_split_cmd
filter:TYPE=MQTT2_DEVICE
desc:<p>Shelly Power Strip Gen4 using original firmware<br>NOTE: This is the split template. It creates four different devices.</p><p>MQTT settings at the device:<ul><li><i>Enable 'MQTT Control'</i> enabled</li><li><i>Enable RPC over MQTT</i> disabled</li><li><i>RPC status notifications over MQTT</i> disabled</li><li><i>Generic status update over MQTT</i> enabled</ul></p>
par:DEV_TPC;Shelly name in the topic;{ AttrVal('DEVICE','devicetopic',AttrVal('DEVICE','readingList','')) =~ m<(shellies/[^/]+|shelly(plus|pro4pm|1pmmini-)[^/:_]{4,}+)> ? $1 : undef }
order:A_19
par:ICON;ICON as set, defaults to message_socket;{ AttrVal('DEVICE','icon','message_socket') }
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE devicetopic DEV_TPC
attr DEVICE icon ICON
attr DEVICE devStateIcon {my $onl = ReadingsVal($name,'LWT','offline') eq 'offline'?'10px-kreis-rot': '10px-kreis-gruen'; $onl = FW_makeImage($onl); my $light = FW_makeImage(ReadingsVal($name,'state','off')); my $cons = ReadingsNum($name,'power',0); my $total = round(ReadingsNum($name,'energy_total',0)/1000,2); my $ip = ReadingsVal($name,'wifi_sta_ip','none'); qq(<a href="http://$ip" target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a><div>Verbrauch: $cons W / Total: $total kwh</div>)}
attr DEVICE readingList $\DEVICETOPIC/online:.* {my %map=(true=>"online",false=>"offline");; { LWT=>$map{$EVENT}||$EVENT } }\
  $\DEVICETOPIC:.* {}\
  $\DEVICETOPIC/announce:.* { json2nameValue($EVENT) }\
  $\DEVICETOPIC/command:.* {}\
  $\DEVICETOPIC/command/switch_0:.* {}\
  $\DEVICETOPIC/status:.* {}\
  $\DEVICETOPIC/status/mqtt:.* { json2nameValue($EVENT,'mqtt_') }\
  $\DEVICETOPIC/status/sys:.* { json2nameValue($EVENT,'sys_') }\
  $\DEVICETOPIC/status/switch_0:.* { $EVENT =~ s/"output":true/"state":"on"/g; $EVENT =~ s/"output":false/"state":"off"/g; json2nameValue($EVENT,'',$JSONMAP) }\
  $\DEVICETOPIC/status/wifi:.* { json2nameValue($EVENT,'wifi_') }\
  $\DEVICETOPIC/status/(ble|cloud|knx|powerstrip_ui|ws|zigbee):.* {}
attr DEVICE setList toggle:noArg $\DEVICETOPIC/command/switch:0 toggle\
  on:noArg $\DEVICETOPIC/command/switch:0 on\
  off:noArg $\DEVICETOPIC/command/switch:0 off\
  on-for-timer $\DEVICETOPIC/command/switch:0 on,$EVTPART1\
  off-for-timer $\DEVICETOPIC/command/switch:0 off,$EVTPART1\
  x_statusUpdate:noArg $\DEVICETOPIC/command status_update\
  x_getDeviceInfo:noArg $\DEVICETOPIC/command announce\
  x_checkUpdate:noArg $\DEVICETOPIC/command ota_update_check\
  x_update:noArg $\DEVICETOPIC/command ota_update_to_stable
attr DEVICE jsonMap output:state aenergy_total:energy_total apower:power freq:frequency
attr DEVICE setStateList on off toggle on-for-timer off-for-timer
attr DEVICE webCmd :
deleteattr DEVICE getList
set DEVICE x_statusUpdate
set DEVICE x_getDeviceInfo
setreading DEVICE LWT online
loop:#:1:2:3
copy DEVICE DEVICE_CH#
deleteattr DEVICE_CH# stateFormat
attr DEVICE_CH# devStateIcon {my $light = FW_makeImage(ReadingsVal($name,'state','off')); my $cons = ReadingsNum($name,'power',0); my $total = round(ReadingsNum($name,'energy_total',0)/1000,2); qq(<a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a><div>Verbrauch: $cons W / Total: $total kwh</div>)}
attr DEVICE_CH# readingList\
  $\DEVICETOPIC/status/switch_#:.* { $EVENT =~ s/"output":true/"state":"on"/g; $EVENT =~ s/"output":false/"state":"off"/g; json2nameValue($EVENT,'',$JSONMAP) }\
  $\DEVICETOPIC/command/switch_#:.* {}
attr DEVICE_CH# setList toggle:noArg $\DEVICETOPIC/command/switch:# toggle\
  on:noArg $\DEVICETOPIC/command/switch:# on\
  off:noArg $\DEVICETOPIC/command/switch:# off\
  on-for-timer $\DEVICETOPIC/command/switch:# on,$EVTPART1\
  off-for-timer $\DEVICETOPIC/command/switch:# off,$EVTPART1
loop:END
rename DEVICE_CH3 DEVICE_CH4
rename DEVICE_CH2 DEVICE_CH3
rename DEVICE_CH1 DEVICE_CH2
set DEVICE attrTemplate set_associatedWith \CHANNELS=4
setreading DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4 attrTemplateVersion 20230104
attr DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4 model powerstripg4

Beta-User

Zitat von: drhirn am 30 März 2026, 15:50:27set DEVICE attrTemplate set_associatedWith \CHANNELS=4
Hmm, irgendwie _glaube_ ich, dass diese Zeile (viel) zu spät kommt, bzw. hier wohl entfallen müßte, einfach, weil die Nummerierung nicht paßt (wegen der Array-like Zählweise).

Gedacht ist es (mit dem Zusatz "MAKECOPIES") so, dass man das sehr früh aufrufen kann, um dann "leere" und bereits als zusammengehörend gemarkerte Devices zu haben. Eventuell macht der rename-Block vorne in Verbindung mit diesem Aufruf die Probleme mit den doppelten Einträgen?

Sonst ist "unschön", dass man den "command"-Teil in der readingList wegfiltern muss (das ist eine Folge aus der Verwendung von MQTT2_CLIENT). Mir gefällt es eigentlich besser, wenn man das am IO mit ignoreRegexp macht, aber das scheint hier nicht so einfach zu sein...?
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

drhirn

Wenn ich die Zeile lösche, passt "Probably associated with" perfekt!

Den "command" Teil muss man nicht wegfiltern. Passiert nichts, wenn man's nicht tut. Steht nur drinnen, welche Befehle an das Device geschickt wurden. Ich halt das für eine unwichtige Information, deswegen hab ich's gefiltert.