Hallo,
ich versuche gerade eine IF Bedingung zu schreiben, die prüfen soll ob die Markise die manuell aktiviert wird, eine Stunde vor Sonnenuntergang automatisch wieder einfährt.
Hatte erst diesen Befehl definiert
define MarkiseAbendsEinfahren at *{sunset(-3600)} set Markise off
Funktioniert wunderbar, aber ich halte es persönlich für unnötig das der Befehl auch an Tagen gesendet wird obwohl sie gar nicht ausgefahren ist.
Daher habe ich mich auf dieser Seite über IF Bedingungen eingelesen: https://fhem.de/commandref_DE.html#IF
und versucht es so umzusetzen:
define MarkiseAbendsEinfahren at *{sunset(-3600)} IF ([Markise] eq "on") (set Markise off)
Das funktionert leider nicht und sie wird immer als Wahr genommen auch wenn die Markise eingefahren (off) ist.
Habe noch viele weitere Möglichkeiten genommen, aber es war immer das gleiche Ergebnis.
Ich würde mich sehr freuen wenn mir jemand sagen kann wo mein Denkfehler ist.
David-Lee
kann dir bei IF nicht weiterhelfen, sollte aber so funktionieren
define MarkiseAbendsEinfahren at *{sunset(-3600)} {if(ReadingsVal("Markise", "state", "") eq "on") {fhem("set Markise off")}}
So meine ersten Tests waren mit deinen Code erfolgreich :)
Vielen lieben Dank für Deine Hilfe.
Der Unterschied zwischen den beiden Abfragen ist, das [Markise] STATE abfragt und ReadingsVal("Markise", "state", "") state.
Zitat von: igami am 09 April 2017, 16:13:10
Der Unterschied zwischen den beiden Abfragen ist, das [Markise] STATE abfragt und ReadingsVal("Markise", "state", "") state.
und das
{if(ReadingsVal("Markise", "state", "") eq "on") {fhem("set Markise off")}}
ist das Gleiche wie das:
IF ([Markise:state] eq "on") (set Markise off)
ich war erst versucht es so zu schrieben gem. Analogie, hab mich dann lieber auf Altbewertes berufen ::)
Hallo,
ich hab da noch einmal eine Frage.
Um 5:55 Uhr soll das Licht im Flur eingeschaltet werden.
Die Bedingung ist das sunrise("HORIZON=-2.0") größer als 5:45 Uhr ist.
Sollte HORIZON=-2.0 kleiner als 5:45 Uhr sein soll FHEM nichts schalten.
Ich habe es mit diesen Code versucht, aber da bekomme ich einen Syntaxfehler.
define MorgensEinschalten at *05:55:00 IF ([sunrise("HORIZON=-2.0")] > 05:45:00 ) (set Tischlampe on)
Würde mich sehr freuen wenn einer eine Lösung für mich hat.
Liebe Grüße
David-Lee
Warum steht um sunrise eine eckige Klammer?
Oh sorry das kam von meinem verzweifelten rum experimentieren.
Auch ohne die klammern spuckt er mir einen Fehler aus:
MorgensEinschalten: syntax error at (eval 1991) line 1, near "05:"
syntax error at (eval 1991) line 1, near "}}"
Zitat von: David-Lee am 15 April 2017, 19:54:12
Hallo,
ich hab da noch einmal eine Frage.
Um 5:55 Uhr soll das Licht im Flur eingeschaltet werden.
Die Bedingung ist das sunrise("HORIZON=-2.0") größer als 5:45 Uhr ist.
Sollte HORIZON=-2.0 kleiner als 5:45 Uhr sein soll FHEM nichts schalten.
Ich habe es mit diesen Code versucht, aber da bekomme ich einen Syntaxfehler.
define MorgensEinschalten at *05:55:00 IF ([sunrise("HORIZON=-2.0")] > 05:45:00 ) (set Tischlampe on)
Würde mich sehr freuen wenn einer eine Lösung für mich hat.
Liebe Grüße
David-Lee
dann eher:
define MorgensEinschalten at *05:55:00 IF (sunrise("HORIZON=-2.0") gt "05:45:00" ) (set Tischlampe on)
es läuft, super vielen lieben dank :)