Hauptmenü

event-on-update-reading

Begonnen von kalle86, 07 September 2016, 00:58:50

Vorheriges Thema - Nächstes Thema

kalle86

Folgende Situation.... Ich habe einen dummy angelegt:
define kinoschalter dummy
attr Kinoschalter setList on off
attr Kinoschalter webCmd on:off


an dem Dummy ist ein doif gekoppelt. Ich habe deshalt ein doif gewählt weil mehrere sachen in einer bestimmten zeit ausgeführt werden sollen:

define kinoan DOIF ([Kinoschalter] eq "on")(set Jalousin off)({system('sudo python /home/pi/soundwiedergabekino.py&');;})(set Lampe blink 5 1)(set Lampe on)DOELSE ()
attr kinoan wait 0,18,15,12


Es funktioniert auch alles soweit.....Nur wenn der dummy bereits auf on steht und ich erneut auf on drücke soll das DOIF erneut ausgeführt werden. Ich weiss nicht so ganz an welcher Stelle ich das event-on-update-reading setzten muss... :-\

igami

Zitat von: kalle86 am 07 September 2016, 00:58:50
Ich weiss nicht so ganz an welcher Stelle ich das event-on-update-reading setzten muss... :-\
Brauchst du erstmal nicht, da dein dummy kein event-on-change-reading hat.
Was du brauchst ist ein do always im DOIF
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Ellert

Nebenbei, statt
{system('sudo python /home/pi/soundwiedergabekino.py&');;}
sollte
"sudo python /home/pi/soundwiedergabekino.py"
reichen, siehe SHELL-Befehle

kalle86

Vielen dank für die Hinweise. Mit dem do always funktioniert das ganze  :D

Habe trotzdem noch eine Verständnisfrage zu event-on-change bzw. update reading

Beispiel Szenario
define Schalter dummy
attr Schalter1 setList on off
attr Schalter1 webCmd on:off
attr Schalter1 event-on-change-reading state

define Schalter2 dummy
attr Schalter2 setList on off
attr Schalter2 webCmd on:off
attr Schalter2 event-on-update-reading state

define Lampe dummy
attr Lampe setList on off
attr Lampe webCmd on:off

define Lampe_doif ([Schalter1] eq "on" and [Schalter2] eq "on")(set Lampe on)DOELSE ()
attr Lampe_doif do always


Angenommen:
Schalter1 & Schalter2 stehen auf on
Licht steht auf off

Dann schalte ich Schalter 1 auf off und danach wieder auf on --> dann geht die Lampe an ohne dass das reading von Schaler2 geupdatet wurde....Wo liegt mein Fehler


Ellert

#4
Die Bedingung ist wahr, weil [Schalter2] eq "on" wahr ist, das Reading bleibt "on".

Siehe Hilfe zum DOIF
ZitatZu beachten ist, dass nur die Bedingungen überprüft werden, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten.

Der Fehler ist, zu denken, es sei nicht so ;)