[Gelöst] DOIF triggert nicht -> Wait-timer läuft weiter

Begonnen von bmwfan, 21 Oktober 2022, 09:23:24

Vorheriges Thema - Nächstes Thema

bmwfan

Hallo,

ich habe ein weiteres Problem bei der Lichtsteuerung mit einem Aquara-Bewegungsmelder in Verbindung mit einem HmIP-BWTH.

Das Problem liegt darin, dass das Ausschalten des Lichtes über den HmIP-Taster den Wait-Timer nicht zurücksetzt da der 2.te Zweig (DOELSEIF...) nicht durchlaufen wird. Deswegen wird, wenn man den Raum während der Laufzeit des DOIF erneut betritt, das Licht nicht mehr eingeschalten. Der HmIP-BWTH bietet leider kein eigenes Reading an (wie Bsp. Shellys), an dem man erkennt, dass der Schalter manuell betätigt wurde (oder ich habe es nicht gefunden) sondern man muss über den Schaltzustand (oder -event) den Status AUS detektieren und mit dem Zustand des DOIF verknüpfen.

(["^Aquara_Motion_Bad_OG$:^occupancy: true"] and ([?Aquara_Motion_Bad_OG:illuminance] < 20 or [?Licht_BadOG_Spiegel_HmIP:state] eq "on"))
(IF ($hms gt "05:01" and $hms lt "23:49") (set Licht_BadOG_Spiegel_HmIP pct 100 0 8, {Log 1, "pct 100 0 8"}) ELSE (set Licht_BadOG_Spiegel_HmIP pct 40 0 15, {Log 2, "pct 40 0 15"})) (set Licht_BadOG_Spiegel_HmIP off, {Log 3, "Timer AUS"})
DOELSEIF (["^Licht_BadOG_Spiegel_HmIP$:^state: off"] and [?$SELF] eq "cmd_1_1") ({Log 4, "Manuell AUS"})## Test: Laufenden Timer rücksetzen da Ausschalter betätigt

Attribute:
do resetwait
0,[di_Duschzeiten:state]:0 wobei di_Duschzeiten aktuell auf 10 Minuten steht


Im Eventlog bzw. Logfile ist der Ablauf so:


Filelog     
2022-10-19_10:20:35 Aquara_Motion_Bad_OG illuminance: 14     
2022-10-19_10:20:35 Aquara_Motion_Bad_OG occupancy: true                                    10:20:35   Raum betreten
2022-10-19_10:20:35 Licht_BadOG_Spiegel_HmIP pct 100 0 8                                             Licht angeschalten - korrekt
2022-10-19_10:20:35 di_Bad_OG_Licht_Spiegel cmd_nr: 1     
2022-10-19_10:20:35 di_Bad_OG_Licht_Spiegel cmd_seqnr: 1     
2022-10-19_10:20:35 di_Bad_OG_Licht_Spiegel cmd: 1.1     
2022-10-19_10:20:35 di_Bad_OG_Licht_Spiegel cmd_event: Aquara_Motion_Bad_OG     
2022-10-19_10:20:35 di_Bad_OG_Licht_Spiegel state: cmd_1_1     
2022-10-19_10:20:35 di_Bad_OG_Licht_Spiegel wait_timer: 19.10.2022 10:23:35 cmd_1_2 Aquara_Motion_Bad_OG         Wait-Timer auf 10 Min. (10:23:35) gesetzt - korrekt
2022-10-19_10:20:35 Licht_BadOG_Spiegel_HmIP pct: 10     
2022-10-19_10:20:36 Licht_BadOG_Spiegel_HmIP state: 18.5     
2022-10-19_10:20:36 Licht_BadOG_Spiegel_HmIP pct: 18.5     
2022-10-19_10:20:44 Licht_BadOG_Spiegel_HmIP state: on     
2022-10-19_10:20:44 Licht_BadOG_Spiegel_HmIP pct: 100     
2022-10-19_10:22:05 Aquara_Motion_Bad_OG occupancy: false                                    10:22:05   Nach occupancy_timeout sendet Bew.melder false - korrekt
2022-10-19_10:22:51 Aquara_Motion_Bad_OG occupancy: true                                    10:22:51   Raum erneut betreten
2022-10-19_10:22:51 di_Bad_OG_Licht_Spiegel wait_timer: no timer     
2022-10-19_10:22:51 di_Bad_OG_Licht_Spiegel wait_timer: 19.10.2022 10:25:51 cmd_1_2 Aquara_Motion_Bad_OG         Wait-Timer auf + 10 Minuten (10:25:51) gesetzt - korrekt
2022-10-19_10:23:10 Licht_BadOG_Spiegel_HmIP state: 54                                       10:23:10   Schalter HmIP-BWTH manuell betätigt (AUS)
2022-10-19_10:23:10 Licht_BadOG_Spiegel_HmIP pct: 54     
2022-10-19_10:23:11 Licht_BadOG_Spiegel_HmIP state: off                                       10:23:11   Licht geht AUS - korrekt
2022-10-19_10:23:11 Licht_BadOG_Spiegel_HmIP pct: 0     
2022-10-19_10:24:21 Aquara_Motion_Bad_OG occupancy: false                                    10:24:21   Nach occupancy_timeout sendet Bew.melder false - korrekt
2022-10-19_10:25:20 Aquara_Motion_Bad_OG occupancy: true                                    10:25:20   Raum erneut betreten aber Licht ging nicht an - Fehler
2022-10-19_10:25:20 di_Bad_OG_Licht_Spiegel wait_timer: no timer     
2022-10-19_10:25:20 di_Bad_OG_Licht_Spiegel wait_timer: 19.10.2022 10:28:20 cmd_1_2 Aquara_Motion_Bad_OG         Wait-Timer triggert, obwohl das Licht nicht an ging???
2022-10-19_10:26:50  Aquara_Motion_Bad_OG occupancy: false                                    10:26:50   Nach occupancy_timeout sendet Bew.melder false - korrekt
2022-10-19_10:28:21 di_Bad_OG_Licht_Spiegel wait_timer: no timer     
2022-10-19_10:28:21 di_Bad_OG_Licht_Spiegel cmd_nr: 1     
2022-10-19_10:28:21 di_Bad_OG_Licht_Spiegel cmd_seqnr: 2     
2022-10-19_10:28:21 di_Bad_OG_Licht_Spiegel cmd: 1.2     
2022-10-19_10:28:21 di_Bad_OG_Licht_Spiegel cmd_event: MQTT2_zigbee_0x00158d0007900438     
2022-10-19_10:28:21 di_Bad_OG_Licht_Spiegel state: cmd_1     
     
Logfile     
2022.10.19 10:20:35.075 1: pct 100 0 8                                                   10:20:35   cmd 1.1 wird ausgeführt: Licht nach Bewegung EIN
2022.10.19 10:28:21.089 3: Timer AUS                                                   10:28:21   cmd 1.2 wird ausgeführt: Licht nach Wait-Timer AUS
                                                                                                                                  cmd 2 (Ausschalten über Schalter) wird nicht durchlaufen

2 Fragen stellen sich mir:
Primär: Wie kann ich erreichen, dass bei manuellem Ausschalten des Lichtes über den HmIP-BWTH der Wait-Timer des cmd 1.1 zurückgesetzt wird?
Nur zum Verständniss: Warum triggert cmd1.1 um 10:25:20, das Licht geht aber nicht an? Ich war bisher der Meinung, dass mit der Meldung cmd1.1 auch cmd 1, sequenz 1 ausgeführt wird und dann müsste das Licht an sein.


Kannn mir jemand auf die Sprünge helfen?

Gruß Jürgen
Synology DS720+ mit Docker-Container und Haupt-FHEM, HW-LAN, Jalousienaktoren; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Per

Eine universelle Lösung für manuelle Betätigung:
der Schalter und der BWM werden vom DOIF ausgewertet. Wenn das Event vom Schalter kommt und DOIF hat schon den passenden Status, wurde er remot geschaltet. Unterscheiden sich die Status, lokal/manuell.

bmwfan

So habe ich die DOIF meiner weiteren Leuchten mit Bewegungsmelder auch aufgebaut (Aquara in Verbindung mit Shelly) und die funktionieren wie beschrieben.

Lediglich mit dem HmIP-BWTH funktioniert das nicht. Der 2.te Zweig (DOELSEIF), der erkennen soll, dass der Taster betätigt wurde und damit den WAIT-Timer zurücksetzen muß, setzt den laufenden WAIT-Timer von cmd1.1 nicht zurück obwohl das Event zu sehen ist.

Warum ist mir unklar.







Synology DS720+ mit Docker-Container und Haupt-FHEM, HW-LAN, Jalousienaktoren; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Per


bmwfan

Dachte, wenn im Filelog das Event so registriert wird
Zitat2022-10-19_10:20:35 di_Bad_OG_Licht_Spiegel state: cmd_1_1

dann müsste die Abfrage mit cmd_1_1 stimmen.

Hatte auch eine ähnliche Abfrage in einem Beispiel im Wiki gefunden
Zitat[$SELF] !~ "cmd_1_1|cmd_1_2")

https://wiki.fhem.de/wiki/DOIF/partielle_Deaktivierung_der_Befehlsausf%C3%BChrung,_Zur%C3%BCcksetzen_eines_Wait-Timers_mit_$SELF_oder_IsDisabled_verhindern,_im_Vergleich

Synology DS720+ mit Docker-Container und Haupt-FHEM, HW-LAN, Jalousienaktoren; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Sany

#5
die abfrage mit cmd_1_1 stimmt schon, habs gerade mal getestet.
Könntest Du mal ein list vom Licht_BadOG_Spiegel_HmIP zeigen sowie einen Auszug vom Eventmonitor für das Licht, wenn Du es manuell an und ausschaltest? Nach Möglichkeit setzt Du vorher attr global mseclog 1, damit die Zeit besser aufgelöst wird. Am besten gleich noch ein list vom DOIF, damit man alles sehen kann.

Und etwas verwundert mich: bei ELV ist ein HmIP-BWTH ein Wandthermostat, wie nutzt Du den als Lichtschalter??

Gruß


Sany
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

bmwfan

Du hast recht. Ich setze auch die HmIP-BWTH als Thermostate ein. Habe mich verschrieben. Der Lichtschalter ist ein HmIP-BDT!

Das List:
Internals:
   DEF        0008DA49929255  sd=3.LEVEL cd=4.LEVEL
   FUUID      61969642-f33f-d125-6779-fa2b90bc9c61be8e
   IODev      myHMCCU3
   NAME       HmIP_BDT_0008DA49929255_3
   NR         37
   STATE      off
   TYPE       HMCCUDEV
   ccuaddr    0008DA49929255
   ccudevstate active
   ccuif      HmIP-RF
   ccuname    Licht-BadOG-Spiegel-HmIP
   ccurolectrl DIMMER_VIRTUAL_RECEIVER
   ccurolestate DIMMER_TRANSMITTER
   ccusubtype BDT
   ccutype    HmIP-BDT
   eventCount 2162
   firmware   1.4.8
   readonly   no
   READINGS:
     2022-10-24 16:54:35   3.ACTIVITY_STATE UNKNOWN
     2022-10-24 16:54:35   3.LEVEL         off
     2022-10-24 16:54:35   3.LEVEL_STATUS  NORMAL
     2022-10-24 16:54:35   3.PROCESS       STABLE
     2022-10-14 09:23:41   3.SECTION       
     2022-10-24 16:54:35   3.SECTION_STATUS UNKNOWN
     2022-10-24 16:54:35   4.ACTIVITY_STATE STABLE
     2022-10-24 16:54:35   4.LEVEL         off
     2022-10-24 16:54:35   4.LEVEL_STATUS  NORMAL
     2022-10-24 16:54:35   4.PROCESS       STABLE
     2022-10-24 16:54:35   4.SECTION       0
     2022-10-24 16:54:35   4.SECTION_STATUS NORMAL
     2022-10-24 16:16:12   7.WEEK_PROGRAM_CHANNEL_LOCKS 0
     2022-10-14 09:23:09   IODev           myHMCCU3
     2022-10-24 16:54:35   activity        alive
     2022-10-24 16:54:35   control         off
     2022-10-24 16:54:35   devstate        ok
     2022-10-24 16:54:35   hmstate         off
     2022-10-24 16:54:35   level           off
     2022-10-24 16:54:35   pct             0
     2022-10-24 16:54:35   rssidevice      -78
     2022-10-24 16:09:50   rssipeer        -80
     2022-10-24 16:54:35   state           off
     2022-10-14 09:23:41   voltage         0.0
   hmccu:
     channels   8
     defCDP     4.LEVEL
     defSDP     3.LEVEL
     detect     5
     devspec    0008DA49929255
     forcedev   0
     nodefaults 1
     role       0:MAINTENANCE,1:KEY_TRANSCEIVER,2:KEY_TRANSCEIVER,3:DIMMER_TRANSMITTER,4:DIMMER_VIRTUAL_RECEIVER,5:DIMMER_VIRTUAL_RECEIVER,6:DIMMER_VIRTUAL_RECEIVER,7:DIMMER_WEEK_PROFILE
     setDefaults 0
     cmdlist:
       get       
       set        on-till level pct up down on-for-timer oldLevel:noArg on:noArg off:noArg toggle:noArg
     control:
       chn        4
       dpt        LEVEL
     dp:
       0.ACTUAL_TEMPERATURE:
         VALUES:
           NVAL       0.000000
           ONVAL      0.000000
           OSVAL      0.0
           OVAL       0.000000
           SVAL       0.0
           VAL        0.000000
       0.ACTUAL_TEMPERATURE_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       0.CONFIG_PENDING:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      false
           OVAL       0
           SVAL       false
           VAL        0
       0.DUTY_CYCLE:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      false
           OVAL       0
           SVAL       false
           VAL        0
       0.ERROR_CODE:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       0.ERROR_OVERHEAT:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      false
           OVAL       0
           SVAL       false
           VAL        0
       0.ERROR_OVERLOAD:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      false
           OVAL       0
           SVAL       false
           VAL        0
       0.ERROR_UPDATE:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      false
           OVAL       0
           SVAL       false
           VAL        0
       0.INSTALL_TEST:
         VALUES:
           NVAL       true
           ONVAL      true
           OSVAL      true
           OVAL       true
           SVAL       true
           VAL        true
       0.OPERATING_VOLTAGE:
         VALUES:
           NVAL       0.000000
           ONVAL      0.000000
           OSVAL      0.0
           OVAL       0.000000
           SVAL       0.0
           VAL        0.000000
       0.OPERATING_VOLTAGE_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       0.RSSI_DEVICE:
         VALUES:
           NVAL       -78
           ONVAL      -81
           OSVAL      -81
           OVAL       -81
           SVAL       -78
           VAL        -78
       0.RSSI_PEER:
         VALUES:
           NVAL       -80
           ONVAL      -77
           OSVAL      -77
           OVAL       -77
           SVAL       -80
           VAL        -80
       0.UNREACH:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      alive
           OVAL       0
           SVAL       alive
           VAL        0
       0.UPDATE_PENDING:
         VALUES:
           NVAL       false
           ONVAL      false
           OSVAL      false
           OVAL       false
           SVAL       false
           VAL        false
       3.ACTIVITY_STATE:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      UNKNOWN
           OVAL       0
           SVAL       UNKNOWN
           VAL        0
       3.LEVEL:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      off
           OVAL       0.0
           SVAL       off
           VAL        0.0
       3.LEVEL_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       3.PROCESS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      STABLE
           OVAL       0
           SVAL       STABLE
           VAL        0
       3.SECTION:
         VALUES:
           NVAL       
           ONVAL     
           OSVAL     
           OVAL       
           SVAL       
           VAL       
       3.SECTION_STATUS:
         VALUES:
           NVAL       1
           ONVAL      1
           OSVAL      UNKNOWN
           OVAL       1
           SVAL       UNKNOWN
           VAL        1
       4.ACTIVITY_STATE:
         VALUES:
           NVAL       3
           ONVAL      3
           OSVAL      STABLE
           OVAL       3
           SVAL       STABLE
           VAL        3
       4.LEVEL:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      off
           OVAL       0.0
           SVAL       off
           VAL        0.0
       4.LEVEL_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       4.PROCESS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      STABLE
           OVAL       0
           SVAL       STABLE
           VAL        0
       4.SECTION:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       4.SECTION_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       5.ACTIVITY_STATE:
         VALUES:
           NVAL       3
           ONVAL      3
           OSVAL      STABLE
           OVAL       3
           SVAL       STABLE
           VAL        3
       5.LEVEL:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      off
           OVAL       0.0
           SVAL       off
           VAL        0.0
       5.LEVEL_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       5.PROCESS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      STABLE
           OVAL       0
           SVAL       STABLE
           VAL        0
       5.SECTION:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       5.SECTION_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       6.ACTIVITY_STATE:
         VALUES:
           NVAL       3
           ONVAL      3
           OSVAL      STABLE
           OVAL       3
           SVAL       STABLE
           VAL        3
       6.LEVEL:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      off
           OVAL       0.0
           SVAL       off
           VAL        0.0
       6.LEVEL_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       6.PROCESS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      STABLE
           OVAL       0
           SVAL       STABLE
           VAL        0
       6.SECTION:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       6.SECTION_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       7.WEEK_PROGRAM_CHANNEL_LOCKS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
     roleCmds:
       get:
       set:
         down:
           channel    4
           role       DIMMER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:?delta=-10
           usage      down [delta]
           subcmd:
             000:
               args       -10
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    delta
               partype    2
               ps         VALUES
               scn        000
               unit       100%
         level:
           channel    4
           role       DIMMER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:?level
           usage      level level
           subcmd:
             000:
               args       
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    level
               partype    2
               ps         VALUES
               scn        000
               unit       100%
         off:
           channel    4
           role       DIMMER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:0
           usage      off
           subcmd:
             000:
               args       0
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        000
               unit       100%
         oldLevel:
           channel    4
           role       DIMMER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:100.5
           usage      oldLevel
           subcmd:
             000:
               args       100.5
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        000
               unit       100%
         on:
           channel    4
           role       DIMMER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:100
           usage      on
           subcmd:
             000:
               args       100
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        000
               unit       100%
         on-for-timer:
           channel    4
           role       DIMMER_VIRTUAL_RECEIVER
           subcount   2
           syntax     1:V:DURATION_UNIT:0 2:V:ON_TIME,DURATION_VALUE:?duration 3:V:LEVEL:100
           usage      on-for-timer duration
           subcmd:
             000:
               args       
               dpt        ON_TIME
               fnc       
               max        8580000.0
               min        0.0
               parname    duration
               partype    2
               ps         VALUES
               scn        002
               unit       s
             001:
               args       100
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        003
               unit       100%
         on-till:
           channel    4
           role       DIMMER_VIRTUAL_RECEIVER
           subcount   2
           syntax     1:V:DURATION_UNIT:0 2:V:ON_TIME,DURATION_VALUE:?time 3:V:LEVEL:100
           usage      on-till time
           subcmd:
             000:
               args       
               dpt        ON_TIME
               fnc       
               max        8580000.0
               min        0.0
               parname    time
               partype    2
               ps         VALUES
               scn        002
               unit       s
             001:
               args       100
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        003
               unit       100%
         pct:
           channel    4
           role       DIMMER_VIRTUAL_RECEIVER
           subcount   3
           syntax     5:V:LEVEL:?level 1:V:DURATION_UNIT:0 2:V:ON_TIME,DURATION_VALUE:?time=0.0 3:V:RAMP_TIME_UNIT:0 4:V:RAMP_TIME,RAMP_TIME_VALUE:?ramp=0.5
           usage      pct level [time] [ramp]
           subcmd:
             000:
               args       
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    level
               partype    2
               ps         VALUES
               scn        005
               unit       100%
             001:
               args       0.0
               dpt        ON_TIME
               fnc       
               max        8580000.0
               min        0.0
               parname    time
               partype    2
               ps         VALUES
               scn        002
               unit       s
             002:
               args       0.5
               dpt        RAMP_TIME
               fnc       
               max        8580000.0
               min        0.0
               parname    ramp
               partype    2
               ps         VALUES
               scn        004
               unit       s
         up:
           channel    4
           role       DIMMER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:?delta=+10
           usage      up [delta]
           subcmd:
             000:
               args       +10
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    delta
               partype    2
               ps         VALUES
               scn        000
               unit       100%
     state:
       chn        3
       dpt        LEVEL
Attributes:
   alias      Licht_BOG_Spiegel_HmIP
   ccureadingfilter 1,2,3,4,7..*
   cmdIcon    on:general_an off:general_aus
   devStateIcon on:black_FS20.on off:black_FS20.off Initialized:edit_settings@orange
   event-min-interval .*:3600
   event-on-change-reading activity,state,4.LEVEL,pct,3.LEVEL
   icon       light_ceiling_light
   room       2.1_OG_Bad,9.6.0_System
   substexcl  pct
   webCmd     pct:on:off
   widgetOverride pct:slider,0,10,100


Mseclog steht auf 1.

Event-Monitor:
2022-10-24 17:01:40.664 HMCCUDEV Licht_BadOG_Spiegel_HmIP 35.5
2022-10-24 17:01:40.664 HMCCUDEV Licht_BadOG_Spiegel_HmIP 3.LEVEL: 35.5
2022-10-24 17:01:40.664 HMCCUDEV Licht_BadOG_Spiegel_HmIP pct: 35.5
2022-10-24 17:01:40.714 HMCCUDEV Licht_BadOG_Spiegel_HmIP 4.LEVEL: 35.5
2022-10-24 17:01:41.961 HMCCUDEV Licht_BadOG_Spiegel_HmIP on
2022-10-24 17:01:41.961 HMCCUDEV Licht_BadOG_Spiegel_HmIP 3.LEVEL: on
2022-10-24 17:01:41.961 HMCCUDEV Licht_BadOG_Spiegel_HmIP pct: 100
2022-10-24 17:01:42.012 HMCCUDEV Licht_BadOG_Spiegel_HmIP 4.LEVEL: on
2022-10-24 17:02:58.798 HMCCUDEV Licht_BadOG_Spiegel_HmIP off
2022-10-24 17:02:58.798 HMCCUDEV Licht_BadOG_Spiegel_HmIP 3.LEVEL: off
2022-10-24 17:02:58.798 HMCCUDEV Licht_BadOG_Spiegel_HmIP pct: 0
2022-10-24 17:02:58.848 HMCCUDEV Licht_BadOG_Spiegel_HmIP 4.LEVEL: off


List DOIF:
Internals:
   DEF        (["^Aquara_Motion_Bad_OG$:^occupancy: true"] and ([?Aquara_Motion_Bad_OG:illuminance] < 20 or [?Licht_BadOG_Spiegel_HmIP:state] eq "on"))
(IF ($hms gt "05:01" and $hms lt "23:49") (set Licht_BadOG_Spiegel_HmIP pct 100 0 8, {Log 1, "pct 100 0 8"}) ELSE (set Licht_BadOG_Spiegel_HmIP pct 40 0 15, {Log 2, "pct 40 0 15"})) (set Licht_BadOG_Spiegel_HmIP off, {Log 3, "Timer AUS"})
DOELSEIF (["^Licht_BadOG_Spiegel_HmIP$:^state: off"] and [?$SELF] eq "cmd_1_1") ({Log 4, "Manuell AUS"}) ## Test: Laufenden Timer rücksetzen da Ausschalter betätigt
   FUUID      6197653a-f33f-d125-da22-4399ea763b68ad95
   MODEL      FHEM
   NAME       di_Bad_OG_Licht_Spiegel
   NOTIFYDEV  Aquara_Motion_Bad_OG,global,Licht_BadOG_Spiegel_HmIP
   NR         192
   NTFY_ORDER 50-di_Bad_OG_Licht_Spiegel
   STATE      cmd_1
   TYPE       DOIF
   VERSION    26444 2022-09-25 16:29:19
   eventCount 923
   READINGS:
     2022-10-24 17:12:12   cmd             1.2
     2022-10-24 17:12:12   cmd_event       set_cmd_1
     2022-10-24 17:12:12   cmd_nr          1
     2022-10-24 17:12:12   cmd_seqnr       2
     2022-10-24 17:08:34   mode            enabled
     2022-10-24 17:12:12   state           cmd_1
     2022-10-24 17:12:12   wait_timer      no timer
   Regex:
     accu:
     collect:
     cond:
       :
         0:
           "^Aquara_Motion_Bad_OG$:^occupancy: true" ^Aquara_Motion_Bad_OG$:^occupancy: true
         1:
           "^Licht_BadOG_Spiegel_HmIP$:^state: off" ^Licht_BadOG_Spiegel_HmIP$:^state: off
   attr:
     cmdState:
     wait:
       0:
         0
         [di_Duschzeiten:state]
       1:
         0
     waitdel:
   condition:
     0          ::EventDoIf('^Aquara_Motion_Bad_OG$',$hash,'^occupancy: true',0) and (::ReadingValDoIf($hash,'Aquara_Motion_Bad_OG','illuminance') < 20 or ::ReadingValDoIf($hash,'Licht_BadOG_Spiegel_HmIP','state') eq "on")
     1          ::EventDoIf('^Licht_BadOG_Spiegel_HmIP$',$hash,'^state: off',0) and ::InternalDoIf($hash,'di_Bad_OG_Licht_Spiegel','STATE') eq "cmd_1_1"
   devices:
   do:
     0:
       0          IF ($hms gt "05:01" and $hms lt "23:49") (set Licht_BadOG_Spiegel_HmIP pct 100 0 8, {Log 1, "pct 100 0 8"}) ELSE (set Licht_BadOG_Spiegel_HmIP pct 40 0 15, {Log 2, "pct 40 0 15"})
       1          set Licht_BadOG_Spiegel_HmIP off, {Log 3, "Timer AUS"}
     1:
       0          {Log 4, "Manuell AUS"}
     2:
   helper:
     NOTIFYDEV  Aquara_Motion_Bad_OG,global,Licht_BadOG_Spiegel_HmIP
     event     
     globalinit 1
     last_timer 0
     sleepdevice set_cmd_1
     sleepsubtimer -1
     sleeptimer -1
     triggerDev
     triggerEvents
     triggerEventsState
   hmccu:
   internals:
     all         di_Bad_OG_Licht_Spiegel:STATE
   uiState:
   uiTable:
Attributes:
   comment    16.10.: Logik auf Eventsteuerung geändert.
03.10.22: HM-Sensor durch Aquara ausgetauscht
   disable    0
   do         resetwait
   group      Licht
   room       2.1_OG_Bad,9.8.1_DOIF
   wait       0,[di_Duschzeiten:state]:0


Die Log 1...4 habe ich eingeführt, um im Logfile erkennen zu können, welche set-Befehle ausgeführt werden. Log 4: Manuell AUS wird nicht ausgeführt, auch wenn das Licht über den Taster ausgeschalten wird. Da im Eventlog aber ein Event  "off" registriert wird bedeutet das doch, dass entweder die Abfrage ["^Licht_BadOG_Spiegel_HmIP$:^state: off"] oder die Abfrage [?$SELF] eq "cmd_1_1" nicht korrekt sind.
Synology DS720+ mit Docker-Container und Haupt-FHEM, HW-LAN, Jalousienaktoren; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Sany

du kannst mal folgendes versuchen:
and [?$SELF] eq "cmd_1_1" mal rausnehmen, um zu sehen, ob der Schalter das DOIF triggert.
- den DOIF-Befehl per Eventmonitor aus der entsprechenden Zeile erzeugen und mal zeigen, evtl. stimmt das mit dem state nicht.
(ich nutze state schon länger nicht mehr, wenn es auch anders geht. Es hat eine Weile gedauert zu erkennen, das state oft alle möglichen Zustände annehmen kann, die für die entsprechende Aufgabe unnötig oder störend sind. Das war hauptsächlich mit Homematic (ohne IP). HmIP habe ich nur testhalber im Einsatz, vermutlich wird die Heizung/Fensterkontaktgeschichte später mal damit laufen müssen, weil Homamatic langsam "stirbt".)
- Eventuell könnte das reading control im Schalter auch den Zustand anzeigen? Dann würde ich darauf triggern. Musst es nur bei event-on-change-reading mit eintragen. Selbst eine Abfrage auf pct==0 müßte klappen.

Viel Erfolg


Sany
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

bmwfan

Der Tip mit dem Erzeugen des DOIF aus dem Event heraus war goldrichtig. Diese Möglichkeit hatte ich bisher noch nie verwendet.

Jetzt sieht dieser Zweig so aus:
DOELSEIF ([HmIP_BDT_0008DA49929255_3:"^off$"] and [?$SELF] eq "cmd_1_1") ({Log 4, "Manuell AUS"})
und der laufende Timer des cmd 1.1 wird zurückgesetzt.

Logfile:
2022-10-24_18:08:02 Aquara_Motion_Bad_OG illuminance: 2
2022-10-24_18:09:25 Aquara_Motion_Bad_OG occupancy: true
2022-10-24_18:09:25 Licht_BadOG_Spiegel_HmIP pct 100 0 8
2022-10-24_18:09:25 di_Bad_OG_Licht_Spiegel cmd_nr: 1
2022-10-24_18:09:25 di_Bad_OG_Licht_Spiegel cmd_seqnr: 1
2022-10-24_18:09:25 di_Bad_OG_Licht_Spiegel cmd: 1.1
2022-10-24_18:09:25 di_Bad_OG_Licht_Spiegel cmd_event: Aquara_Motion_Bad_OG
2022-10-24_18:09:25 di_Bad_OG_Licht_Spiegel state: cmd_1_1
2022-10-24_18:09:25 di_Bad_OG_Licht_Spiegel wait_timer: 24.10.2022 18:24:25 cmd_1_2 Aquara_Motion_Bad_OG
2022-10-24_18:09:26 Licht_BadOG_Spiegel_HmIP pct: 10
2022-10-24_18:09:26 Licht_BadOG_Spiegel_HmIP state: 14
2022-10-24_18:09:26 Licht_BadOG_Spiegel_HmIP pct: 14
2022-10-24_18:09:35 Licht_BadOG_Spiegel_HmIP state: on
2022-10-24_18:09:35 Licht_BadOG_Spiegel_HmIP pct: 100
2022-10-24_18:09:55 Licht_BadOG_Spiegel_HmIP state: off
2022-10-24_18:09:55 Licht_BadOG_Spiegel_HmIP pct: 0
2022-10-24_18:09:55 di_Bad_OG_Licht_Spiegel wait_timer: no timer
2022-10-24_18:09:55 di_Bad_OG_Licht_Spiegel cmd_nr: 2
2022-10-24_18:09:55 di_Bad_OG_Licht_Spiegel cmd: 2
2022-10-24_18:09:55 di_Bad_OG_Licht_Spiegel cmd_event: Licht_BadOG_Spiegel_HmIP
2022-10-24_18:09:55 di_Bad_OG_Licht_Spiegel state: cmd_2


Um 18:09:55 habe ich am Taster ausgeschalten.

Danke für den Tip.

In dem Zuge bin ich auch dem Problem, dass das Licht trotz einem attr di_Bad_OG_Licht_Spiegel do resetwait ausgeht obwohl jemand im Bad ist, auf die Spur gekommen.

2022-10-24_06:21:24 Aquara_Motion_Bad_OG occupancy: true
2022-10-24_06:21:24 Aquara_Motion_Bad_OG illuminance: 0
2022-10-24_06:21:24 Licht_BadOG_Spiegel_HmIP pct 100 0 8
2022-10-24_06:21:24 di_Bad_OG_Licht_Spiegel cmd_nr: 1
2022-10-24_06:21:24 di_Bad_OG_Licht_Spiegel cmd_seqnr: 1
2022-10-24_06:21:24 di_Bad_OG_Licht_Spiegel cmd: 1.1
2022-10-24_06:21:24 di_Bad_OG_Licht_Spiegel cmd_event: Aquara_Motion_Bad_OG
2022-10-24_06:21:24 di_Bad_OG_Licht_Spiegel state: cmd_1_1
2022-10-24_06:21:24 di_Bad_OG_Licht_Spiegel wait_timer: 24.10.2022 06:36:24 cmd_1_2 Aquara_Motion_Bad_OG
2022-10-24_06:21:24 Licht_BadOG_Spiegel_HmIP pct: 10
2022-10-24_06:21:25 Licht_BadOG_Spiegel_HmIP state: 14
2022-10-24_06:21:25 Licht_BadOG_Spiegel_HmIP pct: 14
2022-10-24_06:21:33 Licht_BadOG_Spiegel_HmIP state: on
2022-10-24_06:21:33 Licht_BadOG_Spiegel_HmIP pct: 100
2022-10-24_06:22:31 Aquara_Motion_Bad_OG illuminance: 50
2022-10-24_06:23:32 Aquara_Motion_Bad_OG illuminance: 54
2022-10-24_06:24:38 Aquara_Motion_Bad_OG illuminance: 53
2022-10-24_06:25:53 Aquara_Motion_Bad_OG illuminance: 55
2022-10-24_06:27:10 Aquara_Motion_Bad_OG illuminance: 56
2022-10-24_06:28:11 Aquara_Motion_Bad_OG illuminance: 54
2022-10-24_06:29:11 Aquara_Motion_Bad_OG illuminance: 39
2022-10-24_06:29:36 Aquara_Motion_Bad_OG illuminance: 40
2022-10-24_06:31:43 Aquara_Motion_Bad_OG illuminance: 54
2022-10-24_06:32:46 Aquara_Motion_Bad_OG illuminance: 52
2022-10-24_06:34:58 Aquara_Motion_Bad_OG illuminance: 48
2022-10-24_06:36:24 di_Bad_OG_Licht_Spiegel wait_timer: no timer
2022-10-24_06:36:24 di_Bad_OG_Licht_Spiegel cmd_nr: 1
2022-10-24_06:36:24 di_Bad_OG_Licht_Spiegel cmd_seqnr: 2
2022-10-24_06:36:24 di_Bad_OG_Licht_Spiegel cmd: 1.2
2022-10-24_06:36:24 di_Bad_OG_Licht_Spiegel cmd_event: Aquara_Motion_Bad_OG
2022-10-24_06:36:24 di_Bad_OG_Licht_Spiegel state: cmd_1
2022-10-24_06:36:24 Licht_BadOG_Spiegel_HmIP pct: 0
2022-10-24_06:36:25 Licht_BadOG_Spiegel_HmIP state: off
2022-10-24_06:36:27 Licht_BadOG_Spiegel_HmIP state: on
2022-10-24_06:36:27 Licht_BadOG_Spiegel_HmIP pct: 100
2022-10-24_06:37:28 Aquara_Motion_Bad_OG illuminance: 53
2022-10-24_06:39:40 Aquara_Motion_Bad_OG illuminance: 54


Das war heute morgen im Bad. Licht ging auf Bewegung an (06:21:24) und, obwohl ständig im Bad Bewegung war (ca. 1,5 m vom BWM entfernt) ging das Licht nach der WAIT-Zeit um 06:36:24 aus. Wurde dann um 06:36:27 am Taster wieder eingeschaltet.

Scheinbar erkennt der Aqara (Xiaomi RTCGQ11LM) keine Bewegung mehr, wenn die Umgebungshelligkeit zu hoch ist (Deckenlicht + Spiegelbeleuchtung). Ist mir so auch neu. Wäre hier ein Präsenzmelder geeigneter und wenn ja, welche kann man in Verbindung mit FHEM empfehlen?

Grüße und Danke für die Hilfe

Jürgen



Synology DS720+ mit Docker-Container und Haupt-FHEM, HW-LAN, Jalousienaktoren; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

KyleK

Ich vermute mal du nutzt MQTT für die Zigbee-Kommunikation? (Ich nutze HUEBridge, da kommen andere events).

In dem Eventlog-Ausschnitt taucht kein occupancy: false auf.
Ich würde jetzt annehmen, solange das nicht kommt, wird Bewegung erkannt.

(vielleicht ist für den BWM auch event-on-change-reading .* gesetzt, sodass keine neuen occupancy: true Events im Log auftauchen?)

FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

Sany

Du solltest den Bewegungsmelder mal genauer beobachten, sprich Eventmonitor. Wie ist es bei einmaliger (kurzer) Bewegung, was kommt bei "dauerhafter" Bewegung und dann nix mehr (also wie bei Dir morgens eine Weile im Bad, dann rausgegangen).
Ich habe bei mir 2 Bewegungsmelder (auch aquara per HUEBridge/deConz), die ich vom Prinzip her so nutze:
Beim Event "motion" wird das Licht eingeschaltet, wenn es aus ist ("aus" per Abfrage oder Filter), wenn der "nomotion"-Event kommt wird noch eine gewisse Zeit gewartet, dann ausgeschaltet. Diese Zeit ist abhängig davon, wie lange das Licht nach dem "nomotion" noch an sein soll und wie lange der Bewegungsmelder braucht, um "nomotion" zu senden, wenn keine Bewegung mehr ist.
Dazu, wie gesagt, den Bewegungsmelder genau beobachten, am besten ohne irgendwelche event-on... Attribute.
Mir gefällt diese Lösung besser als das nachtriggern von Timern, wenn Bewegung erkannt wird, die dann irgendwann das Licht ausschalten.
Überleg mal, ob das nicht mit dem manuellen ausschalten sogar eleganter zu lösen ist. Du hast ja explizit einen Zweig (im DOIF) der einschaltet und einen der ausschaltet.


Viel Erfolg!


Sany
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

bmwfan

@KyleK:
Verwende MQTT zur Kommunikation.
Ich habe event-0n-change-reading im BWM gesetzt und muss Deinen Ansatz jetzt prüfen. Sendet der Aqara keine weiteren "true" oder wurden die nur unterdrückt? Ich vermute das zweite.

@Sany:
Nicht mit den Wait-Timern zu arbeiten sondern die Events "true" und "false" für das Ein- und Ausschalten zu verwenden finde ich einen einfachen Ansatz. Werde das mal als nächstes Testen und kann daher die event-on-change-readings im BWM so lassen, da ich ja nur das erstmalige "true" und das erstmalige "false" möchte.

Mal sehen, ob es dann wie gewünscht geht.
Synology DS720+ mit Docker-Container und Haupt-FHEM, HW-LAN, Jalousienaktoren; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Sany

ZitatSendet der Aqara keine weiteren "true" oder wurden die nur unterdrückt?
- Im BWM vorübergehend die event-on- und event-min- Attribute löschen
- Eventmonitor mit Filter auf den BWM und eine Zeit beobachten. Mit Bewegung und auch längere Zeit ohne. Irgendwelche Stati werden ggf. nur ab und zu gesendet (battery, Activity etc). Auch wichtig: wie lange dauert es, bis nach der letzten Bewegung das occupancy false kommt.
Das findest Du so alles sehr schön heraus. Am besten irgendwo notieren.
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

bmwfan

Logik funktioniert jetzt soweit ich das testen konnte.

Einziges Manko ist noch, dass der BWM nicht immer auslöst (es wird dann kein Event generiert), aber das liegt sicher an der Position. Muss ich noch andere Positionen ausprobieren.

Besten Dank an Alle

Grüße Jürgen
Synology DS720+ mit Docker-Container und Haupt-FHEM, HW-LAN, Jalousienaktoren; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd