FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: David-Lee am 09 April 2017, 13:15:00

Titel: IF Bedingung
Beitrag von: David-Lee am 09 April 2017, 13:15:00
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
Titel: Antw:IF Bedingung
Beitrag von: MKeY am 09 April 2017, 14:27:20
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")}}
Titel: Antw:IF Bedingung
Beitrag von: David-Lee am 09 April 2017, 15:58:00
So meine ersten Tests waren mit deinen Code erfolgreich :)

Vielen lieben Dank für Deine Hilfe.



Titel: Antw:IF Bedingung
Beitrag 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.
Titel: Antw:IF Bedingung
Beitrag von: Damian am 09 April 2017, 18:07:30
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)
Titel: Antw:IF Bedingung
Beitrag von: MKeY am 09 April 2017, 18:50:08
ich war erst versucht es so zu schrieben gem. Analogie, hab mich dann lieber auf Altbewertes berufen  ::)
Titel: Antw:IF Bedingung
Beitrag 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
Titel: Antw:IF Bedingung
Beitrag von: igami am 15 April 2017, 20:48:55
Warum steht um sunrise eine eckige Klammer?
Titel: Antw:IF Bedingung
Beitrag von: David-Lee am 15 April 2017, 21:08:18
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 "}}"
Titel: Antw:IF Bedingung
Beitrag von: Damian am 15 April 2017, 22:02:12
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)
Titel: Antw:IF Bedingung
Beitrag von: David-Lee am 15 April 2017, 23:10:59
es läuft, super vielen lieben dank :)