Hallo zusammen,
Folgendes problem:
Ich habe ein Device welches mir das Reading aktRunningAction
mit den states on, off, noAction
liefert.
Für eine Automation benöige ich das Reading aber in dieser Form 0, 1, 2
Kann man das mittels Userreading und Perl machen?
Oder muss ich den Weg über ein DOIF gehen?
Da ich null Plan von Perl habe, wäre ich froh über einen Ansatz.
Hi,
ev. so: im DEF Editor eingeben. Nicht getestet, kann Fehler enthalten!
userReadings
newState:aktRunningAction:.* {my %t=('on'=>0,'off'=>1,'noAction'=>2);return $t{ReadingsVal($name,'aktRunningAction','error')}}
Gruß Otto
Hallo Otto,
Vielen Dank für den Ansatz.
Ich kann das jetzt glaube ich nachvollziehen, allerdings wird das reading newState
nicht angelegt.
Evtl ein Fehler im Syntax?
Habs jetzt so gelöst.
PositionState {if(ReadingsVal("Siro_Buero","aktRunningAction","") eq "on") {return 0} elsif (ReadingsVal("Siro_Buero","aktRunningAction","") eq "off") {return 1} elsif (ReadingsVal("Siro_Buero","aktRunningAction","") eq "noAction") {return 2}}
Danke für den Anstoß!
Zitat von: Feinfinger am 05 Mai 2021, 21:06:27
Hallo Otto,
Vielen Dank für den Ansatz.
Ich kann das jetzt glaube ich nachvollziehen, allerdings wird das reading newState
nicht angelegt.
Evtl ein Fehler im Syntax?
Liegt mMn. am trigger des userReadings (darum gings gerade heute in einem anderen Thread), der sollte meinem Verständnis nach dann mit
newState:aktRunningAction:.* definiert werden, dann wärs mit dem Hash-Beispiel kürzer und übersichtlicher umgesetzt.
Thomas hat Recht, ich habe es oben geändert.
Wie null Plan von perl sieht Dein Code aber nicht aus :)
das müsste doch auch mit FHEM Bordmitteln funktionieren, oder?
attr <device> eventMap on:0 off:1 noAction:2
cheers
mi.ke
Zitat von: Otto123 am 05 Mai 2021, 22:04:07
Wie null Plan von perl sieht Dein Code aber nicht aus :)
:) Danke für die Blumen
Deine Variante ist aber definitiv schöner und kürzer!
Hab ich jetzt auch übernommen ;)
Zitat von: mi.ke am 05 Mai 2021, 22:13:54
das müsste doch auch mit FHEM Bordmitteln funktionieren, oder?
attr <device> eventMap on:0 off:1 noAction:2
cheers
mi.ke
eventMap ist nicht ganz so optimal, da es im device mehrere readings gibt, die ein ,,on" oder ,,off" ausgeben.