[cul_hm] im wakeup mode immer doppelter statusrequest beim thermostat

Begonnen von frank, 12 Januar 2022, 10:56:16

Vorheriges Thema - Nächstes Thema

frank

bei meinen thermostaten (hm-cc-tc) werden immer 2 statusrequest gesendet, wenn sie im wakeup mode arbeiten.
auffällig ist, dass genau 20s nach dem manuellen ausführen des cmd erneut das io präpariert wird.

sniff mit register burstRx=off und attr burstAccess ist gelöscht:
2022.01.11 17:23:50.427 3 : CUL_HM set Thermostat.OZ_Climate statusRequest noArg
2022.01.11 17:23:50.576 0 : HMLAN_Send:  hmlan1 I:+20DFE1,02,00,00

2022.01.11 17:24:10.581 0 : HMLAN_Send:  hmlan1 I:+20DFE1,02,00,00

2022.01.11 17:25:37.778 4 : CUL_Parse: cul868 A 0C 5B 8670 20DFE1 000000 00C53514 -64
2022.01.11 17:25:37.780 5 : cul868: dispatch A0C5B867020DFE100000000C535::-64:cul868
2022.01.11 17:25:37.784 3 : CUL_HM set Thermostat.OZ_Climate statusRequest noArg
2022.01.11 17:25:37.802 3 : n_iodev return value: HASH(0x7f49150)
2022.01.11 17:25:37.880 0 : HMLAN_Send:  hmlan1 S:S49F5949B stat:  00 t:00000000 d:01 r:49F5949B m:5C A001 1ACE1F 20DFE1 020E
2022.01.11 17:25:37.926 0 : HMLAN_Parse: hmlan1 R:E20DFE1   stat:0000 t:56253369 d:FF r:FFCD     m:5B 8670 20DFE1 000000 00C535
2022.01.11 17:25:37.965 4 : CUL_Parse: cul868 A 09 5B A112 1ACE1F 20DFE1 37 -46.5
2022.01.11 17:25:37.966 5 : cul868: dispatch A095BA1121ACE1F20DFE1::-46.5:cul868
2022.01.11 17:25:37.971 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 3E msg: 5B 86 70 20DFE1 000000 00C535
2022.01.11 17:25:37.975 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 26 msg: 5B A1 12 1ACE1F 20DFE1
2022.01.11 17:25:38.027 4 : CUL_Parse: cul868 A 0A 5B 8002 20DFE1 1ACE1F 0014 -64
2022.01.11 17:25:38.028 5 : cul868: dispatch A0A5B800220DFE11ACE1F00::-64:cul868
2022.01.11 17:25:38.035 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 3E msg: 5B 80 02 20DFE1 1ACE1F 00
2022.01.11 17:25:38.302 4 : CUL_Parse: cul868 A 0B 5C A001 1ACE1F 20DFE1 020E36 -47
2022.01.11 17:25:38.304 5 : cul868: dispatch A0B5CA0011ACE1F20DFE1020E::-47:cul868
2022.01.11 17:25:38.309 0 : HMLAN_Parse: hmlan1 R:R49F56A8C stat:0081 t:56253468 d:FF r:FFCD     m:5B 8002 20DFE1 1ACE1F 00
2022.01.11 17:25:38.313 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 27 msg: 5C A0 01 1ACE1F 20DFE1 020E
2022.01.11 17:25:38.431 4 : CUL_Parse: cul868 A 0E 5C 8002 20DFE1 1ACE1F 01020C003914 -64
2022.01.11 17:25:38.432 5 : cul868: dispatch A0E5C800220DFE11ACE1F01020C0039::-64:cul868
2022.01.11 17:25:38.533 0 : HMLAN_Send:  hmlan1 S:S49F59703 stat:  00 t:00000000 d:01 r:49F59703 m:5D A001 1ACE1F 20DFE1 020E
2022.01.11 17:25:38.571 0 : HMLAN_Parse: hmlan1 R:R49F5949B stat:0001 t:562535FC d:FF r:FFCD     m:5C 8002 20DFE1 1ACE1F 01020C0039
2022.01.11 17:25:38.576 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 3E msg: 5C 80 02 20DFE1 1ACE1F 01020C0039
2022.01.11 17:25:38.703 4 : CUL_Parse: cul868 A 0B 5D A001 1ACE1F 20DFE1 020E37 -46.5
2022.01.11 17:25:38.705 5 : cul868: dispatch A0B5DA0011ACE1F20DFE1020E::-46.5:cul868
2022.01.11 17:25:38.711 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 26 msg: 5D A0 01 1ACE1F 20DFE1 020E
2022.01.11 17:25:38.833 4 : CUL_Parse: cul868 A 0E 5D 8002 20DFE1 1ACE1F 01020C003814 -64
2022.01.11 17:25:38.835 5 : cul868: dispatch A0E5D800220DFE11ACE1F01020C0038::-64:cul868
2022.01.11 17:25:38.840 0 : HMLAN_Send:  hmlan1 I:+20DFE1,00,00,00
2022.01.11 17:25:38.877 0 : HMLAN_Parse: hmlan1 R:R49F59703 stat:0001 t:5625378F d:FF r:FFCD     m:5D 8002 20DFE1 1ACE1F 01020C0038
2022.01.11 17:25:38.882 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 3E msg: 5D 80 02 20DFE1 1ACE1F 01020C0038


sniff mit burstRx=on und burstAccess=1_auto wird nur ein request gesendet:
2022.01.11 18:23:52.778 3 : CUL_HM set Thermostat.OZ_Climate statusRequest noArg
2022.01.11 18:23:52.827 0 : HMLAN_Send:  hmlan1 I:+20DFE1,02,00,00
2022.01.11 18:23:52.841 3 : n_iodev return value: HASH(0x7f48608)
2022.01.11 18:23:52.855 0 : HMLAN_Send:  hmlan1 S:S4A2AE914 stat:  00 t:00000000 d:01 r:4A2AE914 m:73 B112 1ACE1F 20DFE1
2022.01.11 18:23:53.234 4 : CUL_Parse: cul868 A 09 73 B112 1ACE1F 20DFE1 36 -47
2022.01.11 18:23:53.237 5 : cul868: dispatch A0973B1121ACE1F20DFE1::-47:cul868
2022.01.11 18:23:53.247 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 27 msg: 73 B1 12 1ACE1F 20DFE1
2022.01.11 18:23:53.372 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 3F msg: 73 80 02 20DFE1 1ACE1F 00
2022.01.11 18:23:53.414 0 : HMLAN_Parse: hmlan1 R:R4A2AE914 stat:0001 t:565A8BA6 d:FF r:FFCD     m:73 8002 20DFE1 1ACE1F 00
2022.01.11 18:23:53.464 3 : n_iodev return value: HASH(0x7d2db48)
2022.01.11 18:23:53.478 0 : HMLAN_Send:  hmlan1 S:S4A2AEB83 stat:  00 t:00000000 d:01 r:4A2AEB83 m:74 A001 1ACE1F 20DFE1 020E
2022.01.11 18:23:53.514 4 : CUL_Parse: cul868 A 0A 73 8002 20DFE1 1ACE1F 0013 -64.5
2022.01.11 18:23:53.516 5 : cul868: dispatch A0A73800220DFE11ACE1F00::-64.5:cul868
2022.01.11 18:23:53.635 4 : CUL_Parse: cul868 A 0B 74 A001 1ACE1F 20DFE1 020E36 -47
2022.01.11 18:23:53.636 5 : cul868: dispatch A0B74A0011ACE1F20DFE1020E::-47:cul868
2022.01.11 18:23:53.641 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 27 msg: 74 A0 01 1ACE1F 20DFE1 020E
2022.01.11 18:23:53.765 4 : CUL_Parse: cul868 A 0E 74 8002 20DFE1 1ACE1F 01020C003813 -64.5
2022.01.11 18:23:53.766 5 : cul868: dispatch A0E74800220DFE11ACE1F01020C0038::-64.5:cul868
2022.01.11 18:23:53.771 0 : HMLAN_Send:  hmlan1 I:+20DFE1,00,00,00
2022.01.11 18:23:53.895 0 : HMUARTLGW hmuart1 recv: 01 05 00 00 40 msg: 74 80 02 20DFE1 1ACE1F 01020C0038
2022.01.11 18:23:53.899 0 : HMLAN_Parse: hmlan1 R:R4A2AEB83 stat:0001 t:565A8D39 d:FF r:FFCD     m:74 8002 20DFE1 1ACE1F 01020C0038


list device nach absetzen von statusrequest:
Internals:
   .AttrList  .devInfo .mId .stc IODev IOgrp actCycle actStatus aesCommReq:1,0 aesKey:5,4,3,2,1,0 autoReadReg:0_off,1_restart,2_pon-restart,3_onChange,4_reqStatus,5_readMissing,8_stateOnly burstAccess:0_off,1_auto commStInCh:on,off do_not_notify:1,0 dummy:1,0 event-aggregator event-min-interval event-on-change-reading event-on-update-reading expert:multiple,defReg,allReg,rawReg,templ,none firmware hmKey hmKey2 hmKey3 hmProtocolEvents:0_off,1_dump,2_dumpFull,3_dumpTrigger ignore:1,0 model modelForce:ACTIONDETECTOR,ACTIONDETECTOR,ASH550,ASH550I,CCU-FHEM,CMM,DORMA_ATENT,DORMA_BRC-H,DORMA_RC-H,HM-CC-RT-DN,HM-CC-RT-DN-BOM,HM-CC-SCD,HM-CC-TC,HM-CC-VD,HM-DIS-EP-WM55,HM-DIS-TD-T,HM-DIS-WM55,HM-DW-WM,HM-ES-PMSW1-DR,HM-ES-PMSW1-PL,HM-ES-PMSW1-PL-DN-R1,HM-ES-PMSW1-PL-DN-R2,HM-ES-PMSW1-PL-DN-R3,HM-ES-PMSW1-PL-DN-R4,HM-ES-PMSW1-PL-DN-R5,HM-ES-PMSW1-SM,HM-ES-TX-WM,HM-HM-LC-DW-WM,HM-LC-AO-SM,HM-LC-BL1-FM,HM-LC-BL1-FM-2,HM-LC-BL1-PB-FM,HM-LC-BL1-SM,HM-LC-BL1-SM-2,HM-LC-BL1PBU-FM,HM-LC-DDC1-PCB,HM-LC-DIM1L-CV,HM-LC-DIM1L-CV-2,HM-LC-DIM1L-CV-644,HM-LC-DIM1L-PL,HM-LC-DIM1L-PL-2,HM-LC-DIM1L-PL-3,HM-LC-DIM1L-PL-644,HM-LC-DIM1PWM-CV,HM-LC-DIM1PWM-CV-2,HM-LC-DIM1T-CV,HM-LC-DIM1T-CV-2,HM-LC-DIM1T-CV-644,HM-LC-DIM1T-DR,HM-LC-DIM1T-FM,HM-LC-DIM1T-FM-2,HM-LC-DIM1T-FM-644,HM-LC-DIM1T-FM-LF,HM-LC-DIM1T-PL,HM-LC-DIM1T-PL-2,HM-LC-DIM1T-PL-3,HM-LC-DIM1T-PL-644,HM-LC-DIM1TPBU-FM,HM-LC-DIM1TPBU-FM-2,HM-LC-DIM2L-CV,HM-LC-DIM2L-SM,HM-LC-DIM2L-SM-2,HM-LC-DIM2L-SM-644,HM-LC-DIM2T-SM,HM-LC-DIM2T-SM,HM-LC-DIM2T-SM-2,HM-LC-JA1PBU-FM,HM-LC-RGBW-WM,HM-LC-SW1-BA-PCB,HM-LC-SW1-DR,HM-LC-SW1-FM,HM-LC-SW1-FM-2,HM-LC-SW1-PB-FM,HM-LC-SW1-PCB,HM-LC-SW1-PL,HM-LC-SW1-PL-3,HM-LC-SW1-PL-CT-R1,HM-LC-SW1-PL-CT-R2,HM-LC-SW1-PL-CT-R3,HM-LC-SW1-PL-CT-R4,HM-LC-SW1-PL-CT-R5,HM-LC-SW1-PL-DN-R1,HM-LC-SW1-PL-DN-R2,HM-LC-SW1-PL-DN-R3,HM-LC-SW1-PL-DN-R4,HM-LC-SW1-PL-DN-R5,HM-LC-SW1-PL-OM54,HM-LC-SW1-PL2,HM-LC-SW1-SM,HM-LC-SW1-SM-2,HM-LC-SW1-SM-ATMEGA168,HM-LC-SW1PBU-FM,HM-LC-SW2-DR,HM-LC-SW2-DR-2,HM-LC-SW2-FM,HM-LC-SW2-FM-2,HM-LC-SW2-PB-FM,HM-LC-SW2-SM,HM-LC-SW2PBU-FM,HM-LC-SW4-BA-PCB,HM-LC-SW4-DR,HM-LC-SW4-DR-2,HM-LC-SW4-PCB,HM-LC-SW4-PCB-2,HM-LC-SW4-SM,HM-LC-SW4-SM-2,HM-LC-SW4-SM-ATMEGA168,HM-LC-SW4-WM,HM-LC-SW4-WM-2,HM-MOD-EM-8,HM-MOD-EM-8BIT,HM-MOD-RE-8,HM-OU-CF-PL,HM-OU-CFM-PL,HM-OU-CFM-TW,HM-OU-CM-PCB,HM-OU-LED16,HM-PB-2-FM,HM-PB-2-WM,HM-PB-2-WM55,HM-PB-2-WM55-2,HM-PB-4-WM,HM-PB-4DIS-WM,HM-PB-4DIS-WM-2,HM-PB-6-WM55,HM-PBI-4-FM,HM-RC-12,HM-RC-12-B,HM-RC-12-SW,HM-RC-19,HM-RC-19-B,HM-RC-19-SW,HM-RC-2-PBU-FM,HM-RC-2-PBU-FM-2,HM-RC-4,HM-RC-4-2,HM-RC-4-3,HM-RC-4-3-D,HM-RC-4-B,HM-RC-8,HM-RC-DIS-H-X-EU,HM-RC-KEY3,HM-RC-KEY3-B,HM-RC-KEY4-2,HM-RC-KEY4-3,HM-RC-P1,HM-RC-SEC3,HM-RC-SEC3-B,HM-RC-SEC4-2,HM-RC-SEC4-3,HM-SCI-3-FM,HM-SEC-CEN,HM-SEC-KEY,HM-SEC-KEY-O,HM-SEC-KEY-S,HM-SEC-MDIR,HM-SEC-MDIR-2,HM-SEC-MDIR-3,HM-SEC-RHS,HM-SEC-RHS-2,HM-SEC-SC,HM-SEC-SC-2,HM-SEC-SCO,HM-SEC-SD,HM-SEC-SD-2,HM-SEC-SFA-SM,HM-SEC-SIR-WM,HM-SEC-TIS,HM-SEC-WDS,HM-SEC-WDS-2,HM-SEC-WIN,HM-SEN-DB-PCB,HM-SEN-EP,HM-SEN-LI-O,HM-SEN-MDIR-O,HM-SEN-MDIR-O-2,HM-SEN-MDIR-O-3,HM-SEN-MDIR-SM,HM-SEN-MDIR-WM55,HM-SEN-RD-O,HM-SEN-WA-OD,HM-SWI-3-FM,HM-SYS-SRP-PL,HM-TC-IT-WM-W-EU,HM-WDC7000,HM-WDS10-TH-O,HM-WDS100-C6-O,HM-WDS100-C6-O-2,HM-WDS20-TH-O,HM-WDS30-OT2-SM,HM-WDS30-OT2-SM-2,HM-WDS30-T-O,HM-WDS40-TH-I,HM-WDS40-TH-I-2,HM-WS550,HM-WS550LCB,HM-WS550LCW,HM-WS550TECH,IS-WDS-TH-OD-S-R3,KFM-DISPLAY,KFM-SENSOR,KS550,KS550LC,KS550TECH,KS888,OLIGO-SMART-IQ-HM,PS-SWITCH,PS-TH-SENS,ROTO_ZEL-STG-RM-DWT-10,ROTO_ZEL-STG-RM-FDK,ROTO_ZEL-STG-RM-FEP-230V,ROTO_ZEL-STG-RM-FFK,ROTO_ZEL-STG-RM-FSA,ROTO_ZEL-STG-RM-FSS-UP3,ROTO_ZEL-STG-RM-FST-UP4,ROTO_ZEL-STG-RM-FWT,ROTO_ZEL-STG-RM-FZS,ROTO_ZEL-STG-RM-FZS-2,ROTO_ZEL-STG-RM-HS-4,ROTO_ZEL-STG-RM-WT-2,S550IA,SCHUECO_263-130,SCHUECO_263-131,SCHUECO_263-132,SCHUECO_263-133,SCHUECO_263-134,SCHUECO_263-135,SCHUECO_263-144,SCHUECO_263-145,SCHUECO_263-146,SCHUECO_263-147,SCHUECO_263-155,SCHUECO_263-157,SCHUECO_263-158,SCHUECO_263-160,SCHUECO_263-162,SCHUECO_263-167,SCHUECO_263-XXX,SENSOTIMER-ST-6,VIRTUAL,WDF-SOLAR,WS888 msgRepeat oldreadings param readOnly:0,1 readingOnDead:multiple,noChange,state,periodValues,periodString,channels rssiLog:1,0 serialNr showtime:1,0 stateFormat:textField-long subType:AlarmControl,KFM100,THSensor,blindActuator,blindActuatorSol,dimmer,display,keyMatic,motionAndBtn,motionDetector,no,outputUnit,powerMeter,powerSensor,pushButton,remote,repeater,rgb,senBright,sensRain,sensor,singleButton,siren,smokeDetector,swi,switch,thermostat,threeStateSensor,timer,tipTronic,virtual,winMatic timestamp-on-change-reading
   .triggerUsed 1
   DEF        20DFE1
   FUUID      5c4ce2e8-f33f-09c4-04f3-beb05c80b7c6df87
   IODev      hmlan1
   LASTInputDev hmlan1
   MSGCNT     2161
   NAME       Thermostat.OZ
   NR         193
   NTFY_ORDER 48-Thermostat.OZ
   STATE      Tsoll:6.0°C, Tist:18.4°C, Hist:57%, Mode:central, Bat:ok, Ventil:actuator
   TYPE       CUL_HM
   channel_01 Thermostat.OZ_Weather
   channel_02 Thermostat.OZ_Climate
   channel_03 Thermostat.OZ_WindowRec
   cul868_MSGCNT 721
   cul868_RAWMSG A0C3E867020DFE100000000B839::-65:cul868
   cul868_RSSI -65
   cul868_TIME 2022-01-12 13:48:05
   disableNotifyFn 1
   hmlan1_MSGCNT 723
   hmlan1_RAWMSG E20DFE1,0000,5A8486FC,FF,FFCE,3E867020DFE100000000B839
   hmlan1_RSSI -50
   hmlan1_TIME 2022-01-12 13:48:05
   hmuart1_MSGCNT 717
   hmuart1_RAWMSG 050000403E867020DFE100000000B839
   hmuart1_RSSI -64
   hmuart1_TIME 2022-01-12 13:48:05
   lastMsg    No:3E - t:70 s:20DFE1 d:000000 00B839
   protCmdPend 1 CMDs_pending
   protCondBurst forced_off
   protLastRcv 2022-01-12 13:48:05
   protRcv    729 last_at:2022-01-12 13:48:05
   protSnd    46 last_at:2022-01-12 00:01:50
   protSndB   5 last_at:2022-01-11 18:29:04
   protState  CMDs_pending
   rssi_at_cul868 cnt:721 min:-70 max:-60 avg:-63.98 lst:-65
   rssi_at_hmlan1 cnt:723 min:-54 max:-49 avg:-51.43 lst:-50
   rssi_at_hmuart1 cnt:717 min:-70 max:-60 avg:-62.94 lst:-64
   rssi_hmlan1 cnt:10 min:-57 max:-56 avg:-56.2 lst:-56
   rssi_hmuart1 cnt:6 min:-72 max:-70 avg:-71.16 lst:-70
   .attraggr:
   .attreocr:
     .*
   .attreour:
     time-request
   .attrminint:
   .attrtocr:
     .*
   .userReadings:
     HASH(0x398c058)
   CL:
     Authenticated 0
     BUF       
     FD         86
     FW_ID      20122
     LASTACCESS 1641991745
     NAME       WEB_192.168.1.31_49504
     NR         20125
     PEER       192.168.1.31
     PORT       49504
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     .attraggr:
     .attrminint:
     READINGS:
       2022-01-12 13:45:52   state           Connected
   READINGS:
     1900-01-01 00:00:01   .D-devInfo      00FFFF
     1900-01-01 00:00:01   .D-stc          58
     2022-01-11 12:44:31   .associatedWith Thermostat.OZ,Thermostat.OZ_Climate,Thermostat.OZ_Weather,Thermostat.OZ_WindowRec,Thermostat.OZ
     2022-01-12 13:48:05   .protLastRcv    20220112134805
     2021-10-31 02:11:52   Activity        alive
     2021-05-13 16:20:32   CommandAccepted yes
     from archivexx        D-firmware      2.1
     from archivexx        D-serialNr      KEQ0176062
     2022-01-12 00:01:50   IODev           hmlan1
     2021-05-13 16:20:33   PairedTo        0x1ACE1F
     2022-01-11 12:44:32   R-backlOnMode   off
     2022-01-11 12:44:32   R-backlOnTime   0
     2022-01-11 12:44:32   R-btnLock       off
     2022-01-11 18:31:52   R-burstRx       off
     2022-01-11 12:44:32   R-pairCentral   0x1ACE1F
     2022-01-11 18:31:52   RegL_00.         00:00 01:00 02:01 05:00 0A:1A 0B:CE 0C:1F 0F:00
     2021-05-13 16:20:33   battery         ok
     2022-01-11 18:33:00   cfgState        ok
     2022-01-12 13:48:54   commState       CMDs_pending
     2021-11-30 18:48:26   controlMode     central
     2021-10-01 18:23:20   day-temp        21 C
     2021-11-30 18:48:26   decalcDay       Sat
     2021-05-13 16:20:33   desired-temp    6.0
     2021-11-30 18:48:26   displayMode     temp-hum
     2021-11-30 18:48:28   displayTemp     actual
     2021-11-30 18:48:26   displayTempUnit celsius
     2022-01-12 13:28:31   humidity        57
     2022-01-12 13:38:05   humidityAbsolut 9.0
     2022-01-12 13:38:05   humidityAbsolutTrend ↗→
     2022-01-12 13:38:05   measured-temp   18.4
     2021-10-01 18:23:20   night-temp      17 C
     2021-11-30 18:22:16   party-temp      17 C
     2022-01-12 13:48:54   state           CMDs_pending
     2022-01-12 00:01:50   time-request    -
     -                     tmpl_0          tc1:a:off b:0 c:off d:off,
   cmdStack:
     ++A0011ACE1F20DFE1020E
   helper:
     HM_CMDNR   62
     cSnd       011ACE1F20DFE1020E,011ACE1F20DFE1020E
     cfgStateUpdt 0
     lastMsgTm  1641991685.43574
     mId        0039
     peerFriend -
     peerOpt    -:thermostat
     regLst     0
     rxType     140
     supp_Pair_Rep 0
     tmplChg    0
     ack:
     cmds:
       TmplKey    :1641901472.20539:1641901472.60471
       TmplTs     1641901472.60471
       cmdKey     0:1:0::Thermostat.OZ:0039:00:
       cmdLst:
         assignHmKey noArg
         burstXmit  noArg
         clear      [({msgErrors}|msgEvents|rssi|attack|trigger|register|oldRegs|readings|all)]
         desired-temp (on|off|6.0..30.0;0.5)
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sysTime    noArg
         tplDel     -tplDel-
         tplPara000_0_tc1_a off,auto:-value-
         tplPara001_0_tc1_b 10,25,5,20,0,15:-value-
         tplPara002_0_tc1_c off,on:-value-
         tplPara003_0_tc1_d on,off:-value-
         tplSet_0   -tplChan-
         unpair     noArg
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt   
         tplChan    TC_00_sensor,tc1
         tplDel     0>tc1
         tplPeer   
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        1
       det        1
       raw        1
       tpl        1
     io:
       flgs       2
       newChn     +20DFE1,02,00,00
       nextSend   1641991685.53245
       rxt        2
       vccu       ccu
       p:
         20DFE1
         00
         00
         00
       prefIO:
         hmlan1
         hmuart1
     mRssi:
       mNo        3E
       io:
         cul868:
           -65
           -65
         hmlan1:
           -44
           -44
         hmuart1:
           -64
           -64
     peerIDsH:
     prt:
       awake      0
       bErr       0
       brstWu     0
       sProc      2
       try        1
       rspWait:
       tryMsg:
     q:
       qReqConf   
       qReqStat   
     regCollect:
     role:
       dev        1
     rssi:
       at_cul868:
         avg        -63.9868238557559
         cnt        721
         lst        -65
         max        -60
         min        -70
       at_hmlan1:
         avg        -51.4384508990318
         cnt        723
         lst        -50
         max        -49
         min        -54
       at_hmuart1:
         avg        -62.9483960948396
         cnt        717
         lst        -64
         max        -60
         min        -70
       hmlan1:
         avg        -56.2
         cnt        10
         lst        -56
         max        -56
         min        -57
       hmuart1:
         avg        -71.1666666666667
         cnt        6
         lst        -70
         max        -70
         min        -72
     shadowReg:
     tmpl:
       0>tc1      off 0 off off
   hmccu:
Attributes:
   .mId       0039
   IOgrp      ccu:hmlan1,hmuart1
   actCycle   000:10
   actStatus  alive
   alias      10. Thermostat
   autoReadReg 5_readMissing
   burstAccess 0_off
   commStInCh off
   event-on-change-reading .*
   event-on-update-reading time-request
   expert     defReg,allReg,rawReg,templ
   firmware   2.1
   forceEvents 1
   group      Heizung.OZ
   model      HM-CC-TC
   room       00_heating_test,15_OZ
   rssiLog    1
   serialNr   KEQ0176062
   sortby     50
   stateFormat Tsoll:desired-temp°C, Tist:measured-temp°C, Hist:humidity%, Mode:controlMode, Bat:battery, Ventil:actuator
   subType    thermostat
   timestamp-on-change-reading .*
   userReadings humidityAbsolut:(measured-temp|humidity).* {AbsoluteFeuchte(ReadingsVal($name,"measured-temp",0),ReadingsVal($name,"humidity",0))}
   webCmd     getConfig:statusRequest


list climate channel nach absetzen von statusrequest:
Internals:
   .AttrList  aesCommReq:1,0 do_not_notify:1,0 event-aggregator event-min-interval event-on-change-reading event-on-update-reading expert:multiple,defReg,allReg,rawReg,templ,none levelMap levelRange model oldreadings param peerIDs readOnly:0,1 showtime:1,0 stateFormat:textField-long tempListTmpl timestamp-on-change-reading
   .triggerUsed 0
   DEF        20DFE102
   FUUID      5c4ce2e8-f33f-09c4-88d9-5339769e9460127c
   NAME       Thermostat.OZ_Climate
   NR         197
   NTFY_ORDER 48-Thermostat.OZ_Climate
   STATE      - tmpl_0 TC_02_sensor,
   TYPE       CUL_HM
   chanNo     02
   device     Thermostat.OZ
   disableNotifyFn 1
   .attraggr:
   .attreocr:
     .*
   .attrminint:
   CL:
     Authenticated 0
     BUF       
     FD         86
     FW_ID      20138
     LASTACCESS 1641991753
     NAME       WEB_192.168.1.31_49504
     NR         20125
     PEER       192.168.1.31
     PORT       49504
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     .attraggr:
     .attrminint:
     READINGS:
       2022-01-12 13:45:52   state           Connected
   READINGS:
     2022-01-11 18:31:53   .associatedWith Thermostat.OZ,Thermostat.OZ_Climate,Thermostat.OZ_Weather,Thermostat.OZ_WindowRec,Thermostat.OZ
     2022-01-11 18:31:53   .peerListRDate  2022-01-11 18:31:53
     2022-01-11 19:21:51   CommandAccepted yes
     2021-11-30 18:48:26   R-controlMode   central
     2021-10-04 17:56:36   R-day-temp      21 C
     2021-10-04 17:56:36   R-decalHr       11 h
     2021-10-04 17:56:36   R-decalMin      0 min
     2021-11-30 18:48:26   R-decalcDay     Sat
     2021-11-30 18:48:26   R-displayMode   temp-hum
     2021-11-30 18:48:26   R-displayTemp   actual
     2021-11-30 18:48:26   R-displayTempUnit celsius
     2021-10-04 17:56:36   R-mdTempValve   auto
     2021-10-04 17:56:36   R-night-temp    17 C
     2021-11-30 18:22:16   R-party-temp    17 C
     2021-11-30 18:20:44   R-partyEndDay   0 d
     2021-11-30 18:20:44   R-partyEndHr    18 h
     2021-11-30 18:20:44   R-partyEndMin   30 min
     2022-01-11 18:31:59   R_0_tempListSat  06:00 17.0 12:00 21.0 23:00 21.0 24:00 17.0
     2022-01-11 18:31:59   R_1_tempListSun  06:00 17.0 12:00 21.0 23:00 21.0 24:00 17.0
     2022-01-11 18:31:59   R_2_tempListMon  24:00 17.0
     2022-01-11 18:31:59   R_3_tempListTue  06:00 17.0 12:00 21.0 23:00 21.0 24:00 17.0
     2022-01-11 18:31:59   R_4_tempListWed  06:00 17.0 12:00 21.0 23:00 21.0 24:00 17.0
     2022-01-11 18:31:59   R_5_tempListThu  06:00 17.0 12:00 21.0 23:00 21.0 24:00 17.0
     2022-01-11 18:31:59   R_6_tempListFri  06:00 17.0 12:00 21.0 23:00 21.0 24:00 17.0
     2022-01-11 18:31:59   R_tempList_State verified
     2022-01-11 18:31:57   RegL_05.         00:00 01:11 02:0C 03:2A 04:22 05:18 06:22 07:00 08:58 09:00 0A:00 0B:24 0C:22 0D:48 0E:2A 0F:8A 10:2A 11:90 12:22 13:90 14:28 15:90 16:28 17:90 18:28 19:90 1A:28 1B:90 1C:28 1D:90 1E:28 1F:90 20:28 21:90 22:28 23:90 24:28 25:90 26:28 27:90 28:28 29:90 2A:28 2B:90 2C:28 2D:90 2E:28 2F:90 30:28 31:90 32:28 33:90 34:28 35:90 36:28 37:90 38:28 39:90 3A:28 3B:24 3C:22 3D:48 3E:2A 3F:8A 40:2A 41:90 42:22 43:90 44:28 45:90 46:28 47:90 48:28 49:90 4A:28 4B:90 4C:28 4D:90 4E:28 4F:90 50:28 51:90 52:28 53:90 54:28 55:90 56:28 57:90 58:28 59:90 5A:28 5B:90 5C:28 5D:90 5E:28 5F:90 60:28 61:90 62:28 63:90 64:28 65:90 66:28 67:90 68:28 69:90 6A:28 6B:90 6C:22 6D:48 6E:2A 6F:8A 70:2A 71:90 72:22 73:90 74:28 75:90 76:28 77:90 78:28 79:90 7A:28 7B:90 7C:28 7D:90 7E:28 7F:90 80:28 81:90 82:28 83:90 84:28 85:90 86:28 87:90 88:28 89:90 8A:28 8B:90 8C:28 8D:90 8E:28 8F:90 90:28 91:90 92:28 93:90 94:28 95:90 96:28 97:90 98:28 99:90 9A:28 9B:24 9C:22 9D:48 9E:2A 9F:8A A0:2A A1:90 A2:22 A3:90 A4:28 A5:90 A6:28 A7:90 A8:28 A9:90 AA:28 AB:90 AC:28 AD:90 AE:28 AF:90 B0:28 B1:90 B2:28 B3:90 B4:28 B5:90 B6:28 B7:90 B8:28 B9:90 BA:28 BB:90 BC:28 BD:90 BE:28 BF:90 C0:28 C1:90 C2:28 C3:90 C4:28 C5:90 C6:28 C7:90 C8:28 C9:90 CA:28 CB:24 CC:22 CD:48 CE:2A CF:8A D0:2A D1:90 D2:22 D3:90 D4:28 D5:90 D6:28 D7:90 D8:28 D9:90 DA:28 DB:90 DC:28 DD:90 DE:28 DF:90 E0:28 E1:90 E2:28 E3:90 E4:28 E5:90 E6:28 E7:90 E8:28 E9:90 EA:28 EB:90 EC:28 ED:90 EE:28 EF:90 F0:28 F1:90 F2:28 F3:90 F4:28 F5:90 F6:28 F7:90 F8:28 F9:90 FA:28
     2022-01-11 18:31:59   RegL_06.         00:00 01:24 02:22 03:48 04:2A 05:8A 06:2A 07:90 08:22 09:90 0A:28 0B:90 0C:28 0D:90 0E:28 0F:90 10:28 11:90 12:28 13:90 14:28 15:90 16:28 17:90 18:28 19:90 1A:28 1B:90 1C:28 1D:90 1E:28 1F:90 20:28 21:90 22:28 23:90 24:28 25:90 26:28 27:90 28:28 29:90 2A:28 2B:90 2C:28 2D:90 2E:28 2F:90 30:28 31:24 32:22 33:48 34:2A 35:8A 36:2A 37:90 38:22 39:90 3A:28 3B:90 3C:28 3D:90 3E:28 3F:90 40:28 41:90 42:28 43:90 44:28 45:90 46:28 47:90 48:28 49:90 4A:28 4B:90 4C:28 4D:90 4E:28 4F:90 50:28 51:90 52:28 53:90 54:28 55:90 56:28 57:90 58:28 59:90 5A:28 5B:90 5C:28 5D:90 5E:28 5F:90 60:28
     2022-01-11 18:33:00   cfgState        ok
     2022-01-11 18:31:59   controlMode     central
     2022-01-11 18:31:59   day-temp        21 C
     2022-01-11 18:31:59   decalcDay       Sat
     2022-01-11 19:21:51   desired-temp    6.0
     2022-01-11 18:31:59   displayMode     temp-hum
     2022-01-11 18:31:59   displayTemp     actual
     2022-01-11 18:31:59   displayTempUnit celsius
     2022-01-11 18:31:59   night-temp      17 C
     2022-01-11 18:31:59   party-temp      17 C
     2022-01-11 19:21:51   recentStateType ack
     2021-09-29 20:56:40   tempTmplSet     none
     -                     tmpl_0          TC_02_sensor,
   helper:
     peerFriend
     peerIDsRaw ,00000000
     peerIDsState complete
     peerOpt    p:thermostat
     regLst     5,6
     tmplChg    0
     cmds:
       TmplKey    :1641901472.20539:1641901472.60481
       TmplTs     1641901472.60481
       cmdKey     1:0:0::Thermostat.OZ:0039:02:
       cmdLst:
         burstXmit  noArg
         clear      [({msgErrors}|msgEvents|rssi|attack|trigger|register|oldRegs|readings|all)]
         controlMode (auto|manual|central|party)
         desired-temp (on|off|6.0..30.0;0.5)
         displayMode (temp-only|temp-hum)
         displayTemp (actual|setpoint)
         displayTempUnit (celsius|fahrenheit)
         getConfig  noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         partyMode  [(prep|{exec})] -HH:MM- -durationDays- [...]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerChan    0 -actChn- single [({set}|unset)] [(actor|remote|{both})]
         regBulk    -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         statusRequest noArg
         sysTime    noArg
         tempListFri [(prep|{exec})] -HH:MM- -temp- [...]
         tempListMon [(prep|{exec})] -HH:MM- -temp- [...]
         tempListSat [(prep|{exec})] -HH:MM- -temp- [...]
         tempListSun [(prep|{exec})] -HH:MM- -temp- [...]
         tempListThu [(prep|{exec})] -HH:MM- -temp- [...]
         tempListTmpl [({verify}|restore)] [[-file-:]-templateName-]
         tempListTue [(prep|{exec})] -HH:MM- -temp- [...]
         tempListWed [(prep|{exec})] -HH:MM- -temp- [...]
         tempTmplSet -tempTmpl-
         tplDel     -tplDel-
         tplSet_0   -tplChan-
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt   
         tplChan    TC_02_sensor,TC_02_test,s1,test09
         tplDel     0>TC_02_sensor
         tplPeer   
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        1
       det        1
       raw        1
       tpl        1
     peerIDsH:
       00000000   broadcast
     prt:
       brstWu     1
     regCollect:
     role:
       chn        1
     shadowReg:
     tmpl:
       0>TC_02_sensor
Attributes:
   event-on-change-reading .*
   group      Heizung.OZ
   model      HM-CC-TC
   peerIDs    00000000
   room       00_heating_test,15_OZ
   tempListTmpl none
   webCmd     controlMode:desired-temp
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

na dann:


"set statusRequest" packt im wu mode zuerst den befehl auf den cmd stack mit CUL_HM_PushCmdStack().
  elsif($cmd eq "statusRequest") { ############################################
    my @chnIdList = CUL_HM_getAssChnIds($name);
    foreach my $channel (@chnIdList){
      my $chnNo = substr($channel,6,2);
      CUL_HM_PushCmdStack($hash,"++".$flag.'01'.$id.$dst.$chnNo.'0E');
    }
    CUL_HM_stateUpdatDly($name,20) if (scalar(@chnIdList));
    $state = "";
  }


und anschliessend wird über CUL_HM_stateUpdatDly() ein 20s timer gestartet,
Wed Jan 12 14:45:05      15: CUL_HM_qStateUpdatIfEnab      :sUpdt:Thermostat.OZ_Climate
der nach ablauf einen 2. statusrequest-cmd in die wakeup-statusrequest-queue packt.
status request wakeup: Thermostat.OZ
dieser kommt dann beim wakeup ebenfalls auf den cmdstack.
im burst mode (burstAccess=1_auto) wird der 20s-timer nicht gestartet.


hier ein paar hashwerte (vor dem set, nach dem set, nach dem 20s-timer):
#######wu, -5s => kurz vor cmd
     prt:
       awake      0
       bErr       0
       brstWu     0
       sProc      0
       try        1
       tryMsg:
     q:
       qReqConf   
       qReqStat   
#######wu, +5s => kurz nach cmd
     prt:
       awake      0
       bErr       0
       brstWu     0
       sProc      2
       try        1
       rspWait:
       tryMsg:
     q:
       qReqConf   
       qReqStat   
#######wu, +30s => nach timer
     prt:
       awake      0
       bErr       0
       brstWu     0
       sProc      2
       try        1
       tryMsg:
     q:
       qReqConf   
       qReqStat   02





@martinp876
warum zusätzlich CUL_HM_stateUpdatDly()?
eventuell ein "fauler" kompromis, um den cmd auch für den automatischen statusrequest bei fhem restart zu nutzen?

der hintergrund meiner "untersuchung" ist nämlich ein etwas "chaotischer" ablauf der automatischen requests bei fhem restart. besonders die requests der thermostate zeigen viele probleme (resend), die egentlich unnötig sind, da manuelle requests in der regel keine probleme machen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

ich habe CUL_HM_stateUpdatDly() jetzt mal auskommentiert.
damit kommen jetzt alle statusrequest wie gewünscht nur noch einfach, auch beim restart.
probleme sehe ich dadurch bisher überhaupt nicht.

  elsif($cmd eq "statusRequest") { ############################################
    my @chnIdList = CUL_HM_getAssChnIds($name);
    foreach my $channel (@chnIdList){
      my $chnNo = substr($channel,6,2);
      CUL_HM_PushCmdStack($hash,"++".$flag.'01'.$id.$dst.$chnNo.'0E');
    }
    #CUL_HM_stateUpdatDly($name,20) if (scalar(@chnIdList));
    $state = "";
  }



bleiben noch folgende punkte für die automatischen statusrequest bei restart:

1. den beginn der requests verzögern, damit die (mühsam) zugeordneten io auch erhalten bleiben. also abwarten bis die io bereit sind (vielleicht 60/90s nach initial cleanup).
am besten wäre eine io-abhängige verzögerung => sobald ein io bereit ist, werden die requests der devices gestartet, denen dieses io zugeornet ist.

2. wakeup devices werden erst nach der wakemeup message präpariert, also zu spät. hat eventuell mit punkt 1. zu tun, falls das io umgeswitcht werden muss.

3. bei thermostaten mit eingeschaltetem burst wird a112 und b112 gesendet. ausserdem wird erst noch unnötig auf die wakemeup message gewartet. wenn schon burst, dann nicht extra noch warten.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Beta-User

...weiß nicht, ob ich die richtige Stelle gefunden habe, aber mit der angehängten Version könnte #1 (90 Sek. Verzögerung) umgesetzt sein.
(da sind noch ein paar andere Fundstellen mit verarbeitet, getestet nur auf "lädt").
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

frank

danke, schaue ich mir an.

mit einer 60s "ausführungs-verhinderung" von CUL_HM_appFromQ() sind jetzt jedenfalls schon alle resends bei restart verschwunden.


FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

Zitat...weiß nicht, ob ich die richtige Stelle gefunden habe
das funktioniert für alle devices, die direkt erreichbar sind (normal/230v, burst). also die, die bei mir noch gefehlt haben.

bei meinem aktuellen patch für die restlichen devices (wakeup, lazy, conditional burst) wird zwar der statusrequest verschoben, aber leider noch nicht das präparieren der io, wie ich leider gerade feststellen musste. die io senden trotzdem ihre autonomen messages. alles sehr tricky.  ;)


in deinem patch sind 2 stellen, wo du "IsDisabled" eingebaut hast (11113, 11193).
da wolltest du sicherlich "IsDummy" einfügen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Beta-User

...mit IsDummy() hast du wohl recht - wie schnell man aus diesen ganzen Spezialitäten doch raus ist... Anbei eine aktualisierte Fassung.

Was mit "deinem" Patch gemeint ist, kann ich grade nur raten, im Anhang (auch von gestern) ist jedenfalls auch der CUL_HM_stateUpdatDly()-Aufruf auskommentiert.

Was das Präparieren der IO angeht, bin ich auch etwas ratlos, wann man das am besten machen sollte. Theoretisch könnte man die NotifyFn() ausbauen und auch die IO-Events durch die Zentral-Instanz überwachen lassen, allerdings ist dazu bisher mehr oder weniger 0 Code im Modul zu finden.

Bin vom Bauchgefühl her auch unschlüssig, ob das allzu sinnvoll wäre, denn prinzipiell sollte in "typischen Installationen" ja nicht die große Lücke zwischen zwei FHEM-Starts entstehen und die alte (typischerweise auf den IO's für autonome Bestätigungen verwendete) Zuordnung als Startpunkt an sich auch ok sein.(Ist aber mal wieder ein Thema, bei dem ich mir zumindest so vorkomme, als würde ein Blinder von Farbe reden...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

frank

hier ist mein aktuelles diff zu version 25298.

punkt 1. habe ich jetzt anders gelöst. dadurch hat sich punkt 2. wie erwartet auch erledigt.
delay habe ich auf 60s gesetzt, bei mir würden wohl auch 30s genügen. eine dynamischer delay wäre weiterhin wünschenswert.

fehlt erstmal noch punkt 3.

@@ -532,11 +532,11 @@ sub CUL_HM_updateConfig($){##########################
     #remove invalid attributes. After set commands fot templist
     CUL_HM_Attr("set",$name,"peerIDs",$attr{$name}{peerIDs}) if (defined $attr{$name}{peerIDs});# set attr again to update namings
     foreach(sort keys %{$attr{$name}}){
       delete $attr{$name}{$_} if (CUL_HM_AttrCheck($name,'set',$_,$attr{$name}{$_})); 
     }
-    CUL_HM_qStateUpdatIfEnab($name) if($hash->{helper}{role}{dev});
+    #CUL_HM_qStateUpdatIfEnab($name) if($hash->{helper}{role}{dev}); #frank
     next if (0 == (0x07 & CUL_HM_getAttrInt($name,"autoReadReg")));
     if(CUL_HM_getPeers($name,"Config") == 2){
       CUL_HM_qAutoRead($name,1);
     }
     else{
@@ -551,22 +551,32 @@ sub CUL_HM_updateConfig($){##########################
     
     CUL_HM_complConfig($name);
     CUL_HM_setAssotiat($name);
   }
   
-  delete $modules{CUL_HM}{helper}{updtCfgLst};
+  #delete $modules{CUL_HM}{helper}{updtCfgLst}; #frank
   if(!$modules{CUL_HM}{helper}{initDone}){
     Log 1,"CUL_HM finished initial cleanup";
+    InternalTimer(gettimeofday() + 66, "CUL_HM_startQueues", "CUL_HM_startQueues", 0); #frank
     if (defined &HMinfo_init){# force reread
       $modules{HMinfo}{helper}{initDone} = 0;
       InternalTimer(gettimeofday() + 5,"HMinfo_init", "HMinfo_init", 0);
     }
   }
   $modules{CUL_HM}{helper}{initDone} = 1;# we made init once - now we are operational. Check with HMInfo as well
   ## configCheck will be issues by HMInfo once
}

+sub CUL_HM_startQueues() { #frank
+  #Log(1,Dumper($modules{CUL_HM}{helper}));
+  Log(1,"CUL_HM start Queues");
+  foreach my $name (@{$modules{CUL_HM}{helper}{updtCfgLst}}){
+    CUL_HM_qStateUpdatIfEnab($name) if($defs{$name}->{helper}{role}{dev});
+  }
+  delete $modules{CUL_HM}{helper}{updtCfgLst};
+}
+
sub CUL_HM_initializeVirtuals {
     my $hash = shift // return;
     my $name = $hash->{NAME} // return;
     my $vId = substr($hash->{DEF}."01",0,8);
     if ($hash->{helper}{fkt} eq "vdCtrl"){
@@ -5642,11 +5652,11 @@ sub CUL_HM_Set($@) {#+++++++++++++++++ set command+++++++++++++++++++++++++++++
     my @chnIdList = CUL_HM_getAssChnIds($name);
     foreach my $channel (@chnIdList){
       my $chnNo = substr($channel,6,2);
       CUL_HM_PushCmdStack($hash,"++".$flag.'01'.$id.$dst.$chnNo.'0E');
     }
-    CUL_HM_stateUpdatDly($name,20) if (scalar(@chnIdList));
+    #CUL_HM_stateUpdatDly($name,20) if (scalar(@chnIdList)); #frank
     $state = "";
   }
   elsif($cmd eq "getSerial") { ################################################
     CUL_HM_PushCmdStack($hash,'++'.$flag.'01'.$id.$dst.'0009');
     $state = "";
@@ -11098,12 +11108,12 @@ sub CUL_HM_unQEntity($$){# remove entity from q
}
sub CUL_HM_qEntity($$){  # add to queue
   my ($name,$q) = @_;
   return if ($modules{CUL_HM}{helper}{hmManualOper});#no autoaction when manual
   my $devN = CUL_HM_getDeviceName($name);
-  return if (AttrVal($devN,"subType","") eq "virtual");
-
+  #return if (AttrVal($devN,"subType","") eq "virtual"); #frank
+  return if (AttrVal($devN,"subType","") eq "virtual" || AttrVal($devN,"ignore",0));
   $name =  $devN if ($defs{$devN}{helper}{q}{$q} eq "00"); #already requesting all
   if ($devN eq $name){#config for all device
     $defs{$devN}{helper}{q}{$q}="00";
   }
   else{


edit: diff geändert
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

moin, 

punkt 3. lässt sich mit folgender zusätzlicher zeile lösen: 

@@ -11111,10 +11121,11 @@ sub CUL_HM_qEntity($$){  # add to queue
                                       $defs{$devN}{helper}{q}{$q}
                                       .",".substr(CUL_HM_name2Id($name),6,2));
   }
   my $rxt = CUL_HM_getRxType($defs{$name});
   my $wu = ($rxt & 0x1C) ? 'Wu' : ''; #normal or wakeup q?
+  $wu = '' if($rxt & 0x80 && CUL_HM_getAttrInt($name,"burstAccess")); #frank: conditional burst
   $q .= $wu;
   my $qa = $modules{CUL_HM}{helper}{$q};
   @{$qa} = CUL_HM_noDup(@{$qa},$devN); #we only q device - channels are stored in the device



zusätzlich habe ich nun die verzögerung auf 66s verlängert, da bei 60s immer gleichzeitig ein block "configcheck -f" verarbeitet werden muss, das habe ich im diff aus dem letzten post mal geändert:
2022.01.21 09:32:04.509 1: CUL_HM start Queues
2022.01.21 09:32:04.556 0: HMLAN_Send:  hmlan1 I:+206487,02,00,00
2022.01.21 09:32:04.560 0: HMUARTLGW hmuart1 send: 01 062064CB000100
2022.01.21 09:32:04.564 0: HMLAN_Send:  hmlan1 I:+206219,02,00,00
2022.01.21 09:32:04.596 0: HMUARTLGW hmuart1 added peer: 2064CB, aesChannels: FFFFFFFFFFFFFFFF
2022.01.21 09:32:04.600 0: HMUARTLGW hmuart1 send: 01 062064CB000100
2022.01.21 09:32:04.608 0: HMUARTLGW hmuart1 added peer: 2064CB, aesChannels: FFFFFFFFFFFFFFFF
2022.01.21 09:32:04.609 0: HMUARTLGW hmuart1 send: 01 0620DFE1000100
2022.01.21 09:32:04.617 0: HMUARTLGW hmuart1 added peer: 20DFE1, aesChannels: FFFFFFFFFFFFFFFF
2022.01.21 09:32:04.621 0: HMUARTLGW hmuart1 send: 01 0620DFE1000100
2022.01.21 09:32:04.628 0: HMUARTLGW hmuart1 added peer: 20DFE1, aesChannels: FFFFFFFFFFFFFFFF
2022.01.21 09:32:04.629 0: HMUARTLGW hmuart1 send: 01 061DFDA5000100
2022.01.21 09:32:04.637 0: HMUARTLGW hmuart1 added peer: 1DFDA5, aesChannels: FFFFFFFFFFFFFFFF
2022.01.21 09:32:04.641 0: HMUARTLGW hmuart1 send: 01 061DFDA5000100
2022.01.21 09:32:04.649 0: HMUARTLGW hmuart1 added peer: 1DFDA5, aesChannels: FFFFFFFFFFFFFFFF
2022.01.21 09:32:04.885 3: HMinfo hminfo get:configCheck :-f,^(Ventil.AZ.Nord|Ventil.AZ.Nord)$
2022.01.21 09:32:04.971 3: HMinfo hminfo get:configCheck :-f,^(Tuer.WZ.Terrasse|Tuer.WZ.Terrasse)$
2022.01.21 09:32:05.013 3: HMinfo hminfo get:configCheck :-f,^(Wetter.Nord|Wetter.Nord)$
2022.01.21 09:32:05.101 3: HMinfo hminfo get:configCheck :-f,^(Fenster.Bad|Fenster.Bad)$
2022.01.21 09:32:05.306 3: HMinfo hminfo get:configCheck :-f,^(SwitchUP02|SwitchUP02)$
2022.01.21 09:32:05.349 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.WZ|Thermostat.WZ_Climate|Thermostat.WZ_Weather|Thermostat.WZ_WindowRec|Thermostat.WZ)$
2022.01.21 09:32:05.468 3: HMinfo hminfo get:configCheck :-f,^(SwitchPBU01|SwitchPBU01_Btn_01|SwitchPBU01_Btn_02|SwitchPBU01_Sw_01|SwitchPBU01_Sw_02|SwitchPBU01)$
2022.01.21 09:32:05.627 3: HMinfo hminfo get:configCheck :-f,^(Tuer.SZ|Tuer.SZ)$
2022.01.21 09:32:05.668 3: HMinfo hminfo get:configCheck :-f,^(Ventil.Bad|Ventil.Bad)$
2022.01.21 09:32:05.712 3: n_iodev return value: HASH(0x8d96940)
2022.01.21 09:32:05.776 3: CUL_HM set DimPBU01_Dim statusRequest noArg
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Beta-User

#10
Hab's mal eingepflegt (für eventuelle Mittester: komplette Version anbei) und werde das auch mal so testen.

Was den generellen Ablauf bzgl. der 66 Sekunden angeht, habe ich zwar nicht die durchschlagende Idee, aber vielleicht einen ersten Ansatzpunkt:
- Es gibt kein NotifyFn für IO-Events;
- der IO-Zustand wird aber "irgendwie" (auch) durch VCCU überwacht, wenn eine im Einsatz ist.
- hin und wieder wird ein update der VCCU-Zustände gemacht (Funktion: CUL_HM_UpdtCentralState()).

Theoretisch müßte es möglich sein, in der VCCU eine Liste der "noch nicht initialisierten" IO's zu führen. Dann könnte bei jedem internen update gecheckt werden, ob ein IO jetzt (schon) verfügbar ist, und dann die _dafür relevanten_ gequeueten Befehle (wie ermitteln?) raushauen, und nur den Rest in der Queue lassen...?

Keine Ahnung, ob das ein zielführender Gedankengang ist und wie man das ggf. in Code packen könnte...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

frank

Zitatund nur den Rest in der Queue lassen...
sobald etwas in eine wakeup-queue "geworfen" wird, wird das entsprechende io präpariert, wodurch die nächste passende message des devices das senden der cmds auslöst.
man braucht also eigentlich auch eine weitere vorgeschaltete queue/liste, die die entsprechenden aktionen erst in die queues wirft, wenn das jeweils vorgesehene io bereit ist.  ;)


hier noch ein zusätzlicher patch, der verhindert, dass im vorhin erwähnten "configcheck -f block" unnötige configchecks für ignored device ausgeführt werden. die zusätzliche return zeile verhindert das:
sub CUL_HM_cfgStateDelay($) {#update cfgState: schedule for devices
  my $name = shift;
  return if(IsIgnored($name)); #frank
  CUL_HM_cfgStateUpdate("cfgStateUpdate:".CUL_HM_getDeviceName($name));
}
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Beta-User

#12
...genau... Klingt kompliziert...

Ad patch: Da fehlt dann aber wieder "IsDisabled" (oder wie hieß das gleich noch)...
Vollständige Fassung wieder anbei.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

frank

Da fehlt dann aber wieder "IsDisabled" (oder wie hieß das gleich noch)...
war mir nicht sicher...
nach meinem verständnis wird (wurde?) bei einem cul_hm dummy-device nur das senden verhindert.
einige checks könnten ja vielleicht trotzdem "nützlich" sein.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Beta-User

Hmmm, auch wieder richtig. Es darf halt nicht passieren, dass das IO vorbereitet wird, aber sonst...

Hab's mit Bemerkung wieder rausgenommen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files