Hallo,
ich habe mir einen einfachen Doif gebaut, mit dem ich in der Zeit von 6:00 - 23.00 Uhr bei Anwesenheit und bestimmten Lichtverhältnissen eine Lampe schalte. Das Doif sieht so aus:
([06:00-23:00] and [DM_WerDa:state] eq "present" and [Tageslicht:twilight_weather] lt 40) (set Sonoff_Basic_3 Power on) DOELSE (set Sonoff_Basic_3 Power off)
Das mit der Uhrzeit ist denke ich klar. DM_WerDa ist ein Dummy, der durch mehrere PRESENCE gesetzt wird (2 Personen per BT und Wlan, ist einer davon present wird auch der Dummy auf present gesetzt). Zu guter Letzt wird noch in bei Twilight nachgefragt, wie denn die Lichtverhältnisse sind. Unterhalb von wetterbereinigten 40% soll die Lampe angehen.
Hier noch die komplette Raw definition
defmod DF_Licht_Wohnzimmer DOIF ([06:00-23:00] and [DM_WerDa:state] eq "present" and [Tageslicht:twilight_weather] lt 40) (set Sonoff_Basic_3 Power on) DOELSE (set Sonoff_Basic_3 Power off)
attr DF_Licht_Wohnzimmer event-on-update-reading 1
attr DF_Licht_Wohnzimmer group Wetter
attr DF_Licht_Wohnzimmer icon helper_doif
attr DF_Licht_Wohnzimmer room Helper,Wetter
setstate DF_Licht_Wohnzimmer cmd_1
setstate DF_Licht_Wohnzimmer 2018-05-04 15:37:28 Device Tageslicht
setstate DF_Licht_Wohnzimmer 2018-05-04 13:52:55 cmd 1
setstate DF_Licht_Wohnzimmer 2018-05-04 13:52:55 cmd_event DM_WerDa
setstate DF_Licht_Wohnzimmer 2018-05-04 13:52:55 cmd_nr 1
setstate DF_Licht_Wohnzimmer 2018-05-04 13:52:55 e_DM_WerDa_state present
setstate DF_Licht_Wohnzimmer 2018-05-04 15:37:28 e_Tageslicht_twilight_weather 100
setstate DF_Licht_Wohnzimmer 2018-05-02 21:27:44 mode enabled
setstate DF_Licht_Wohnzimmer 2018-05-04 13:52:55 state cmd_1
setstate DF_Licht_Wohnzimmer 2018-05-03 23:00:00 timer_01_c01 04.05.2018 06:00:00
setstate DF_Licht_Wohnzimmer 2018-05-03 23:00:00 timer_02_c01 04.05.2018 23:00:00
Wie man sieht ist der Dummy auf present und das Licht auf 100%. Die Uhrzeit ist gerade auch OK. Wieso ist die Lampe dann gerade an??? Ich hatte erst vermutet, dass die Helligkeit nicht berücksichtigt wird, warum auch immer. Aber durch die und-Verknüpfung dürfte die Lampe doch nur schalten, wenn alles 3 zutrifft, oder? Und aus gehen, wenn nur eines nicht zutrifft. Habe ich einen Denkfehler? Und wenn ja: kann man den behandeln? :)
LG
petjek
Hi,
ersetze mal lt durch <
ZitatBinary "<" returns true if the left argument is numerically less than the right argument.
Binary ">" returns true if the left argument is numerically greater than the right argument.
Binary "lt" returns true if the left argument is stringwise less than the right argument.
Quelle (http://perldoc.perl.org/perlop.html#Relational-Operators)
Gruß Otto
OK, danke. Das scheint es gewesen zu sein.
und das bitte auch noch anpassen / entfernen
attr DF_Licht_Wohnzimmer event-on-update-reading 1
wo hast du das her? :o
Zitat von: nils_ am 07 Mai 2018, 10:57:39
und das bitte auch noch anpassen / entfernen
Warum? Wenn ihn der Status des DOIF selbst nicht interessiert, kann man das so machen. Wird halt nur das Reading "1" überwacht, was sich seeehr selten ändert ;). Ansonsten werden keine Events erzeugt.
Tante Edit meint: der arme kranke Willi :D
Ja daran habe ich auch schon gedacht. Aber die Leute denken ja aus irgendwelchen Gründen das die 1 für Feature einschalten oder aktivieren steht.
Dann sollte man besser empfehlen so zu schreiben :)
attr <> event-on-update-reading WilliIstKrank
Zitat von: Per am 07 Mai 2018, 13:23:24
Warum? Wenn ihn der Status des DOIF selbst nicht interessiert, kann man das so machen. Wird halt nur das Reading "1" überwacht, was sich seeehr selten ändert ;). Ansonsten werden keine Events erzeugt.
ja stimmt wohl. dafür könnte man es verwenden.
Zitat von: Otto123 am 07 Mai 2018, 13:57:08
Aber die Leute denken ja aus irgendwelchen Gründen das die 1 für Feature einschalten oder aktivieren steht.
deswegen ja meine Frage wo es herkommt. (scheint ja momentan wieder öfters im forum aufzutauchen :) )
Zitat von: Otto123 am 07 Mai 2018, 13:57:08
Dann sollte man besser empfehlen so zu schreiben :)
attr <> event-on-update-reading WilliIstKrank
armer Willi :P
oder sowas:
attr <> event-on-update-reading none
ja ich weiß es wäre eine sonderbehandlung von "none", und es dürfte auch kein Reading so heißen.
Zitatdeswegen ja meine Frage wo es herkommt.
Querverweis : https://forum.fhem.de/index.php/topic,87481.msg800248.html#msg800248