HI!
Mein DOIF hat gestern abend um 22Uhr die Lichter nicht aus geschaltet was mich etwas wundert weil die Tage davor hat es eigentlich funktioniert...
Das DOIF ist im cmd_1 hängengeblieben...hätte doch aber um 22Uhr + 600 und 900 sek die Lichter ausschalten sollen oder ist mein DOIF irgendwie falsch?
Als ich heute morgen um 4 anuell set checkall durchgeführt habe sprang das DOIF auf cmd_3 und schaltete ds Licht korrekt 600 und 900 Sek später aus...
Hier das DOF
([Tageslicht_indoor] eq "Nacht" and [?TVTime:state] eq "off" and [?15:00-22:00]) (set WZBodenLed on, set WZEZ_WZFLed on)
DOELSEIF
([?Tageslicht_indoor] eq "Nacht" and [TVTime:state] eq "off" and [?15:00-22:00]) (set WZBodenLed on, set WZEZ_WZFLed on)
DOELSEIF
([TVTime:state] eq "off" and [22:00-05:00] and [?PartyTime:state] eq "off")
(set WZEZ_WZFLed on-for-timer 600) (set WZBodenLed on-for-timer 900)
DOELSEIF
([?TVTime:state] eq "off" and [?22:00-05:00] and [PartyTime:state] eq "off") (set WZBodenLed off) (set WZEZ_WZFLed off)
Und ein List davon:
Internals:
DEF ([Tageslicht_indoor] eq "Nacht" and [?TVTime:state] eq "off" and [?15:00-22:00]) (set WZBodenLed on, set WZEZ_WZFLed on)
DOELSEIF
([?Tageslicht_indoor] eq "Nacht" and [TVTime:state] eq "off" and [?15:00-22:00]) (set WZBodenLed on, set WZEZ_WZFLed on)
DOELSEIF
([TVTime:state] eq "off" and [22:00-05:00] and [?PartyTime:state] eq "off")
(set WZEZ_WZFLed on-for-timer 600) (set WZBodenLed on-for-timer 900)
DOELSEIF
([?TVTime:state] eq "off" and [?22:00-05:00] and [PartyTime:state] eq "off") (set WZBodenLed off) (set WZEZ_WZFLed off)
MODEL FHEM
NAME DOIFWzEzBeleuchtung
NR 108
NTFY_ORDER 50-DOIFWzEzBeleuchtung
STATE cmd_3
TYPE DOIF
READINGS:
2018-04-24 20:12:37 Device Tageslicht_indoor
2018-04-25 04:12:37 cmd 3.2
2018-04-25 04:12:37 cmd_event DOIFWzEzBeleuchtung
2018-04-25 04:12:37 cmd_nr 3
2018-04-25 04:12:37 cmd_seqnr 2
2018-04-22 20:52:45 e_PartyTime_state off
2018-04-22 20:52:22 e_TVTime_state off
2018-04-24 20:12:37 e_Tageslicht_indoor_STATE Nacht
2018-04-22 09:21:18 mode enabled
2018-04-25 04:12:37 state cmd_3
2018-04-24 22:00:00 timer_01_c01 25.04.2018 15:00:00
2018-04-24 22:00:00 timer_02_c01 25.04.2018 22:00:00
2018-04-24 22:00:00 timer_03_c02 25.04.2018 15:00:00
2018-04-24 22:00:00 timer_04_c02 25.04.2018 22:00:00
2018-04-25 05:00:00 timer_05_c03 26.04.2018 22:00:00
2018-04-25 05:00:00 timer_06_c03 26.04.2018 05:00:00
2018-04-25 05:00:00 timer_07_c04 26.04.2018 22:00:00
2018-04-25 05:00:00 timer_08_c04 26.04.2018 05:00:00
2018-04-24 20:27:37 wait_timer no timer
Regex:
condition:
0 InternalDoIf($hash,'Tageslicht_indoor','STATE') eq "Nacht" and ReadingValDoIf($hash,'TVTime','state') eq "off" and DOIF_time($hash,0,1,$wday,$hms)
1 InternalDoIf($hash,'Tageslicht_indoor','STATE') eq "Nacht" and ReadingValDoIf($hash,'TVTime','state') eq "off" and DOIF_time($hash,2,3,$wday,$hms)
2 ReadingValDoIf($hash,'TVTime','state') eq "off" and DOIF_time($hash,4,5,$wday,$hms) and ReadingValDoIf($hash,'PartyTime','state') eq "off"
3 ReadingValDoIf($hash,'TVTime','state') eq "off" and DOIF_time($hash,6,7,$wday,$hms) and ReadingValDoIf($hash,'PartyTime','state') eq "off"
days:
devices:
0 Tageslicht_indoor
1 TVTime
2 TVTime
3 PartyTime
all Tageslicht_indoor TVTime PartyTime
do:
0:
0 set WZBodenLed on, set WZEZ_WZFLed on
1:
0 set WZBodenLed on, set WZEZ_WZFLed on
2:
0 set WZEZ_WZFLed on-for-timer 600
1 set WZBodenLed on-for-timer 900
3:
0 set WZBodenLed off
1 set WZEZ_WZFLed off
4:
helper:
DOIF_Readings_events
DOIF_eventas
event timer_6
globalinit 1
last_timer 8
sleepdevice Tageslicht_indoor
sleepsubtimer -1
sleeptimer -1
timerdev
timerevent Nacht
triggerDev
timerevents:
Nacht
timereventsState:
state: Nacht
triggerEvents:
timer_6
triggerEventsState:
state: Nacht
internals:
0 Tageslicht_indoor:STATE
1 Tageslicht_indoor:STATE
all Tageslicht_indoor:STATE
interval:
0 -1
1 0
2 -1
3 2
4 -1
5 4
6 -1
7 6
itimer:
localtime:
0 1524661200
1 1524686400
2 1524661200
3 1524686400
4 1524772800
5 1524711600
6 1524772800
7 1524711600
perlblock:
readings:
1 TVTime:state
2 TVTime:state
3 PartyTime:state
all TVTime:state PartyTime:state
realtime:
0 15:00:00
1 22:00:00
2 15:00:00
3 22:00:00
4 22:00:00
5 05:00:00
6 22:00:00
7 05:00:00
time:
0 15:00:00
1 22:00:00
2 15:00:00
3 22:00:00
4 22:00:00
5 05:00:00
6 22:00:00
7 05:00:00
timeCond:
0 0
1 0
2 1
3 1
4 2
5 2
6 3
7 3
timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
timers:
2 4 5
trigger:
triggertime:
1524661200:
localtime 1524661200
hash:
1524686400:
localtime 1524686400
hash:
1524711600:
localtime 1524711600
hash:
1524772800:
localtime 1524772800
hash:
uiState:
uiTable:
Attributes:
room 2 DOIF
wait 900
Moin
Ohne das genauer angesehen zu haben, faellt mir erstmal auf, das 1 und 2 sowie 3 und 4 jeweils die gleichen Bedingungen haben. Bist Du Dir ueber die Bedeutung der Fragezeichen im klaren? Zudem sind die Bedingungen nicht so klar abgegrenzt, dass es nicht unmoeglich ist, dass eine "vordere" Bedingung erfuellt ist, obwohl Du es anders erwartest. Denn DOIF bleibt in der ersten komplett erfuellten Bedingung haengen!
Gruss Christoph
Update machen, siehe: https://forum.fhem.de/index.php/topic,87193.msg797075.html#msg797075
Zitat von: pc1246 am 25 April 2018, 06:59:50
Moin
Ohne das genauer angesehen zu haben, faellt mir erstmal auf, das 1 und 2 sowie 3 und 4 jeweils die gleichen Bedingungen haben. Bist Du Dir ueber die Bedeutung der Fragezeichen im klaren? Zudem sind die Bedingungen nicht so klar abgegrenzt, dass es nicht unmoeglich ist, dass eine "vordere" Bedingung erfuellt ist, obwohl Du es anders erwartest. Denn DOIF bleibt in der ersten komplett erfuellten Bedingung haengen!
Gruss Christoph
Verstehe ich nicht... Es hat ja alles wunderbar funktioniert...
cmd 1 und 2 haben zwar die gleichen Bedingungen Triggern aber bei 1 nur auf ([Tageslicht_indoor] eq "Nacht" und bei 2 nur auf [TVTime:state] eq "off" überprüfen tun sie aber die ? weil die auch Voraussetzungen erfüllt sein müssen bevor getriggert wird.
bei 3 wird auf [TVTime:state] eq "off" UND [22:00-05:00] getriggert aber nur wenn [?PartyTime:state] eq "off" ist
bei 4 wird auf [PartyTime:state] eq "off" getriggert aber nur wenn [?TVTime:state] eq "off" und [?22:00-05:00] ist.
Also falls ich etwas falsch verstanden habe dann hat jedenfalls das DOIF mich verstanden ;D
Hallo misux
Sorry, ich war heute morgen durcheinander und hatte mich etwas verrannt. (Toll wenn der Arbeitgeber meint es ist Sommer und man hier mit Jacke frieren muss!)
Du hast recht, und mache das was Damian geschrieben hat!
Gruss Christoph
Alles gut! Update durchgeführt! Bin gespannt ;D