[gelöst] keine kommunikation zwischen vd und virtuellem tc nach fhem restart

Begonnen von frank, 27 September 2021, 17:15:26

Vorheriges Thema - Nächstes Thema

frank

1. das aktuelle cul_hm verhindert die kommunikation zwischen vd und virtuellem tc.
es werden keine regelmässigen keep alive messages mehr gesendet.
edit: die keepalive messages werden wieder gesendet, nachdem ich "set valvePos" im chn des vtc ausgeführt habe.
also hat der "automatische" start nach fhem restart nicht funktioniert.
komischer weise ist bei 2 vtc zusätzlich jeweils ein weiterer vtc mit "angesprungen"

2. im channel des virtuellen tc ist das "attr param msgReduce:2" zwar noch vorhanden, aber nicht mehr einstellbar.
es gibt nur noch "attr param showTimed" zur auswahl.
ausserdem hat das attribut keine wirkung, funktioniert also nicht mehr.

3. auffällig ist das fehlende internal .AttrList im channel vom vtc.
dises internal ist in keinem channel eines virtuellen devices zu finden. zb auch nicht in den chn der vccu.



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 levelMap levelRange 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 peerIDs 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
   DEF        1C4E25
   FUUID      5c4ce2e9-f33f-09c4-f092-82004d6255d7f361
   IODev      hmlan1
   NAME       Ventil.AZ.Nord
   NR         281
   NTFY_ORDER 50-Ventil.AZ.Nord
   STATE      Vsoll:0 %, Vist:0, Status:0, Operation:onTarget, OpErr:16, Mot:stop, MotErr:ok, Bat:ok, Verr:12 %, Voff:0 %
   TYPE       CUL_HM
   chanNo     01
   disableNotifyFn 1
   peerList   VentilControler.AZ.Nord_Btn1
   .attraggr:
   .attreocr:
     .*
   .attrminint:
   .attrtocr:
     battery
     motorErr
   CL:
     Authenticated 0
     BUF       
     FD         79
     FW_ID      1598
     LASTACCESS 1632755818
     NAME       WEB_192.168.1.31_50567
     NR         1723
     PEER       192.168.1.31
     PORT       50567
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     .attraggr:
     .attrminint:
     READINGS:
       2021-09-27 17:16:55   state           Connected
   READINGS:
     1900-01-01 00:00:01   .D-devInfo      010100
     1900-01-01 00:00:01   .D-stc          58
     2021-09-27 16:23:28   .associatedWith Ventil.AZ.Nord,Ventil.AZ.Nord,VentilControler.AZ.Nord_Btn1
     2021-07-03 23:17:32   .peerListRDate  2021-07-03 23:17:32
     2021-09-27 16:17:32   .protLastRcv    20210927161732
     2021-09-27 16:27:58   Activity        alive
     2021-09-27 16:17:32   CommandAccepted yes
     1900-01-01 00:00:01   D-firmware      2.0
     1900-01-01 00:00:01   D-serialNr      JEQ0312631
     2021-09-27 16:23:26   IODev           hmlan1
     2021-06-08 17:34:24   PairedTo        0x1ACE1F
     2021-09-27 16:23:15   R-pairCentral   0x1ACE1F
     2021-09-27 16:23:15   R-valveErrorPos 12 %
     2021-09-27 16:23:15   R-valveOffset   0 %
     2021-06-08 17:34:24   RegL_00.        00:00 02:01 0A:1A 0B:CE 0C:1F
     2021-06-10 00:22:05   RegL_05.        00:00 09:00 0A:0C
     2021-09-27 12:44:26   ValveDesired    0 %
     2021-09-27 16:17:32   ValvePosition   0
     2021-05-13 17:53:25   battery         ok
     2021-09-27 16:33:34   cfgState        ok
     2021-09-27 16:17:32   commState       CMDs_done
     2021-09-27 16:17:32   motor           stop
     2021-05-13 17:53:25   motorErr        ok
     2021-09-27 16:17:32   operState       onTarget
     2021-07-29 13:17:43   operStateErrCnt 16
     2021-09-27 16:23:28   peerList        VentilControler.AZ.Nord_Btn1
     2021-09-27 16:17:32   recentStateType ack
     2021-09-27 16:17:32   state           0
   helper:
     HM_CMDNR   168
     cfgStateUpdt 0
     mId        003A
     oldDes     0
     peerFriend
     peerIDsState complete
     peerOpt    p:thermostat
     regLst     0,5
     rxType     12
     tmplChg    0
     cmds:
       TmplKey    VentilControler.AZ.Nord_Btn1:1632752595.86026:1632752608.82646
       TmplTs     1632752608.82646
       cmdKey     1:1:0::Ventil.AZ.Nord:003A:01:VentilControler.AZ.Nord_Btn1
       cmdLst:
         assignHmKey noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerSmart  -peerOpt-
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         tplDel     -tplDel-
         tplSet_0   -tplChan-
         tplSet_VentilControler.AZ.Nord_Btn1 -tplPeer-
         unpair     noArg
         valvePos   [({off}|0.0..99.0;0.5)]
       lst:
         condition  slider,0,1,255
         peer       VentilControler.AZ.Nord_Btn1
         peerOpt    remove_VentilControler.AZ.Nord_Btn1
         tplChan   
         tplDel     
         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       0
       newChn     +1C4E25,00,00,00
       rxt        2
       vccu       ccu
       p:
         1C4E25
         00
         00
         00
       prefIO:
         hmlan1
     mRssi:
       mNo       
     peerIDsH:
       00000000   broadcast
       B5B5B501   VentilControler.AZ.Nord_Btn1
     prt:
       bErr       0
       sProc      0
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
     shadowReg:
     tmpl:
Attributes:
   .mId       003A
   IOgrp      ccu:hmlan1
   actCycle   001:30
   actStatus  alive
   alias      40. Ventil.AZ.Nord
   autoReadReg 5_readMissing
   comment    batChange: 2021-03-03 09:28:25 critical (oldBat: low since 2020-12-18 16:26:27)
   event-on-change-reading .*
   expert     defReg,allReg,rawReg,templ
   firmware   2.0
   group      Heizung.AZ
   model      HM-CC-VD
   msgRepeat  0
   peerIDs    00000000,B5B5B501
   room       20_AZ,98_Ventile
   serialNr   JEQ0312631
   stateFormat Vsoll:ValveDesired, Vist:ValvePosition, Status:state, Operation:operState, OpErr:operStateErrCnt, Mot:motor, MotErr:motorErr, Bat:battery, Verr:R-valveErrorPos, Voff:R-valveOffset
   subType    thermostat
   timestamp-on-change-reading battery,motorErr
   webCmd     getConfig


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 cyclicMsgOffset 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
   DEF        B5B5B5
   FUUID      5c4ce2e9-f33f-09c4-41e8-f94c9a0ee1c747e2
   IODev      hmlan1
   NAME       VentilControler.AZ.Nord
   NR         282
   NTFY_ORDER 50-VentilControler.AZ.Nord
   STATE      CMDs_done
   TYPE       CUL_HM
   channel_01 VentilControler.AZ.Nord_Btn1
   disableNotifyFn 1
   .attreour:
     state
   .attrminint:
   CL:
     Authenticated 0
     BUF       
     FD         79
     FW_ID      1176
     LASTACCESS 1632755865
     NAME       WEB_192.168.1.31_50567
     NR         1723
     PEER       192.168.1.31
     PORT       50567
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     .attraggr:
     .attrminint:
     READINGS:
       2021-09-27 17:16:55   state           Connected
   READINGS:
     2021-09-27 16:17:31   .protLastRcv    20210927161731
     2021-06-10 00:22:05   CommandAccepted yes
     2021-09-27 16:23:26   IODev           hmlan1
     2021-09-27 16:33:34   cfgState        ok
     2021-06-10 00:22:05   commState       CMDs_done
     2021-06-10 00:22:05   state           CMDs_done
   helper:
     HM_CMDNR   223
     mId        FFF1
     peerFriend -
     peerOpt    -:virtual
     regLst     0
     rxType     1
     tmplChg    0
     cmds:
       TmplKey    :1632752595.86026:1632752608.86521
       TmplTs     1632752608.86521
       cmdKey     0:1:1::VentilControler.AZ.Nord:FFF1:00:
       cmdLst:
         assignHmKey noArg
         clear      [(readings|rssi|msgEvents|attack|{msgErrors}|unknownDev)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getDevInfo noArg
         raw        -data- [...]
         reset      noArg
         unpair     noArg
         virtual    [(1..50;1|{1})]
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt   
         tplChan   
         tplDel     
         tplPeer   
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     io:
       vccu       ccu
       prefIO:
         hmlan1
     mRssi:
       mNo       
     peerIDsH:
     prt:
       bErr       0
       sProc      0
     q:
       qReqConf   
       qReqStat   
     role:
       dev        1
       vrt        1
     rssi:
     shadowReg:
     tmpl:
Attributes:
   .mId       FFF1
   IOgrp      ccu:hmlan1
   event-on-update-reading state
   expert     defReg,rawReg
   group      Heizung.AZ
   model      VIRTUAL
   msgRepeat  0
   room       20_AZ
   subType    virtual
   webCmd     press short:press long


Internals:
   .triggerUsed 1
   DEF        B5B5B501
   FUUID      5c4ce2e9-f33f-09c4-f9b9-f192af5a6a6260d0
   NAME       VentilControler.AZ.Nord_Btn1
   NR         283
   NTFY_ORDER 50-VentilControler.AZ.Nord_Btn1
   STATE      Vsoll: 0 %, Status: ValveAdjust:0 %, Kommunikation: ok, Error (tot/lost/avg): 1665 / 21 / 12.2, Modus: msgReduce:2
   TYPE       CUL_HM
   chanNo     01
   device     VentilControler.AZ.Nord
   disableNotifyFn 1
   peerList   Ventil.AZ.Nord
   .attraggr:
   .attreocr:
     .*
   .attreour:
     state
     valvePosTC
   .attrminint:
   .userReadings:
     HASH(0x38ef780)
     HASH(0x38f7348)
   CL:
     Authenticated 0
     BUF       
     FD         79
     FW_ID      1176
     LASTACCESS 1632755898
     NAME       WEB_192.168.1.31_50567
     NR         1723
     PEER       192.168.1.31
     PORT       50567
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     .attraggr:
     .attrminint:
     READINGS:
       2021-09-27 17:16:55   state           Connected
   READINGS:
     2021-09-27 16:23:28   .associatedWith VentilControler.AZ.Nord,VentilControler.AZ.Nord_Btn1,VentilControler.AZ.Nord,Ventil.AZ.Nord
     2021-09-27 16:17:41   .next           206;1632752377.87581
     2021-09-27 16:33:34   cfgState        ok
     2021-06-10 00:22:05   commState       CMDs_done
     2021-05-13 17:53:25   ctrStart        2021-05-13 17:53:25
     2021-09-27 15:21:54   errorAvg        12.2
     2021-09-27 15:21:54   errorCtr        1665
     2021-09-27 15:23:57   errorState      ok
     2021-07-29 13:00:40   lostCtr         21
     2021-09-27 12:44:26   msgReduce       msgReduce:2
     2021-09-27 16:23:28   peerList        Ventil.AZ.Nord
     2021-09-27 12:44:26   state           ValveAdjust:0 %
     2021-09-27 15:23:57   valveCtrl       ok
     2021-09-27 15:23:57   valveCtrlRam    ok
     2021-09-27 12:44:26   valvePosTC      0 %
   helper:
     fkt        vdCtrl
     peerFriend peerSD,peerSens,peerAct
     peerIDsState incomplete
     peerOpt    -:virtual
     regLst     
     tmplChg    0
     cmds:
       TmplKey    Ventil.AZ.Nord:1632752595.86026:1632752608.88651
       TmplTs     1632752608.88651
       cmdKey     1:0:1:vdCtrl:VentilControler.AZ.Nord:FFF1:01:Ventil.AZ.Nord
       cmdLst:
         peerChan   -btnNumber- -actChn- [({single}|dual|reverse)] [({set}|unset)] [(actor|remote|{both})]
         peerSmart  -peerOpt-
         postEvent  -condition-
         press      [(long|{short})] [(-peer-|{all})] [(noBurst|{Burst})] [(-repCount-|{0})] [(-repDelay-|{0.25})]
         pressL     [(-peer-|{all})]
         pressS     [(-peer-|{all})]
         tplSet_0   -tplChan-
         tplSet_Ventil.AZ.Nord -tplPeer-
         valvePos   (off|0.0..99.0;0.1)
       lst:
         condition  slider,0,1,255
         peer       Ventil.AZ.Nord
         peerOpt    DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU02_Btn_01,SwitchPBU02_Btn_02,SwitchPBU02_Sw_01,SwitchPBU02_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.West_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1,virt_vd_Btn1
         tplChan   
         tplDel     
         tplPeer   
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     peerIDsH:
       1C4E2501   Ventil.AZ.Nord_chn-01
     role:
       chn        1
       vrt        1
     shadowReg:
     tmpl:
Attributes:
   alias      30. Controler.AZ.Nord
   event-on-change-reading .*
   event-on-update-reading state,valvePosTC
   group      Heizung.AZ
   model      VIRTUAL
   param      msgReduce:2
   peerIDs    1C4E2501
   room       20_AZ,98_Ventile
   stateFormat Vsoll: valvePosTC, Status: state, Kommunikation: valveCtrl, Error (tot/lost/avg): errorCtr / lostCtr / errorAvg, Modus: msgReduce
   userReadings msgReduce:valvePosTC.* {AttrVal($name,"param","???")},
errorAvg:(valvePosTC|errorCtr).* {
my $tsStart = ReadingsVal($name,"ctrStart",undef);
my $days = ((defined($tsStart))?sprintf("%.1f",(time() - time_str2num($tsStart)) / (24*60*60)):0);
return sprintf("%.1f",ReadingsVal($name,"errorCtr",0) / (($days < 0.1)?0.1:$days));
}
   verbose    2
   webCmd     press short:press long
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

workaround für das "attr param msgReduce:x"

1. cul_hm version von beta-user nutzen https://forum.fhem.de/index.php/topic,122422.msg1176632.html#msg1176632
damit kann man das attr im channel des vtc wieder einstellen/verändern.

2. nach jedem fhem restart muss nun noch das attribut explizit erneut gesetzt werden.
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

Zwischeninfo: meine "Trefferwahrscheinlichkeit" für das korrekte Setzen von .AttrList bei den RT's erhöht sich scheinbar, wenn ca. in #9658

foreach (sort keys %{$culHmModel}){
statt
foreach (keys %{$culHmModel}){
steht. Evtl. hilft das auch hier? (Die anderen sort-Anweisungen werden damit aber nicht alle überflüssig, das ist irgendwie vertrackt, und ich bin daher nach wie vor nicht sicher, ob das alles war).

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

sortieren kann ich mir sparen.
es gibt kein internal .AttrList in keinem virtuellen channel.
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

Das Problem ist nach meinem Verständnis nicht, dass man was vorhandenes sortieren müßte, sondern dass nur was vorhanden ist, wenn die Kanäle in der richtigen Reihenfolge geprüft werden.

Wie im Testsszenarium beschrieben: Mal ist was da, mal nicht. Sowas passiert mAn. im Perl-Umfeld nur, wenn ein unsortierter Hash-Zugriff stattfindet.

Ein Tipp noch: Direkt nach dem Starten mal am Kanal ein refresh ausführen (also "alte FHEM-Seite" offenlassen, den Startbefehl auf der Linux-Kommandozeile abschicken und dann gleich F5@Firefox). Dann bekommt man (ganz ohne Internal .AttrList) die Attributliste aus dem Anhang, sobald die Sanduhr um ist.
Erst danach wird gekappt und das Internal ist nach einem neuerlichen refresh dann da.

Was uns also (auch) interessiert, ist was zwischen dem initialen Einlesen der cfg und dem "Normalbetrieb" passiert...
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 gibt es bisher kein voodoo und kein wackekontakt.  :)

alle 6 entities besitzen das attribut param, es war nie weg und immer auszuwählen.

ich hätte auch ohne deine version gestern ein attribut param setzen können. es gab aber eine falsche voreinstellung mit falscher fester argument liste.

mit deiner version kann ich, wie schon immer das argument selber schreiben, ohne liste. (doch zufall?)

dadurch konnte ich das richtige argument setzen.
ein setzen über cmdline hatte ich vorher nicht probiert.


alle fehler die ich bisher sehe, haben mit einem gestörten cul_hm start zu tun. das war noch nie ohne bugs/reibungsverluste.
scheinbar ist das konstrukt selbst für martin "undurchschaubar" mit 1000 sonderlocken. sobald martin an einer ecke "optimiert" funktioniert vieles nur noch "solala" oder gar nicht mehr.
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

Zitat von: frank am 28 September 2021, 16:49:23
hier gibt es bisher kein voodoo und kein wackekontakt.  :)
"Voodoo" ist mein Testszenarium eigentlich nicht, aber man kann damit schön demonstrieren, wie sich "einfache" Hash-Zugriffe auswirken, nämlich genau: Zufällig, falls es kein eindeutiges Ergebnis gibt bzw. man eine Schleife über die (unsortierte!) key-Liste laufen läßt. Oft ist es wirklich egal, in welcher Reihenfolge z.B. keys gelöscht werden. Aber sobald eine nachfolgende Aktion erwartet, dass vorher was sauber durch ist, geht es eben nicht (immer) so aus wie erwünscht, sondern es ist eine moderne Form des Würfelns.

EDIT:
Zitat... und das fällt auf

       
  • Bei der Initialisierung wird zuerst der Schlüssel übergeben und dann der Wert.
  • Man ordnet dem Hash ein Array zu!
  • Bei Hashes gibt es keine Reihenfolge! Ursache: Die Daten werden nach einem speziellen internen Verfahren gespeichert, auf das man als Programmierer keinen Zugriff hat.
EDIT 2: zum Testen:
{my %test=(1=>1,2=>2,3=>3);;my @y = keys %test;; return join q{ }, @y;;}
Einfach mehrfach in die FHEM-Kommandozeile werfen...

Zitat
alle 6 entities besitzen das attribut param, es war nie weg und immer auszuwählen.

ich hätte auch ohne deine version gestern ein attribut param setzen können. es gab aber eine falsche voreinstellung mit falscher fester argument liste.
OK, das kam hier nicht so deutlich an, wo genau das Problem liegt

Zitat
mit deiner version kann ich, wie schon immer das argument selber schreiben, ohne liste. (doch zufall?)
Nach meiner Testerei würde ich behaupten: Begrenzung der Wahrscheinlichkeiten für bestimmte Effekte in der Initialisierung der CUL_HM-Geräte-Hashes, also teilweise gesteuerter Zufall ;) .

Zitat
dadurch konnte ich das richtige argument setzen.
ein setzen über cmdline hatte ich vorher nicht probiert.
Soweit ich das überblicke, geht über cmdline nur, was auch in den dropdowns ist. Nur über direktes cfg-Edit kann man das (ggf. nur temporär) überspielen, und wenn die neueren CUL_HM-Versionen etwas nicht mögen/kennen, hauen die das auch (timergesteuert in der Initialisierung) weg.

Zitat
alle fehler die ich bisher sehe, haben mit einem gestörten cul_hm start zu tun. das war noch nie ohne bugs/reibungsverluste.
scheinbar ist das konstrukt selbst für martin "undurchschaubar" mit 1000 sonderlocken. sobald martin an einer ecke "optimiert" funktioniert vieles nur noch "solala" oder gar nicht mehr.
Nach meinem Eindruck ist es v.a. deswegen undurchschaubar, weil eben mit dem "Universalwerkzeug" "for (keys %whatever)" mit nicht deterministisch sortierten Arrays gearbeitet wird/wurde. Es kann durchaus sein, dass die sort-Aktionen neue Probleme bringen und man die Durchläufe ggf. auch anders strukturieren muss. Aber das ganze weiter dem Zufall zu überlassen halte ich mit meinem heutigen Kenntnisstand für einen handwerklichen Fehler. Und das ganze betrifft definitiv mehrere Stellen, was die Zahl der möglichen Varianten wohl nicht unbedingt verkleinert...

Wenn es sortiert Probleme gibt, muss man die für die Initialisierung erforderlichen Arrays mit den keywords nochmal irgendwo gesondert definieren und dann eben die Codes in den Schleifen entsprechend der erforderlichen Reihenfolge abarbeiten. Nicht schön, weil es weitere Komplexität und zusätzlichen Pflegebedarf verursacht, aber m.E. gibt es keinen anderen Weg. Kann aber natürlich sein, dass es irgendwo eine "Hauptliste" gibt und es schon ausreicht, die "richtig herum" zu initialisieren. Wenn wir Glück haben, sind die "sort"-Anweisungen "zufällig" gleich richtig herum, denn ganz schlimm kann es eigentlich (vor der "Härtung") nicht gewesen sein.

Ich werde meine neue Version nachher mal ins Hauptsystem packen, mal sehen, ob ich dann wieder eine kalte Dusche bekomme...
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

neue erkenntnisse zum kaputten autostart des vtc:

im log ist zu sehen, dass der befehl valvePos doch automatisch kommt.
allerdings ist valvePos zu dem zeitpunkt noch unbekannt, wodurch der automatismus stirbt.

2021.09.29 20:47:50.868 3: set VentilControler.Bad_Btn1 valvePos 32 : Unknown argument valvePos, choose one of press getRegRaw regSet clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all regBulk peerBulk peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.AZ.West_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1 postEvent:slider,0,1,255 getConfig:noArg peerChan
2021.09.29 20:47:51.022 3: set VentilControler.Kueche_Btn1 valvePos 91 : Unknown argument valvePos, choose one of press getRegRaw regSet clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.AZ.West_Btn1,VentilControler.Bad_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1 postEvent:slider,0,1,255 regBulk peerBulk getConfig:noArg peerChan
2021.09.29 20:47:51.083 3: set VentilControler.WZ_Btn1 valvePos 0 : Unknown argument valvePos, choose one of clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all regSet press getRegRaw getConfig:noArg peerChan regBulk peerBulk peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.AZ.West_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1 postEvent:slider,0,1,255
2021.09.29 20:47:51.122 3: set VentilControler.AZ.Nord_Btn1 valvePos 0 : Unknown argument valvePos, choose one of regSet clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all press getRegRaw getConfig:noArg peerChan regBulk peerBulk peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.West_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1 postEvent:slider,0,1,255
2021.09.29 20:47:51.162 1: CUL_HM start inital cleanup
2021.09.29 20:47:56.055 1: CUL_HM finished initial cleanup
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

Zitat von: frank am 30 September 2021, 10:18:22
nein, beim virtuellen tc hat sich nichts geändert.
Nachdem ich die lists hier nochmal durchgesehen hatte, habe ich auch eine Idee, warum das so ist:

VIRTUAL-Geräte werden erst mal gesondert behandelt...
Hier scheint noch dazuzukommen, dass der Befehl wohl erst verfügbar wird, wenn bekannt ist, welcher Typ der peer ist, oder deute ich mein Testsystem falsch?
Evtl. muss man beim Start erst mal pauschal alle Befehle verfügbar machen, bis die Initialisierung drüber ist (wie bei den Attributen)?

Was mir aber auffällt: der vtc hat keinen subType (mehr?). Kannst du den mal setzen und dann nochmal testen?
UU. führt dann CUL_HM_updateConfig() (dort #424ff) dazu, dass das Paket wieder auf den Weg gebracht wird?
(EDIT: Sollte eigentlich automatisch auf "virtual" gesetzt werden...?)

Zitat von: frank am 30 September 2021, 10:18:22
hminfo configcheck findet weiterhin keinen fehler, wenn kein attribut gesetzt ist.
das war damals der grund das attribut mit none zu setzen.
HMinfo hatte ich bisher erst mal ausgeblendet. Letztlich hatte das auf die zugrundeliegenden Probleme ja keinen Einfluss. Allerdings war mir schon länger suspekt, dass da getConfig-Befehle in größerer Zahl _an immer wieder dieselben Geräte_ rausgegangen sind zwischen "start initial cleanup" und "finish". Den Teil wollte ich eigentlich als nächstes ansehen, aber vermutlich ist die Initialisierung der "VIRTUAL" wichtiger?
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

ZitatWas mir aber auffällt: der vtc hat keinen subType (mehr?).
doch, das hauptdevice vom vtc hat attr subType.
auch haben device und channel jeweils {role}{vrt}

im prinzip wird nur zu "verabredeten" zeiten periodisch an die vd gefunkt (valvePos/keepalive).
direkt beim restart wird aber sofort ein keepalive rausgehauen, unabhängig vom richtigen zeitpunkt.
eigentlich hat mich das schon immer gestört, aber scheinbar wichtig, damit der autostart erstmal anläuft.
erst die weiteren messages erfolgen wieder zu den berechneten zeitpunkten.


Zitatvermutlich ist die Initialisierung der "VIRTUAL" wichtiger?
das wichtigste für mich wäre der autostart der vtc, damit die ventile nach restart nicht grundsätzlich einschlafen.
denn sonst ist die heizung 90min aus, oder ich renne durchs haus und muss alles manuell wieder starten.

über ein verzögertes, automatisches senden von valvePos über mein INITIALIZED-notify springt zwar das automatische senden der keepalive wieder an, aber scheinbar stimmen dann die sendezeitpunkte nicht, da bisher immer alle vd einschlafen.
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

Gefährlich bzw. unklar, was damit an Nebenwirkungen verbunden ist, aber testweise wäre das Abfangen des Kommands in der Initialisierungsphase deaktiviert, wenn man #5059 so ändert:
  if(!defined $hash->{helper}{cmds}{cmdLst}{$cmd} && defined $hash->{helper}{cmds}{cmdLst}{cmdKey}) { ### unknown - return the commandlist if initialisation is done
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

wenn, dann meinst du wohl eher
  if(!defined $hash->{helper}{cmds}{cmdLst}{$cmd} && defined $hash->{helper}{cmds}{cmdKey}) { ### unknown - return the commandlist if initialisation is done

mal schauen...
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

Ups, klar...

Wenn ich das richtig überblicke, sollte man dann ggf. nur im "else"-Fall (ganz unten...) auch noch unterscheiden, ob der betreffende Hash defined ist oder nicht und dann während der Initialisierung für einen unbekannten command eine etwas andere Rückmeldung geben.
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

Beta-User

Nachtrag zu:
Zitat von: frank am 28 September 2021, 16:49:23
ich hätte auch ohne deine version gestern ein attribut param setzen können. es gab aber eine falsche voreinstellung mit falscher fester argument liste.
Beim Rumtesten damit ist mir aufgefallen, dass mal wieder "Voodoo" im Spiel ist und die "falsche argument liste" eben nicht fest ist, sondern mit jedem Neustart anders auf einen festen Wert eingestellt wird.

"Meine Lieblingslösung" gegen Voodoo ist mal wieder sort, hier in doppelter Ausführung ab #1394
    $hash->{AttrList} = join(" ",sort #Beta-User: double sorting in map and noDup seems to bind empty preselection for param to VIRTUAL channel (textfield)
                                 map{my ($foo) = sort keys %{$hash->{ModulAttr}{$_}}; # use first option
                                       my $val = $hash->{AttrX}{$foo}{$_};
                                       $_.($val ? ':'.$val                         # add colon
                                                : '')
                                      }   
                                 CUL_HM_noDup(sort keys %{$hash->{ModulAttr}})         # each attr just once
                             );

Damit ergab sich beim Testen jedenfalls immer ein leeres Eingabefeld. Auch hier kann ich unerwünschte Nebenwirkungen mal wieder nicht ausschließen, glaube aber, dass "sort" besser ist wie Hash-Voodoo....

Komisch ist aber, dass sich das Setzen des param-Attributs zwar auswirkt, man aber keinen Seitenrefresh und damit keine Rückmeldung bekommt - das ist aber scheinbar generell das Verhalten von CUL_HM und nicht spezifisch für dieses eine (lange nichts mehr an meinen Geräten geändert, jedenfalls nicht via Detail-View...)
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

dies ist grosser murks:
if(!defined $hash->{helper}{cmds}{cmdLst}{$cmd} && defined $hash->{helper}{cmds}{cmdKey}) { ### unknown - return the commandlist if initialisation is done

nur 1 von 6 ventilen hat es geschaft.
zu beginn ein paar
set VentilControler.Bad_Btn1 valvePos 22 : virtual TC support one VD only. Correct number of peers

ausserdem gibt es am laufenden meter ohne ende ständig warnings mit unterschiedlichen zeilen:
PERL WARNING: Use of uninitialized value $paraOpts in substitution (s///) at ./FHEM/10_CUL_HM.pm line 5140.

diverse getconfigs, statusrequest für andere devices sind wohl auch betroffen.
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

 :( Hmm, dann legen wir diese Idee mal besser zur Seite...

Wo kommt eigentlich die "Salve" vor "initial cleanup" her:
Zitat von: frank am 30 September 2021, 10:27:39
2021.09.29 20:47:50.868 3: set VentilControler.Bad_Btn1 valvePos 32 : Unknown argument valvePos, choose one of press getRegRaw regSet clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all regBulk peerBulk peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.AZ.West_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1 postEvent:slider,0,1,255 getConfig:noArg peerChan
2021.09.29 20:47:51.022 3: set VentilControler.Kueche_Btn1 valvePos 91 : Unknown argument valvePos, choose one of press getRegRaw regSet clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.AZ.West_Btn1,VentilControler.Bad_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1 postEvent:slider,0,1,255 regBulk peerBulk getConfig:noArg peerChan
2021.09.29 20:47:51.083 3: set VentilControler.WZ_Btn1 valvePos 0 : Unknown argument valvePos, choose one of clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all regSet press getRegRaw getConfig:noArg peerChan regBulk peerBulk peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.AZ.West_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1 postEvent:slider,0,1,255
2021.09.29 20:47:51.122 3: set VentilControler.AZ.Nord_Btn1 valvePos 0 : Unknown argument valvePos, choose one of regSet clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all press getRegRaw getConfig:noArg peerChan regBulk peerBulk peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.West_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1 postEvent:slider,0,1,255
2021.09.29 20:47:51.162 1: CUL_HM start inital cleanup
2021.09.29 20:47:56.055 1: CUL_HM finished initial cleanup

Ist das "on board" von CUL_HM oder ein "initialized"-notify (oä.)? Wenn ja: könnte man da einen (kurzen) Timer davor setzen, dass erst initial cleanup durchlaufen kann und die Peers etc. ausgewertet sind?
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

guter hinweis... , das habe ich völlig verdrängt und dann falsch "eingeordnet". zu viele baustellen gleichzeitig.  :)

das muss aus meinem at kommen, dass die hzg regelung alle 60s prüft und ggf ändert. deshalb auch nur immer 4 von 6. diese meldungen kommen aber erst mit aktueller cul_hm.

das bedeutet aber, dass der vtc start in cul_hm_updateconfig doch gar nicht zündet, wovon ich fälschlicherweise ausgegangen bin.

da müssen wohl doch mal ein paar logs in den code.

eigentlich müsste cul_hm ein "homematic_ready" event erzeugen. scheinbar ist global:initialized jetzt viel zu früh.
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

Boa, alles sehr abstrakt...

Das mit dem CUL_HM:ready-trigger halte ich für eine gute Idee, kann eigentlich nicht schaden, das zusammen mit dem Log-Eintrag für "initial cleanup" rauszuhauen.

Was das at angeht, müßte ggf. ein Hash-Element geprüft werden, in dem steht, ob CUL_HM jetzt "initdone" ist (oder .AttrList vorhanden?). Andererseits sind die Log-Einträge ja gar nicht das Problem, ist halt unschön. Generell ist aber zum einen die Frage, ob das initiale Senden des letzten Werts wirklich nicht implementiert ist (ich meine schon, kann nur sein, dass es (Voodoo?) nicht funktioniert?)? Zum anderen: Wenn man einen Timer braucht (?), wäre es dann nicht besser, den auch direkt in CUL_HM mit reinzucoden und nur (via param-Attribut?) die Timerdauer jeweils einstellbar zu machen? (Schon klar, dass das noch eine Sonderlocke ist, aber irgendwie, na ja... weiß auch nicht...).

Zuletzt&hier OT: Da gibt es eine Variable in main:: ($evtDly). die ist mir hochgradig suspekt, auch wenn irgendwo die Entschuldigung steht, dass das zu verwalten doch eigentlich fhem.pl besser übernehmen sollte.
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

Beta-User

Nochmal zurück zum Startup-Mechanismus in CUL_HM: Das/die at feuern vor dem CUL_HM_updateConfig(), weil da initial gar kein Timer gesetzt wird, sondern der erst in der NotifyFn erzeugt wird.

Könnte man dadurch bereinigen, dass man es in DefFn mit reinnimmt, was aber dann (so man nicht noch eine Abfrage reinbastelt) viele Timer erzeugt (die dann aber sowieso alle wieder abgeräumt würden, sobald der erste CUL_HM_updateConfig() aufruft). Hab' mal testweise nach "Initialize" gedoppelt, das funktioniert auch und sollte dann genau einen (zusätzlichen) Timer erzeugen (ggf. zu dem aus der NotifyFn).
Das hat nur zwei Probleme: a) ist es vermutlich nicht "rereadcfg-fest" (was mir persönlich aber herzlich gleichgültig wäre) und b) bleibt es (zumindest auf den ersten Blick) empfindlich gegen eine "falsche Reihung" in der cfg. Evtl. kann man da noch tricksen, indem man nicht "1" als Zeit mitgibt, sondern "0.1", aber "na ja"...
Meinungen dazu?



Weiter ist in (ca.) #427 eigentlich eine Timer-Funktion für den vdCrtl eingebaut. Die Frage wäre also: Funktioniert die nicht, oder warum braucht man ein at?

Als erstes fällt auf, dass da kein nummerischer Wert als default hinterlegt ist. Kann natürlich sein, dass das sinnvoll ist, aber wenn es nur nummerische (Prozent-) Werte geben darf, würde ich eher vorschlagen, gleich ReadingsNum zu verwenden und "halbe Kraft voraus" als default zu hinterlegen?
if ($hash->{helper}{fkt} eq "vdCtrl"){
          my $d = ReadingsNum($name,'valvePosTC','50');
          CUL_HM_Set($hash,$name,"valvePos",$d);
          CUL_HM_UpdtReadSingle($hash,"valveCtrl","restart",1) if ($d =~ m/^[-+]?[0-9]+\.?[0-9]*$/);
          RemoveInternalTimer("valvePos:$vId");
          RemoveInternalTimer("valveTmr:$vId");
          InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);

Meinungen?


Betr. "reg not found" (https://forum.fhem.de/index.php/topic,123139.0.html):
Das bezieht sich auf die offizielle Version und das Problem ist auch nicht durch die Sortiererei "gegessen"?
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

Zitat von: Beta-User am 01 Oktober 2021, 12:08:03
Weiter ist in (ca.) #427 eigentlich eine Timer-Funktion für den vdCrtl eingebaut. Die Frage wäre also: Funktioniert die nicht, oder warum braucht man ein at?
mein at ist für die regelung meiner therme und in den räumen für die einstellung der ventile, die ich über fhem/pid20 einstelle. damit berechne ich die nötigen ventileinstellungen.
der timer in fhem sorgt dafür, dass regelmässig und nur zu ganz bestimmten zeiten die messages mit der valvepos (keepalive) an den vd gesendet werden. empfängt der vd 6x nichts, schläft der vd 60min ein.
so ähnlich wie die virtuellen tempfühler für den rt, aber etwas komplizierter.

die logmeldungen sind aber erstmal völlig egal, vielleicht sind sie wieder weg, wenn der autostart wieder funktioniert.

ZitatAls erstes fällt auf, dass da kein nummerischer Wert als default hinterlegt ist. Kann natürlich sein, dass das sinnvoll ist, aber wenn es nur nummerische (Prozent-) Werte geben darf, würde ich eher vorschlagen, gleich ReadingsNum zu verwenden und "halbe Kraft voraus" als default zu hinterlegen?
if ($hash->{helper}{fkt} eq "vdCtrl"){
          my $d = ReadingsNum($name,'valvePosTC','50');
          CUL_HM_Set($hash,$name,"valvePos",$d);
          CUL_HM_UpdtReadSingle($hash,"valveCtrl","restart",1) if ($d =~ m/^[-+]?[0-9]+\.?[0-9]*$/);
          RemoveInternalTimer("valvePos:$vId");
          RemoveInternalTimer("valveTmr:$vId");
          InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);

zur zeit habe ich den verdacht, dass diese stelle nicht erreicht wird, weil irgendwelche bedingungen noch nicht gesetzt sind.


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

Zitat von: frank am 01 Oktober 2021, 15:26:06
mein at ist für die regelung meiner therme und in den räumen für die einstellung der ventile, die ich über fhem/pid20 einstelle. damit berechne ich die nötigen ventileinstellungen.
Damit ist jedenfalls mAn. die Umstellung auf eine rein timerbasierte Initialisierung zwingend, und evtl. sollten wir versuchen, die CUL_HM-Initialisierung im Timer-Array ganz nach vorne zu mogeln. Deine Lösung ist m.E. ein typischer Anwendungsfall...

Zitat
der timer in fhem sorgt dafür, dass regelmässig und nur zu ganz bestimmten zeiten die messages mit der valvepos (keepalive) an den vd gesendet werden. empfängt der vd 6x nichts, schläft der vd 60min ein.
so ähnlich wie die virtuellen tempfühler für den rt, aber etwas komplizierter.
Von daher dürfte es wichtig sein, dieses System so schnell wie möglich nach einem FHEM-Start wieder zum Einschwingen zu bringen und nicht erst lange zu warten.

Zitat
die logmeldungen sind aber erstmal völlig egal, vielleicht sind sie wieder weg, wenn der autostart wieder funktioniert.
Nach meinem Verständnis wären die Einträge an sich wirklich egal ;) . Das dahinterliegende Problem dürfte nur sein, dass der Code so geschrieben und kommentiert ist, dass das eigentlich nicht passieren sollte. Ergo gehe ich davon aus, dass es wichtig ist, erst mal zu verhindern, dass der Code zur falschen Zeit (schon) aufgerufen wird, weil dadurch uU. inkonsistente Systemzustände vermieden werden (deren Symptome wir hier ggf. diskutieren?).

Zitat
zur zeit habe ich den verdacht, dass diese stelle nicht erreicht wird, weil irgendwelche bedingungen noch nicht gesetzt sind.
Dann wäre das m.E. einer der nächsten Punkte rauszufinden, woran es dafür genau hakt. Es könnte der "falsche" nicht-nummerische default gewesen sein (iVm. einem Aufruf vor $init_done).

Die Bausteinchen sind hier ja verteilt, ich würde nur gerne das ganze erst mal in Ruhe auf mein Echtsystem loslassen, bevor es wieder einen konsolidierten Stand zum Testen gibt, das kann uU. etwas dauern.

[OT]
Mit (oder wegen?) der "großen Schwester" habe ich im Browser (nur noch*) bei CUL_HM-Geräten ständig Timeout-Meldungen und offenbar refreshes der Detail-View-Seiten. Bisher war ich sowieso selten veranlaßt, die aufzurufen, aber derzeit... Irgendeinen Tipp auf die Schnelle und ins Blaue?
* = das war auch bei HMinfo so, das ist aber dort seit dem saveConfig anscheinend weg?
[/OT]
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

ich habe jetzt 3 logmeldungen eingebaut.

    elsif ($st eq "virtual" ) {#setup virtuals
  Log(1,"----- test1 ----- -> n:$name");
      $hash->{helper}{role}{vrt} = 1;
      if (   $hash->{helper}{fkt}
          && $hash->{helper}{fkt} =~ m/^(vdCtrl|virtThSens)$/){
    Log(1,"----- test2 ----- -> n:$name");
        my $vId = substr($id."01",0,8);
        $hash->{helper}{vd}{msgRed}= 0 if(!defined $hash->{helper}{vd}{msgRed});
        if(!defined $hash->{helper}{vd}{next}){
          ($hash->{helper}{vd}{msgCnt},$hash->{helper}{vd}{next}) =
                    split(";",ReadingsVal($name,".next","0;".gettimeofday()));
          $hash->{helper}{vd}{idl} = 0;
          $hash->{helper}{vd}{idh} = 0;
        }
        if ($hash->{helper}{fkt} eq "vdCtrl"){
      Log(1,"----- test3 ----- -> n:$name");
          my $d = ReadingsVal($name,"valvePosTC","");
          $d =~ s/ %//;
          CUL_HM_Set($hash,$name,"valvePos",$d);
          CUL_HM_UpdtReadSingle($hash,"valveCtrl","restart",1) if ($d =~ m/^[-+]?[0-9]+\.?[0-9]*$/);
          RemoveInternalTimer("valvePos:$vId");
          RemoveInternalTimer("valveTmr:$vId");
          InternalTimer($hash->{helper}{vd}{next},"CUL_HM_valvePosUpdt","valvePos:$vId",0);
        }
        elsif($hash->{helper}{fkt} eq "virtThSens"){
          my $d = ReadingsVal($name,"temperature","");
          CUL_HM_Set($hash,$name,"virtTemp",$d) if($d =~ m/^[-+]?[0-9]+\.?[0-9]*$/);
          $d = ReadingsVal($name,"humidity","");
          CUL_HM_Set($hash,$name,"virtHum" ,$d) if($d =~ m/^[-+]?[0-9]+\.?[0-9]*$/);
        }

        # delete - virtuals dont have regs
        delete $attr{$name}{$_} foreach ("autoReadReg","actCycle","actStatus","burstAccess","serialNr");
      }
    }


2021.10.01 16:39:09.216 1: CUL_HM start inital cleanup
2021.10.01 16:39:12.174 1: ----- test1 ----- -> n:SDTeam
2021.10.01 16:39:12.215 1: ----- test1 ----- -> n:SDTeam_Btn1
2021.10.01 16:39:13.297 1: ----- test1 ----- -> n:VentilControler.AZ.Nord
2021.10.01 16:39:13.321 1: ----- test1 ----- -> n:VentilControler.AZ.Nord_Btn1
2021.10.01 16:39:13.326 1: ----- test1 ----- -> n:VentilControler.AZ.West
2021.10.01 16:39:13.370 1: ----- test1 ----- -> n:VentilControler.AZ.West_Btn1
2021.10.01 16:39:13.375 1: ----- test1 ----- -> n:VentilControler.Bad
2021.10.01 16:39:13.399 1: ----- test1 ----- -> n:VentilControler.Bad_Btn1
2021.10.01 16:39:13.405 1: ----- test1 ----- -> n:VentilControler.Kueche
2021.10.01 16:39:13.428 1: ----- test1 ----- -> n:VentilControler.Kueche_Btn1
2021.10.01 16:39:13.434 1: ----- test1 ----- -> n:VentilControler.SZ
2021.10.01 16:39:13.477 1: ----- test1 ----- -> n:VentilControler.SZ_Btn1
2021.10.01 16:39:13.483 1: ----- test1 ----- -> n:VentilControler.WZ
2021.10.01 16:39:13.506 1: ----- test1 ----- -> n:VentilControler.WZ_Btn1
2021.10.01 16:39:13.784 1: ----- test1 ----- -> n:rssi_hmuart
2021.10.01 16:39:13.826 1: ----- test1 ----- -> n:rssi_hmuart_Btn1
2021.10.01 16:39:13.971 1: ----- test1 ----- -> n:virtAktorAlarmOff
2021.10.01 16:39:14.014 1: ----- test1 ----- -> n:virtAktorAlarmOff_Btn1
2021.10.01 16:39:14.043 1: ----- test1 ----- -> n:virt_vd
2021.10.01 16:39:14.110 1: ----- test1 ----- -> n:virt_vd_Btn1
2021.10.01 16:39:14.114 1: CUL_HM finished initial cleanup


danach fehlt zu diesem zeitpunkt mindestens {helper}{fkt} in den 6 entities VentilControler.*_Btn1 (vtc)
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

Demnach wären zwingend die Peers in diesem Fall vorab auszulesen?

Könnte so klappen (unsicher, was 1 oder 0 angeht):
elsif ($st eq "virtual" ) {#setup virtuals
      $hash->{helper}{role}{vrt} = 1;
      CUL_HM_ID2PeerList($name,'peerUnread',1) if !defined $defs{$name}{helper}{peerIDsH};
      if (   $hash->{helper}{fkt}
          && $hash->{helper}{fkt} =~ m/^(vdCtrl|virtThSens)$/){
        my $vId = substr($id."01",0,8);
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

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

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

ZitatMal ohne defined- Bedingung?
hat nur frust gebracht, da die peers dann weg waren.
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

 :o Muss ich mir ansehen, aber eigentlich dürfte das nur der Fall sein, wenn der Code vor $init_done ausgeführt wird (weil dann die Attribute nicht komplett eingelesen sein müssen).

Irgendwas hängt da noch schräg...
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

du hattest doch mal virtuelle tempsensoren für die rt, oder?
die sollten doch ähnliche probleme haben und ihren if block nicht erreichen:
        elsif($hash->{helper}{fkt} eq "virtThSens"){
          my $d = ReadingsVal($name,"temperature","");
          CUL_HM_Set($hash,$name,"virtTemp",$d) if($d =~ m/^[-+]?[0-9]+\.?[0-9]*$/);
          $d = ReadingsVal($name,"humidity","");
          CUL_HM_Set($hash,$name,"virtHum" ,$d) if($d =~ m/^[-+]?[0-9]+\.?[0-9]*$/);
        }
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

Zitat von: frank am 30 September 2021, 18:01:23
zu viele baustellen gleichzeitig.  :)
A propos: Hattest du bei dem Experiment vorher HMinfo angefasst? Das hatte ich nämlich gedanklich als "abgehakt" behandelt, aber leider evtl. nicht deutlich genug geäußert:

Zitat von: Beta-User am 01 Oktober 2021, 14:22:30
Für's erste wäre dann wohl ein hotfix, $init_done mit abzufragen?
if (   !$evtDly && $init_done           #noansi: first Readings must be set, helps also not to disturb others

Wenn nicht, ist es einigermaßen wahrscheinlich, dass irgendwas (mangels Kenntnis der Attribut-Werte) Amok läuft,( weil verfrüht der Teil aus CUL_HM rückwärts aufgerufen wird, die 700+ Zeilen im Log)...

M.E. ist es nach etwas Nachdenken über den Punkt eigentlich eine Art "Muss", dass ein "optionales Hilfsmodul" wie HMinfo nicht die Art und Weise beeinflussen darf, wie sich "Münchhausen aus dem Sumpf zieht".

Muss das aber vermutlich wirklich alles im Zusammenhang auch selbst nochmal im Echtsystem laufen lassen, sonst ist es zu unübersichtlich.

PS: Mit den Versionen von gestern hatte ich im Echtsystem jedenfalls keine offensichtlichen Probleme mit meinen virtuellen entities: Einer der virtuellen Tempsensoren ist weg, da blinkt der RT. Das ist aber definitiv ok, weil der echte Sensor in der Tat keine aktuellen Daten liefert, die anderen scheinen online zu sein (sch... ZigBee (hier: Xiaomi), komischerweise sind die BT-Varianten einfach zuverlässigere Datenlieferanten...)
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

Beta-User

Guten Morgen,

das mit dem Weglassen der Abfrage ist in den gesammelten Werken in https://forum.fhem.de/index.php/topic,123198.msg1177351.html#msg1177351 immer noch so:
Zitat von: frank am 01 Oktober 2021, 18:35:21
hat nur frust gebracht, da die peers dann weg waren.

Daher ist die Abfrage da weiter drin. Meine virtuellen Temp-Sensoren werden aber auch nicht in der Initialisierung mit angefahren/geloggt, aber sowohl Werte wie Peers sind da; müßte daher ok sein.

fyi: Alle Funktionalität aus HMinfo ist jetzt "mit Gewalt" weg von Serverstart verschoben (mind. 30 Sek. müssen um sein, bevor die configCheck -f rausgehen).

Kann dieses WE nicht mehr viel machen, vielleicht findest du ja noch einen Dreh, wie man den virtuellen subType in der Initialisierung beibiegt, wes Geistes Kind sie sind...?
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

hallo beta-user,

jetzt hast du wohl wieder etwas voodoo eingebaut.  8)

ZitatMeine virtuellen Temp-Sensoren werden aber auch nicht in der Initialisierung mit angefahren/geloggt, aber sowohl Werte wie Peers sind da; müßte daher ok sein.
genauso bei meinen vtc.

2021.10.02 16:57:43.524 1: CUL_HM start inital cleanup
2021.10.02 16:57:48.395 1: CUL_HM finished initial cleanup
2021.10.02 16:57:49.085 1: events: Can't open ./FHEM/holiday/events.holiday: No such file or directory
2021.10.02 16:57:50.238 0: HourCounter Pumpe.Garten.Brunnen.Cnt Run.598 first run done countsOverall:1579
2021.10.02 16:57:50.272 0: HourCounter hc_system_attak Run.598 first run done countsOverall:331
2021.10.02 16:57:50.584 3: CUL_HM set Thermostat.OZ_Climate statusRequest noArg
2021.10.02 16:57:50.720 1: HMLAN_Parse: hmlan1 new condition ok
2021.10.02 16:57:51.052 0: HMLAN_Parse: hmlan1 R:EB3B3B3   stat:0000 t:4A5385B5 d:FF r:FFD5     m:C2 A258 B3B3B3 193A9A 03DC
2021.10.02 16:57:51.056 0: HMLAN_Parse: hmlan1 R:EB1B1B1   stat:0000 t:4A538653 d:FF r:FFD5     m:48 A258 B1B1B1 1BFC52 03FD
2021.10.02 16:57:51.059 0: HMLAN_Parse: hmlan1 R:EB4B4B4   stat:0000 t:4A5386ED d:FF r:FFD5     m:86 A258 B4B4B4 1CE9F5 0300
2021.10.02 16:57:51.063 0: HMLAN_Parse: hmlan1 R:EB2B2B2   stat:0000 t:4A538751 d:FF r:FFD5     m:F5 A258 B2B2B2 1DFC2F 0300
2021.10.02 16:57:51.067 0: HMLAN_Parse: hmlan1 R:EB5B5B5   stat:0000 t:4A53880A d:FF r:FFD5     m:62 A258 B5B5B5 1C4E25 0300
2021.10.02 16:57:51.071 0: HMLAN_Parse: hmlan1 R:EB6B6B6   stat:0000 t:4A53886C d:FF r:FFD5     m:17 A258 B6B6B6 1F91AA 0300


warum auch immer werden nun knapp 3s nach initial cleanup trotzdem die ersten valvePos msgs rausgehauen und in der folge auch weiterhin regelmässig gesendet. vielleicht durch mein at, denn die fehlermeldungen wegen ungültigem cmd valvePos sind auch nicht mehr zu sehen. erstmal auch egal, prima so.

das internal .AttrList im channel vom vtc existiert weiterhin nicht, sodass ich das attr param msgReduce:2 weiterhin nach restart erneut setzen muss, damit es wirkung hat. das lässt sich aber erstmal über notify lösen.
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

Schade nur, dass ich das gar nicht so dolle finde. Gut, es ist besser wie nichts, aber eben Voodoo... (Und nicht so, wie es gedacht gewesen zu sein scheint.)
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

Beta-User

Kurze Zwischenmeldung - habe mir den Startvorgang jetzt nochmal angeschaut, und bin jetzt irgendwie ratlos:

Wenn HMinfo definiert ist, scheint das eine eigene Startlogik zu fahren, und dann scheint es auch richtig zu sein, dass die configCheck -f-Anfragen nicht mehr abgefeuert werden, schon gleich in der Menge.

Bin noch unsicher, ob  es sinnvoll wäre, die configChecks für die Hauptkanäle beim "INITIALIZED"-Event durchzuführen. Beim Versuch, das reinzucoden habe ich dann aber festgestellt, dass jedenfalls das INITIALIZED-Event in der NotifyFn von CUL_HM gar nicht dazu führt, dass der Zweig überhaupt ausgeführt wird. Ergo muss der initDone-Marker für CUL_HM schon aktiviert worden sein. Nur: Wo...?!?

Jetzt bin ich irgendwie grade lost, wie das eigentlich gedacht ist.
Meine aktuellen - möglicherweise wieder völlig falschen - Gedanken:
Wenn HMinfo vorhanden ist, muss das bevorzugt benachrichtigt werden, und dann erst seine INIT-Funktion ausführen (im Moment: wohl früher/zu früh im Rahmen von DefFn?), und dann erst CUL_HM, das dann eigentlich nur noch sicherstellen muss, dass für die virtuellen Kanäle die Einstellungen passen (was derzeit keinen Ort zu haben scheint).
Defür müsste aber die Notify-Priorität von HMinfo erhöht werden, sonst kommt "50-C" vor "50-H". Oder man ruft die INIT-Fn aus CUL_HM heraus auf?

(Das muss niemand verstehen, ist nur, damit ich es irgendwo mal festgehalten habe).
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

ZitatDas muss niemand verstehen
den zusammenhang von hminfo und vtc verstehe ich wirklich nicht.

durch hminfo werden zusätzliche funktionen bereitgestellt. aber selbstständig unternimmt es eigentlich nichts, ausser das attr autoupdate ist gesetzt.

alle basis funktionen von cul_hm sind doch hoffentlich unabhängig von hminfo. also auch der restart. 
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

Hmm, irgendwie sind die Funktionsaufrufe teils so ineinander verschachtelt, dass ich ernsthafte Schwierigkeiten habe nachzuvollziehen, was wann aus welchem Anlass und mit welchem Ziel passiert.

Ich hab's jetzt nochmal versucht, auf einen für mich verständlichen Level runterzubrechen ::) . Danach würde ich mal folgenden "Soll-Ablauf" in den Raum werfen:

1. FHEM startet und liest alle Attribute und Readings ein. Bevor $init_done ist, werden v.a. auch die Attribute in den CUL_HM-entities nicht ausgewertet
2. Bevor irgendwas anderes mit den CUL_HM-Instanzen versucht zu arbeiten, müssen die fertig konfiguriert werden. Das kann unterstützt werden durch HMinfo, (v.a. wenn autoupdate gesetzt ist), diese Unterstützung ist aber kein Muss. Nur wenn eingesetzt, sollte HMinfo vor CUL_HM fertig sein.
Da die virtuellen entities von den realen abhängig sind, sollte man sicherheitshalber erst den configCheck über die realen laufen lassen, und dann erst danach die davon ggf. abhängigen (ist evtl. "too much").
3. Erst, wenn das durch ist, dürfen Timer, andere Eventhandler, usw. dann loslegen.

Anbei jetzt doch der Versuch, das event-basiert in den Griff zu bekommen, und zwar erst HMinfo, dann CUL_HM, dann whatever (was halt nicht mit Gewalt nach vorne gedrängt wird). Bitte ggf. das Loggen in msec aktivieren, sonst sieht das uU. von der Reihenfolge her komisch aus.
Ob das irgendwie weiterbringt im Hinblick auf die noch offenen Punkte kann ich aber im Moment nicht sagen...
Ein diff sollte die Stellschrauben offenbaren, damit du ggf. die Reihenfolge auch umdrehen kannst.
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

ZitatHmm, irgendwie sind die Funktionsaufrufe teils so ineinander verschachtelt, dass ich ernsthafte Schwierigkeiten habe nachzuvollziehen, was wann aus welchem Anlass und mit welchem Ziel passiert.
nach meiner logik, ohne in den code zu schauen, muss hminfo so schnell wie möglich starten, damit die zusätzlichen "komfort" funktionen rechtzeitig existieren, punkt.

cul_hm muss natürlich selber wissen, wann der aufruf einer hminfo funktion sinn macht, logisch.
diese aufrufe können und dürfen aber eben nur zusätzliche infos liefern, da cul_hm auch ohne hminfo funktionieren soll.

ich habe zb den verdacht, dass die vielen doppelten "configCheck -f" aufrufe existieren, weil martin nicht den einen ultimativen zeitpunkt ermilttelt, wann alle voraussetzungen für einen endgültigen configcheck erledigt sind, sondern jeweils erneut nach diversen aktionen, die jeweils eine auswirkung auf configcheck haben könnten.

ein reading cfgState soll ja auch im normalen betrieb, nicht nur nach restart, zu jeder zeit immer das aktuelle configcheck ergebnis wiederspiegeln. diverse aktionen müssen also immer einen configcheck triggern.

ausserdem würde ich keine wette eingehen, dass ein "configcheck -f" in fhem log auch wirklich grundsätzlich zur ausführung kommt.  :)
zumindestens statusrequest beim restart zeigt in fhem.log auch diverse fake einträge an.

ZitatDa die virtuellen entities von den realen abhängig sind,
das verstehe ich nicht.
virtuelle geràte müssen doch auch ohne reale geräte existieren können. ob es immer sinn macht ist doch erstmal egal.
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

Zitat von: frank am 04 Oktober 2021, 14:50:22
nach meiner logik, ohne in den code zu schauen, muss hminfo so schnell wie möglich starten, damit die zusätzlichen "komfort" funktionen rechtzeitig existieren, punkt.
Da sind wir uns einig. Für mich ist nur offen, ob erst CUL_HM fertig werden muss oder HMinfo. Hab's jetzt mal mit Prio HMinfo gelöst, aber es ist einfach, das umzudrehen ($hash->{NotifyOrderPrefix}).

Zitatcul_hm muss natürlich selber wissen, wann der aufruf einer hminfo funktion sinn macht, logisch.
diese aufrufe können und dürfen aber eben nur zusätzliche infos liefern, da cul_hm auch ohne hminfo funktionieren soll.
So sollte es sein. Mein Problem: eine gewisse Anzahl von verketteten Aufrufen kann ich nachvollziehen. Hier hat das aber teilweise Ausmaße, bei denen ich es aufschreiben müßte und ich hatte den Eindruck, dass es teils zufällig war, in welcher Reihenfolge auch an der Stelle dann was (wiederholt?) aufgerufen wurde.

Jetzt habe ich zumindest mal versucht, den "äußeren Rahmen" so festzuzurren, dass Zufälligkeiten weitestgehend eliminiert sein sollten. Was ich noch nicht weiß: ist es die richtige Reihenfolge...

Zitatich habe zb den verdacht, dass die vielen doppelten "configCheck -f" aufrufe existieren, weil martin nicht den einen ultimativen zeitpunkt ermilttelt, wann alle voraussetzungen für einen endgültigen configcheck erledigt sind, sondern jeweils erneut nach diversen aktionen, die jeweils eine auswirkung auf configcheck haben könnten.
Bei einem Teil bin ich einigermaßen sicher, dass das so nicht gedacht gewesen sein kann. Die denkbare (und definitiv nicht auszuschließende) Alternative ist in der Tat, dass es keine andere Möglichkeit gab, diese häufigen Aufrufe als "Nebenwirkung" zu vermeiden.
Da aber bisher so viel zufällig passiert ist, kann es natürlich sein, dass diese Art impliziter Reparaturversuch teilweise geholfen hat, diese Zufälligkeiten zu kompensieren, und der "sortierte Versuch" jetzt (erst mal!) im Ergebnis schlechter ist. ABER: bisher funktionierte die "sortierte Fassung" (ohne configCheck!) von vorgestern ja besser als die fuzzy-logic-repaired svn-Fassung. Von daher halte ich das Risiko an der Stelle für eher gering.

Zitat
ein reading cfgState soll ja auch im normalen betrieb, nicht nur nach restart, zu jeder zeit immer das aktuelle configcheck ergebnis wiederspiegeln. diverse aktionen müssen also immer einen configcheck triggern.
Klar, und die configChecks sind jetzt ja im laufenden Betrieb auch nicht ausgeschaltet, sondern sie müßten jetzt nur im Startvorgang an einer sehr bestimmten Stelle erfolgen (wenn das jetzt alles funktioniert wie gedacht).

Zitatausserdem würde ich keine wette eingehen, dass ein "configcheck -f" in fhem log auch wirklich grundsätzlich zur ausführung kommt.  :)
zumindestens statusrequest beim restart zeigt in fhem.log auch diverse fake einträge an.
Das ist ein Punkt, über den ich lange gerätselt habe. Tatsächlich hat der Start aber lt. Log mit den 700+ "-f"-Einträgen ziemlich lange gedauert, ohne dass sonst was an erkennbarer Aktion im Log gestanden hätte. Von daher war an der Stelle meine Arbeitshypothese, dass die Aufrufe auf alle Fälle vorkommen müßten, und zwar
- reduziert auf 1x pro Hauptdevice (da sind dann sowieso alle Kanäle mit drin) und
- vor dem Start von irgendwas anderem (deinem at, z.B., oder dem notify, das das hier erzeugt: https://wiki.fhem.de/wiki/HM-Dis-WM55_Funk_Statusanzeige#fhemUser.cfg; das war btw. überhaupt der Anlaß, warum ich mir dann doch nochmal einen Ruck gegeben habe...).

Zitat
das verstehe ich nicht.
virtuelle geràte müssen doch auch ohne reale geräte existieren können. ob es immer sinn macht ist doch erstmal egal.
Das tun sie. Aber nur als Buttons. Um was anderes zu werden, brauchen sie "spezielle" Peers, und - soweit ich das jetzt verstanden habe - anhand des Peer-Typs wird ermittelt, welche Kommandos sie verstehen. Ergo sollte die endgültige Konfiguration einer virturellen entity erst erfolgen, wenn die übrige Hardware "bekannt" ist.

In der svn-Version ist das entweder zu früh oder timer-basiert geschehen, wenn meine Interpretation meiner Logs zutreffend ist.
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

deine aktuelle cul_hm/hminfo kombi von hier hat bezüglich den vtc nicht neues gebracht.

2021.10.04 17:13:44.916 3: CUL_HM set Thermostat.WZ_Climate controlMode central
2021.10.04 17:13:45.606 3: CUL_HM set Thermostat.Bad.OG_Climate controlMode central
2021.10.04 17:13:46.427 3: CUL_HM set Thermostat.Keller_Climate controlMode central
2021.10.04 17:13:46.865 3: CUL_HM set Thermostat.SZ_Climate controlMode central
2021.10.04 17:13:49.646 1: CUL_HM start inital cleanup
2021.10.04 17:13:54.558 1: CUL_HM finished initial cleanup
2021.10.04 17:13:58.738 3: Opening SqueezeBoxServer device 192.168.1.10:9090
2021.10.04 17:14:01.743 1: SqueezeBoxServer: Can't connect to 192.168.1.10:9090: Connection timed out
2021.10.04 17:14:01.761 3: SB_SERVER_Notify(SqueezeBoxServer): DISCONNECTED - STATE: disconnected power: ?
2021.10.04 17:14:01.780 0: HMCCU: Start of RPC server after FHEM initialization in 12 seconds
2021.10.04 17:14:01.799 3: Opening hmuart1 device /dev/ttyAMA0
2021.10.04 17:14:01.801 3: Setting hmuart1 serial parameters to 115200,8,N,1
2021.10.04 17:14:01.805 3: hmuart1 device opened
2021.10.04 17:14:01.952 3: cul433 IT_set: IT09 on
2021.10.04 17:14:02.721 0: Featurelevel: 6
2021.10.04 17:14:02.722 0: Server started with 525 defined entities (fhem.pl:24776/2021-07-19 perl:5.028001 os:linux user:fhem pid:2394)
2021.10.04 17:14:03.475 1: events: Can't open ./FHEM/holiday/events.holiday: No such file or directory
2021.10.04 17:14:04.739 0: HourCounter Pumpe.Garten.Brunnen.Cnt Run.598 first run done countsOverall:1579
2021.10.04 17:14:04.775 0: HourCounter hc_system_attak Run.598 first run done countsOverall:331
2021.10.04 17:14:04.991 1: HMLAN_Parse: hmlan1 new condition ok
2021.10.04 17:14:05.086 3: CUL_HM set Thermostat.OZ_Climate statusRequest noArg
2021.10.04 17:14:05.290 3: CUL_HM set Thermostat.AZ_Climate statusRequest noArg
2021.10.04 17:14:05.399 3: CUL_HM set Thermostat.SZ_Climate statusRequest noArg
2021.10.04 17:14:05.629 0: HMLAN_Parse: hmlan1 R:EB3B3B3   stat:0000 t:54AF75F3 d:FF r:FFD3     m:37 A258 B3B3B3 193A9A 0330
2021.10.04 17:14:05.634 0: HMLAN_Parse: hmlan1 R:EB1B1B1   stat:0000 t:54AF76A2 d:FF r:FFD4     m:BF A258 B1B1B1 1BFC52 03FD
2021.10.04 17:14:05.638 0: HMLAN_Parse: hmlan1 R:EB4B4B4   stat:0000 t:54AF774C d:FF r:FFD4     m:FC A258 B4B4B4 1CE9F5 0300
2021.10.04 17:14:05.642 0: HMLAN_Parse: hmlan1 R:EB2B2B2   stat:0000 t:54AF77B7 d:FF r:FFD4     m:6C A258 B2B2B2 1DFC2F 0300
2021.10.04 17:14:05.646 0: HMLAN_Parse: hmlan1 R:EB5B5B5   stat:0000 t:54AF7868 d:FF r:FFD4     m:D9 A258 B5B5B5 1C4E25 0300
2021.10.04 17:14:05.650 0: HMLAN_Parse: hmlan1 R:EB6B6B6   stat:0000 t:54AF78CF d:FF r:FFD4     m:8E A258 B6B6B6 1F91AA 0300


wegen den fehlenden log einträgen während cleanup, starten die vtc immer noch über voodoo oder mein at.
jetzt allerdings ca 11 sec nach cleanup.
auch bzgl attr param msgReduce nichts neues.

weitere verbesserungen gab es bei den "falschen" configcheck meldungen https://forum.fhem.de/index.php/topic,123152.msg1176825.html#msg1176825.  die punkte 1-3 haben sich nun wohl erledigt, wodurch kein manueller configcheck mehr nötig ist.
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

noch vergessen: zeile 433 erzeugt ja ein event valveCtrl=restart.

nach meinen logs sehe ich das letzte auftreten am 27.09 12:43 uhr. das war vermutlich der restart nach dem update auf martins aktuelle version. siehe erster beitrag hier im thread.
anschliessend habe ich immer mit deinen versionen neu gestartet, die diesen code nicht mehr erreichen.  ;)
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

Kannst du bitte auch mal die Prio drehen ($hash->{NotifyOrderPrefix}-Wert in beiden Modulen einfach vertauschen)? (ich sehe dann zwar weiter keine Einträge von "Stufe 2", aber doppelt genäht...)

Das mit dem entfallenden manuellen configCheck würde ich mal auf das Verschieben in INITIALIZED-NotifyFn schieben.

Ich vermute, dass das mit dem internen vtc-Start noch nie funktioniert hat, aber wenn der Rest jetzt soweit paßt und nicht mehr Voodoo ist, finden wir vielleicht auch noch einen Hebel, um auch das noch zu fixen... (OK, deine Gegenthese betr. die korrekte Ausführung am 27.09. habe ich gesehen).

"11 sec nach cleanup" ist positiv gemeint, oder wie muss ich das deuten?

Zur Erläuterung des Logs: die controlMode-Anweisungen sind Folge der HMinfo-Initialisierung, und was mich etwas wundert, ist dass da zwischen init und finish nix von ActionDetector auftaucht, und auch keine configCheck-Messages (verbose jeweils auf 2, nehme ich an?).

Falls die kommende Stunde nichts gravierendes eintritt, würde ich dazu tendieren, das (mit umgedrehter Prio?) als neuen Komplettpatch in den Ring zu werfen, weil zumindest auch die Punkte 1-3 damit (so oder so?) erledigt sind...?
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

Beta-User

OK, jetzt zündet zwar auch Stufe 2, allerdings habe ich FHEM jetzt so oft gestartet, dass näherungsweise alle meine virtuellen Temp-Sensoren aus dem Tritt geraten zu sein scheinen. Oder liegt es am Code...? Oder an noch fehlenden "auto"-Einstellungen in HMinfo?

Na ja, hier jedenfalls mal (doch wieder erst zum Testen) der entsprechende Code - dieses Mal ist erst CUL_HM mit der Initialisierung fertig...

EDIT: nachdem sich meine Thermostate über Nacht beruhigt haben: https://forum.fhem.de/index.php/topic,123198.msg1177945.html#msg1177945
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

mit den neuen versionen zündet stufe2 auch bei mir und alle ventile haben erneut den restart überlebt.  8)
attr param msgreduce muss weiterhin manuell erfolgen.

für dich nun auch mal das log mit verbose=3 für hminfo und actiondetector:

2021.10.05 09:58:46.321 1: CUL_HM start inital cleanup
2021.10.05 09:58:46.471 3: Device DimUP01 added to ActionDetector with 024:00 time
2021.10.05 09:58:46.506 3: Device Fenster.Bad added to ActionDetector with 028:00 time
2021.10.05 09:58:46.541 3: Device SD.AZ added to ActionDetector with 099:00 time
2021.10.05 09:58:46.576 3: Device SD.SZ added to ActionDetector with 099:00 time
2021.10.05 09:58:46.610 3: Device SD.WZ added to ActionDetector with 099:00 time
2021.10.05 09:58:46.861 3: Device SwitchES01 added to ActionDetector with 000:15 time
2021.10.05 09:58:47.023 3: Device SwitchPBU01 added to ActionDetector with 000:10 time
2021.10.05 09:58:47.060 3: Device SwitchPBU03 added to ActionDetector with 028:00 time
2021.10.05 09:58:47.097 3: Device SwitchPBU05 added to ActionDetector with 024:00 time
2021.10.05 09:58:47.134 3: Device SwitchPBU06 added to ActionDetector with 024:00 time
2021.10.05 09:58:47.170 3: Device SwitchUP01 added to ActionDetector with 024:00 time
2021.10.05 09:58:47.206 3: Device SwitchUP02 added to ActionDetector with 024:00 time
2021.10.05 09:58:47.345 3: Device Thermostat.AZ added to ActionDetector with 000:10 time
2021.10.05 09:58:47.476 3: Device Thermostat.Bad added to ActionDetector with 000:10 time
2021.10.05 09:58:47.606 3: Device Thermostat.Bad.OG added to ActionDetector with 000:10 time
2021.10.05 09:58:47.736 3: Device Thermostat.GZ added to ActionDetector with 000:10 time
2021.10.05 09:58:47.867 3: Device Thermostat.Keller added to ActionDetector with 000:10 time
2021.10.05 09:58:47.997 3: Device Thermostat.Kueche added to ActionDetector with 000:10 time
2021.10.05 09:58:48.128 3: Device Thermostat.OZ added to ActionDetector with 000:10 time
2021.10.05 09:58:48.258 3: Device Thermostat.SZ added to ActionDetector with 000:10 time
2021.10.05 09:58:48.390 3: Device Thermostat.WZ added to ActionDetector with 000:10 time
2021.10.05 09:58:48.426 3: Device Tuer.SZ added to ActionDetector with 028:00 time
2021.10.05 09:58:48.462 3: Device Tuer.WZ.Terrasse added to ActionDetector with 028:00 time
2021.10.05 09:58:48.497 3: Device Ventil.AZ.Nord added to ActionDetector with 001:30 time
2021.10.05 09:58:48.533 3: Device Ventil.AZ.West added to ActionDetector with 001:30 time
2021.10.05 09:58:48.569 3: Device Ventil.Bad added to ActionDetector with 001:30 time
2021.10.05 09:58:48.604 3: Device Ventil.Kueche added to ActionDetector with 001:30 time
2021.10.05 09:58:48.640 3: Device Ventil.SZ added to ActionDetector with 001:30 time
2021.10.05 09:58:48.676 3: Device Ventil.WZ added to ActionDetector with 001:30 time
2021.10.05 09:58:48.875 3: Device Wetter.Sued added to ActionDetector with 000:10 time
2021.10.05 09:58:50.694 1: ----- test2 ----- -> n:VentilControler.AZ.Nord_Btn1
2021.10.05 09:58:50.886 3: set VentilControler.AZ.West_Btn1 valvePos 0 : Unknown argument valvePos, choose one of regSet peerChan clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all press peerBulk regBulk postEvent:slider,0,1,255 getConfig:noArg getRegRaw peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU02_Btn_01,SwitchPBU02_Btn_02,SwitchPBU02_Sw_01,SwitchPBU02_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1
2021.10.05 09:58:50.887 3: n_set_VentilControler.AZ.West return value: Unknown argument valvePos, choose one of regSet peerChan clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all press peerBulk regBulk postEvent:slider,0,1,255 getConfig:noArg getRegRaw peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU02_Btn_01,SwitchPBU02_Btn_02,SwitchPBU02_Sw_01,SwitchPBU02_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1
2021.10.05 09:58:50.994 1: ----- test2 ----- -> n:VentilControler.AZ.West_Btn1
2021.10.05 09:58:51.283 1: ----- test2 ----- -> n:VentilControler.Bad_Btn1
2021.10.05 09:58:51.572 1: ----- test2 ----- -> n:VentilControler.Kueche_Btn1
2021.10.05 09:58:51.862 1: ----- test2 ----- -> n:VentilControler.SZ_Btn1
2021.10.05 09:58:52.158 1: ----- test2 ----- -> n:VentilControler.WZ_Btn1
2021.10.05 09:58:53.080 1: CUL_HM finished initial cleanup
2021.10.05 09:58:53.101 3: HMinfo hminfo get:configCheck :-f,^(ActionDetector|ActionDetector)$
2021.10.05 09:58:53.102 3: HMinfo hminfo get:configCheck :-f,^(DimUP01|DimUP01)$
2021.10.05 09:58:53.102 3: HMinfo hminfo get:configCheck :-f,^(Fenster.Bad|Fenster.Bad)$
2021.10.05 09:58:53.103 3: HMinfo hminfo get:configCheck :-f,^(SD.AZ|SD.AZ)$
2021.10.05 09:58:53.104 3: HMinfo hminfo get:configCheck :-f,^(SD.SZ|SD.SZ)$
2021.10.05 09:58:53.104 3: HMinfo hminfo get:configCheck :-f,^(SD.WZ|SD.WZ)$
2021.10.05 09:58:53.105 3: HMinfo hminfo get:configCheck :-f,^(SwitchES01|SwitchES01_Pwr|SwitchES01_SenF|SwitchES01_SenI|SwitchES01_SenPwr|SwitchES01_SenU|SwitchES01_Sw|SwitchES01)$
2021.10.05 09:58:53.106 3: HMinfo hminfo get:configCheck :-f,^(SwitchPBU01|SwitchPBU01_Btn_01|SwitchPBU01_Btn_02|SwitchPBU01_Sw_01|SwitchPBU01_Sw_02|SwitchPBU01)$
2021.10.05 09:58:53.106 3: HMinfo hminfo get:configCheck :-f,^(SwitchPBU03|SwitchPBU03)$
2021.10.05 09:58:53.107 3: HMinfo hminfo get:configCheck :-f,^(SwitchPBU05|SwitchPBU05)$
2021.10.05 09:58:53.107 3: HMinfo hminfo get:configCheck :-f,^(SwitchPBU06|SwitchPBU06)$
2021.10.05 09:58:53.108 3: HMinfo hminfo get:configCheck :-f,^(SwitchUP01|SwitchUP01)$
2021.10.05 09:58:53.109 3: HMinfo hminfo get:configCheck :-f,^(SwitchUP02|SwitchUP02)$
2021.10.05 09:58:53.109 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.AZ|Thermostat.AZ_Climate|Thermostat.AZ_Weather|Thermostat.AZ_WindowRec|Thermostat.AZ)$
2021.10.05 09:58:53.110 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.Bad|Thermostat.Bad_Climate|Thermostat.Bad_Weather|Thermostat.Bad_WindowRec|Thermostat.Bad)$
2021.10.05 09:58:53.111 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.Bad.OG|Thermostat.Bad.OG_Climate|Thermostat.Bad.OG_Weather|Thermostat.Bad.OG_WindowRec|Thermostat.Bad.OG)$
2021.10.05 09:58:53.111 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.GZ|Thermostat.GZ_Climate|Thermostat.GZ_Weather|Thermostat.GZ_WindowRec|Thermostat.GZ)$
2021.10.05 09:58:53.112 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.Keller|Thermostat.Keller_Climate|Thermostat.Keller_Weather|Thermostat.Keller_WindowRec|Thermostat.Keller)$
2021.10.05 09:58:53.112 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.Kueche|Thermostat.Kueche_Climate|Thermostat.Kueche_Weather|Thermostat.Kueche_WindowRec|Thermostat.Kueche)$
2021.10.05 09:58:53.113 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.OZ|Thermostat.OZ_Climate|Thermostat.OZ_Weather|Thermostat.OZ_WindowRec|Thermostat.OZ)$
2021.10.05 09:58:53.114 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.SZ|Thermostat.SZ_Climate|Thermostat.SZ_Weather|Thermostat.SZ_WindowRec|Thermostat.SZ)$
2021.10.05 09:58:53.114 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.WZ|Thermostat.WZ_Climate|Thermostat.WZ_Weather|Thermostat.WZ_WindowRec|Thermostat.WZ)$
2021.10.05 09:58:53.115 3: HMinfo hminfo get:configCheck :-f,^(Tuer.SZ|Tuer.SZ)$
2021.10.05 09:58:53.116 3: HMinfo hminfo get:configCheck :-f,^(Tuer.WZ.Terrasse|Tuer.WZ.Terrasse)$
2021.10.05 09:58:53.116 3: HMinfo hminfo get:configCheck :-f,^(Ventil.AZ.Nord|Ventil.AZ.Nord)$
2021.10.05 09:58:53.117 3: HMinfo hminfo get:configCheck :-f,^(Ventil.AZ.West|Ventil.AZ.West)$
2021.10.05 09:58:53.117 3: HMinfo hminfo get:configCheck :-f,^(Ventil.Bad|Ventil.Bad)$
2021.10.05 09:58:53.118 3: HMinfo hminfo get:configCheck :-f,^(Ventil.Kueche|Ventil.Kueche)$
2021.10.05 09:58:53.119 3: HMinfo hminfo get:configCheck :-f,^(Ventil.SZ|Ventil.SZ)$
2021.10.05 09:58:53.119 3: HMinfo hminfo get:configCheck :-f,^(Ventil.WZ|Ventil.WZ)$
2021.10.05 09:58:53.120 3: HMinfo hminfo get:configCheck :-f,^(Wetter.Sued|Wetter.Sued)$
2021.10.05 09:58:53.121 3: HMinfo hminfo get:configCheck :-f,^(ccu|ccu_Btn1|ccu_Btn2|ccu_Btn3|ccu_Btn4|ccu_Btn5|ccu)$
2021.10.05 09:58:53.121 3: HMinfo hminfo get:configCheck :-f,^(SDTeam|SDTeam_Btn1|SDTeam)$
2021.10.05 09:58:53.122 3: HMinfo hminfo get:configCheck :-f,^(VentilControler.AZ.Nord|VentilControler.AZ.Nord_Btn1|VentilControler.AZ.Nord)$
2021.10.05 09:58:53.123 3: HMinfo hminfo get:configCheck :-f,^(VentilControler.AZ.West|VentilControler.AZ.West_Btn1|VentilControler.AZ.West)$
2021.10.05 09:58:53.124 3: HMinfo hminfo get:configCheck :-f,^(VentilControler.Bad|VentilControler.Bad_Btn1|VentilControler.Bad)$
2021.10.05 09:58:53.124 3: HMinfo hminfo get:configCheck :-f,^(VentilControler.Kueche|VentilControler.Kueche_Btn1|VentilControler.Kueche)$
2021.10.05 09:58:53.125 3: HMinfo hminfo get:configCheck :-f,^(VentilControler.SZ|VentilControler.SZ_Btn1|VentilControler.SZ)$
2021.10.05 09:58:53.125 3: HMinfo hminfo get:configCheck :-f,^(VentilControler.WZ|VentilControler.WZ_Btn1|VentilControler.WZ)$
2021.10.05 09:58:53.126 3: HMinfo hminfo get:configCheck :-f,^(rssi_hmuart|rssi_hmuart_Btn1|rssi_hmuart)$
2021.10.05 09:58:53.127 3: HMinfo hminfo get:configCheck :-f,^(virtAktorAlarmOff|virtAktorAlarmOff_Btn1|virtAktorAlarmOff)$
2021.10.05 09:58:53.163 3: HMinfo hminfo get:loadConfig :
2021.10.05 09:58:53.632 3: HMinfo hminfo get:configCheck :
2021.10.05 09:58:55.237 3: Opening SqueezeBoxServer device 192.168.1.10:9090
2021.10.05 09:58:58.242 1: SqueezeBoxServer: Can't connect to 192.168.1.10:9090: Connection timed out
2021.10.05 09:58:58.260 3: SB_SERVER_Notify(SqueezeBoxServer): DISCONNECTED - STATE: disconnected power: ?
2021.10.05 09:58:58.278 0: HMCCU: Start of RPC server after FHEM initialization in 12 seconds
2021.10.05 09:58:58.297 3: Opening hmuart1 device /dev/ttyAMA0
2021.10.05 09:58:58.299 3: Setting hmuart1 serial parameters to 115200,8,N,1
2021.10.05 09:58:58.303 3: hmuart1 device opened
2021.10.05 09:58:58.448 3: cul433 IT_set: IT09 on
2021.10.05 09:58:59.191 0: Featurelevel: 6
2021.10.05 09:58:59.192 0: Server started with 524 defined entities (fhem.pl:24776/2021-07-19 perl:5.028001 os:linux user:fhem pid:4136)
2021.10.05 09:58:59.916 1: events: Can't open ./FHEM/holiday/events.holiday: No such file or directory
2021.10.05 09:59:00.754 0: HourCounter Pumpe.Garten.Brunnen.Cnt Run.598 first run done countsOverall:1579
2021.10.05 09:59:00.801 0: HourCounter hc_system_attak Run.598 first run done countsOverall:331
2021.10.05 09:59:01.368 4: CUL_Parse: cul868 A 14 17 805E 266EA5 1ACE1F 000000000000000000000023 -56.5
2021.10.05 09:59:01.511 1: HMLAN_Parse: hmlan1 new condition ok
2021.10.05 09:59:01.560 0: HMLAN_Parse: hmlan1 R:EB5B5B5   stat:0000 t:58477DDA d:FF r:FFD5     m:66 A258 B5B5B5 1C4E25 0300
2021.10.05 09:59:01.563 0: HMLAN_Parse: hmlan1 R:EB6B6B6   stat:0000 t:58477F04 d:FF r:FFD5     m:1A A258 B6B6B6 1F91AA 0300
2021.10.05 09:59:01.567 0: HMLAN_Parse: hmlan1 R:EB3B3B3   stat:0000 t:58478025 d:FF r:FFD5     m:C4 A258 B3B3B3 193A9A 034C
2021.10.05 09:59:01.571 0: HMLAN_Parse: hmlan1 R:EB1B1B1   stat:0000 t:58478147 d:FF r:FFD5     m:4C A258 B1B1B1 1BFC52 03FD
2021.10.05 09:59:01.574 0: HMLAN_Parse: hmlan1 R:EB2B2B2   stat:0000 t:58478268 d:FF r:FFD5     m:F8 A258 B2B2B2 1DFC2F 03FD
2021.10.05 09:59:01.578 0: HMLAN_Parse: hmlan1 R:EB4B4B4   stat:0000 t:58478390 d:FF r:FFD5     m:87 A258 B4B4B4 1CE9F5 03FD




anmerkungen:

1. durch die fehlermeldungen merke ich so langsam wieder, was da so alles läuft.

4/6 ventilen werden über mein at mit valvepos gefüttert. die anderen 2 ventile bekommen ihr valvepos über notify von 2 ventilen aus der ersten gruppe, da in 2 räumen jeweils 2 heizkörper existieren.
durch die reihenfolge der bearbeitung der devices in cul_hm_updateconfig wird hier nun einmal eine fehlermeldung durch dieses notify geworfen.
das notify n_set_VentilControler.AZ.West reagiert auf die neue valvepos von VentilControler.AZ.Nord_Btn1 und will VentilControler.AZ.West_Btn1 mit valvepos versorgen. das wird aber erst anschliessend konfiguriert und hat dadurch noch keinen gültigen cmd valvepos.

beim anderen pärchen (VentilControler.SZ_Btn1,VentilControler.WZ_Btn1) passt die reihenfolge zufällig.

2021.10.05 09:58:50.694 1: ----- test2 ----- -> n:VentilControler.AZ.Nord_Btn1
2021.10.05 09:58:50.886 3: set VentilControler.AZ.West_Btn1 valvePos 0 : Unknown argument valvePos, choose one of regSet peerChan clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all press peerBulk regBulk postEvent:slider,0,1,255 getConfig:noArg getRegRaw peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU02_Btn_01,SwitchPBU02_Btn_02,SwitchPBU02_Sw_01,SwitchPBU02_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1
2021.10.05 09:58:50.887 3: n_set_VentilControler.AZ.West return value: Unknown argument valvePos, choose one of regSet peerChan clear:msgErrors,noArg,readings,trigger,register,oldRegs,rssi,msgEvents,attack,all press peerBulk regBulk postEvent:slider,0,1,255 getConfig:noArg getRegRaw peerSmart:DimPBU01_Dim,DimPBU01_Dim_V_01,DimPBU01_Dim_V_02,DimUP01,Fenster.Bad,SD.AZ,SD.SZ,SD.WZ,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchES01_Sw,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU02_Btn_01,SwitchPBU02_Btn_02,SwitchPBU02_Sw_01,SwitchPBU02_Sw_02,SwitchPBU03,SwitchPBU05,SwitchPBU06,SwitchUP01,SwitchUP02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1
2021.10.05 09:58:50.994 1: ----- test2 ----- -> n:VentilControler.AZ.West_Btn1



2. die configchecks sind jetzt zwar nicht mehr doppelt, aber noch viele sinnlos, denke ich.

wenn ich das richtig überblicke wird für alle devices (inklusive channel) ein "configcheck -f" ausgelöst.
anschliessend nach loadconfig gibt es noch einen "grossen" configcheck auf alles.
wenn es abschliessend den grossen configcheck gibt, sind die anderen vorher eigentlich alle überflüssig, oder?
ausserdem gibt es einen configcheck für den actiondetector, der sowieso sinnlos ist, oder übersehe ich hier etwas.

eigentlich wollte martin den automatischen configcheck so wenig wie nötig aufrufen, da er das system belastet.
daher gibt es "configcheck -f" aufrufe, denn diese checken ja nur einen kleinen teil des systems. über irgendeine logik wusste er beim restart welche devices zu checken sind. es gab also nicht "configcheck -f" für alle devices, sondern immer nur für einen teil aller devices.

etwa 60s nach dem loadconfig gibt es bei mir noch eine salve "configcheck -f" mit "ausgewählten" devices.
das könnte diese gruppe sein. diese gruppe ist scheinbar auch nach jedem restart anders zusammengesetzt.

vermutlich ist auch diese nachträgliche configcheck salve eigentlich überflüssig durch den bereits erfolgten "grossen" configcheck, den martin eigentlich vermeiden wollte, so wie ich es mal verstanden hatte.

aber wie schon spekuliert, gab es scheinbar ein paar configchecks als "pflaster".
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

Zitat von: frank am 05 Oktober 2021, 13:49:43
mit den neuen versionen zündet stufe2 auch bei mir und alle ventile haben erneut den restart überlebt.  8)
8) So weit, so gut!

Zitat
attr param msgreduce muss weiterhin manuell erfolgen.
Das klingt danach, als wäre das Attribut zwischendurch mal "nicht erlaubt" (und folglich gelöscht). Stellt sich die Frage, ob man das ggf. (nur während der Initialisierung?) zuläßt (unschön, relativ viel Zusatzcode)? Besser wäre es, die Reihenfolge so zu fixieren, dass das gar nicht erst passiert - ich habe nur noch keine Idee, wo...

Zitat
4/6 ventilen werden über mein at mit valvepos gefüttert. die anderen 2 ventile bekommen ihr valvepos über notify von 2 ventilen aus der ersten gruppe, da in 2 räumen jeweils 2 heizkörper existieren.
OK, das erklärt das "unknown argument" und so langsam habe ich auch eine Idee, warum Martin das timer-basiert machen wollte. Dann wären nämlich alle Basiskonfigurationen durch, bevor "irgendwer anderes" Wind davon bekommt (z.B. dein notify), dass CUL_HM (in Teilen) wieder läuft. Das dürfte der Gedanke hinter der "Doppelverwendung" von $evtDly gewesen sein, aber irgendwo scheint es da noch eine Lücke zu geben. Leider klappt es dann wohl nicht, innerhalb der vorgezogenen event-loop andere Eventhandler erst dann abzuarbeiten, wenn die interne NotifyFn durch ist. Hmmm...

Nach meinen bisherigen Erfahrungen würde ich sagen, dass eine vollständige Rückkehr zu einer timer-Initialisierung keine gute Idee ist. Andere Meinungen?

Ergo brauchen wir sowas wie einen Mittelweg, wobei es zumindest zur Lösung des von dir aufgezeigten Abhängigkeitsproblems wahrscheinlich genügen würde, die Kommandos aus der Initialisierung der paar virtuellen Kanäle rauszunehmen und in eine gesonderte Timer-Funktion zu verlagern.
Dann sollte auch die "zufällige" Reihenfolge kein Problem mehr sein.
Werde ich angehen.

Zitat2. die configchecks sind jetzt zwar nicht mehr doppelt, aber noch viele sinnlos, denke ich.
Na ja, jetzt sind est erst mal "nur noch viele" statt bisher sehr, sehr viele (die wurden nämlich durch die svn-Version auch noch für alle Kanäle aufgerufen, wenn ich das damalige Log richtig im Kopf habe)...

Ob die vorher abgearbeitet wurden (bzw. jetzt, weil in INITIALIZED-loop, also nach $init_done), muss ich mir nochmal gesondert ansehen. Wie bereits mehrfach geschrieben, war diese Unmenge einer der Gründe, warum ich der festen Überzeugung war, dass das so nicht beabsichtigt gewesen sein konnte...
Die wurden zwar in Timer verpackt (die dann implizit zumeist wieder gelöscht wurden?), wenn ich das richtig gedeutet habe, aber die schiere Masse war für sich genommen schon irritierend.

Zitateigentlich wollte martin den automatischen configcheck so wenig wie nötig aufrufen, da er das system belastet.
Solche klaren Aussagen zu dem Thema fehlten mir bisher als Puzzleteilchen.

Zitatdaher gibt es "configcheck -f" aufrufe, denn diese checken ja nur einen kleinen teil des systems. über irgendeine logik wusste er beim restart welche devices zu checken sind. es gab also nicht "configcheck -f" für alle devices, sondern immer nur für einen teil aller devices.
Dann sollte es also wieder Ziel sein, dahin zurückzukommen, dass wir den Check dann abfeuern, wenn er gebraucht wird und den "großen" möglichst ganz vermeiden. Ich habe nur zu wenig Ahnung von den Zusammenhängen, um beurteilen zu können, wie wir das feststellen können, was wann dran ist... Generell irritiert es mich, dass das aus CUL_HM raus angestoßen wird und nicht in HMinfo autonom (zumindest während der Startphase).

Zitatetwa 60s nach dem loadconfig gibt es bei mir noch eine salve "configcheck -f" mit "ausgewählten" devices.
Das ist bei mir auch so, und das wird auch immer mal wieder wiederholt (ich sehe das für ein "kaputtes" Device, das grade nicht erreichbar ist).
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

ZitatDas klingt danach, als wäre das Attribut zwischendurch mal "nicht erlaubt" (und folglich gelöscht). Stellt sich die Frage, ob man das ggf. (nur während der Initialisierung?) zuläßt (unschön, relativ viel Zusatzcode)? Besser wäre es, die Reihenfolge so zu fixieren, dass das gar nicht erst passiert - ich habe nur noch keine Idee, wo...
alle virtuellen channel entities besitzen weiterhin kein internal ".AttrList".
streng genommen fehlt dann nicht das attribut in der liste, sondern es gibt gar keine liste. somit fehlt es eigentlich auch nicht.
das attribut kann auch zwischenzeitlich nicht gelöscht worden sein, sonst wäre es ja nicht mehr vorhanden.
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

Zitat von: frank am 05 Oktober 2021, 13:49:43
attr param msgreduce muss weiterhin manuell erfolgen.
...so langsam dämmert mir auch, warum das so ist:
Setzt man das Attribut nach $init_done, werden auch die Werte im helper-Hash entsprechend angepaßt. Während der Start-Phase habe ich jetzt aber nirgends was gefunden, das das Attribut in irgendeiner Form auswerten würde. Da es eigentlich "obvious" ist, dass das irgendwo erfolgen müßte, bin ich immer davon ausgegangen, dass es auch gemacht wird. Da es jedenfalls jetzt nicht mehr der Fall ist:

Jetzt könnte man das ohne weiteres als weiteren individuellen Check auch noch irgendwie in CUL_HM_updateConfig() reinknödeln (wie im aktuellen Anhang), aber an sich ist es nur ein Symptom eines generellen Problems, das wir bisher nur gefühlt, aber nie direkt gesehen haben: Man müßte eigentlich noch eine Schleife basteln, die alle Attribute (in einer bestimmten Reihenfolge?) nochmal durchgeht, und für die Devices, die es nicht "sowieso" richtig machen/wissen dann auch die Auswertung durchführen, die eigentlich in CUL_HM_Attr() schon enthalten ist... Konkret betrifft das mind. bei den VIRTUALs die Attribute "peerIDs" und "param". Wenn es wirklich nur die beiden sind, kann es beim (ungetesteten) angehängten Provisorium bleiben, wenn es mehr ist, sollte man eine explizite Schleife bauen.

EDIT: evtl. ist das io-Problem aus https://forum.fhem.de/index.php/topic,123198.msg1178042.html#msg1178042 auch sowas...? (Ist nur ein erster Gedanke, muss nicht stimmen).

Zitataber wie schon spekuliert, gab es scheinbar ein paar configchecks als "pflaster".
Habe jetzt mal "mutig" die erste Salve deaktiviert, weiß aber noch nicht, ob das gut ist und wohin das ggf. führt...

Warum .AttrList gar nicht gesetzt wird, ist mir im Moment noch ein Rätsel, aber das lichtet sich vielleicht auch noch. Vorläufig bin ich dann froh, den schon fertigen "laß das durch"-Filter erst mal nur deaktiviert zu haben ;D . Vielleicht liegt das auch daran, dass "VIRTUAL" nicht explizit (nach-) gesetzt wird, und daher nicht klar ist, welche subType-spezifischen Werte eigentlich erlaubt sind...
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

hallo beta-martin  ;)

1. param msgReduce funktioniert nun automatisch, obwohl internal .AttrList weiterhin fehlt
2. weiterhin keine cfgState auffälligkeiten
3. valvePos fehlermeldung vom notify weg
4. alle ventile leben

2021.10.05 18:43:38.407 1: Including ./log/fhem.save
2021.10.05 18:43:39.571 1: Messages collected while initializing FHEM:SecurityCheck:
  WEBscreenshot is not password protected
  WEB is not password protected
  telnetPort is not password protected

Protect this FHEM installation by defining an allowed device with define allowed allowed
You can disable this message with attr global motd none

2021.10.05 18:43:39.590 1: CUL_HM start inital cleanup
2021.10.05 18:43:44.564 1: CUL_HM finished initial cleanup
2021.10.05 18:43:44.600 3: HMinfo hminfo get:loadConfig :
2021.10.05 18:43:45.191 3: HMinfo hminfo get:configCheck :

...

2021.10.05 18:44:45.030 3: HMinfo hminfo get:configCheck :-f,^(HM_114B05|HM_114B05)$
2021.10.05 18:44:45.145 3: HMinfo hminfo get:configCheck :-f,^(Tuer.SZ|Tuer.SZ)$
2021.10.05 18:44:45.186 3: HMinfo hminfo get:configCheck :-f,^(SwitchES01|SwitchES01_Pwr|SwitchES01_SenF|SwitchES01_SenI|SwitchES01_SenPwr|SwitchES01_SenU|SwitchES01_Sw|SwitchES01)$


5. device HM_114B05 aus der letzten salve ist ein ignored device. ist also auch sinnlos
Internals:
   DEF        114B05
   FUUID      5c4ce2ef-f33f-09c4-0dfe-f485be94c011b276
   IODev      hmuart1
   NAME       HM_114B05
   NR         614
   NTFY_ORDER 48-HM_114B05
   STATE      from archivexx D-firmware 1.7
   TYPE       CUL_HM
   chanNo     01
   disableNotifyFn 1
   peerList   self01
   .attraggr:
   .attrminint:
   READINGS:
     1900-01-01 00:00:01   .D-devInfo      010100
     1900-01-01 00:00:01   .D-stc          20
     2021-10-05 18:43:42   .associatedWith HM_114B05,HM_114B05
     2019-11-24 19:38:28   .peerListRDate  2019-11-24 19:38:28
     from archivexx        D-firmware      1.7
     from archivexx        D-serialNr      FEQ0069583
     2021-10-05 18:43:38   IODev           hmuart1
     2021-10-05 18:43:44   R-intKeyVisib   visib
     2021-10-05 18:43:44   R-loadErrCalib  1
     2021-10-05 18:43:44   R-pairCentral   0x1ACE1F
     2021-10-05 18:43:44   R-self01-lgActionTypeDim toggleDim
     2021-10-05 18:43:44   R-self01-lgCtDlyOff geLo
     2021-10-05 18:43:44   R-self01-lgCtDlyOn geLo
     2021-10-05 18:43:44   R-self01-lgCtOff geLo
     2021-10-05 18:43:44   R-self01-lgCtOn geLo
     2021-10-05 18:43:44   R-self01-lgCtRampOff geLo
     2021-10-05 18:43:44   R-self01-lgCtRampOn geLo
     2021-10-05 18:43:44   R-self01-lgCtValHi 100
     2021-10-05 18:43:44   R-self01-lgCtValLo 50
     2021-10-05 18:43:44   R-self01-lgDimJtDlyOff rampOff
     2021-10-05 18:43:44   R-self01-lgDimJtDlyOn rampOn
     2021-10-05 18:43:44   R-self01-lgDimJtOff dlyOn
     2021-10-05 18:43:44   R-self01-lgDimJtOn dlyOff
     2021-10-05 18:43:44   R-self01-lgDimJtRampOff off
     2021-10-05 18:43:44   R-self01-lgDimJtRampOn on
     2021-10-05 18:43:44   R-self01-lgDimMaxLvl 100 %
     2021-10-05 18:43:44   R-self01-lgDimMinLvl 0 %
     2021-10-05 18:43:44   R-self01-lgDimStep 5 %
     2021-10-05 18:43:44   R-self01-lgMultiExec on
     2021-10-05 18:43:44   R-self01-lgOffDly 0 s
     2021-10-05 18:43:44   R-self01-lgOffDlyBlink on
     2021-10-05 18:43:44   R-self01-lgOffDlyNewTime 0.4 s
     2021-10-05 18:43:44   R-self01-lgOffDlyOldTime 0.4 s
     2021-10-05 18:43:44   R-self01-lgOffDlyStep 5 %
     2021-10-05 18:43:44   R-self01-lgOffLevel 0 %
     2021-10-05 18:43:44   R-self01-lgOffTime unused
     2021-10-05 18:43:44   R-self01-lgOffTimeMode absolut
     2021-10-05 18:43:44   R-self01-lgOnDly 0 s
     2021-10-05 18:43:44   R-self01-lgOnDlyMode setToOff
     2021-10-05 18:43:44   R-self01-lgOnLevel 100 %
     2021-10-05 18:43:44   R-self01-lgOnLvlPrio high
     2021-10-05 18:43:44   R-self01-lgOnMinLevel 10 %
     2021-10-05 18:43:44   R-self01-lgOnTime unused
     2021-10-05 18:43:44   R-self01-lgOnTimeMode absolut
     2021-10-05 18:43:44   R-self01-lgRampOffTime 0.5 s
     2021-10-05 18:43:44   R-self01-lgRampOnTime 0.5 s
     2021-10-05 18:43:44   R-self01-lgRampSstep 5 %
     2021-10-05 18:43:44   R-self01-shActionTypeDim jmpToTarget
     2021-10-05 18:43:44   R-self01-shCtDlyOff geLo
     2021-10-05 18:43:44   R-self01-shCtDlyOn geLo
     2021-10-05 18:43:44   R-self01-shCtOff geLo
     2021-10-05 18:43:44   R-self01-shCtOn geLo
     2021-10-05 18:43:44   R-self01-shCtRampOff geLo
     2021-10-05 18:43:44   R-self01-shCtRampOn geLo
     2021-10-05 18:43:44   R-self01-shCtValHi 100
     2021-10-05 18:43:44   R-self01-shCtValLo 50
     2021-10-05 18:43:44   R-self01-shDimJtDlyOff rampOff
     2021-10-05 18:43:44   R-self01-shDimJtDlyOn rampOn
     2021-10-05 18:43:44   R-self01-shDimJtOff dlyOn
     2021-10-05 18:43:44   R-self01-shDimJtOn dlyOff
     2021-10-05 18:43:44   R-self01-shDimJtRampOff off
     2021-10-05 18:43:44   R-self01-shDimJtRampOn on
     2021-10-05 18:43:44   R-self01-shDimMaxLvl 100 %
     2021-10-05 18:43:44   R-self01-shDimMinLvl 0 %
     2021-10-05 18:43:44   R-self01-shDimStep 5 %
     2021-10-05 18:43:44   R-self01-shMultiExec off
     2021-10-05 18:43:44   R-self01-shOffDly 0 s
     2021-10-05 18:43:44   R-self01-shOffDlyBlink on
     2021-10-05 18:43:44   R-self01-shOffDlyNewTime 0.4 s
     2021-10-05 18:43:44   R-self01-shOffDlyOldTime 0.4 s
     2021-10-05 18:43:44   R-self01-shOffDlyStep 5 %
     2021-10-05 18:43:44   R-self01-shOffLevel 0 %
     2021-10-05 18:43:44   R-self01-shOffTime unused
     2021-10-05 18:43:44   R-self01-shOffTimeMode absolut
     2021-10-05 18:43:44   R-self01-shOnDly 0 s
     2021-10-05 18:43:44   R-self01-shOnDlyMode setToOff
     2021-10-05 18:43:44   R-self01-shOnLevel 100 %
     2021-10-05 18:43:44   R-self01-shOnLvlPrio high
     2021-10-05 18:43:44   R-self01-shOnMinLevel 10 %
     2021-10-05 18:43:44   R-self01-shOnTime unused
     2021-10-05 18:43:44   R-self01-shOnTimeMode absolut
     2021-10-05 18:43:44   R-self01-shRampOffTime 0.5 s
     2021-10-05 18:43:44   R-self01-shRampOnTime 0.5 s
     2021-10-05 18:43:44   R-self01-shRampSstep 5 %
     2018-01-26 22:59:37   RegL_00.        02:81 03:00 04:00 05:00 06:00 07:00 08:00 09:00 0A:1A 0B:CE 0C:1F 00:00
     2018-01-26 22:59:43   RegL_01.        12:01 00:00
     2018-01-26 22:59:59   RegL_03.self01  01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:14 0C:52 0D:63 0E:20 0F:00 10:14 11:C8 12:0A 13:05 14:05 15:00 16:C8 17:0A 18:0A 19:04 1A:04 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:26 8B:14 8C:52 8D:63 8E:20 8F:00 90:14 91:C8 92:0A 93:05 94:05 95:00 96:C8 97:0A 98:0A 99:04 9A:04 00:00
     2021-10-05 18:43:42   peerList        self01
   helper:
     HM_CMDNR   16
     cfgStateUpdt 0
     mId        0013
     peerFriend peerSens,peerVirt
     peerIDsState complete
     peerOpt    3:dimmer
     regLst     0,1,3p
     rxType     1
     cmds:
       TmplKey    self01:no:1633452222.40431
       TmplTs     1633452222.40431
       cmdKey     1:1:0::HM_114B05:0013:01:self01
       cmdLst:
         assignHmKey noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         deviceRename -newName-
         down       'change:'[(0..100;1|{10})] [(-ontime-|{0})] [(-ramptime-|{2.4})] 'ontime: 0 = forever'
         eventL     -peer- -cond-
         eventS     -peer- -cond-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         getVersion noArg
         inhibit    [(on|{off})]
         off        noArg
         old        noArg
         on         noArg
         on-for-timer -ontime- [(-ramptime-|{})]
         on-till    -time- [(-ramptime-|{})]
         pair       noArg
         pct        (-value-|old) [(-ontime-|{0})] [(-ramptime-|{2.4})] 'ontime: 0 = forever'
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerIODev  [IO] -btn- [({set}|unset)] 'not for future use'
         peerSmart  -peerOpt-
         press      [(long|{short})] [(-peer-|{self01})] [(-repCount-|{0})] [(-repDelay-|{0.25})]
         pressL     [(-peer-|{self01})]
         pressS     [(-peer-|{self01})]
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sign       [(on|{off})]
         statusRequest noArg
         stop       noArg
         toggle     noArg
         tplDel     -tplDel-
         tplSet_0   -tplChan-
         tplSet_self01 -tplPeer-
         unpair     noArg
         up         'change:'[(0..100;1|{10})] [(-ontime-|{0})] [(-ramptime-|{2.4})] 'ontime: 0 = forever'
       lst:
         condition  slider,0,1,255
         peer       self01
         peerOpt    Fenster.Bad,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.AZ.West_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,ccu_Btn1,ccu_Btn2,ccu_Btn3,ccu_Btn4,ccu_Btn5,rssi_hmuart_Btn1,virtAktorAlarmOff_Btn1
         tplChan   
         tplDel     
         tplPeer    DimOff_long,DimOff_short,DimOn_long,DimOn_short,SwCondAbove_long,SwCondAbove_short,SwCondBelow_long,SwCondBelow_short,SwOnCond_long,SwOnCond_short,motionOnDim_long,motionOnDim_short
       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       0
       newChn     +114B05,00,00,00
       rxt        0
       vccu       
       p:
         114B05
         00
         00
         00
       prefIO:
     mRssi:
       mNo       
     peerIDsH:
       00000000   broadcast
       114B0501   self01
     prt:
       bErr       0
       sProc      0
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
       prs        1
     tmpl:
Attributes:
   .mId       0013
   IODev      hmuart1
   IOgrp      ccu:hmuart1
   autoReadReg 0_off
   expert     defReg,allReg,rawReg,templ
   firmware   1.7
   ignore     1
   model      HM-LC-DIM1L-PL
   peerIDs    00000000,114B0501
   room       CUL_HM
   rssiLog    1
   serialNr   FEQ0069583
   subType    dimmer
   webCmd     statusRequest:toggle:on:off:up:down
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 den verdacht, dass du in deinem hminfo das attr sumERROR um den eintrag "cfgState:ok" erweitern musst.
dann siehst du in der hminfotools tabelle alle entities mit reading cfgState!=ok.
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

Thx, habe ich mal in meinem HMinfo ergänzt.

Das mit "ignored" ist dem Bauchgefühl nach ein reines HMinfo-Thema, mal schauen...

Was mich weiter beschäftigt ist die Frage, ob man nicht eine Reihe von Attributen "nachsetzen" muss, solange die INITIALIZED-loop läuft - eigentlich ist die VCCU-Initialisierung nämlich auch nichts anderes und findet nur im Moment etwas woanders statt.

Ansonsten sind meine fixes jetzt zunehmend "wild" und nicht schön anzusehen, und es ist vermutlich auch kaum mehr nachzuvollziehen, warum eigentlich was wo vorgeschlagen wird...

Deiner Rückmeldung entnehme ich aber, dass es sinnvoll wäre, im "patches"-Thread dann nur noch die heutigen Stände zu präsentieren und den Rest aus dem Verkehr zu ziehen?
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

ZitatDas mit "ignored" ist dem Bauchgefühl nach ein reines HMinfo-Thema, mal schauen...
es hat jedenfalls nichts direkt mit vd/vtc zu tun.
höchstens indirekt, da jeder performance gewinn positive auswirkungen auf den vtc betrieb hat.

es ist auf jeden fall ein cul_hm bug, da cul_hm den check bestellt.


wichtiger wäre jetzt für mich ein einwandfreies io handling, denn hier funktioniert nun erst mal wieder alles.
https://forum.fhem.de/index.php/topic,123238.0.html
noansi hat gerade ein lebenszeichen gesetzt. vielleicht hat er auch wieder lust zu helfen.
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

Zitat von: frank am 05 Oktober 2021, 20:57:42
noansi hat gerade ein lebenszeichen gesetzt. vielleicht hat er auch wieder lust zu helfen.
Das wäre mir sehr recht, genauso, wenn Martin sich äußern würde...

Zitat von: frank am 05 Oktober 2021, 20:57:42
es ist auf jeden fall ein cul_hm bug, da cul_hm den check bestellt.
Ja, nein, weiß nicht: Die wechselseitigen Anforderungen laufen teilweise im Kreis herum, und hier meine ich das so zu deuten, dass es eigentlich HMinfo ist, die eine Funktion in CUL_HM aufruft, die dann wieder was von HMinfo haben will...

Zitat
wichtiger wäre jetzt für mich ein einwandfreies io handling, denn hier funktioniert nun erst mal wieder alles.
https://forum.fhem.de/index.php/topic,123238.0.html
Den Thread hatte ich "bestellt" - jetzt ist nur die Frage, was man tun müßte, um den Befehl verfügbar machen. Tippen würde ich auf: ein Attribut setzen... (oder jetzt: Großschreibung?)

Was die IO-Initialisierung angeht, klingt das für mich nach "lies das IOgrp-Attribut ein", also noch eines...
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

mit den aktuellen updates aus dem svn von heute funktionieren vtc/vd wieder wie gewohnt.
danke beta-user und martin.
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