Hauptmenü

DOIF und LichtWetter

Begonnen von omnior, 01 September 2017, 10:38:10

Vorheriges Thema - Nächstes Thema

omnior

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. :)

kumue

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

Brockmann

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.

Frank_Huber

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


omnior

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?

CoolTux


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


So sollte es aber gehen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

omnior

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 :)

Frank_Huber

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.

omnior

Perfekt! Wirklich super Community! Hoffe dass ich auch mal so weit bin und anderen so schnell helfen kann  ;)