Hauptmenü

Haustuersteuerung

Begonnen von sepultura30, 15 März 2023, 00:04:00

Vorheriges Thema - Nächstes Thema

sepultura30

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

Gisbert

Hallo Sandro,

bitte ein list deines Devices, ansonsten ist es unmöglich dir eine Lösung anzubieten.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Frank_Huber

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.

sepultura30

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]

xenos1984

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.

sepultura30

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

rabehd

Man könnte das Event [Handy_Sandro_Sandra] eq "present" alle 30sec. verhindern. --> event-on-update-reading

Alternative Idee: DOELSE () am Ende des DOIF.
Auch funktionierende Lösungen kann man hinterfragen.