DOIF repeatcmd und Abfrage mit [?...

Begonnen von Fhemotto, 17 März 2020, 12:15:14

Vorheriges Thema - Nächstes Thema

Fhemotto

Hallo

Ich habe ein Verständnis Problem/Frage
Ein DOIF ([Dummy_test] eq "on" and [?Dummy_test2] eq "on" )
und Attribut  repeatcmd  z.B. 20 führt  bei allen "on"  zur zyklischen Ausführung .

Wenn Dummy_test2 nicht mehr ,,war" ist wird die Wiederholung trotzdem ausgeführt.
Wird bei repeatcmd  nicht mehr die aktuelle Bedingung abgefragt / bzw. wie könnte man dies lösen.
Ich möchte natürlich bei Änderung Dummy_Test2 keine Aktion auslösen, deshalb  [?...

Weiterhin hatte ich den Efekt, wobei nach dem Anlegen des DOIF der Status des Dummy_test2
wohl nicht abgefragt wurde ( [?... ) Ich musste diesen Dummy erst einmal auf off und wieder auf on ändern damit die Bedingung (das DOIF) ausgeführt wurde

Danke schon mal

Damian

Zitat von: Fhemotto am 17 März 2020, 12:15:14
Hallo

Ich habe ein Verständnis Problem/Frage
Ein DOIF ([Dummy_test] eq "on" and [?Dummy_test2] eq "on" )
und Attribut  repeatcmd  z.B. 20 führt  bei allen "on"  zur zyklischen Ausführung .

Wenn Dummy_test2 nicht mehr ,,war" ist wird die Wiederholung trotzdem ausgeführt.
Wird bei repeatcmd  nicht mehr die aktuelle Bedingung abgefragt / bzw. wie könnte man dies lösen.
Ich möchte natürlich bei Änderung Dummy_Test2 keine Aktion auslösen, deshalb  [?...

Weiterhin hatte ich den Efekt, wobei nach dem Anlegen des DOIF der Status des Dummy_test2
wohl nicht abgefragt wurde ( [?... ) Ich musste diesen Dummy erst einmal auf off und wieder auf on ändern damit die Bedingung (das DOIF) ausgeführt wurde

Danke schon mal

DOIF ([Dummy_test] eq "on" and [?Dummy_test2] eq "on" ) ...
DOELSEIF ([Dummy_test2] eq "off" )


könnte dein Problem lösen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fhemotto

Dank für die schnelle Antwort

Ich hatte nur kurz mit Test Doif/Dummy probiert

Hier mein tasächliches DOIF:

([Waschmaschine.Watt] < 1 and [?FritzDect_Waschmaschine] eq "on" and [?Dummy_Es_ist_jemand_da] eq "on" and [?Dummy_Urlaub_keiner_da] eq "off")
(set DOIF_Lampenzustand_sichern cmd_1)
(set Dummy_Bilder_Ansagen_Alle Send_Audio Audio_Waschmaschine)
(set Dummy_Bilder_Ansagen_Alle Send_Bild Bild_Waschmaschine)
(set DOIF_Alle_Ansage checkall)
(set DOIF_Alle_Bild checkall)
(set myTelegramBotMain message @Ixxx Waschmaschine ist fertig. Bitte Wäsche aufhängen.)
(set Dose_2_Weihnachtsbaum blink 2 4)
((set LED_TV hsv 240,100,100))
((set LED_Kueche hsv 240,100,100))
(set DOIF_Lampenzustand_herstellen cmd_1)
DOELSEIF ([Waschmaschine.Watt] < 1 and [?FritzDect_Waschmaschine] eq "on" and [?Dummy_Es_ist_jemand_da] ne "on")
  (set myTelegramBotMain message @xxx Waschmaschine ist fertig. Bitte Wäsche aufhängen.)

repeatcmd 3600:3600
wait 35,0,0,1,0,0,0,0,0,10:0


Wenn z.B nun die Wäsche entnommen wurde schaltet meine Frau die DECT (FritzDect_Waschmaschine) aus
somit soll es keine weiteren Meldungen geben.

Entschuldigung also nochmal die Frage, werden bei repeatsame nicht mehr alle Bedingungen abgefragt?

Mit dem Vorschlag DOELSEIF kann ich mich noch nicht anfreunden /Verstehen ...

Damian

#3
Zitat von: Fhemotto am 17 März 2020, 18:50:21
Dank für die schnelle Antwort

Ich hatte nur kurz mit Test Doif/Dummy probiert

Hier mein tasächliches DOIF:

([Waschmaschine.Watt] < 1 and [?FritzDect_Waschmaschine] eq "on" and [?Dummy_Es_ist_jemand_da] eq "on" and [?Dummy_Urlaub_keiner_da] eq "off")
(set DOIF_Lampenzustand_sichern cmd_1)
(set Dummy_Bilder_Ansagen_Alle Send_Audio Audio_Waschmaschine)
(set Dummy_Bilder_Ansagen_Alle Send_Bild Bild_Waschmaschine)
(set DOIF_Alle_Ansage checkall)
(set DOIF_Alle_Bild checkall)
(set myTelegramBotMain message @Ixxx Waschmaschine ist fertig. Bitte Wäsche aufhängen.)
(set Dose_2_Weihnachtsbaum blink 2 4)
((set LED_TV hsv 240,100,100))
((set LED_Kueche hsv 240,100,100))
(set DOIF_Lampenzustand_herstellen cmd_1)
DOELSEIF ([Waschmaschine.Watt] < 1 and [?FritzDect_Waschmaschine] eq "on" and [?Dummy_Es_ist_jemand_da] ne "on")
  (set myTelegramBotMain message @xxx Waschmaschine ist fertig. Bitte Wäsche aufhängen.)

repeatcmd 3600:3600
wait 35,0,0,1,0,0,0,0,0,10:0


Wenn z.B nun die Wäsche entnommen wurde schaltet meine Frau die DECT (FritzDect_Waschmaschine) aus
somit soll es keine weiteren Meldungen geben.

Entschuldigung also nochmal die Frage, werden bei repeatsame nicht mehr alle Bedingungen abgefragt?

Mit dem Vorschlag DOELSEIF kann ich mich noch nicht anfreunden /Verstehen ...

repeatsame wird solange wiederholt, bis das Modul den Zustand/Status/Zweig wechselt. Du musst also deine Definition so ändern, dass das Modul im gewünschten Falle in einen DOELSEIF- Zweig ohne repeatsame wechselt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fhemotto

#4
Ah OK, Danke, somit habe ich nun (ich hoffe) die Arbeitsweise von repeatsame(EDIT wir meinten warscheinlich beide repeatcmd :o ) verstanden und kann damit
deinen Vorschlag, denke ich, umsetzen.   :D

Damian

Zitat von: Fhemotto am 17 März 2020, 19:36:57
Ah OK, Danke, somit habe ich nun (ich hoffe) die Arbeitsweise von repeatsame(EDIT wir meinten warscheinlich beide repeatcmd :o ) verstanden und kann damit
deinen Vorschlag, denke ich, umsetzen.   :D

Ob repeatsame oder repeatcmd oder sonst ein Attribut, welches man mit : pro Zweig definiert, es verliert seine Gültigkeit, wenn der Zweig wechselt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fhemotto

Gut zu wissen, nochmals Danke, läuft nun perfekt. 8)