DOIF mit Abhängigkeiten und Zeitraum soll Steckdose zu fester Uhrzeit einschalte

Begonnen von tik-tak-tok, 25 April 2017, 21:08:42

Vorheriges Thema - Nächstes Thema

tik-tak-tok

Hallo zusammen,

noch eine DOIF Frage (welche aber nicht zur vorherigen passt).
Folgende Situation:
433 MHz Steckdose zum Laden, welche nur bei Bedarf an sein soll.
Dieser dummy heißt in FHEM "Laden_Schlafzimmer".
Desweiteren habe ich einen Dummy "HomeStatus" und mehrere Ping Checks mittels Presence Modul. Betreffende Geräte "Handy1" + "Handy2.

Nun möchte ich mit DOIF folgendes erreichen:
Wenn dummy "HomeStatus" den Status "home" hat und im Zeitraum von 18 bis 19 Uhr eines der beiden Handys (Handy1 oder Handy2) pingbar waren also "present" dann (und nur dann) soll die Steckdose um 20:00 Uhr "Laden_Schlafzimmer" mit on-for-timer 32400 (9 Stunden) angeschaltet werden.

Kann mir jemand helfen wie ich das DOIF ansetzen muss?

Mein Ansatz:
([HomeStatus] eq "home" and [Handy1] eq "present" or [Handy2] eq "present" (set Laden_Schlafzimmer on-for-timer 32400) code]
Nur wie bringe ich da den Schaltzeitpunkt um 20:00 Uhr unter?  Ist das "or" zwischen den Handy Pings so richtig?

Danke & Gruß,
Mike

KernSani


Müsste in etwa so funktionieren
([HomeStatus] eq "home" and [20:00]  and ([Handy1] eq "present" or [Handy2] eq "present")) (set Laden_Schlafzimmer on-for-timer 32400)
Klammer um die OR verknüpften
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Damian

Zitat von: KernSani am 25 April 2017, 22:05:02
Müsste in etwa so funktionieren
([HomeStatus] eq "home" and [20:00]  and ([Handy1] eq "present" or [Handy2] eq "present")) (set Laden_Schlafzimmer on-for-timer 32400)
Klammer um die OR verknüpften

eher

([HomeStatus] eq "home" and [18:00-19:00]  and ([Handy1] eq "present" or [Handy2] eq "present"))
DOELSEIF ([20:00] and $cmd==1) (set Laden_Schlafzimmer on-for-timer 32400)
DOELSEIF ([00:00])
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

DOELSEIF ([20:00] and $cmd==1) (set Laden_Schlafzimmer on-for-timer 32400)
Geht $cmd==1 auch ohne attr selfTrigger? Oder muss es ?$cmd==1 heißen?

Damian

Zitat von: Per am 26 April 2017, 09:22:09
DOELSEIF ([20:00] and $cmd==1) (set Laden_Schlafzimmer on-for-timer 32400)
Geht $cmd==1 auch ohne attr selfTrigger? Oder muss es ?$cmd==1 heißen?

$cmd ist nur eine Perl-Variable, die den Zustand enthält, sie triggert nie.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

ich sehe gerade, dass das Zurücksetzen des Zustands um  Mitternacht gar nicht erforderlich ist, da der Zustand cmd_1 durch den set-Befehl auf cmd_2  geändert wird, daher sollte schon ausreichen:

([HomeStatus] eq "home" and [18:00-19:00]  and ([Handy1] eq "present" or [Handy2] eq "present"))
DOELSEIF ([20:00] and $cmd==1) (set Laden_Schlafzimmer on-for-timer 32400)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF