Zigbee Steckdose Tastensperre schalten

Begonnen von juergen012, 10 August 2023, 16:32:21

Vorheriges Thema - Nächstes Thema

juergen012

Hallo,
über zigbee2mqtt habe ich eine Steckdose mit Leistungsmessung eingebunden. Diese Steckdose hat eine Tastensperre, die über MQTT2_DEVICE ein-/ausgeschaltet werden kann. Das habe ich bereits eingebunden. Der Zustand wird über devStateIcon angezeigt. Zusätzlich möchte ich die Tastensperre durch "drücken" des Icons schalten können. Bei ON/OFF funktioniert das. Für LOCK/UNLOCK bekomme ich das aber nicht hin..
Vieleicht kann mir ein Wissender helfen.
List:

Internals:
   CFGFN     
   CID        zigbee_0x84ba20fffe77b4c8
   DEF        zigbee_0x84ba20fffe77b4c8
   FUUID      64d49c48-f33f-b02d-ec7d-9346821e93cb1320
   IODev      Mqtt2_Server
   LASTInputDev Mqtt2_Server
   MSGCNT     632
   Mqtt2_Server_CONN Mqtt2_Server_172.16.10.23_56176
   Mqtt2_Server_MSGCNT 632
   Mqtt2_Server_TIME 2023-08-10 16:18:00
   NAME       MQTT2_zigbee_0x84ba20fffe77b4c8
   NR         215549
   STATE      on
   TYPE       MQTT2_DEVICE
   eventCount 723
   OLDREADINGS:
   READINGS:
     2023-08-10 10:14:00   IODev           Mqtt2_Server
     2023-08-10 10:14:00   associatedWith  MQTT2_zigbee_vm
     2023-08-10 10:14:30   attrTemplateVersion 20220622
     2023-08-10 16:18:00   child_lock      LOCK
     2023-08-10 16:18:00   current         0
     2023-08-10 16:18:00   energy          0.01
     2023-08-10 16:18:00   indicator_mode  off/on
     2023-08-10 11:39:50   json2nameValueInput ON
     2023-08-10 16:18:00   linkquality     255
     2023-08-10 16:17:00   lock            set
     2023-08-10 16:18:00   power           0
     2023-08-10 16:18:00   power_outage_memory restore
     2023-08-10 16:18:00   state           on
     2023-08-10 15:43:59   unlock          set
     2023-08-10 16:18:00   voltage         232
   hmccu:
Attributes:
   DbLogExclude .*
   autocreate 1
   devStateIcon {my $light = FW_makeImage(ReadingsVal($name,'state','off')eq 'on'?'radio_checked@red':'radio_unchecked@darkorange');;
my $lock = FW_makeImage (ReadingsVal($name,'child_lock','UNLOCK')eq 'LOCK'?'general_an@green':'general_aus@red');;

my $current = ReadingsVal($name,'current',0); my $pwr = ReadingsVal($name,'power',0);
my $energy = ReadingsVal($name,'energy',0);

qq(<div> <a href="/fhem?cmd.dummy=set $name toggle&XHR=1">$light</a>  Aktuell: $current A  Leistung.: $pwr W / Tastensperre: $lock<b></b>)}
   devicetopic zigbee2mqtt/0x84ba20fffe77b4c8
   genericDeviceType switch
   model      zigbee2mqtt_plug_w_energy_measuring
   readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
   room       MQTT2_DEVICE
   setList    on:noArg $DEVICETOPIC/set {"state":"ON"}
  off:noArg $DEVICETOPIC/set {"state":"OFF"}
  toggle:noArg $DEVICETOPIC/set {"state":"TOGGLE"}
  lock:noArg $DEVICETOPIC/set {"child_lock":"LOCK"}
  unlock:noArg $DEVICETOPIC/set {"child_lock":"UNLOCK"}
   setStateList on off toggle
   webCmd     :

Vielen Dank
Jürgen K.
Fhem unter Proxmox

rudolfkoenig

ZitatZusätzlich möchte ich die Tastensperre durch "drücken" des Icons schalten können.
Bei ON/OFF funktioniert das. Für LOCK/UNLOCK bekomme ich das aber nicht hin..
Dafuer kann man aehnlich zum vorhandenen a-Tag einen Weiteren hinzufuegen, mit je nach $lock Wert href="/fhem?cmd=set $name lock&XHR=1" oder href="/fhem?cmd=set $name unlock&XHR=1".

juergen012

zunaechst DANKE für die Hilfe.
Hatte erst Problme mit der Syntax..
jetzt habe ich es so geloest:

{my $light = FW_makeImage(ReadingsVal($name,'state','off')eq 'on'?'radio_checked@red':'radio_unchecked@darkorange');;
my $lock =  FW_makeImage(ReadingsVal($name,'child_lock','UNLOCK')eq 'LOCK'?'general_an@red':'general_aus@lime');;
my $unlock =  FW_makeImage(ReadingsVal($name,'child_lock','LOCK')eq 'UNLOCK'?'general_an@red':'general_aus@lime');;

my $current = ReadingsVal($name,'current',0); my $pwr = ReadingsVal($name,'power',0);
my $energy = ReadingsVal($name,'energy',0);

qq(<div> <a href="/fhem?cmd.dummy=set $name toggle&XHR=1">$light</a>  Aktuell: $current A  Leistung.: $pwr W / Tastensperre: <a href="/fhem?cmd=set $name lock&XHR=1">$lock</a> <a href="/fhem?cmd=set $name unlock&XHR=1"">$unlock</a><b></b>)}

geht bestimmt auch schoener..

Gruß
Jürgen K.
Fhem unter Proxmox