Lampe an wenn dunkel und ich anwesend

Begonnen von gent, 14 März 2016, 19:28:48

Vorheriges Thema - Nächstes Thema

gent

Hallo zusammen,

ich habe mal wieder Probleme mit meinem DOIF. Mein Anwendungsfall: Mach eine Lampe an, wenn es dunkel ist und ich nach Hause komme.

Folgendes funktioniert (jeweils für sich alleine):

([[myTwilight:ss_weather]])(set WZ_Lampe1 on-till 22:00)
bzw.
([HolgerAnwesend:state] eq "present")(set WZ_Lampe1 on-till 22:00)

Die Kombination
([[myTwilight:ss_weather]] and [HolgerAnwesend:state] eq "present")(set WZ_Lampe1 on-till 22:00)

funktioniert NUR dann, wenn ich bereits anwesend bin und dann ss_weather eintritt.
Wenn ich nach dem ss_weather nach Hause komme, funktioniert das DOIF nicht.

Folgendes Reading meines DOIF hatte ich z:B. heute:

Device HolgerAnwesend 2016-03-14 18:31:54
cmd_event timer_1 2016-03-13 17:48:36
cmd_nr 1 2016-03-13 17:48:36
e_HolgerAnwesend_state present 2016-03-14 18:31:54
state cmd_1 2016-03-13 17:48:36
timer_1_c1 15.03.2016 17:50:10 2016-03-14 19:21:28
(hoffe, das kann man verstehen).

Woran liegt das?

Da ich kein DOELSEIF oder DOELSE habe, habe ich das Attribut do always gesetzt.

Viele Grüße
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

Ellert

ZitatWoran liegt das?
ZitatmyTwilight:ss_weather
gibt einen Zeitpunkt an und die Bedingung
Zitat[[myTwilight:ss_weather]] and [HolgerAnwesend:state] eq "present"
ist nur zu diesem Zeitpunkt wahr.

gent

Hi Ellert,

verstanden. Ich finde es aber nicht ganz so logisch, weil die Bedingung ja auch dann wahr "wird", wenn das zweite Ereignis später eintritt, da das erste Ereignis dann ja bereits wahr "ist". Dafür sind doch im reading des DOIF die ganzen event_timer da, oder sehe ich das falsch?

D.h.: meine Anforderung ist nicht einfach lösbar? Ich müsste zuerst ein Dummy auf "true" setzen, wenn heute ss_weather erreicht ist und dann in einem zweiten DOIF die Kombination aus Anwesenheit und dem Dummy für's Schalten der Lampe verwenden? Ginge das so oder gibt's da noch einen einfacheren Weg?

Viele Grüße
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

Ellert

ZitatIch finde es aber nicht ganz so logisch, weil die Bedingung ja auch dann wahr "wird", wenn das zweite Ereignis später eintritt, da das erste Ereignis dann ja bereits wahr "ist".
Ich finde es aber ganz logisch, weil die Bedingung nicht wahr "wird", wenn das zweite Ereignis später eintritt, da das erste Ereignis dann ja bereits wahr "war" und nicht mehr ist, weil der Zeitpunkt verstrichen ist. ;)

ZitatD.h.: meine Anforderung ist nicht einfach lösbar?
Doch mit einer Zeitspanne statt einem Zeitpunkt,[[myTwilight:ss_weather]-[myTwilight:sr_weather]] oder so ähnlich.




gent

Hi Ellert,

Zitatda das erste Ereignis dann ja bereits wahr "war" und nicht mehr ist, weil der Zeitpunkt verstrichen ist.

OK. Das leuchtet ein. Ich bin davon ausgegangen, dass das Event ss_weather wahr "bleibt".

Ich probier mal weiter.

Viele Grüße
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

gent

Hallo,

nur der Vollständigkeit halber, so habe ich es jetzt "am Laufen":

([[myTwilight:ss_weather]-22:00] and [HolgerAnwesend:state] eq "present")(set WZ_Lampe1 on)
DOELSEIF ([22:00]) (set WZ_Lampe1 off)


Vielen Dank an ellert und viele Grüße vom gent.
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

Ellert

Besser DOELSEIF ([22:01]) sonst könnte es nicht ausschalten.

Sinus

Moin,

nur so als Verständnisfrage wäre hier nicht auch ein [[?myTwilight:ss_weather]] and [HolgerAnwesend:state] eq "present" möglich?
Also mit Fragezeichen in der ersten Bedingung dadurch wirkt diese nicht als Trigger wenn ich die Syntax richtig interpretiere.

Gruß
Sinus

Ellert