Hallo Damian,
ich habe etwas seltsames beobachtet, was ich mir nicht erklären kann.
Ich habe einen DOIF Wait Timer auf ein Reading definiert:
## Day: after first resident was awoken (delayed by wait timer)
DOELSEIF
(
[rgr_Residents:lastState] eq "awoken"
)
(
IF ([HouseMode:state] eq "morning") (
msg audio @rgr_Residents -1 Tagesmodus wird etabliert.
)
)
(
set HouseMode:FILTER=state=morning day
)
Zusätzlich ist das wait_timer Attribut wie folgt gesetzt (der DOIF Auszug oben steht an 3. Stelle in einem langen DOIF Konstrukt):
0:0:5400,10:0:0,10:0:0,10:0:0,10
Damit möchte ich erreichen, dass 90 Minuten nachdem der erste Bewohner aufgestanden ist das Haus in den Tagesmodus wechselt (zuvor angekündigt durch eine Ansage), was grundsätzlich auch passiert, aber leider nicht zum erwarteten Zeitpunkt.
Anhand des Zeitstempels beim Reading rgr_Residents:lastState sehe ich aktuell, dass das Event um 11:00:52 ausgelöst wurde. Demnach würde ich erwarten, dass der DOIF Waittimer nun um 12:30:53 den ersten Befehl ausführt und 10 Sekunden später den zweiten. Allerdings sehe ich im Reading wait_timer des DOIF diese Zeit hier:
10.10.2015 12:48:01 cmd_3_1 rgr_Residents
Kannst du dir erklären wieso hier nochmals 1732 Sekunden draufgerechnet werden?
Ich kann mir das nicht erklären ;-(
Hier die vollständigen Listings beider Devices:
Internals:
DEF ## Morning: by the latest
(
[{twilight("Twilight","sr_weather","06:20","08:30")}] and
[?HouseMode:state] eq "night"
)
(
set HouseMode morning
)
## Morning: by wakeup but not before 3am
DOELSEIF
(
[rgr_Residents:residentsTotalWakeup] > 0 and
[?HouseMode:state] eq "night"
)
(
set HouseMode morning
)
## Day: after first resident was awoken (delayed by wait timer)
DOELSEIF
(
[rgr_Residents:lastState] eq "awoken"
)
(
IF ([HouseMode:state] eq "morning") (
msg audio @rgr_Residents -1 Tagesmodus wird etabliert.
)
)
(
set HouseMode:FILTER=state=morning day
)
## Day: by last resident leaving the house
DOELSEIF
(
([di_Residents:state] eq "absent" or [di_Residents:state] eq "gone") and
[HouseMode:state] eq "morning"
)
(
set HouseMode day
)
## Evening: Summer while residents nearby
DOELSEIF
(
[{twilight("Twilight","ss_indoor","18:00","20:45")}] and
[?DST:state] eq "summer" and
[?rgr_Residents:state] ne "gone"
)
(
msg audio @rgr_Residents -1 Abend Modus wird etabliert.
)
(
IF ([rgr_Residents:state] eq "gone") (
set HouseMode:FILTER=state!=night night
),
IF ([rgr_Residents:state] ne "gone") (
set HouseMode:FILTER=state=morning evening,
set HouseMode:FILTER=state=day evening
)
)
## Evening/Night: Sommer while residents extended time absent
DOELSEIF
(
[{twilight("Twilight","ss_indoor","18:00","20:45")}] and
[?DST:state] eq "summer" and
[?rgr_Residents:state] eq "gone"
)
(
set HouseMode:FILTER=state=morning night,
set HouseMode:FILTER=state=day night
)
## Evening: Winter while residents nearby
DOELSEIF
(
[{twilight("Twilight","ss_weather","15:30","18:30")}] and
[?DST:state] eq "normal" and
[?rgr_Residents:state] ne "gone"
)
(
msg audio @rgr_Residents -1 Abend Modus wird etabliert.
)
(
IF ([rgr_Residents:state] eq "gone") (
set HouseMode:FILTER=state!=night night
),
IF ([rgr_Residents:state] ne "gone") (
set HouseMode:FILTER=state=morning evening,
set HouseMode:FILTER=state=day evening
)
)
## Evening/Night: Winter while residents extended time absent
DOELSEIF
(
[{twilight("Twilight","ss_weather","15:30","18:30")}] and
[?DST:state] eq "normal" and
[?rgr_Residents:state] eq "gone"
)
(
set HouseMode:FILTER=state!=night night
)
## Night: by time
DOELSEIF
(
[23:15:00]
)
(
IF ([HouseMode:state] ne "night") (
msg audio @rgr_Residents -1 Nacht Modus wird etabliert.
)
)
(
set HouseMode:FILTER=state!=night night
)
NAME di_HouseMode_controller
NR 201
NTFY_ORDER 50-di_HouseMode_controller
STATE morning
TYPE DOIF
Readings:
2015-10-10 11:18:48 Device rgr_Residents
2015-10-10 07:54:20 cmd_event timer_1
2015-10-10 07:54:20 cmd_nr 1
2015-10-10 07:54:20 e_HouseMode_state morning
2015-10-10 11:00:53 e_di_Residents_state present
2015-10-10 11:18:48 e_rgr_Residents_lastState awoken
2015-10-10 11:18:48 e_rgr_Residents_residentsTotalWakeup 0
2015-10-10 07:54:20 state morning
2015-10-10 11:02:46 timer_1_c1 11.10.2015 08:30:00
2015-10-10 11:02:46 timer_2_c5 10.10.2015 18:07:38
2015-10-10 11:02:46 timer_3_c6 10.10.2015 18:07:38
2015-10-10 11:02:46 timer_4_c7 10.10.2015 17:16:52
2015-10-10 11:02:46 timer_5_c8 10.10.2015 17:16:52
2015-10-10 11:02:46 timer_6_c9 10.10.2015 23:15:00
2015-10-10 11:18:01 wait_timer 10.10.2015 12:48:01 cmd_3_1 rgr_Residents
Condition:
0 DOIF_time_once($hash,$hash->{timer}{0},$wday,"") and ReadingValDoIf('HouseMode','state','') eq "night"
1 ReadingValDoIf('rgr_Residents','residentsTotalWakeup','') > 0 and ReadingValDoIf('HouseMode','state','') eq "night"
2 ReadingValDoIf('rgr_Residents','lastState','') eq "awoken"
3 (ReadingValDoIf('di_Residents','state','') eq "absent" or ReadingValDoIf('di_Residents','state','') eq "gone") and ReadingValDoIf('HouseMode','state','') eq "morning"
4 DOIF_time_once($hash,$hash->{timer}{1},$wday,"") and ReadingValDoIf('DST','state','') eq "summer" and ReadingValDoIf('rgr_Residents','state','') ne "gone"
5 DOIF_time_once($hash,$hash->{timer}{2},$wday,"") and ReadingValDoIf('DST','state','') eq "summer" and ReadingValDoIf('rgr_Residents','state','') eq "gone"
6 DOIF_time_once($hash,$hash->{timer}{3},$wday,"") and ReadingValDoIf('DST','state','') eq "normal" and ReadingValDoIf('rgr_Residents','state','') ne "gone"
7 DOIF_time_once($hash,$hash->{timer}{4},$wday,"") and ReadingValDoIf('DST','state','') eq "normal" and ReadingValDoIf('rgr_Residents','state','') eq "gone"
8 DOIF_time_once($hash,$hash->{timer}{5},$wday,"")
Days:
Devices:
1 rgr_Residents
2 rgr_Residents
3 di_Residents HouseMode
all rgr_Residents di_Residents HouseMode
Do:
0:
0 set HouseMode morning
1:
0 set HouseMode morning
2:
0 IF ([HouseMode:state] eq "morning") ( msg audio @rgr_Residents -1 Tagesmodus wird etabliert. )
1 set HouseMode:FILTER=state=morning day
3:
0 set HouseMode day
4:
0 msg audio @rgr_Residents -1 Abend Modus wird etabliert.
1 IF ([rgr_Residents:state] eq "gone") ( set HouseMode:FILTER=state!=night night ), IF ([rgr_Residents:state] ne "gone") ( set HouseMode:FILTER=state=morning evening, set HouseMode:FILTER=state=day evening )
5:
0 set HouseMode:FILTER=state=morning night, set HouseMode:FILTER=state=day night
6:
0 msg audio @rgr_Residents -1 Abend Modus wird etabliert.
1 IF ([rgr_Residents:state] eq "gone") ( set HouseMode:FILTER=state!=night night ), IF ([rgr_Residents:state] ne "gone") ( set HouseMode:FILTER=state=morning evening, set HouseMode:FILTER=state=day evening )
7:
0 set HouseMode:FILTER=state!=night night
8:
0 IF ([HouseMode:state] ne "night") ( msg audio @rgr_Residents -1 Nacht Modus wird etabliert. )
1 set HouseMode:FILTER=state!=night night
Helper:
globalinit 1
last_timer 6
sleepdevice rgr_Residents
sleepsubtimer 0
sleeptimer 2
Internals:
Itimer:
Readings:
1 rgr_Residents:residentsTotalWakeup
2 rgr_Residents:lastState
3 di_Residents:state HouseMode:state
all rgr_Residents:residentsTotalWakeup rgr_Residents:lastState di_Residents:state HouseMode:state
Realtime:
0 08:30:00
1 18:07:38
2 18:07:38
3 17:16:52
4 17:16:52
5 23:15:00
State:
Time:
0 {twilight("Twilight","sr_weather","06:20","08:30")}
1 {twilight("Twilight","ss_indoor","18:00","20:45")}
2 {twilight("Twilight","ss_indoor","18:00","20:45")}
3 {twilight("Twilight","ss_weather","15:30","18:30")}
4 {twilight("Twilight","ss_weather","15:30","18:30")}
5 23:15:00
Timecond:
0 0
1 4
2 5
3 6
4 7
5 8
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
Timerfunc:
Timers:
0 0
4 1
5 2
6 3
7 4
8 5
Trigger:
Attributes:
DbLogExclude .*
DbLogInclude state
alias Automation: House Mode Controller
cmdState morning|morningWakeup|day|dayAbsent|eveningSummer|eveningSummerAbsent|eveningWinter|eveningWinterAbsent|night
comment TODO: morning>day ohne aktiven Wecker
devStateIcon morning.*:weather_sunrise day.*:scene_day evening.*:weather_sunset night.*:scene_night initialized:unknown
event-on-change-reading state
room Apartment,Automation,Residents
wait 0:0:5400,10:0:0,10:0:0,10:0:0,10
Internals:
GUESTS rg_Guest
NAME rgr_Residents
NR 100
NTFY_ORDER 50-rgr_Residents
ROOMMATES rr_Julian
STATE home
TYPE RESIDENTS
CHANGETIME:
Readings:
2015-10-10 11:18:48 fhemMsgAudio Tagesmodus wird etabliert.
2015-10-10 11:18:48 fhemMsgAudioGw Sonos_Living_Room:OK
2015-10-10 11:18:48 fhemMsgAudioPrio -1
2015-10-10 11:18:48 fhemMsgAudioState 1
2015-10-10 11:18:48 fhemMsgAudioTitle Announcement
2015-10-10 09:53:19 fhemMsgLight Die Luftqualität ist schlecht, bitte bei Gelegenheit lüften.
2015-10-10 09:53:19 fhemMsgLightGw HUEGroup0:USER_DISABLED
2015-10-10 09:53:19 fhemMsgLightPrio 0
2015-10-10 09:53:19 fhemMsgLightState 2
2015-10-10 09:53:19 fhemMsgLightTitle Announcement
2015-10-05 16:54:27 fhemMsgPush Die Luftqualität ist sehr schlecht geworden, bitte lüften.
2015-10-05 16:54:27 fhemMsgPushGw msgPush.Julian:OK
2015-10-05 16:54:27 fhemMsgPushPrio 1
2015-10-05 16:54:27 fhemMsgPushState 1
2015-10-05 16:54:27 fhemMsgPushTitle System Message
2015-10-10 11:18:48 fhemMsgState 1
2015-10-10 11:18:48 fhemMsgStateTypes audio:1
2015-10-10 11:00:52 lastActivity home
2015-10-10 11:00:52 lastActivityBy Julian
2015-10-10 11:00:52 lastActivityByDev rr_Julian
2015-10-09 00:18:31 lastArrival 2015-10-09 00:18:31
2015-10-10 10:59:46 lastAwake 2015-10-10 10:59:46
2015-10-09 00:16:56 lastDeparture 2015-10-09 00:16:56
2015-10-09 00:18:31 lastDurAbsence 00:01:35
2015-10-09 00:18:31 lastDurAbsence_cr 2
2015-10-09 00:16:56 lastDurPresence 00:02:19
2015-10-09 00:16:56 lastDurPresence_cr 2
2015-10-10 10:59:46 lastDurSleep 06:51:00
2015-10-10 10:59:46 lastDurSleep_cr 411
2015-10-10 04:08:46 lastSleep 2015-10-10 04:08:46
2015-10-10 11:00:52 lastState awoken
2015-10-09 00:18:31 presence present
2015-10-09 00:18:31 residentsAbsent 0
2015-10-09 00:18:31 residentsAbsentDevs -
2015-10-09 00:18:31 residentsAbsentNames -
2015-10-10 10:59:46 residentsAsleep 0
2015-10-10 10:59:46 residentsAsleepDevs -
2015-10-10 10:59:46 residentsAsleepNames -
2015-10-10 11:00:52 residentsAwoken 0
2015-10-10 11:00:52 residentsAwokenDevs -
2015-10-10 11:00:52 residentsAwokenNames -
2015-10-08 22:02:07 residentsGone 0
2015-10-08 22:02:07 residentsGoneDevs -
2015-10-08 22:02:07 residentsGoneNames -
2015-10-10 04:08:46 residentsGotosleep 0
2015-10-10 04:08:46 residentsGotosleepDevs -
2015-10-10 04:08:46 residentsGotosleepNames -
2015-10-10 11:00:52 residentsHome 1
2015-10-10 11:00:52 residentsHomeDevs rr_Julian
2015-10-10 11:00:52 residentsHomeNames Julian
2015-07-19 13:43:57 residentsTotal 1
2015-10-09 00:18:31 residentsTotalAbsent 0
2015-10-09 00:18:31 residentsTotalAbsentDevs -
2015-10-09 00:18:31 residentsTotalAbsentNames -
2015-07-19 13:43:57 residentsTotalGuests 0
2015-07-19 13:43:54 residentsTotalGuestsAbsent 0
2015-10-01 19:12:09 residentsTotalGuestsAbsentDevs -
2015-10-01 19:12:09 residentsTotalGuestsAbsentNames -
2015-07-19 13:43:57 residentsTotalGuestsPresent 0
2015-10-01 19:12:09 residentsTotalGuestsPresentDevs -
2015-10-01 19:12:09 residentsTotalGuestsPresentNames -
2015-10-09 00:18:31 residentsTotalPresent 1
2015-10-09 00:18:31 residentsTotalPresentDevs rr_Julian
2015-10-09 00:18:31 residentsTotalPresentNames Julian
2015-10-10 10:59:46 residentsTotalWakeup 0
2015-10-10 10:59:46 residentsTotalWakeupDevs -
2015-10-10 10:59:46 residentsTotalWakeupNames -
2015-09-24 21:06:59 residentsTotalWayhome 0
2015-10-01 19:12:09 residentsTotalWayhomeDevs -
2015-10-01 19:12:09 residentsTotalWayhomeNames -
2015-10-10 11:00:52 state home
Attributes:
DbLogExclude .*
alias Residents
devStateIcon .*home:status_available@green .*absent:status_away_1@orange .*gone:status_standby .*none:control_building_empty .*gotosleep:status_night@green:asleep .*asleep:status_night@green .*awoken:status_available@green:home
group Home State
icon people_sensor
msgContactAudio Sonos_Living_Room|Sonos_Kitchen|Sonos_Bedroom
msgContactLight HUEGroup0
room Apartment,Residents
sortby 0
Dazu muss ich noch etwas ergänzen:
Jetzt wurde das erste Kommando gerade ausgelöst, das zweite jedoch nicht nach weiteren 10 Sekunden wie erwartet. Stattdessen steht der wait_timer jetzt wieder auf einen noch späteren Zeitpunkt 14:18:01 und wieder für das erste Kommando. Es wurden also nochmal 90 Minuten drauf gerechnet. Wie kann das sein?
Internals:
DEF ## Morning: by the latest
(
[{twilight("Twilight","sr_weather","06:20","08:30")}] and
[?HouseMode:state] eq "night"
)
(
set HouseMode morning
)
## Morning: by wakeup but not before 3am
DOELSEIF
(
[rgr_Residents:residentsTotalWakeup] > 0 and
[?HouseMode:state] eq "night"
)
(
set HouseMode morning
)
## Day: after first resident was awoken (delayed by wait timer)
DOELSEIF
(
[rgr_Residents:lastState] eq "awoken"
)
(
IF ([HouseMode:state] eq "morning") (
msg audio @rgr_Residents -1 Tagesmodus wird etabliert.
)
)
(
set HouseMode:FILTER=state=morning day
)
## Day: by last resident leaving the house
DOELSEIF
(
([di_Residents:state] eq "absent" or [di_Residents:state] eq "gone") and
[HouseMode:state] eq "morning"
)
(
set HouseMode day
)
## Evening: Summer while residents nearby
DOELSEIF
(
[{twilight("Twilight","ss_indoor","18:00","20:45")}] and
[?DST:state] eq "summer" and
[?rgr_Residents:state] ne "gone"
)
(
msg audio @rgr_Residents -1 Abend Modus wird etabliert.
)
(
IF ([rgr_Residents:state] eq "gone") (
set HouseMode:FILTER=state!=night night
),
IF ([rgr_Residents:state] ne "gone") (
set HouseMode:FILTER=state=morning evening,
set HouseMode:FILTER=state=day evening
)
)
## Evening/Night: Sommer while residents extended time absent
DOELSEIF
(
[{twilight("Twilight","ss_indoor","18:00","20:45")}] and
[?DST:state] eq "summer" and
[?rgr_Residents:state] eq "gone"
)
(
set HouseMode:FILTER=state=morning night,
set HouseMode:FILTER=state=day night
)
## Evening: Winter while residents nearby
DOELSEIF
(
[{twilight("Twilight","ss_weather","15:30","18:30")}] and
[?DST:state] eq "normal" and
[?rgr_Residents:state] ne "gone"
)
(
msg audio @rgr_Residents -1 Abend Modus wird etabliert.
)
(
IF ([rgr_Residents:state] eq "gone") (
set HouseMode:FILTER=state!=night night
),
IF ([rgr_Residents:state] ne "gone") (
set HouseMode:FILTER=state=morning evening,
set HouseMode:FILTER=state=day evening
)
)
## Evening/Night: Winter while residents extended time absent
DOELSEIF
(
[{twilight("Twilight","ss_weather","15:30","18:30")}] and
[?DST:state] eq "normal" and
[?rgr_Residents:state] eq "gone"
)
(
set HouseMode:FILTER=state!=night night
)
## Night: by time
DOELSEIF
(
[23:15:00]
)
(
IF ([HouseMode:state] ne "night") (
msg audio @rgr_Residents -1 Nacht Modus wird etabliert.
)
)
(
set HouseMode:FILTER=state!=night night
)
NAME di_HouseMode_controller
NR 201
NTFY_ORDER 50-di_HouseMode_controller
STATE cmd_3_1
TYPE DOIF
CHANGETIME:
Helper:
Dblog:
State:
Dblog:
TIME 1444474081.01834
VALUE cmd_3_1
Readings:
2015-10-10 12:48:01 Device rgr_Residents
2015-10-10 12:48:01 cmd_event rgr_Residents
2015-10-10 12:48:01 cmd_nr 3
2015-10-10 12:48:01 cmd_seqnr 1
2015-10-10 07:54:20 e_HouseMode_state morning
2015-10-10 11:00:53 e_di_Residents_state present
2015-10-10 12:48:01 e_rgr_Residents_lastState awoken
2015-10-10 12:48:01 e_rgr_Residents_residentsTotalWakeup 0
2015-10-10 12:48:01 state cmd_3_1
2015-10-10 11:02:46 timer_1_c1 11.10.2015 08:30:00
2015-10-10 11:02:46 timer_2_c5 10.10.2015 18:07:38
2015-10-10 11:02:46 timer_3_c6 10.10.2015 18:07:38
2015-10-10 11:02:46 timer_4_c7 10.10.2015 17:16:52
2015-10-10 11:02:46 timer_5_c8 10.10.2015 17:16:52
2015-10-10 11:02:46 timer_6_c9 10.10.2015 23:15:00
2015-10-10 12:48:01 wait_timer 10.10.2015 14:18:01 cmd_3_1 rgr_Residents
Condition:
0 DOIF_time_once($hash,$hash->{timer}{0},$wday,"") and ReadingValDoIf('HouseMode','state','') eq "night"
1 ReadingValDoIf('rgr_Residents','residentsTotalWakeup','') > 0 and ReadingValDoIf('HouseMode','state','') eq "night"
2 ReadingValDoIf('rgr_Residents','lastState','') eq "awoken"
3 (ReadingValDoIf('di_Residents','state','') eq "absent" or ReadingValDoIf('di_Residents','state','') eq "gone") and ReadingValDoIf('HouseMode','state','') eq "morning"
4 DOIF_time_once($hash,$hash->{timer}{1},$wday,"") and ReadingValDoIf('DST','state','') eq "summer" and ReadingValDoIf('rgr_Residents','state','') ne "gone"
5 DOIF_time_once($hash,$hash->{timer}{2},$wday,"") and ReadingValDoIf('DST','state','') eq "summer" and ReadingValDoIf('rgr_Residents','state','') eq "gone"
6 DOIF_time_once($hash,$hash->{timer}{3},$wday,"") and ReadingValDoIf('DST','state','') eq "normal" and ReadingValDoIf('rgr_Residents','state','') ne "gone"
7 DOIF_time_once($hash,$hash->{timer}{4},$wday,"") and ReadingValDoIf('DST','state','') eq "normal" and ReadingValDoIf('rgr_Residents','state','') eq "gone"
8 DOIF_time_once($hash,$hash->{timer}{5},$wday,"")
Days:
Devices:
1 rgr_Residents
2 rgr_Residents
3 di_Residents HouseMode
all rgr_Residents di_Residents HouseMode
Do:
0:
0 set HouseMode morning
1:
0 set HouseMode morning
2:
0 IF ([HouseMode:state] eq "morning") ( msg audio @rgr_Residents -1 Tagesmodus wird etabliert. )
1 set HouseMode:FILTER=state=morning day
3:
0 set HouseMode day
4:
0 msg audio @rgr_Residents -1 Abend Modus wird etabliert.
1 IF ([rgr_Residents:state] eq "gone") ( set HouseMode:FILTER=state!=night night ), IF ([rgr_Residents:state] ne "gone") ( set HouseMode:FILTER=state=morning evening, set HouseMode:FILTER=state=day evening )
5:
0 set HouseMode:FILTER=state=morning night, set HouseMode:FILTER=state=day night
6:
0 msg audio @rgr_Residents -1 Abend Modus wird etabliert.
1 IF ([rgr_Residents:state] eq "gone") ( set HouseMode:FILTER=state!=night night ), IF ([rgr_Residents:state] ne "gone") ( set HouseMode:FILTER=state=morning evening, set HouseMode:FILTER=state=day evening )
7:
0 set HouseMode:FILTER=state!=night night
8:
0 IF ([HouseMode:state] ne "night") ( msg audio @rgr_Residents -1 Nacht Modus wird etabliert. )
1 set HouseMode:FILTER=state!=night night
Helper:
globalinit 1
last_timer 6
sleepdevice rgr_Residents
sleepsubtimer 0
sleeptimer 2
Internals:
Itimer:
Readings:
1 rgr_Residents:residentsTotalWakeup
2 rgr_Residents:lastState
3 di_Residents:state HouseMode:state
all rgr_Residents:residentsTotalWakeup rgr_Residents:lastState di_Residents:state HouseMode:state
Realtime:
0 08:30:00
1 18:07:38
2 18:07:38
3 17:16:52
4 17:16:52
5 23:15:00
State:
Time:
0 {twilight("Twilight","sr_weather","06:20","08:30")}
1 {twilight("Twilight","ss_indoor","18:00","20:45")}
2 {twilight("Twilight","ss_indoor","18:00","20:45")}
3 {twilight("Twilight","ss_weather","15:30","18:30")}
4 {twilight("Twilight","ss_weather","15:30","18:30")}
5 23:15:00
Timecond:
0 0
1 4
2 5
3 6
4 7
5 8
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
Timerfunc:
Timers:
0 0
4 1
5 2
6 3
7 4
8 5
Trigger:
Attributes:
DbLogExclude .*
DbLogInclude state
alias Automation: House Mode Controller
cmdState morning|morningWakeup|day|dayAbsent|eveningSummer|eveningSummerAbsent|eveningWinter|eveningWinterAbsent|night
comment TODO: morning>day ohne aktiven Wecker
devStateIcon morning.*:weather_sunrise day.*:scene_day evening.*:weather_sunset night.*:scene_night initialized:unknown
event-on-change-reading state
room Apartment,Automation,Residents
wait 0:0:5400,10:0:0,10:0:0,10:0:0,10
Offenbar triggert sich das Modul selbst. Denn die Ausführung von cmd_3_1
IF ([HouseMode:state] eq "morning") ( msg audio @rgr_Residents -1 Tagesmodus wird etabliert. )
führt offenbar wieder zu einem Trigger über rgr_Residents.
Möglicherweise sorgt die neue Version für Abhilfe:
http://forum.fhem.de/index.php/topic,41859.msg341029.html#msg341029
Gruß
Damian
Ok.
Ich probiere später mal die andere Version, schaue aber auch mal ob ich den Loop irgendwie verhindert kriege.
Und ja es stimmt schon, in rgr_Residents werden andere (!) Readings bei diesem Befehl aktualisiert. Aber das Reading, auf welches das DOIF eigentlich nur reagieren soll (lastState) bleibt eben unverändert. Warum löst das DOIF denn dann trotzdem aus?
Gruß
Julian
Zitat von: Loredo am 10 Oktober 2015, 14:35:39
Ok.
Ich probiere später mal die andere Version, schaue aber auch mal ob ich den Loop irgendwie verhindert kriege.
Und ja es stimmt schon, in rgr_Residents werden andere (!) Readings bei diesem Befehl aktualisiert. Aber das Reading, auf welches das DOIF eigentlich nur reagieren soll (lastState) bleibt eben unverändert. Warum löst das DOIF denn dann trotzdem aus?
Gruß
Julian
Weil bei Readingabfragen, der Art [<Device>:<Reading>] bereits ein beliebiger Trigger des Devices zählt. Wenn du nur auf die Änderung des Readings triggern willst, dann musst du mit Event-Triggern arbeiten: [<Device>:?<Reading>]
Gruß
Damian
Ah, ok verstanden. Mit Event-Triggern zu arbeiten macht doch aber dann generell Sinn, allein schon aus Performancegründen. Warum ist das denn kein Standardverhalten? Gibts da Vor- oder Nachteile?
Zitat von: Loredo am 10 Oktober 2015, 14:49:39
Ah, ok verstanden. Mit Event-Triggern zu arbeiten macht doch aber dann generell Sinn, allein schon aus Performancegründen. Warum ist das denn kein Standardverhalten? Gibts da Vor- oder Nachteile?
Das sind zwei grundsätzlich verschiedene Dinge:
Ein Event-Trigger ist immer nur zum Tiggerzeitpunkt wahr und ist dann 1 sonst 0, Eine Readingabfrage liefert den tatsächlichen Inhalt des Readings, den man abfragen kann und das unabhängig davon, ob der Trigger vom diesem Reading kommt oder nicht.
Wenn man nur Event-Trigger hätte, dann würden alle AND-Abfragen immer unwahr sein. Denn zu einem Zeitpunkt ist immer nur ein Event-Trigger wahr.
Gruß
Damian
Zitat von: Damian am 10 Oktober 2015, 14:07:38
Offenbar triggert sich das Modul selbst. Denn die Ausführung von cmd_3_1
IF ([HouseMode:state] eq "morning") ( msg audio @rgr_Residents -1 Tagesmodus wird etabliert. )
führt offenbar wieder zu einem Trigger über rgr_Residents.
Möglicherweise sorgt die neue Version für Abhilfe:
http://forum.fhem.de/index.php/topic,41859.msg341029.html#msg341029
Ich habe eine solche Konstellation bei mir gerade getestet. Ich konnte das Verhalten reproduzieren. Mit der o. g. Version tritt das Problem durch den Selbsttrigger nicht mehr auf.
Gruß
Damian
Hervorragend, vielen herzlichen Dank für die Ausführungen!