FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: omnior am 01 September 2017, 10:38:10

Titel: DOIF und LichtWetter
Beitrag von: omnior am 01 September 2017, 10:38:10
ich schalte eine einfache Lampe ein, wenn Bewohner anwesend sind und das Lichtwetter einen bestimmten Wert erreicht.

([LichtWetter:state] > 6 and [BewohnerAnwesenheit:"1"]) (set Lampe on) DOELSE (set Lampe off)

Das funktioniert auch, aber nach kurzer Zeit schaltet sich die Lampe wieder aus. Irgendwas ist noch falsch, da ich im Log ersehen kann, dass dies jeweils bei der folgenden Aktualisierung des LichtWetters erfolgt. Dort wird offensichtlich irgendein anderer Wert (nicht light) in den readings verändert und das löst dann im DOIF das cmd2 aus und schaltet die Lampe aus.

2017-09-01 10:35:58 ZWave Lampe off
2017-09-01 10:35:58 DOIF di_lamp cmd_nr: 2
2017-09-01 10:35:58 DOIF di_lamp cmd: 2
2017-09-01 10:35:58 DOIF di_lamp cmd_event: LichtWetter
2017-09-01 10:35:58 DOIF di_lamp cmd_2
2017-09-01 10:35:58 Twilight LichtWetter azimuth: 127.98
2017-09-01 10:35:58 Twilight LichtWetter elevation: 37.33
2017-09-01 10:35:58 Twilight LichtWetter twilight: 100
2017-09-01 10:35:58 Twilight LichtWetter twilight_weather: 100
2017-09-01 10:35:58 Twilight LichtWetter compasspoint: east-southeast


Wie kann ich das umgehen, bzw. was mache ich falsch? Irgendein Attribut was gesetzt werden muss?

Wäre für eine Hilfe sehr dankbar. :)
Titel: Antw:DOIF und LichtWetter
Beitrag von: kumue am 01 September 2017, 10:46:34
wenn LichtWetter:state nciht triggern soll, dann ein ? davor..
([BewohnerAnwesenheit:"1"] and [?LichtWetter:state] > 6) (set Lampe on) DOELSE (set Lampe off)

https://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger (https://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger)
Titel: Antw:DOIF und LichtWetter
Beitrag von: Brockmann am 01 September 2017, 10:48:01
Das Problem ist, dass Du auf ein Ereignis triggerst ([BewohnerAnwesenheit:"1"]).
Das ist nur in dem Moment wahr, wo es auftritt. Wenn das DOIF durch eine Aktualisierung von Twilight getriggert wird, ist die Bedingung [BewohnerAnwesenheit:"1"] also nicht wahr, deshalb gehts ins DOELSE.

Lösung siehe kumue.
Titel: Antw:DOIF und LichtWetter
Beitrag von: Frank_Huber am 01 September 2017, 10:52:45
Oder ([BewohnerAnwesenheit] eq "1" and.... )
Triggern wirst das LichtWetter ja auch wollen, sonst passiert ja nix wenn es dunkel/hell wird.

Gesendet von meinem S3_32 mit Tapatalk

Titel: Antw:DOIF und LichtWetter
Beitrag von: omnior am 01 September 2017, 11:05:31
Ok, das mit dem ? hab ich jetzt kapiert, aber das bringt ja nicht die Lösung, wie Frank_Huber richtig geschrieben hat, denn natürlich soll darauf ja auch getriggert werden.
Tatsächlich hat die Veränderung von [BewohnerAnwesenheit] eq "1" gegenüber der vorher von mir veränderten Version [BewohnerAnwesenheit:"1"] den gewünschten Erfolg gebracht. DANKE dafür.

Kann mir jemand auf die Sprünge helfen WARUM das so ist? Meine Lösung war auf ein "Ereignis" gemünzt. Was ist dann denn jetzt der Unterschied?
Titel: Antw:DOIF und LichtWetter
Beitrag von: CoolTux am 01 September 2017, 11:09:07

([LichtWetter:state] > 6 and [BewohnerAnwesenheit] == 1) (set Lampe on) DOELSE (set Lampe off)


So sollte es aber gehen
Titel: Antw:DOIF und LichtWetter
Beitrag von: omnior am 01 September 2017, 11:18:14
ja, eq ="1" und == 1 geht beides, danke. Damit ich zukünftig solche Anfängerfehler vermeiden kann, wäre mir halt mit einer Erklärung geholfen was genau dieser Unterschied bedeutet :)
Titel: Antw:DOIF und LichtWetter
Beitrag von: Frank_Huber am 01 September 2017, 11:21:47
Zitat von: omnior am 01 September 2017, 11:05:31
Kann mir jemand auf die Sprünge helfen WARUM das so ist? Meine Lösung war auf ein "Ereignis" gemünzt. Was ist dann denn jetzt der Unterschied?

Ereignis: NUR genau der Moment wo die Anwesenheit von 0 auf 1 wechselt.
Zustand: ist wahr solange der Zustand ansteht.

btw: Die Möglichkeit von CoolTux geht auch. musst dann nur aufpassen wenn Du es auf andere Sachen adaptiertst. eq "xx" vergleicht strings, == / >= / <= usw vergleicht Zahlen.
sobald es also nicht rein numerisch ist bist mit eq besser dran.
Titel: Antw:DOIF und LichtWetter
Beitrag von: omnior am 01 September 2017, 11:26:51
Perfekt! Wirklich super Community! Hoffe dass ich auch mal so weit bin und anderen so schnell helfen kann  ;)