Hauptmenü

IF Bedingung

Begonnen von David-Lee, 09 April 2017, 13:15:00

Vorheriges Thema - Nächstes Thema

David-Lee

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

MKeY

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")}}
Wer Fehler findet, darf sie behalten!
RPi's, D1Mini
Homematic, Hue, Sonoff, Alexa, Xiaomi, ConBee
Prusa MK2.5, Prusa MK3S (MMU2S vorhanden, aber nervtötend)
Lowrider 2CNC

David-Lee

So meine ersten Tests waren mit deinen Code erfolgreich :)

Vielen lieben Dank für Deine Hilfe.




igami

Der Unterschied zwischen den beiden Abfragen ist, das [Markise] STATE abfragt und ReadingsVal("Markise", "state", "") state.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Damian

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)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MKeY

ich war erst versucht es so zu schrieben gem. Analogie, hab mich dann lieber auf Altbewertes berufen  ::)
Wer Fehler findet, darf sie behalten!
RPi's, D1Mini
Homematic, Hue, Sonoff, Alexa, Xiaomi, ConBee
Prusa MK2.5, Prusa MK3S (MMU2S vorhanden, aber nervtötend)
Lowrider 2CNC

David-Lee

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

igami

Warum steht um sunrise eine eckige Klammer?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

David-Lee

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 "}}"

Damian

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)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

David-Lee

es läuft, super vielen lieben dank :)