[gelöst] Problem HM-Taster und zeitgesteuertes Schalten Structure

Begonnen von caldir65, 15 Januar 2020, 08:48:56

Vorheriges Thema - Nächstes Thema

caldir65

Moin,

ich habe ein Problem mit einer Konstruktion aus HM-Taster 2fach (HM-PB-2-WM55), welcher mittels virtuellem Taster und einem DOIF ein Licht-Structure aus mehreren UP-Schaltern ansteuert.
Zusätzlich gibt es ein weiteres DOIF, welches die gleiche Structure nach verschiedenen zeitlichen Bedingungen schaltet.

Alles funktioniert soweit auch wie gewünscht, einzig ein Problem habe ich: hat das Zeit-DOIF geschaltet, muß ich am Taster einmal "in der gleichen Richtung" schalten (also aus, wenn das DOIF aus geschaltet hat und umgekehrt), danach kann ich ganz normal Schalten - bis zur nächsten Zeitschalte.

Dieses Verhalten würde ich gerne "normalisieren", d.h. die Zeitschalte soll "gleichwertig" neben den Tastern schalten, z.B. Zeitschalte aus, danach soll ein Handbetrieb direkt auf Ein schalten können.

Hier einmal die betroffenen Geräte etc:

Taster:
Internals:
   CFGFN      /opt/fhem/etc/garten.cfg
   DEF        1F1D2D
   FUUID      5c446523-f33f-378b-8ec6-6502ecf57a9335f0
   HMLAN1_MSGCNT 36
   HMLAN1_RAWMSG E1F1D2D,0000,0CE8ADB0,FF,FFD0,64A4401F1D2D1234570222
   HMLAN1_RSSI -48
   HMLAN1_TIME 2020-01-15 05:48:16
   IODev      HMLAN1
   LASTInputDev HMLAN1
   MSGCNT     36
   NAME       Taster.Treppe_Schlafen
   NOTIFYDEV  global
   NR         381
   NTFY_ORDER 50-Taster.Treppe_Schlafen
   STATE      Taster.Treppe_Schlafen_Btn2 Short
   TYPE       CUL_HM
   channel_01 Taster.Treppe_Schlafen_Btn1
   channel_02 Taster.Treppe_Schlafen_Btn2
   lastMsg    No:64 - t:40 s:1F1D2D d:123457 0222
   protLastRcv 2020-01-15 05:48:16
   protRcv    27 last_at:2020-01-15 05:48:16
   protSnd    18 last_at:2020-01-12 16:29:49
   protState  CMDs_done
   rssi_at_HMLAN1 cnt:36 min:-52 max:-36 avg:-44.33 lst:-48
   READINGS:
     2020-01-12 16:29:20   CommandAccepted yes
     2020-01-12 16:29:46   D-firmware      1.1
     2020-01-12 16:29:46   D-serialNr      KEQ0033169
     2020-01-12 16:29:46   PairedTo        0x13D2D1
     2020-01-12 16:29:46   R-pairCentral   0x13D2D1
     2020-01-12 16:29:46   RegL_00.         00:00 02:01 0A:13 0B:D2 0C:D1
     2020-01-11 17:14:49   alive           yes
     2020-01-15 05:48:16   battery         ok
     2020-01-11 17:14:49   powerOn         2020-01-11 17:14:49
     2020-01-11 17:14:49   recentStateType info
     2020-01-15 05:48:16   state           Taster.Treppe_Schlafen_Btn2 Short
   helper:
     HM_CMDNR   100
     cSnd       0113D2D11F1D2D01041234570104,0113D2D11F1D2D02041234570204
     mId        006B
     peerFriend
     peerOpt    -:pushButton
     regLst     0
     rxType     28
     supp_Pair_Rep 0
     ack:
       Taster.Treppe_Schlafen.virt Taster.Treppe_Schlafen_Btn2:64
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     io:
       newChn     +1F1D2D,00,02,00
       nextSend   1579063696.09231
       rxt        2
       vccu       CCU
       p:
         1F1D2D
         00
         02
         00
       prefIO:
         HMLAN1
     mRssi:
       mNo        64
       io:
         HMLAN1:
           -40
           -40
     prt:
       bErr       0
       sProc      0
       sleeping   1
       try        1
       rspWait:
     q:
       qReqConf   
       qReqStat   
     regCollect:
     role:
       dev        1
     rpt:
       IO         HMLAN1
       flg        A
       ts         1579063696.00362
       ack:
         HASH(0x4e551e8)
         6480021234571F1D2D00
     rssi:
       at_HMLAN1:
         avg        -44.3333333333333
         cnt        36
         lst        -48
         max        -36
         min        -52
     shadowReg:
     tmpl:
Attributes:
   IODev      HMLAN1
   IOgrp      CCU:HMLAN1
   alias      Flur oben: Lichtschalter Schlafzimmer (HM)
   autoReadReg 0_off
   event-on-change-reading .*
   expert     2_full
   firmware   1.1
   group      Schalter
   icon       li_wht_dimmer
   model      HM-PB-2-WM55
   room       Flur
   serialNr   KEQ0033169
   sortby     05
   subType    pushButton
   webCmd     getConfig:clear msgEvents


Button1:
Internals:
   CFGFN      /opt/fhem/etc/garten.cfg
   DEF        1F1D2D01
   FUUID      5c446523-f33f-378b-c945-ec698b2f58e2b040
   NAME       Taster.Treppe_Schlafen_Btn1
   NOTIFYDEV  global
   NR         386
   NTFY_ORDER 50-Taster.Treppe_Schlafen_Btn1
   STATE      Short 1_40 (to Taster.Treppe_Schlafen.virt)
   TYPE       CUL_HM
   chanNo     01
   device     Taster.Treppe_Schlafen
   peerList   Taster.Treppe_Schlafen.virt_Btn1,
   READINGS:
     2020-01-12 15:20:11   R-Taster.Treppe_Schlafen.virt_Btn1-expectAES off
     2020-01-12 15:20:11   R-Taster.Treppe_Schlafen.virt_Btn1-peerNeedsBurst off
     2020-01-12 15:20:09   R-sign          off
     2020-01-12 16:29:47   RegL_01.         00:00 04:10 08:00 09:00
     2020-01-12 16:29:49   RegL_04.Taster.Treppe_Schlafen.virt_Btn1  00:00 01:00
     2020-01-12 16:29:47   peerList        Taster.Treppe_Schlafen.virt_Btn1,
     2020-01-12 22:30:21   state           Short 1_40 (to Taster.Treppe_Schlafen.virt)
     2020-01-12 22:30:21   trigger         Short_40
     2020-01-12 22:30:21   triggerTo_Taster.Treppe_Schlafen.virt Short_40
     2020-01-12 15:08:47   triggerTo_Taster.Treppe_Schlafen_Joschua.virt Short_26
     2020-01-12 13:07:12   triggerTo_Taster.Treppenfenster_Joschua.virt Short_12
     2020-01-12 13:01:52   triggerTo_db_SchalterDachbodenLicht Long_11
     2020-01-12 22:30:21   trigger_cnt     40
   helper:
     BNO        40
     BNOCNT     1
     peerFriend peerAct,peerVirt
     peerIDsRaw ,12345701,00000000
     peerOpt    4:pushButton
     regLst     1,4p
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     regCollect:
     role:
       chn        1
     shadowReg:
     tmpl:
Attributes:
   model      HM-PB-2-WM55
   peerIDs    00000000,12345701,


Virtueller Taster:
Internals:
   DEF        123457
   FUUID      5c65c588-f33f-378b-578d-deddc285cfea8635
   IODev      HMLAN1
   NAME       Taster.Treppe_Schlafen.virt
   NOTIFYDEV  global
   NR         1665
   NTFY_ORDER 50-Taster.Treppe_Schlafen.virt
   STATE      CMDs_done
   TYPE       CUL_HM
   channel_01 Taster.Treppe_Schlafen.virt_Btn1
   channel_02 Taster.Treppe_Schlafen.virt_Btn2
   protSnd    13 last_at:2020-01-15 05:48:16
   protState  CMDs_done
   READINGS:
     2020-01-15 05:48:16   state           CMDs_done
   helper:
     HM_CMDNR   104
     mId        FFF1
     peerFriend peerSens,peerAct
     peerOpt    -:virtual
     regLst     0
     rxType     1
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     io:
       vccu       CCU
       prefIO:
         HMLAN1
     mRssi:
       mNo       
       io:
         HMLAN1:
     prt:
       bErr       0
       sProc      0
       rspWait:
     q:
       qReqConf   
       qReqStat   
     role:
       dev        1
       vrt        1
     tmpl:
Attributes:
   IODev      HMLAN1
   IOgrp      CCU:HMLAN1
   expert     2_raw
   model      VIRTUAL
   subType    virtual
   webCmd     virtual


Button1 Virtueller Taster:
Internals:
   DEF        12345701
   FUUID      5c65c5e3-f33f-378b-32f2-06f8d4d923f2e117
   NAME       Taster.Treppe_Schlafen.virt_Btn1
   NOTIFYDEV  global
   NR         1667
   NTFY_ORDER 50-Taster.Treppe_Schlafen.virt_Btn1
   STATE      OFF
   TYPE       CUL_HM
   chanNo     01
   device     Taster.Treppe_Schlafen.virt
   peerList   Taster.Treppe_Schlafen_Btn1,2A75C901,
   READINGS:
     2020-01-12 15:58:37   peerList        Taster.Treppe_Schlafen_Btn1,2A75C901,
     2020-01-12 22:30:21   state           OFF
     2020-01-12 22:30:21   trigLast        Taster.Treppe_Schlafen_Btn1:short
     2020-01-12 22:30:21   trig_Taster.Treppe_Schlafen_Btn1 Short_40
     2019-11-24 07:27:04   trig_Taster.Treppenfenster_Joschua_Btn1 Short_112
     2020-01-12 22:30:21   virtActState    OFF
     2020-01-12 22:30:21   virtActTrigNo   40
     2020-01-12 22:30:21   virtActTrigRpt  4
     2020-01-12 22:30:21   virtActTrigType short
     2020-01-12 22:30:21   virtActTrigger  Taster.Treppe_Schlafen_Btn1
   helper:
     peerFriend peerSD,peerSens,peerAct
     peerOpt    -:virtual
     regLst     
     trgLgRpt   4
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     role:
       chn        1
       vrt        1
     tmpl:
Attributes:
   model      VIRTUAL
   peerIDs    1F1D2D01,2A75C901,
   webCmd     press short:press long


Btw. der Peer 2A75C901 ist ein alter Taster (hier Btn01), der leider wg. Totalausfall ersetzt werden mußte - ich bekomme ihn hier nur nicht weg, da ich immer den Fehler "2A75C901 not defined" bekomme - hat aber keine weiteren Auswirkungen...)

die Structure:
Internals:
   ATTR       room
   CHANGEDCNT 56
   DEF        room Shelly.Treppe.Fenster Shelly.Diele.UP
   FUUID      5c44652d-f33f-378b-717c-5724987a3a02972b
   NAME       Flur.Licht.Alle
   NR         1514
   NTFY_ORDER 50-Flur.Licht.Alle
   STATE      off
   TYPE       structure
   READINGS:
     2020-01-15 08:30:00   LastDevice      Shelly.Treppe.Fenster
     2020-01-15 08:30:00   LastDevice_Abs  Shelly.Treppe.Fenster
     2020-01-15 08:30:00   state           off
Attributes:
   alias      Flur-Lichtgruppe Alle: Fenster-Licht, Schlüsselbord
   group      Licht
   room       Flur
   verbose    3


Taster-Doif:
Internals:
   DEF        ([Taster.Treppe_Schlafen.virt_Btn1:"^trigLast:.Taster.Treppe_Schlafen_Btn1:short$"]) (
set Flur.Licht.Alle off
)
DOELSEIF ([Taster.Treppe_Schlafen.virt_Btn2:"^trigLast:.Taster.Treppe_Schlafen_Btn2:short$"]) (
set Flur.Licht.Alle on
)
   FUUID      5c65ce58-f33f-378b-2aa3-78fe593310b1b37d
   MODEL      FHEM
   NAME       Taster.Treppe_Schlafen.virt_Btn1_DOIF_1
   NOTIFYDEV  Taster.Treppe_Schlafen.virt_Btn1,global,Taster.Treppe_Schlafen.virt_Btn2
   NR         1671
   NTFY_ORDER 50-Taster.Treppe_Schlafen.virt_Btn1_DOIF_1
   STATE      cmd_2
   TYPE       DOIF
   VERSION    20929 2020-01-10 09:44:35
   READINGS:
     2020-01-15 05:48:16   Device          Taster.Treppe_Schlafen.virt_Btn2
     2020-01-15 05:48:16   cmd             2
     2020-01-15 05:48:16   cmd_event       Taster.Treppe_Schlafen.virt_Btn2
     2020-01-15 05:48:16   cmd_nr          2
     2020-01-12 22:30:21   e_Taster.Treppe_Schlafen.virt_Btn1_events OFF,trigLast: Taster.Treppe_Schlafen_Btn1:short,trig_Taster.Treppe_Schlafen_Btn1: Short_40,virtActState: OFF,virtActTrigNo: 40,virtActTrigRpt: 4,virtActTrigType: short,virtActTrigger: Taster.Treppe_Schlafen_Btn1
     2020-01-15 05:48:16   e_Taster.Treppe_Schlafen.virt_Btn2_events OFF,trigLast: Taster.Treppe_Schlafen_Btn2:short,trig_Taster.Treppe_Schlafen_Btn2: Short_34,virtActState: OFF,virtActTrigNo: 34,virtActTrigRpt: 6,virtActTrigType: short,virtActTrigger: Taster.Treppe_Schlafen_Btn2
     2020-01-12 15:04:58   mode            enabled
     2020-01-15 05:48:16   state           cmd_2
   Regex:
     accu:
     cond:
       Taster.Treppe_Schlafen.virt_Btn1:
         0:
           &STATE     ^Taster.Treppe_Schlafen.virt_Btn1$
         1:
       Taster.Treppe_Schlafen.virt_Btn2:
         0:
         1:
           &STATE     ^Taster.Treppe_Schlafen.virt_Btn2$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('Taster.Treppe_Schlafen.virt_Btn1',$hash,'^trigLast:.Taster.Treppe_Schlafen_Btn1:short$',1)
     1          ::EventDoIf('Taster.Treppe_Schlafen.virt_Btn2',$hash,'^trigLast:.Taster.Treppe_Schlafen_Btn2:short$',1)
   do:
     0:
       0            set Flur.Licht.Alle off
     1:
       0            set Flur.Licht.Alle on
     2:
   helper:
     DEVFILTER  ^global$|^Taster.Treppe_Schlafen.virt_Btn2$|^Taster.Treppe_Schlafen.virt_Btn1$
     NOTIFYDEV  global|Taster.Treppe_Schlafen.virt_Btn2|Taster.Treppe_Schlafen.virt_Btn1
     event      trigLast: Taster.Treppe_Schlafen_Btn2:short
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Taster.Treppe_Schlafen.virt_Btn2
     timerevent trigLast: Taster.Treppe_Schlafen_Btn2:short
     triggerDev Taster.Treppe_Schlafen.virt_Btn2
     timerevents:
       OFF
       trigLast: Taster.Treppe_Schlafen_Btn2:short
       trig_Taster.Treppe_Schlafen_Btn2: Short_34
       virtActState: OFF
       virtActTrigNo: 34
       virtActTrigRpt: 6
       virtActTrigType: short
       virtActTrigger: Taster.Treppe_Schlafen_Btn2
     timereventsState:
       state: OFF
       trigLast: Taster.Treppe_Schlafen_Btn2:short
       trig_Taster.Treppe_Schlafen_Btn2: Short_34
       virtActState: OFF
       virtActTrigNo: 34
       virtActTrigRpt: 6
       virtActTrigType: short
       virtActTrigger: Taster.Treppe_Schlafen_Btn2
     triggerEvents:
       OFF
       trigLast: Taster.Treppe_Schlafen_Btn2:short
       trig_Taster.Treppe_Schlafen_Btn2: Short_34
       virtActState: OFF
       virtActTrigNo: 34
       virtActTrigRpt: 6
       virtActTrigType: short
       virtActTrigger: Taster.Treppe_Schlafen_Btn2
     triggerEventsState:
       state: OFF
       trigLast: Taster.Treppe_Schlafen_Btn2:short
       trig_Taster.Treppe_Schlafen_Btn2: Short_34
       virtActState: OFF
       virtActTrigNo: 34
       virtActTrigRpt: 6
       virtActTrigType: short
       virtActTrigger: Taster.Treppe_Schlafen_Btn2
   internals:
   perlblock:
   readings:
   trigger:
     all         Taster.Treppe_Schlafen.virt_Btn1 Taster.Treppe_Schlafen.virt_Btn2
   uiState:
   uiTable:
Attributes:


Zeit-Doif:
Internals:
   DEF        ([{sunrise("REAL",-5200,"05:30","06:00")}] and !$we) (
set Flur.Licht.Alle on;
set Shelly.GaesteWC.Fenster on
)
DOELSEIF ([8:30] and !$we) (
set Flur.Licht.Alle off;
set Shelly.GaesteWC.Fenster off
)
DOELSEIF ([{sunrise("REAL",0,"07:30","08:30")}] and $we) (
set Flur.Licht.Alle on;
set Shelly.GaesteWC.Fenster on
)
DOELSEIF ([9:00] and $we) (
set Flur.Licht.Alle off;
set Shelly.GaesteWC.Fenster off
)
DOELSEIF ([{sunset("REAL",-3600,"15:30","21:30")}]) (
set Flur.Licht.Alle on;
set Shelly.GaesteWC.Fenster on
)
DOELSEIF ([22:30]) (
set Flur.Licht.Alle off;
set Shelly.GaesteWC.Fenster off
)

   FUUID      5c446523-f33f-378b-497a-5f57dd6fc6ecc70d
   MODEL      FHEM
   NAME       Flur.Licht.Alle.On_doif
   NOTIFYDEV  global
   NR         1429
   NTFY_ORDER 50-Flur.Licht.Alle.On_doif
   STATE      cmd_2
   TYPE       DOIF
   VERSION    20929 2020-01-10 09:44:35
   READINGS:
     2020-01-15 08:30:00   cmd             2
     2020-01-15 08:30:00   cmd_event       timer_2
     2020-01-15 08:30:00   cmd_nr          2
     2019-12-05 11:14:41   mode            enabled
     2020-01-15 08:30:00   state           cmd_2
     2020-01-15 06:00:00   timer_01_c01    16.01.2020 06:00:00
     2020-01-15 08:30:00   timer_02_c02    16.01.2020 08:30:00
     2020-01-15 08:30:00   timer_03_c03    16.01.2020 08:30:00
     2020-01-14 09:00:00   timer_04_c04    15.01.2020 09:00:00
     2020-01-14 15:35:31   timer_05_c05    15.01.2020 15:37:07
     2020-01-14 22:30:00   timer_06_c06    15.01.2020 22:30:00
   Regex:
     accu:
   attr:
     cmdState:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday) and !$we
     1          ::DOIF_time_once($hash,1,$wday) and !$we
     2          ::DOIF_time_once($hash,2,$wday) and $we
     3          ::DOIF_time_once($hash,3,$wday) and $we
     4          ::DOIF_time_once($hash,4,$wday)
     5          ::DOIF_time_once($hash,5,$wday)
   days:
   do:
     0:
       0            set Flur.Licht.Alle on; set Shelly.GaesteWC.Fenster on
     1:
       0            set Flur.Licht.Alle off; set Shelly.GaesteWC.Fenster off
     2:
       0            set Flur.Licht.Alle on; set Shelly.GaesteWC.Fenster on
     3:
       0            set Flur.Licht.Alle off; set Shelly.GaesteWC.Fenster off
     4:
       0            set Flur.Licht.Alle on; set Shelly.GaesteWC.Fenster on
     5:
       0            set Flur.Licht.Alle off; set Shelly.GaesteWC.Fenster off
     6:
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     event      timer_2
     globalinit 1
     last_timer 6
     sleeptimer -1
     timerdev   
     timerevent timer_2
     triggerDev
     DOIF_eventa:
       cmd_nr: 2
       cmd: 2
       cmd_event: timer_2
       cmd_2
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: timer_2
       state: cmd_2
     timerevents:
       timer_2
     timereventsState:
       timer_2
     triggerEvents:
       timer_2
     triggerEventsState:
       timer_2
   interval:
   intervalfunc:
   localtime:
     0          1579150800
     1          1579159800
     2          1579159800
     3          1579075200
     4          1579099027
     5          1579123800
   perlblock:
   realtime:
     0          06:00:00
     1          08:30:00
     2          08:30:00
     3          09:00:00
     4          15:37:07
     5          22:30:00
   time:
     0          {sunrise("REAL",-5200,"05:30","06:00")}
     1          8:30
     2          {sunrise("REAL",0,"07:30","08:30")}
     3          9:00
     4          {sunset("REAL",-3600,"15:30","21:30")}
     5          22:30:00
   timeCond:
     0          0
     1          1
     2          2
     3          3
     4          4
     5          5
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
   timers:
     0           0
     1           1
     2           2
     3           3
     4           4
     5           5
   triggertime:
     1579075200:
       localtime  1579075200
       hash:
     1579099027:
       localtime  1579099027
       hash:
     1579123800:
       localtime  1579123800
       hash:
     1579150800:
       localtime  1579150800
       hash:
     1579159800:
       localtime  1579159800
       hash:
   uiState:
   uiTable:
Attributes:
   alias      Flur- und Treppenlicht und GWC: Zeitgesteuerte Schalten abhängig von Wochenende und Dämmerungszeiten
   comment    Schalte das Flurlicht (Treppe und Schluesselbord) in Abhaengigkeit von WE sowie der Daemmerung an:
- kein Urlaub, kein WE: zw. 6:00 und 7:30, bis 8:30
- Urlaub oder WE: zw. 7:30 und 8:30, bis 9:00
- zw. 16:00 und 21:30 abhängig von Dämmerung
- 22:30 aus
   do         always
   group      at
   room       System->Logiken
   verbose    3


Hat jemand eine Idee, was ich evtl. falsch mache bzw. besser machen könnte?
Danke.

Gruß, Christoph

PS: Da es weder ein HM- noch direkt ein DOIF-Problem ist, habe ich es erstmal hier einsortiert - wenn es in einem anderen Bereich besser aufgehoben ist, bitte schieben. Danke
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

caldir65

Hallo,

das scheint es geween zu sein, danke.Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 128GB SSD, Lubuntu 24.04.01LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.