FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: andies am 10 Juni 2018, 22:56:39

Titel: geöffnetes Fenster soll Aktion auslösen, geschlossenes beenden
Beitrag von: andies am 10 Juni 2018, 22:56:39
Ich habe folgendes Problem und hätte gern einen Stupser in die richtige Richtung. Wenn das Fenster offen ist und zudem die Temperatur im Raum kleiner als X°C, dann soll alle zehn Minuten eine EMail geschickt werden. Wenn das Fenster wieder zu ist, dann soll keine Email mehr rausgehen. Das habe ich jetzt so entworfen:
defmod SchlafzimmerDoif DOIF (([Schlafzimmerfenster:state] eq "open") and ([Schlafzimmer:temperatur] < 11))
(defmod MailSchlafzimmerfensterOffen at +*00:12:00 {DebianMail("<Adresse>","Fenster offen!","Das Fenster im Schlafzimmer ist seit zwölf Minuten offen! Dort sind es jetzt ".sprintf("%.0f°C",ReadingsVal("Schlafzimmer","Temperature",""))." und das ist KALT. Bitte schließen.","/opt/fhem/www/snapshots/SchlafzimmerFensterOffen.jpg")})
DOELSEIF ([Schlafzimmerfenster:state] eq "closed") (delete MailSchlafzimmerfensterOffen)

Ist das so ok? Wenn das Gerät nicht angelegt wurde (weil die Temperatur nicht tief genug war), dann löst "delete MailSchlafzimmerfensterOffen" ja eine Fehlermeldung aus!

Ich setze zum ersten Mal ein komplexeres DOIF ein...
Titel: Antw:geöffnetes Fenster soll Aktion auslösen, geschlossenes beenden
Beitrag von: amenomade am 11 Juni 2018, 00:36:53
defmod SchlafzimmerDoif DOIF (([Schlafzimmerfenster:state] eq "open") and ([Schlafzimmer:temperatur] < 11)
   {DebianMail(...der Roman...)}
attr SchlafzimmerDoif repeatcmd 600
attr SchlafzimmerDoif wait 600
Titel: Antw:geöffnetes Fenster soll Aktion auslösen, geschlossenes beenden
Beitrag von: andies am 11 Juni 2018, 06:25:57
Wenn das Fenster frühzeitig geschlossen wird, wird dann kein Roman gesendet?
Titel: Antw:geöffnetes Fenster soll Aktion auslösen, geschlossenes beenden
Beitrag von: amenomade am 11 Juni 2018, 10:03:26
Zitat von: andies am 11 Juni 2018, 06:25:57
Wenn das Fenster frühzeitig geschlossen wird, wird dann kein Roman gesendet?
Nw. richtig, da das DOIF auf cmd_2 springen wird, und der Timer wait 600 damit abgebrochen wird.
Wenn die Temperatur wieder über 11 kommt, genauso.
Aber teste mal ;)
Titel: Antw:geöffnetes Fenster soll Aktion auslösen, geschlossenes beenden
Beitrag von: Per am 11 Juni 2018, 12:04:19
Zitat von: amenomade am 11 Juni 2018, 10:03:26Nw. richtig, da das DOIF auf cmd_2 springen wird, und der Timer wait 600 damit abgebrochen wird.
Dafür fehlt in deinem Beispiel aber cmd_2. Also einfach DOELSE dranhängen.

Zitat von: amenomade am 11 Juni 2018, 00:36:53...der Roman...
;D ;D ;D
Titel: Antw:geöffnetes Fenster soll Aktion auslösen, geschlossenes beenden
Beitrag von: amenomade am 11 Juni 2018, 12:20:36
Nein, in DOIFs mit einziger Bedingung ohne do always braucht man kein leeres DOELSE. DOIF macht das selbst (implizit).
Aber weh tut es nicht ;)
Titel: Antw:geöffnetes Fenster soll Aktion auslösen, geschlossenes beenden
Beitrag von: Damian am 11 Juni 2018, 12:54:02
Zitat von: amenomade am 11 Juni 2018, 12:20:36
Nein, in DOIFs mit einziger Bedingung ohne do always braucht man kein leeres DOELSE. DOIF macht das selbst (implizit).
Aber weh tut es nicht ;)

So ist es - steht auch in der Commandref. Ansonsten könnte DOIF bei solch einer Definition nur einmal schalten, weil es aus cmd1 nicht mehr herauskäme ;)
Titel: Antw:geöffnetes Fenster soll Aktion auslösen, geschlossenes beenden
Beitrag von: sash.sc am 11 Juni 2018, 16:37:38
Bist Du sicher dass das Reading "temperatur" und nicht "temperature" heisst? Ist Schlafzimmer ein Dummy oder device?

Gruß Sascha

Gesendet von meinem SM-T560 mit Tapatalk

Titel: Antw:geöffnetes Fenster soll Aktion auslösen, geschlossenes beenden
Beitrag von: andies am 11 Juni 2018, 18:07:22
Ist ein device, HM-MOD-Sec plus angeschlossenes wemos mit DTH-22.