Hallo,
Letzte Woche habe ich das untenstehende DOIF Konstrukt eingebaut welches auch für die Wochentage einwandfrei funktioniert.
Gestern am Sonntag und auch Samstag habe ich aber 2 Mitteilungen jeweils exakt um 19:30 erhalten und zwar die "Wochenendschaltung..." und direkt danach (ohne Verzögerung) die Push-Mitteilung aus dem DOELSE.
habe folgendes DOIF Konstrukt:
define doif_BUE.Heizung_an_aus DOIF ([rr_Rene:location] eq "home" and [08:30-16:30|8]) (
set HM.Thermostat01.Buero_Clima desired-temp 21
) DOELSEIF ([rr_Sabine:location] ne "home" and [rr_Rene:location] eq "home" and [19:00-21:00|8]) (
set HM.Thermostat01.Buero_Clima desired-temp 21
) DOELSEIF ([rr_Rene:location] eq "home" and [19:30-21:00|7]) (
set HM.Thermostat01.Buero_Clima desired-temp 21,
set pushover msg "Heizung Büro" "Wochenendschaltung Heizung abends auf 21°C"
) DOELSE (
set HM.Thermostat01.Buero_Clima desired-temp 17,
set pushover msg "Heizung Büro" "ECO-Mode Heizung auf 17°C"
)
Kann mir bitte jemand erklären warum er cmd_3 und cmd_4 doppelt ausgeführt hat am Wochenende? Und zwar genau um 19:30.
Der Status von Roommate rr_Rene wird nur über Geofancy definiert und wurde auch nicht ausgelöst, sollte hier ein Fehler passiert sein warum dann merkwürdigerweise an beiden Tagen zur gleichen Zeit. wenn mein Status wenn Wochenende != "home" ist würde ich es ja verstehen, aber so :-\
Für Tipps bin ich dankbar!
Zitat von: rretsiem am 16 März 2015, 22:30:46
Hallo,
Letzte Woche habe ich das untenstehende DOIF Konstrukt eingebaut welches auch für die Wochentage einwandfrei funktioniert.
Gestern am Sonntag und auch Samstag habe ich aber 2 Mitteilungen jeweils exakt um 19:30 erhalten und zwar die "Wochenendschaltung..." und direkt danach (ohne Verzögerung) die Push-Mitteilung aus dem DOELSE.
habe folgendes DOIF Konstrukt:
define doif_BUE.Heizung_an_aus DOIF ([rr_Rene:location] eq "home" and [08:30-16:30|8]) (
set HM.Thermostat01.Buero_Clima desired-temp 21
) DOELSEIF ([rr_Sabine:location] ne "home" and [rr_Rene:location] eq "home" and [19:00-21:00|8]) (
set HM.Thermostat01.Buero_Clima desired-temp 21
) DOELSEIF ([rr_Rene:location] eq "home" and [19:30-21:00|7]) (
set HM.Thermostat01.Buero_Clima desired-temp 21,
set pushover msg "Heizung Büro" "Wochenendschaltung Heizung abends auf 21°C"
) DOELSE (
set HM.Thermostat01.Buero_Clima desired-temp 17,
set pushover msg "Heizung Büro" "ECO-Mode Heizung auf 17°C"
)
Kann mir bitte jemand erklären warum er cmd_3 und cmd_4 doppelt ausgeführt hat am Wochenende? Und zwar genau um 19:30.
Der Status von Roommate rr_Rene wird nur über Geofancy definiert und wurde auch nicht ausgelöst, sollte hier ein Fehler passiert sein warum dann merkwürdigerweise an beiden Tagen zur gleichen Zeit. wenn mein Status wenn Wochenende != "home" ist würde ich es ja verstehen, aber so :-\
Für Tipps bin ich dankbar!
Ich vermute, dass um 19:30 Uhr noch etwas anderes dein DOIF-Modul triggert, was in der Bedingung nicht wahr ist und dann zur Ausführung des DOELSE-Falls führt.
Wenn du diesen Fall noch mal nachstellen kannst, dann poste hier das Ergebnis von "list doif_BUE.Heizung_an_aus". Dann kann man sich die letzten Events e_...- Readings im DOIF-Modul anschauen und überlegen, was da passiert.
Gruß
Damian
Hallo Damian,
heute war es wieder soweit, ich bin zu Hause (iPhone5Geo ist anwesend in FHEM) und erhalte um Punkt 19:30 die beiden Push-Mitteilungen.
Hier der list auf das DOIF:
Internals:
DEF ([geofancy:currLoc_iPhone5Geo] eq "home" and [08:30-16:30|8]) ( set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Heizung wurde auf 21°C gestellt" ) DOELSEIF ([geofancy:currLoc_iPhone4Geo] ne "home" and [geofancy:currLoc_iPhone5Geo] eq "home" and [19:30-21:45|8]) (set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Sabine außer Haus Heizung wurde auf 21°C gestellt") DOELSEIF ([geofancy:currLoc_iPhone5Geo] eq "home" and [19:30-21:30|7]) ( set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Wochenendschaltung Heizung abends auf 21°C") DOELSE (set HM.Thermostat01.Buero_Clima desired-temp 17,set pushover msg "Heizung Büro" "ECO-Mode Heizung auf 17°C")
NAME doif_BUE.Heizung_an_aus
NR 114
NTFY_ORDER 50-doif_BUE.Heizung_an_aus
STATE cmd_4
TYPE DOIF
Readings:
2015-03-21 19:30:02 cmd_event timer_3
2015-03-21 19:30:02 cmd_nr 4
2015-03-21 17:57:22 e_geofancy_currLoc_iPhone4Geo underway
2015-03-21 17:57:22 e_geofancy_currLoc_iPhone5Geo home
2015-03-21 19:30:02 state cmd_4
2015-03-21 08:30:00 timer_1_c1 22.03.2015 08:30:00|8
2015-03-21 16:30:00 timer_2_c1 22.03.2015 16:30:00|8
2015-03-21 19:30:02 timer_3_c2 22.03.2015 19:30:00|8
2015-03-20 21:45:00 timer_4_c2 21.03.2015 21:45:00|8
2015-03-21 19:30:01 timer_5_c3 22.03.2015 19:30:00|7
2015-03-20 21:30:00 timer_6_c3 21.03.2015 21:30:00|7
Condition:
0 ReadingValDoIf('geofancy','currLoc_iPhone5Geo','') eq "home" and DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"8")
1 ReadingValDoIf('geofancy','currLoc_iPhone4Geo','') ne "home" and ReadingValDoIf('geofancy','currLoc_iPhone5Geo','') eq "home" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"8")
2 ReadingValDoIf('geofancy','currLoc_iPhone5Geo','') eq "home" and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"7")
Days:
0 8
1 8
2 8
3 8
4 7
5 7
Devices:
0 geofancy
1 geofancy
2 geofancy
all geofancy
Do:
0 set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Heizung wurde auf 21°C gestellt"
1 set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Sabine außer Haus Heizung wurde auf 21°C gestellt"
2 set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Wochenendschaltung Heizung abends auf 21°C"
3 set HM.Thermostat01.Buero_Clima desired-temp 17,set pushover msg "Heizung Büro" "ECO-Mode Heizung auf 17°C"
Helper:
last_timer 6
sleeptimer -1
Internals:
Itimer:
Readings:
0 geofancy:currLoc_iPhone5Geo
1 geofancy:currLoc_iPhone4Geo geofancy:currLoc_iPhone5Geo
2 geofancy:currLoc_iPhone5Geo
all geofancy:currLoc_iPhone5Geo geofancy:currLoc_iPhone4Geo
Realtime:
0 08:30:00
1 16:30:00
2 19:30:00
3 21:45:00
4 19:30:00
5 21:30:00
State:
Time:
0 08:30:00
1 16:30:00
2 19:30:00
3 21:45:00
4 19:30:00
5 21:30:00
Timecond:
0 0
1 0
2 1
3 1
4 2
5 2
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
Timerfunc:
Timers:
0 0 1
1 2 3
2 4 5
Trigger:
Attributes:
Ich habe auch noch einmal alles überprüft aber kann einfach keinen anderen Trigger finden der dieses DOIF auslöst oder in einer anderen Art beeinflusst.
Zitat von: rretsiem am 21 März 2015, 20:14:51
Hallo Damian,
heute war es wieder soweit, ich bin zu Hause (iPhone5Geo ist anwesend in FHEM) und erhalte um Punkt 19:30 die beiden Push-Mitteilungen.
Hier der list auf das DOIF:
Internals:
DEF ([geofancy:currLoc_iPhone5Geo] eq "home" and [08:30-16:30|8]) ( set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Heizung wurde auf 21°C gestellt" ) DOELSEIF ([geofancy:currLoc_iPhone4Geo] ne "home" and [geofancy:currLoc_iPhone5Geo] eq "home" and [19:30-21:45|8]) (set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Sabine außer Haus Heizung wurde auf 21°C gestellt") DOELSEIF ([geofancy:currLoc_iPhone5Geo] eq "home" and [19:30-21:30|7]) ( set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Wochenendschaltung Heizung abends auf 21°C") DOELSE (set HM.Thermostat01.Buero_Clima desired-temp 17,set pushover msg "Heizung Büro" "ECO-Mode Heizung auf 17°C")
NAME doif_BUE.Heizung_an_aus
NR 114
NTFY_ORDER 50-doif_BUE.Heizung_an_aus
STATE cmd_4
TYPE DOIF
Readings:
2015-03-21 19:30:02 cmd_event timer_3
2015-03-21 19:30:02 cmd_nr 4
2015-03-21 17:57:22 e_geofancy_currLoc_iPhone4Geo underway
2015-03-21 17:57:22 e_geofancy_currLoc_iPhone5Geo home
2015-03-21 19:30:02 state cmd_4
2015-03-21 08:30:00 timer_1_c1 22.03.2015 08:30:00|8
2015-03-21 16:30:00 timer_2_c1 22.03.2015 16:30:00|8
2015-03-21 19:30:02 timer_3_c2 22.03.2015 19:30:00|8
2015-03-20 21:45:00 timer_4_c2 21.03.2015 21:45:00|8
2015-03-21 19:30:01 timer_5_c3 22.03.2015 19:30:00|7
2015-03-20 21:30:00 timer_6_c3 21.03.2015 21:30:00|7
Condition:
0 ReadingValDoIf('geofancy','currLoc_iPhone5Geo','') eq "home" and DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"8")
1 ReadingValDoIf('geofancy','currLoc_iPhone4Geo','') ne "home" and ReadingValDoIf('geofancy','currLoc_iPhone5Geo','') eq "home" and DOIF_time($hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"8")
2 ReadingValDoIf('geofancy','currLoc_iPhone5Geo','') eq "home" and DOIF_time($hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"7")
Days:
0 8
1 8
2 8
3 8
4 7
5 7
Devices:
0 geofancy
1 geofancy
2 geofancy
all geofancy
Do:
0 set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Heizung wurde auf 21°C gestellt"
1 set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Sabine außer Haus Heizung wurde auf 21°C gestellt"
2 set HM.Thermostat01.Buero_Clima desired-temp 21, set pushover msg "Heizung Büro" "Wochenendschaltung Heizung abends auf 21°C"
3 set HM.Thermostat01.Buero_Clima desired-temp 17,set pushover msg "Heizung Büro" "ECO-Mode Heizung auf 17°C"
Helper:
last_timer 6
sleeptimer -1
Internals:
Itimer:
Readings:
0 geofancy:currLoc_iPhone5Geo
1 geofancy:currLoc_iPhone4Geo geofancy:currLoc_iPhone5Geo
2 geofancy:currLoc_iPhone5Geo
all geofancy:currLoc_iPhone5Geo geofancy:currLoc_iPhone4Geo
Realtime:
0 08:30:00
1 16:30:00
2 19:30:00
3 21:45:00
4 19:30:00
5 21:30:00
State:
Time:
0 08:30:00
1 16:30:00
2 19:30:00
3 21:45:00
4 19:30:00
5 21:30:00
Timecond:
0 0
1 0
2 1
3 1
4 2
5 2
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
Timerfunc:
Timers:
0 0 1
1 2 3
2 4 5
Trigger:
Attributes:
Ich habe auch noch einmal alles überprüft aber kann einfach keinen anderen Trigger finden der dieses DOIF auslöst oder in einer anderen Art beeinflusst.
Ich sehe gerade, dass du auch eine Puchmeldung im DOELSE-Fall hast. Die Erklärung ist ganz einfach. 19:30 kommt in zwei Bedingungen vor, die eine mit 7 wird heute um 19:30 Uhr getriggert und ausgeführt, die andere mit 8 wird auch um 19:30 getriggert ist heute aber nicht wahr, deswegen wird der DOELSE-Fall ausgeführt. Zukünftig wird es nur einen Trigger für die gleiche Zeit geben, dann kann sowas nicht passieren. z. Zt. musst du dir etwas überlegen, wie du in diesem Fall evtl. den DOELSE-Fall gegen einen DOELSEIF ersetzen kannst.
Gruß
Damian
Danke, das erklärt das ganze dann natürlich. Ich wusste nicht das der Trigger dann mehrfach ausgelöst wird.
Ich überlege mal :)
Zitat von: rretsiem am 21 März 2015, 21:22:19
Danke, das erklärt das ganze dann natürlich. Ich wusste nicht das der Trigger dann mehrfach ausgelöst wird.
Ich überlege mal :)
Ja, das ist eine Unschönheit, die bei mir auf der Todo-Liste steht.
Gruß
Damian
Darauf bin ich auch "reingefallen". Habe es durch eine "or"-Bedingung gelöst