FHEM Forum

FHEM - Hausautomations-Systeme => EnOcean => Thema gestartet von: Floon am 03 Januar 2018, 21:26:14

Titel: Toggle mit UntoggleDirect funktioniert nicht
Beitrag von: Floon am 03 Januar 2018, 21:26:14
Hallo!

Ich habe Probleme den UntoggleDirect zum laufen zu bekommen. Der toggle Befehl schaltet immer nur den Verbraucher ein, aber nicht aus. Einzelbefehle funktioneren allerdings.

Was ist alles eingestellt:
defmod wz.Licht_toggle notify wz.Licht {UntoggleDirect("wz.Licht")}


defmod wz.Licht EnOcean xxxx
attr wz.Licht IODev TCM_ESP3_0
attr wz.Licht eventMap /AI:on/ /A0:off/
attr wz.Licht manufID 00D
attr wz.Licht model TF
attr wz.Licht room Wohnzimmer
attr wz.Licht subType switch
attr wz.Licht switchMode switch


Im Frontend funktioniert alles sauber mit
set wz.Licht off
und
set wz.Licht on
aber eben bei
set wz.Licht toggle
schaltet sich das Licht nur ein, aber beim zweiten mal sendet es auch nur den Ein-Befehl. Das erkennt man im Log
2018.01.03 21:12:07 3 : EnOcean set wz.Licht AI
2018-01-03 21:12:07 EnOcean wz.Licht channelA: on
2018-01-03 21:12:07 EnOcean wz.Licht on
2018.01.03 21:12:33 3 : EnOcean set wz.Licht AI
2018-01-03 21:12:33 EnOcean wz.Licht channelA: on
2018-01-03 21:12:33 EnOcean wz.Licht on


Der in meinen Augen richtige Status mit entweder off bzw. on wird eigentlich auch korrekt mit
{OldValue("wz.Licht")}
bestätigt.

Und der UntoggleDirect Code steht natürlich auch sauber in der 99_utils.pm drin
######## UntoggleDirect ###########################################
# What  : For devices paired directly, converts state 'toggle' into 'on' or 'off'
# Call  : { UntoggleDirect("myDevice") }
#         define untoggle_myDevice notify myDevice { UntoggleDirect("myDevice") }
# Source: http://www.fhemwiki.de/wiki/FS20_Toggle_Events_auf_On/Off_umsetzen
sub UntoggleDirect($)
{
my ($obj) = shift;
Log 4, "UntoggleDirect($obj)";
if (Value($obj) eq "toggle"){
   if (OldValue($obj) eq "off") {
     {fhem ("setstate ".$obj." on")}
   }
   else {
     {fhem ("setstate ".$obj." off")}
   }
}
else {
   {fhem "setstate ".$obj." ".Value($obj)}

}


Was mache ich falsch?


Gruß Florian