Hallo,
ich habe ein kleines Problem mit meiner DOIF-Abfrage:
ich möchte das jeden Tag um 8:30 geschaut wird ob die Tageshöchsttemperatur laut Wetterbericht (Device "Wetter", Reading "fc1_high_c") höher ist als 15°C und wenn das so ist, die Heizung (Device "Heizungsschalter") abgeschaltet wird. Ansonsten soll nichts weiter passieren.
Mit folgendem Code wird die Heizung nicht abgeschaltet obwohl der Readingswert 19 beträgt.
define Heizung_Wettervorhersage DOIF ([08:30|8] or [08:30|7] and [Wetter:fc1_high_c] > 15) (set Heizungsschalter off) DOELSE (set Heizungsschalter on)
Wie kann man es lösen das das ganze tagsüber ab 8:30 Uhr abgefragt wird. Weil wenn ich Fhem nach 8:30 Uhr neustarte, würde die Abfrage ja nicht mehr auslösen.
Gruß, Sascha
Moin!
Die commandref ist dein Freund.
http://fhem.de/commandref_DE.html#DOIF
Unter anderem steht da:
Zitat
Hinter der Zeitangabe kann ein oder mehrere Wochentage als Ziffer getrennt mit einem Pipezeichen | angegeben werden. Die Syntax lautet:
[<time>|012345678] 0-8 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochende und Feiertage (entspricht $we) und 8 für Arbeitstage (entspricht !$we)
Wenn ich deinen Anwendungsfall richtig sehe, möchtest du die Prüfung täglich ausführen, insofern benötigst du die Wochentage garnicht.
Du brauchst nur... Eine Zeitangabe in der Form [08:30] und dein reading zur Überwachung.
Damit wird jedoch die Heizung nicht wieder eingeschaltet, weshalb ich das doif mit einem Zeitfenster in der Form [08:30-18:00] und deinem reading ausstatten würde. Wobei dann eben auch dein doelse doppelt zum tragen kommt, und nach 18 Uhr die Heizung eben auch wieder einschaltet wenn die Tageshoechsttemperatur über deinem Wert liegt.
Grüße
anfichtn
Das sollte wie folgt funktionieren:
define Heizung_Wettervorhersage DOIF ([08:30] and [?Wetter:fc1_high_c] > 15) (set Heizungsschalter off) DOELSE (set Heizungsschalter on)
Man beachte das Fragezeichen vor dem abgefragten Reading.
Edit:
Und denke daran, attr Heizung_Wettervorhersage do always zu setzen, damit auch an mehreren schönen Tagen hintereinander das entsprechend funktioniert.
@Ralli: was genauch bewirkt denn das Fragezeichen? In diesem Punkt verstehe ich die Commandref nicht.
Gruß, Sascha
Dass dies als eine reine Bedingungsabfrage gewertet wird und nicht als Trigger/Auslöser.
das heißt wenn ich folgenden Code habe:
define Heizung_Wettervorhersage DOIF ([08:30-18:00] and [?Wetter:fc1_high_c] > 15) (set Heizungsschalter off) DOELSE (set Heizungsschalter on)
attr Heizung_Wettervorhersage do always
passiert folgendes:
wenn die Wettervorhersage in der Zeit von 8:30 bis 18:00 einen Tageshöchstwert von über 15°C vorhersagt wird der Heizungsschalter ausgeschaltet . Das passiert auch wenn sich der Tageshöchstwert im laufen den Tages von erst unter 15°C auf über 15° verändert.
Gruß, Sascha
Nein, das sind andere Voraussetzungen als in der Fragestellung im Threadstart.
Deine Ausgangsaufgabe war, um 08.30 Uhr zu prüfen, ob ...
Wenn Du das über den gesamten Tag über bei sich ändernden Werten prüfen lassen willst, musst Du das Fragezeichen wegnehmen, denn dann muss der DOIF ja auch über die Temperatur getriggert werden.
OK, jetzt habe ich es verstanden. Danke.
Gruß, Sascha
Zitat von: Ralli am 16 April 2015, 13:25:41
Wenn Du das über den gesamten Tag über bei sich ändernden Werten prüfen lassen willst, musst Du das Fragezeichen wegnehmen, denn dann muss der DOIF ja auch über die Temperatur getriggert werden.
und das do always Attribut gleichzeitig löschen, sonst wird jedes Mal, wenn Temperatur gesendet wird, der Heizungsschalter geschaltet.
Gruß
Damian