FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: trs am 21 Juli 2019, 12:06:54

Titel: DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: trs am 21 Juli 2019, 12:06:54
Hallo,

ich möchte, das ein DOIF beim erstenmal wahrwerden der Bedingung etwas ausführt, und beim erneuten wahrwerden der gleichen Bedingung den nächsten Befehl ausführt, usw. Ich bekommes es aber nicht hin.

Gruss
Thorsten
Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: DasQ am 21 Juli 2019, 16:45:31
Das müsste wie bei meiner Waschmaschine/trocknerfertig doif über den State gehen.
Einfach and verschachteln wie im meim Beispiel.

defmod DoIfWaescheStatus DOIF ([sonoff_Waschmaschine:ENERGY_Power]          > 3  and [?DoIfWaescheStatus] =~ "cmd_4|initialized")(({Log 3, "Waschmaschinen an"}))\
DOELSEIF ([sonoff_Waschmaschine:ENERGY_Power] > 10 and [?DoIfWaescheStatus] eq "cmd_1")            (({Log 3, "Waschmaschinen läuft"}))\
DOELSEIF ([sonoff_Waschmaschine:ENERGY_Power] < 3  and [?DoIfWaescheStatus] eq "cmd_2")            (({Log 3, "Waschmaschinen ist bald fertig"})) \
DOELSEIF ([sonoff_Waschmaschine:ENERGY_Power] <= 2 and [?DoIfWaescheStatus] eq "cmd_3")            (set telebot message @#Zuhause Waschmaschine: Fertig)
Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: trs am 21 Juli 2019, 17:04:27
Hmm, probier ich aus. Müsste das nicht auch irgendwie mit dem Attribut "repeatsame" gehen?

Gruss
Thorsten
Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: amenomade am 21 Juli 2019, 17:12:00
Nein, repeatsame ist um ein repeat zu begrenzen.
Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: trs am 21 Juli 2019, 17:45:38
@DasQ: Welche Attribute hast Du gesetzt?

Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: amenomade am 21 Juli 2019, 18:18:26
Sollte ohne Attribute funktionieren.
Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: trs am 21 Juli 2019, 18:29:47
defmod Alexa_Hallo DOIF ([XMI_0x00158d0001fa4075:state] eq "motion")\
(set ECHO_G090U50991230BJP speak "Hallo  schön das du da bist") \
DOELSEIF \
([XMI_0x00158d0001fa4075:state] eq "motion" and [?Alexa_Hallo] eq "cmd_1")  \
(set ECHO_G090U50991230BJP speak "Jetzt sind wir beide ganz alleine")\
DOELSEIF \
([XMI_0x00158d0001fa4075:state] eq "motion" and [?Alexa_Hallo] eq "cmd_2")\
(set ECHO_G090U50991230BJP speak "Test")\

attr Alexa_Hallo room Gästebad
attr Alexa_Hallo wait 5

setstate Alexa_Hallo cmd_1
setstate Alexa_Hallo 2019-07-21 18:28:22 Device XMI_0x00158d0001fa4075
setstate Alexa_Hallo 2019-07-21 18:26:24 cmd 1
setstate Alexa_Hallo 2019-07-21 18:26:24 cmd_event XMI_0x00158d0001fa4075
setstate Alexa_Hallo 2019-07-21 18:26:24 cmd_nr 1
setstate Alexa_Hallo 2019-07-21 18:28:22 e_XMI_0x00158d0001fa4075_state no_motion
setstate Alexa_Hallo 2019-07-21 18:23:32 mode enabled
setstate Alexa_Hallo 2019-07-21 18:26:24 state cmd_1
setstate Alexa_Hallo 2019-07-21 18:26:24 wait_timer no timer


Geht nicht... Bleibt bei "cmd_1" stehen

Gruss
Thorsten
Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: DasQ am 21 Juli 2019, 18:30:51
Naja ich hab schon Attribute dran, aber die tun nichts zur Sache (room, Group, wait usw)

BTW. Fehlt dir ja auch die initial oder letztes cmd abfrage in deiner ersten prüfung
Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: trs am 21 Juli 2019, 18:38:36
Scheint aber bei der ersten Abfrage nicht wichtig zu sein. Die wird ja ausgeführt. Die Zweite aber nicht mehr.
Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: DasQ am 21 Juli 2019, 18:40:04
defmod Alexa_Hallo DOIF ([XMI_0x00158d0001fa4075:state] eq "motion" and [?Alexa_Hallo] =~ "cmd_3|initialized")\
(set ECHO_G090U50991230BJP speak "Hallo  schön das du da bist") \
DOELSEIF \
([XMI_0x00158d0001fa4075:state] eq "motion" and [?Alexa_Hallo] eq "cmd_1")  \
(set ECHO_G090U50991230BJP speak "Jetzt sind wir beide ganz alleine")\
DOELSEIF \
([XMI_0x00158d0001fa4075:state] eq "motion" and [?Alexa_Hallo] eq "cmd_2")\
(set ECHO_G090U50991230BJP speak "Test")\
Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: amenomade am 21 Juli 2019, 18:46:00
Zitat von: trs am 21 Juli 2019, 18:38:36
Scheint aber bei der ersten Abfrage nicht wichtig zu sein.
Ist es aber doch.
Sonst ist immer wieder die erste Bedingung wahr, wenn "motion" kommt, und da der Zustand schon cmd_1 ist, passiert nichts mehr.
Titel: Antw:DOIF: Nächsten Befehl abarbeiten bei erneutem wahrwerden der Bedingung
Beitrag von: trs am 21 Juli 2019, 18:51:12
GEHT!!! Hut ab, besten Dank;-))