Hallo,
Wenn ich Spätschicht habe und komme um 22.30 Uhr nach Hause, dann schliesse ich meine Haustuer auf und diese schliesst nicht automatisch ab. Was habe ich falsch gemacht, den CMD3 wird nicht nochmal ausgefürt.
Hier einmal den Code:
### 1
([06:00-22:00] and [Handy_Sandro_Sandra] eq "present"and [Haustuersensor] eq "closed")
(set Haustuer unlock)
(set Telegram message Die Haustuer ist jetzt unverschlossen)
DOELSEIF
### 2
([06:00-22:00] and [Handy_Sandro_Sandra] eq "absent" and [Haustuersensor] eq "closed")
(set Haustuer lock)
(set Telegram message Die Haustuer ist jetzt verschlossen)
DOELSEIF
### 3
([22:00-06:00] and [Handy_Sandro_Sandra] eq "present" and [Haustuersensor] eq "closed" and [Haustuer] eq "UNLOCKED")
(set Haustuer lock)
(set Telegram message Die Haustuer ist jetzt verschlossen)
Grüße
Sandro
Hallo Sandro,
bitte ein list deines Devices, ansonsten ist es unmöglich dir eine Lösung anzubieten.
Viele Grüße Gisbert
Zitat von: Gisbert am 15 März 2023, 07:48:28
bitte ein list deines Devices, ansonsten ist es unmöglich dir eine Lösung anzubieten.
dem schließe ich mich an.
Als Zusatzhinweis: Das list bitte im Fehlerzustand! ansonsten bringt es nichts. :-)
oben in der FHEM Befehlszeile dazu "list <DOIF-Name>" eingeben und die Ausgabe hier posten.
Hallo,
hier einmal ein List vom Device.
[code]define Haustuer_Steuerung DOIF ### 1\
([06:00-22:00] and [Handy_Sandro_Sandra] eq "present"and [Haustuersensor] eq "closed")\
(set Haustuer unlock)\
(set Telegram message Die Haustuer ist jetzt unverschlossen)\
DOELSEIF\
### 2\
([06:00-22:00] and [Handy_Sandro_Sandra] eq "absent" and [Haustuersensor] eq "closed")\
(set Haustuer lock)\
(set Telegram message Die Haustuer ist jetzt verschlossen)\
DOELSEIF\
### 3\
([22:00-06:00] and [Handy_Sandro_Sandra] eq "present" and [Haustuersensor] eq "closed" and [Haustuer] eq "UNLOCKED")\
(set Haustuer lock)\
(set Telegram message Die Haustuer ist jetzt verschlossen)
attr Haustuer_Steuerung icon hm_keymatic
attr Haustuer_Steuerung room Haustür
attr Haustuer_Steuerung wait 5:5:120
# DEF ### 1
#([06:00-22:00] and [Handy_Sandro_Sandra] eq "present"and [Haustuersensor] eq "closed")
#(set Haustuer unlock)
#(set Telegram message Die Haustuer ist jetzt unverschlossen)
#DOELSEIF
#### 2
#([06:00-22:00] and [Handy_Sandro_Sandra] eq "absent" and [Haustuersensor] eq "closed")
#(set Haustuer lock)
#(set Telegram message Die Haustuer ist jetzt verschlossen)
#DOELSEIF
#### 3
#([22:00-06:00] and [Handy_Sandro_Sandra] eq "present" and [Haustuersensor] eq "closed" and [Haustuer] eq "UNLOCKED")
#(set Haustuer lock)
#(set Telegram message Die Haustuer ist jetzt verschlossen)
# FUUID 640baeae-f33f-784a-8609-0790fc0e80097384
# MODEL FHEM
# NAME Haustuer_Steuerung
# NOTIFYDEV global,Haustuersensor,Haustuer,Handy_Sandro_Sandra
# NR 12754
# NTFY_ORDER 50-Haustuer_Steuerung
# STATE cmd_1
# TYPE DOIF
# VERSION 27298 2023-03-05 15:15:00
# eventCount 116
# READINGS:
# 2023-03-15 14:18:25 Device Handy_Sandro_Sandra
# 2023-03-15 06:00:07 cmd 1.2
# 2023-03-15 06:00:07 cmd_event timer_1
# 2023-03-15 06:00:07 cmd_nr 1
# 2023-03-15 06:00:07 cmd_seqnr 2
# 2023-03-15 14:18:25 e_Handy_Sandro_Sandra_STATE present
# 2023-03-15 14:16:46 e_Haustuer_STATE UNLOCKED
# 2023-03-15 13:41:56 e_Haustuersensor_STATE closed
# 2023-03-14 23:42:12 mode enabled
# 2023-03-15 06:00:07 state cmd_1
# 2023-03-14 23:28:01 timer_01_c01 15.03.2023 06:00:00
# 2023-03-14 23:28:01 timer_02_c01 15.03.2023 22:00:00
# 2023-03-14 23:28:01 timer_03_c02 15.03.2023 06:00:00
# 2023-03-14 23:28:01 timer_04_c02 15.03.2023 22:00:00
# 2023-03-15 06:00:07 timer_05_c03 15.03.2023 22:00:00
# 2023-03-15 06:00:07 timer_06_c03 16.03.2023 06:00:00
# 2023-03-14 23:44:51 wait_timer no timer
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# cond:
# Handy_Sandro_Sandra:
# 0:
# &STATE ^Handy_Sandro_Sandra$
# 1:
# &STATE ^Handy_Sandro_Sandra$
# 2:
# &STATE ^Handy_Sandro_Sandra$
# Haustuer:
# 0:
# 1:
# 2:
# &STATE ^Haustuer$
# Haustuersensor:
# 0:
# &STATE ^Haustuersensor$
# 1:
# &STATE ^Haustuersensor$
# 2:
# &STATE ^Haustuersensor$
# attr:
# cmdState:
# wait:
# 0:
# 5
# 1:
# 5
# 2:
# 120
# waitdel:
# condition:
# 0 ::DOIF_time($hash,0,1,$wday,$hms) and ::InternalDoIf($hash,'Handy_Sandro_Sandra','STATE') eq "present"and ::InternalDoIf($hash,'Haustuersensor','STATE') eq "closed"
# 1 ::DOIF_time($hash,2,3,$wday,$hms) and ::InternalDoIf($hash,'Handy_Sandro_Sandra','STATE') eq "absent" and ::InternalDoIf($hash,'Haustuersensor','STATE') eq "closed"
# 2 ::DOIF_time($hash,4,5,$wday,$hms) and ::InternalDoIf($hash,'Handy_Sandro_Sandra','STATE') eq "present" and ::InternalDoIf($hash,'Haustuersensor','STATE') eq "closed" and ::InternalDoIf($hash,'Haustuer','STATE') eq "UNLOCKED"
# days:
# do:
# 0:
# 0 set Haustuer unlock
# 1 set Telegram message Die Haustuer ist jetzt unverschlossen
# 1:
# 0 set Haustuer lock
# 1 set Telegram message Die Haustuer ist jetzt verschlossen
# 2:
# 0 set Haustuer lock
# 1 set Telegram message Die Haustuer ist jetzt verschlossen
# 3:
# helper:
# NOTIFYDEV global,Haustuersensor,Haustuer,Handy_Sandro_Sandra
# event present
# globalinit 1
# last_timer 6
# sleepdevice Haustuer
# sleepsubtimer -1
# sleeptimer -1
# timerdev Handy_Sandro_Sandra
# timerevent present
# triggerDev Handy_Sandro_Sandra
# timerevents:
# present
# timereventsState:
# state: present
# triggerEvents:
# present
# triggerEventsState:
# state: present
# hmccu:
# internals:
# all Handy_Sandro_Sandra:STATE Haustuersensor:STATE Haustuer:STATE
# interval:
# 0 -1
# 1 0
# 2 -1
# 3 2
# 4 -1
# 5 4
# intervalfunc:
# intervaltimer:
# localtime:
# 0 1678856400
# 1 1678914000
# 2 1678856400
# 3 1678914000
# 4 1678914000
# 5 1678942800
# readings:
# realtime:
# 0 06:00:00
# 1 22:00:00
# 2 06:00:00
# 3 22:00:00
# 4 22:00:00
# 5 06:00:00
# time:
# 0 06:00:00
# 1 22:00:00
# 2 06:00:00
# 3 22:00:00
# 4 22:00:00
# 5 06:00: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
# timers:
# 0 0 1
# 1 2 3
# 2 4 5
# trigger:
# triggertime:
# 1678914000:
# localtime 1678914000
# hash:
# 1678942800:
# localtime 1678942800
# hash:
# uiState:
# uiTable:
#
setstate Haustuer_Steuerung cmd_1
setstate Haustuer_Steuerung 2023-03-15 14:18:25 Device Handy_Sandro_Sandra
setstate Haustuer_Steuerung 2023-03-15 06:00:07 cmd 1.2
setstate Haustuer_Steuerung 2023-03-15 06:00:07 cmd_event timer_1
setstate Haustuer_Steuerung 2023-03-15 06:00:07 cmd_nr 1
setstate Haustuer_Steuerung 2023-03-15 06:00:07 cmd_seqnr 2
setstate Haustuer_Steuerung 2023-03-15 14:18:25 e_Handy_Sandro_Sandra_STATE present
setstate Haustuer_Steuerung 2023-03-15 14:16:46 e_Haustuer_STATE UNLOCKED
setstate Haustuer_Steuerung 2023-03-15 13:41:56 e_Haustuersensor_STATE closed
setstate Haustuer_Steuerung 2023-03-14 23:42:12 mode enabled
setstate Haustuer_Steuerung 2023-03-15 06:00:07 state cmd_1
setstate Haustuer_Steuerung 2023-03-14 23:28:01 timer_01_c01 15.03.2023 06:00:00
setstate Haustuer_Steuerung 2023-03-14 23:28:01 timer_02_c01 15.03.2023 22:00:00
setstate Haustuer_Steuerung 2023-03-14 23:28:01 timer_03_c02 15.03.2023 06:00:00
setstate Haustuer_Steuerung 2023-03-14 23:28:01 timer_04_c02 15.03.2023 22:00:00
setstate Haustuer_Steuerung 2023-03-15 06:00:07 timer_05_c03 15.03.2023 22:00:00
setstate Haustuer_Steuerung 2023-03-15 06:00:07 timer_06_c03 16.03.2023 06:00:00
setstate Haustuer_Steuerung 2023-03-14 23:44:51 wait_timer no timer
[/code]
Das List sieht aus, als wäre es vom Nachmittag - da ist die Tür folgerichtig offen (cmd_1).
Ich vermute, da fehlt ein attr Haustuer_Steuerung do always. Wenn nachts die Tür geöffnet wird, ist das DOIF ja schon im Status cmd_3. Wenn also erneut [Haustuer] eq "UNLOCKED" und [Haustuersensor] eq "closed" wahr wird, weil jemand die Tür aufgeschlossen und geschlossen hat, tut das DOIF nichts mehr, weil es ja schon im entsprechenden Zustand ist.
Zitat von: xenos1984 am 15 März 2023, 21:28:31
Das List sieht aus, als wäre es vom Nachmittag - da ist die Tür folgerichtig offen (cmd_1).
Ich vermute, da fehlt ein attr Haustuer_Steuerung do always. Wenn nachts die Tür geöffnet wird, ist das DOIF ja schon im Status cmd_3. Wenn also erneut [Haustuer] eq "UNLOCKED" und [Haustuersensor] eq "closed" wahr wird, weil jemand die Tür aufgeschlossen und geschlossen hat, tut das DOIF nichts mehr, weil es ja schon im entsprechenden Zustand ist.
Besten Dank, so funktioniert das sehr gut. Nur habe ich das Problem das [Handy_Sandro_Sandra] eq "present" alle 30sec. sich aktualisiert und immer wieder das cmd anspricht, jenachdem welche Uhrzeit ist.
Grüße
Sandro
Man könnte das Event [Handy_Sandro_Sandra] eq "present" alle 30sec. verhindern. --> event-on-update-reading
Alternative Idee: DOELSE () am Ende des DOIF.