hminfo update zeigt nach 5min viele entities mit cfgState=TmplChk fehlern (attr autoUpdate=5min, attr sumERROR enthält cfgState:ok)
ein manueller configCheck ergibt null fehler und "repariert sofort die "falschen" fehler.
a) TmplChk zeigt immer bei einigen devices "template undefined".
die templates existieren und werden bei anderen entities nicht angemeckert.
es sind nach restart immer die selben entities, die angemeckert werden.
vermutlich kommt die "erkenntnis", dass die templates existieren, während der startphase zu spät.
b) ignored entities mit cfgState fehlern werden ebenfalls in hminfo ermittelt und angezeigt.
c) wenn mehrere cfgState fehler existieren, müssten diese sortiert werden.
ansonsten werden in hminfo unterschiedliche kategorien erzeugt, obwohl es eigentlich der selbe fehler ist.
=> 2 entities für iERR_cfgState_PairMiss,RegMiss
=> 3 entities für iERR_cfgState_RegMiss,PairMiss
mit sortierung sollten => 5 entities mit iERR_cfgState_PairMiss,RegMiss angezeigt werden.
d) ausserdem erzeugt das reading ERR_cfgState in hminf ständig neue events
der inhalt des readings wird immer "umgruppiert":
zb von "RegMiss,PairMiss:3,RegMiss:3,PairMiss,RegMiss:2," => "RegMiss:3,RegMiss,PairMiss:3,PairMiss,RegMiss:2,"
eventuell durch die etwas unglückliche darstellung?:
komma getrennte listen innerhalb einer komma getrennten liste.
hallo martin,
den fehler a) "template undefined" nach fhem restart konnte ich jetzt schon mal etwas eingrenzen:
es lag an den template infos in meiner config datei.
scheinbar war es für loadConfig nicht möglich aus den templatedaten für alle entities brauchbare infos beim fhem start zu generieren.
nach einem "set hminfo purgeConfig" sind die fehler nun verschwunden.
edit:
leider war das wohl nur ein zufall oder eine halluzination, denn gerade haben sich die 8 entities wieder mit "template undefined" nach restart gemeldet. ???
die problematische config datei habe ich hier mal angehängt.
bei jedem restart haben folgende 8 entities "template undefined" geliefert.
SwitchES01
SwitchES01_Pwr
SwitchES01_Sw
SwitchPBU01_Sw_01
Thermostat.OZ
Thermostat.OZ_Climate
Thermostat.WZ
Wetter.Sued
nach purgeConfig sehen die templatedaten so aus:
templateDef templateStart Block stored:2020-09-14 12:02:39*******************
templateDef =>BlStopDnLg=>0=>"Blind: stop drive on any key - for long drive down"=>BlJtRampOff:rampOff BlJtOff:dlyOff BlJtOn:dlyOff BlJtRampOn:on BlJtDlyOn:dlyOff BlJtRefOn:on ActionType:jmpToTarget BlJtRefOff:rampOff BlJtDlyOff:refOff
templateDef =>BlStopDnSh=>0=>"Blind: stop drive on any key - for short drive down"=>BlJtDlyOff:refOff BlJtRefOff:rampOff ActionType:jmpToTarget BlJtRefOn:on BlJtDlyOn:dlyOff BlJtOn:dlyOff BlJtRampOn:on BlJtOff:dlyOff BlJtRampOff:off
templateDef =>BlStopUpLg=>0=>"Blind: stop drive on any key - for long drive up"=>BlJtRefOff:off BlJtDlyOff:dlyOn BlJtDlyOn:refOn BlJtRefOn:rampOn ActionType:jmpToTarget BlJtOff:dlyOn BlJtRampOn:rampOn BlJtOn:dlyOn BlJtRampOff:off
templateDef =>BlStopUpSh=>0=>"Blind: stop drive on"=>BlJtRefOn:rampOn ActionType:jmpToTarget BlJtDlyOn:refOn BlJtDlyOff:dlyOn BlJtRefOff:off BlJtRampOff:off BlJtRampOn:on BlJtOn:dlyOn BlJtOff:dlyOn
templateDef =>DimOff=>0=>"Dimmer: off if trigger"=>DimJtDlyOn:dlyOff DimJtOn:dlyOff DimJtRampOff:dlyOff DimJtDlyOff:off DimJtRampOn:dlyOff OnTime:unused DimJtOff:no ActionTypeDim:jmpToTarget OffTime:unused
templateDef =>DimOn=>0=>"Dimmer: on if trigger"=>DimJtRampOff:dlyOn DimJtOn:no DimJtDlyOn:on DimJtOff:dlyOn OnTime:unused DimJtRampOn:dlyOn DimJtDlyOff:dlyOn OffTime:unused ActionTypeDim:jmpToTarget
templateDef =>ES01_normal=>0=>"brunnenpumpe"=>txThrVlt:unused txThrFrq:unused txThrPwr:unused txMinDly:0 txThrCur:50 averaging:1
templateDef =>ES_00=>powerUpAction=>"hallo. "=>statusInfoRandom:0 transmitTryMax:6 powerUpAction:p0 statusInfoMinDly:0.5
templateDef =>ES_device=>intKeyVisib:localResDis=>"hallo"=>statusInfoRandom:0 intKeyVisib:p0 localResDis:p1 transmitTryMax:6 statusInfoMinDly:1
templateDef =>ES_power_standby=>0=>"measure standby-power for hm-lc-sw1pbu-fm. "=>txThrPwr:0.01 txMinDly:0 txThrCur:unused averaging:1 txThrVlt:unused txThrFrq:unused
templateDef =>RHS=>0=>"my default values. "=>eventDlyTime:2 transmitTryMax:6 msgRhsPosA:open msgRhsPosB:tilted transmDevTryMax:6 cyclicInfoMsg:on msgRhsPosC:closed ledOnTime:0.5
templateDef =>SwCondAbove=>condition=>"Switch: execute only if condition level is above limit"=>CtValLo:p0 CtDlyOn:geLo CtDlyOff:geLo CtOff:geLo CtOn:geLo
templateDef =>SwCondBelow=>condition=>"Switch: execute only if condition level is below limit"=>CtOff:ltLo CtDlyOff:ltLo CtOn:ltLo CtValLo:p0 CtDlyOn:ltLo
templateDef =>SwOff=>0=>"Switch: off if trigger"=>SwJtOff:no SwJtOn:dlyOff ActionType:jmpToTarget SwJtDlyOff:off SwJtDlyOn:dlyOff OnTime:unused OffTime:unused
templateDef =>SwOn=>0=>"Switch: on if trigger"=>SwJtOff:dlyOn ActionType:jmpToTarget SwJtOn:no SwJtDlyOff:dlyOn SwJtDlyOn:on OnTime:unused OffTime:unused
templateDef =>SwOnCond=>level:cond=>"switch: execute only if condition [geLo|ltLo] level is below limit"=>CtDlyOn:p1 CtValLo:p0 CtOn:p1 CtDlyOff:p1 CtOff:p1
templateDef =>SwToggle=>0=>"Switch: toggle on trigger"=>SwJtDlyOff:off ActionType:jmpToTarget SwJtOn:dlyOff SwJtOff:dlyOn OffTime:unused OnTime:unused SwJtDlyOn:on
templateDef =>SwToggleIgnore=>timeOn=>"sh:toggle lg:ignore"=>shMultiExec:off shSwJtDlyOn:on shOnTimeMode:absolut shSwJtDlyOff:off shOffDly:0 shOnDly:0 lgActionType:off shSwJtOff:dlyOn shOnTime:p0 shOffTimeMode:absolut shActionType:jmpToTarget shOffTime:unused shSwJtOn:dlyOff
templateDef =>TC_00_sensor=>0=>"basic sensor-config for the HM-CC-TC device. "=>btnLock:off burstRx:off backlOnTime:20 backlOnMode:auto
templateDef =>TC_02_sensor=>0=>"basic sensor-config for the HM-CC-TC climate channel. "=>displayTempUnit:celsius displayMode:temp-hum controlMode:central displayTemp:actual
templateDef =>TC_02_test=>controlMode:displayMode=>"test"=>displayMode:p1 controlMode:p0
templateDef =>THPL_00_default=>0=>"default values for homebrew THPL-sensors. "=>lowBatLimitTHPL:2.3 burstRx:off ledMode:off altitude:78 transmDevTryMax:3
templateDef =>autoOff=>time=>"staircase - auto off after -time-, extend time with each trigger"=>SwJtOff:dlyOn ActionType:jmpToTarget SwJtOn:on SwJtDlyOff:dlyOn SwJtDlyOn:no OnTime:p0 OffTime:unused
templateDef =>dimUpToMaxLevel_dimmer_onlyLong=>maxLevel:upStep=>"dimm up to maxLevel with upStep for long only. "=>lgOffDlyBlink:off lgCtOff:geLo lgCtOn:geLo lgCtRampOn:geLo lgOffDlyStep:5 lgDimStep:p1 lgOffTimeMode:absolut lgDimMinLvl:0 lgOffLevel:0 lgOnTimeMode:absolut lgCtValHi:100 lgDimJtOff:dlyOn lgOffDlyNewTime:0.4 lgOffDly:0 lgOnDlyMode:setToOff lgDimJtOn:rampOn lgOnDly:0 lgDimJtRampOn:on lgOnTime:unused lgDimMaxLvl:p0 lgRampOffTime:0.5 lgOffDlyOldTime:0.4 lgOnLvlPrio:high lgDimJtDlyOn:rampOn lgCtRampOff:geLo lgOffTime:unused lgOnLevel:100 lgActionTypeDim:upDim lgRampOnTime:0.5 lgCtDlyOff:geLo lgCtDlyOn:geLo lgDimJtDlyOff:rampOn lgOnMinLevel:10 lgRampSstep:5 lgMultiExec:on lgDimJtRampOff:rampOn lgCtValLo:50
templateDef =>ignore=>0=>"ignore button press. "=>ActionType:off
templateDef =>motionOnDim=>ontime:brightness=>"Dimmer: on for time if MDIR-brightness below level"=>CtOn:ltLo OffTime:unused CtRampOff:ltLo CtDlyOff:ltLo CtRampOn:ltLo DimJtOn:on OnTime:p0 ActionTypeDim:jmpToTarget CtOff:ltLo DimJtDlyOn:rampOn DimJtRampOff:dlyOn CtDlyOn:ltLo DimJtRampOn:on DimJtOff:dlyOn CtValLo:p1 DimJtDlyOff:dlyOn
templateDef =>motionOnSw=>ontime:brightness=>"Switch: on for time if MDIR-brightness below level"=>SwJtOn:on CtDlyOff:ltLo SwJtOff:dlyOn OnTime:p0 CtOn:ltLo SwJtDlyOff:dlyOn OffTime:unused SwJtDlyOn:on ActionType:jmpToTarget CtOff:ltLo CtDlyOn:ltLo CtValLo:p1
templateDef =>s1=>0=>"hvc"=>controlMode:central
templateDef =>single-chn-sensor-device=>0=>"a"=>cyclicInfoMsg:on transmDevTryMax:6 ledOnTime:0.5 msgScPosB:open eventDlyTime:0 msgScPosA:closed transmitTryMax:6 sabotageMsg:on
templateDef =>single-chn-sensor-peer=>0=>"a"=>expectAES:off peerNeedsBurst:off
templateDef =>switchToOffLevel_dimmer=>offLevel:rampTime=>"switch dimmer to off (offLevel) within rampTime. "=>RampSstep:0 OnTimeMode:absolut DimStep:5 DimJtDlyOff:rampOff CtValLo:50 DimJtRampOn:dlyOff CtOff:geLo DimJtRampOff:off OffDlyStep:5 RampOffTime:p1 MultiExec:off CtRampOff:geLo OffDlyOldTime:0.4 OffTimeMode:absolut DimMinLvl:0 OnDly:0 OffTime:unused OffDlyNewTime:0.4 CtOn:geLo RampOnTime:p1 ActionTypeDim:jmpToTarget OnDlyMode:setToOff OnLevel:100 CtDlyOn:geLo DimJtOff:rampOff DimJtDlyOn:rampOff CtValHi:100 OnLvlPrio:high OffLevel:p0 OnMinLevel:p0 OnTime:unused OffDly:0 CtDlyOff:geLo DimJtOn:rampOff CtRampOn:geLo DimMaxLvl:100 OffDlyBlink:off
templateDef =>switchToOnLevel_dimmer=>onLevel:rampTime=>"switch dimmer to on (onLevel) within rampTime."=>CtDlyOn:geLo DimJtOff:rampOn OnLevel:p0 DimJtDlyOn:rampOn CtValHi:100 OnLvlPrio:high OnDlyMode:setToOff ActionTypeDim:jmpToTarget OnTime:unused OffDly:0 OnMinLevel:0 DimMaxLvl:100 OffDlyBlink:off CtDlyOff:geLo DimJtOn:rampOn CtRampOn:geLo OffLevel:0 DimJtRampOn:on CtValLo:50 DimJtDlyOff:rampOn OffDlyStep:5 RampOffTime:p1 CtOff:geLo DimJtRampOff:dlyOn RampSstep:0 DimStep:5 OnTimeMode:absolut OnDly:0 OffTime:unused MultiExec:off CtRampOff:geLo DimMinLvl:0 OffTimeMode:absolut OffDlyOldTime:0.4 CtOn:geLo RampOnTime:p1 OffDlyNewTime:0.4
templateDef =>tc1=>a:b:c:d=>"hallo"=>backlOnMode:p0 backlOnTime:p1 btnLock:p2 burstRx:p3
templateDef =>test09=>a=>"fasd"=>controlMode:central day-temp:p0
templateDef =>test=>intKeyVisib:localResDis=>"test"=>intKeyVisib:p0 localResDis:p1
templateDef =>toggleMaxMin_dimmer=>maxLevel:minLevel:rampTime=>"toggle a dimmer between on (maxLevel) and off (minLevel) within rampTime. "=>CtOn:geLo RampOnTime:p2 OffDlyNewTime:0.4 OffTime:unused OnDly:0 CtRampOff:geLo MultiExec:off OffDlyOldTime:0.4 DimMinLvl:0 OffTimeMode:absolut DimStep:5 OnTimeMode:absolut RampSstep:0 OffDlyStep:5 RampOffTime:p2 CtOff:geLo DimJtRampOff:off DimJtRampOn:on CtValLo:50 DimJtDlyOff:rampOff OffLevel:p1 OffDlyBlink:off DimMaxLvl:100 CtDlyOff:geLo DimJtOn:dlyOff CtRampOn:geLo OnTime:unused OffDly:0 OnMinLevel:p1 ActionTypeDim:jmpToTarget OnDlyMode:setToOff DimJtDlyOn:rampOn OnLvlPrio:high CtValHi:100 CtDlyOn:geLo DimJtOff:dlyOn OnLevel:p0
templateDef =>toggleOn-for-timerOff_switch=>onTime=>"toggle from off to on for onTime. "=>CtOn:geLo SwJtDlyOff:off MultiExec:off SwJtDlyOn:on OffTimeMode:absolut OnDly:0 OffTime:unused CtDlyOff:geLo SwJtOff:dlyOn SwJtOn:dlyOff OnTime:p0 OffDly:0 OnTimeMode:absolut CtOff:geLo CtValHi:100 ActionType:jmpToTarget CtValLo:50 CtDlyOn:geLo
templateDef =>tplCheck=>confBtnTime=>"test"=>confBtnTime:p0
templateDef =>wmClose=>speed=>"winmatic: close window"=>WinJtRampOff:rampOnFast WinJtOn:rampOff RampOffSp:p0 WinJtOff:rampOff WinJtRampOn:on
templateDef =>wmClosed=>0=>"winmatic: lock window"=>OffLevelKm:0
templateDef =>wmLock=>0=>"winmatic: lock window"=>OffLevelKm:127.5
templateDef =>wmOpen=>speed=>"winmatic: open window"=>WinJtRampOff:rampOnFast WinJtOn:rampOn WinJtRampOn:on WinJtOff:rampOn RampOnSp:p0
templateDef =>~HM-LC-DIM1TPBU-FM_2.6_01_general=>0=>"reset register values. "=>logicCombination:or statusInfoRandom:1 powerUpAction:off redTempLvl:75 fuseDelay:1 ovrTempLvl:80 transmitTryMax:6 redLvl:40 statusInfoMinDly:2
templateDef =>~HM-LC-DIM1TPBU-FM_2.6_01_self01=>0=>"reset register values. "=>shCtDlyOn:geLo shOnLevel:100 lgCtRampOn:geLo shOffDlyOldTime:0.4 shRampOffTime:0.5 lgDimStep:5 shDimElsJtRampOff:off shDimMaxLvl:100 lgDimElsJtOff:dlyOn lgOnTimeMode:minimal shDimJtDlyOff:rampOff lgDimJtOff:dlyOff shOffTimeMode:absolut shOffLevel:0 shOffDlyStep:5 lgRampOnTime:0.5 shOffDlyBlink:on lgActionTypeDim:downDim shOnDlyMode:setToOff shOnDly:0 lgDimElsJtDlyOn:rampOn lgCtValLo:50 shCtValHi:100 lgOffDlyStep:5 lgOffDlyBlink:on shRampOnTime:0.5 shActionTypeDim:jmpToTarget lgOffLevel:0 lgOffTimeMode:absolut lgCtValHi:100 shCtValLo:50 lgOnDly:0 lgOnDlyMode:setToOff shDimElsJtDlyOn:rampOn lgOffDlyOldTime:0.4 lgRampOffTime:0.5 lgDimElsJtRampOff:off lgDimMaxLvl:100 shDimStep:5 lgCtDlyOn:geLo shCtRampOn:geLo lgOnLevel:100 shDimJtOff:dlyOff lgDimJtDlyOff:rampOff shDimElsJtOff:dlyOn shOnTimeMode:absolut lgCtOn:geLo lgCtOff:geLo shCtDlyOff:geLo lgDimMinLvl:0 shCtRampOff:geLo shDimJtRampOn:dlyOff shDimElsOffTimeMd:absolut shMultiExec:off lgDimJtOn:dlyOff shDimJtRampOff:off shRampSstep:5 lgOnLvlPrio:high lgDimJtDlyOn:dlyOff lgDimElsOnTimeMd:absolut lgOnTime:1 shDimElsActionType:off shDimElsJtOn:dlyOff shDimElsJtRampOn:on lgOffTime:unused shOffDly:0 lgOnMinLevel:10 shOffDlyNewTime:0.4 lgDimElsJtDlyOff:rampOff lgDimElsJtRampOn:on lgDimElsJtOn:dlyOff shOffTime:unused lgDimElsActionType:off shDimJtDlyOn:dlyOff shOnLvlPrio:high shDimElsOnTimeMd:absolut shOnTime:unused shDimElsJtDlyOff:rampOff lgOffDly:0 shOnMinLevel:10 lgOffDlyNewTime:0.4 lgCtRampOff:geLo shDimMinLvl:0 lgDimJtRampOn:dlyOff lgCtDlyOff:geLo shCtOff:geLo shCtOn:geLo lgDimJtRampOff:off lgMultiExec:on shDimJtOn:dlyOff lgRampSstep:5 lgDimElsOffTimeMd:absolut
templateDef =>~HM-LC-DIM1TPBU-FM_2.6_01_self02=>0=>"reset register values. "=>lgDimElsOffTimeMd:absolut shDimJtOn:rampOn lgMultiExec:on lgDimJtRampOff:rampOn lgRampSstep:5 shCtOn:geLo shCtOff:geLo lgCtDlyOff:geLo shDimMinLvl:0 lgCtRampOff:geLo lgDimJtRampOn:on lgOffDly:0 lgOffDlyNewTime:0.4 shOnMinLevel:10 shDimElsJtDlyOff:rampOff shOnLvlPrio:high shDimJtDlyOn:rampOn shOnTime:unused shDimElsOnTimeMd:absolut lgDimElsActionType:off shOffTime:unused lgDimElsJtOn:dlyOff lgDimElsJtRampOn:on lgDimElsJtDlyOff:rampOff shOffDly:0 shOffDlyNewTime:0.4 lgOnMinLevel:10 lgOffTime:unused shDimElsJtRampOn:on shDimElsJtOn:dlyOff shDimElsActionType:off lgOnLvlPrio:high lgDimJtDlyOn:rampOn lgOnTime:unused lgDimElsOnTimeMd:absolut shDimJtRampOff:rampOn lgDimJtOn:rampOn shMultiExec:off shRampSstep:5 shDimElsOffTimeMd:absolut shCtRampOff:geLo lgDimMinLvl:0 shDimJtRampOn:on lgCtOff:geLo shCtDlyOff:geLo lgCtOn:geLo shDimElsJtOff:dlyOn shOnTimeMode:absolut lgDimJtDlyOff:rampOn shDimJtOff:dlyOn lgCtDlyOn:geLo lgOnLevel:100 shCtRampOn:geLo lgRampOffTime:0.5 lgOffDlyOldTime:0.4 shDimStep:5 lgDimMaxLvl:100 lgDimElsJtRampOff:off lgOnDlyMode:setToOff lgOnDly:0 shDimElsJtDlyOn:rampOn lgCtValHi:100 shCtValLo:50 lgOffTimeMode:absolut lgOffLevel:0 lgOffDlyStep:5 shActionTypeDim:jmpToTarget shRampOnTime:0.5 lgOffDlyBlink:on lgCtValLo:50 shCtValHi:100 shOnDly:0 shOnDlyMode:setToOff lgDimElsJtDlyOn:rampOn shOffDlyStep:5 lgActionTypeDim:upDim lgRampOnTime:0.5 shOffDlyBlink:on shOffLevel:0 shOffTimeMode:absolut lgDimJtOff:dlyOn shDimJtDlyOff:rampOn lgDimElsJtOff:dlyOn lgOnTimeMode:absolut shRampOffTime:0.5 shOffDlyOldTime:0.4 shDimMaxLvl:100 shDimElsJtRampOff:off lgDimStep:5 shCtDlyOn:geLo shOnLevel:100 lgCtRampOn:geLo
======= finished templates ===
templateSet =>DimPBU01_Sw1_V01=>start
templateSet =>DimPBU01_Sw1_V02=>start
templateSet =>DimPBU01_chn01=>start
templateSet =>DimPBU01_chn01=>self01:short>switchToOffLevel_dimmer=>0 0.5
templateSet =>DimPBU01_chn01=>self02:short>toggleMaxMin_dimmer=>80 20 0.5
templateSet =>DimUP01=>start
templateSet =>DimUP01=>self01:long>switchToOffLevel_dimmer=>0 0.5
templateSet =>DimUP01=>SwitchPBU01_Btn_01:short>toggleMaxMin_dimmer=>80 0 1
templateSet =>Fenster.Bad=>start
templateSet =>SD.AZ=>start
templateSet =>SD.SZ=>start
templateSet =>SD.WZ=>start
templateSet =>SwitchES01=>start
templateSet =>SwitchES01=>0>tplCheck=>permanent
templateSet =>SwitchES01_Pwr=>start
templateSet =>SwitchES01_Pwr=>0>ES01_normal=>
templateSet =>SwitchES01_SenF=>start
templateSet =>SwitchES01_SenI=>start
templateSet =>SwitchES01_SenPwr=>start
templateSet =>SwitchES01_SenU=>start
templateSet =>SwitchES01_Sw=>start
templateSet =>SwitchES01_Sw=>self01:short>toggleOn-for-timerOff_switch=>1800
templateSet =>SwitchES01_Sw=>SwitchPBU01_Btn_01:long>ignore=>
templateSet =>SwitchES01_Sw=>SwitchPBU01_Btn_01:short>toggleOn-for-timerOff_switch=>1800
templateSet =>SwitchES01_Sw=>self01:long>ignore=>
templateSet =>SwitchPBU01=>start
templateSet =>SwitchPBU01_Btn_01=>start
templateSet =>SwitchPBU01_Btn_02=>start
templateSet =>SwitchPBU01_Sw_01=>start
templateSet =>SwitchPBU01_Sw_01=>self02:short>toggleOn-for-timerOff_switch=>unused
templateSet =>SwitchPBU01_Sw_02=>start
templateSet =>SwitchPBU02_Btn_01=>start
templateSet =>SwitchPBU02_Btn_02=>start
templateSet =>SwitchPBU02_Sw_01=>start
templateSet =>SwitchPBU02_Sw_02=>start
templateSet =>SwitchPBU03=>start
templateSet =>SwitchPBU03=>self01:short>autoOff=>3600
templateSet =>SwitchPBU03=>self02:short>SwOff=>
templateSet =>SwitchPBU06=>start
templateSet =>SwitchPBU06=>self02:both>SwToggleIgnore=>unused
templateSet =>SwitchPBU06=>0>ES_00=>off
templateSet =>SwitchPBU06=>self01:short>autoOff=>20
templateSet =>SwitchUP01=>start
templateSet =>SwitchUP02=>start
templateSet =>Thermostat.AZ=>start
templateSet =>Thermostat.AZ=>0>tc1=>auto 25 off on
templateSet =>Thermostat.AZ_Climate=>start
templateSet =>Thermostat.AZ_Weather=>start
templateSet =>Thermostat.AZ_WindowRec=>start
templateSet =>Thermostat.Bad=>start
templateSet =>Thermostat.Bad=>0>tc1=>auto 25 off on
templateSet =>Thermostat.Bad.OG=>start
templateSet =>Thermostat.Bad.OG=>0>tc1=>auto 15 off off
templateSet =>Thermostat.Bad.OG_Climate=>start
templateSet =>Thermostat.Bad.OG_Weather=>start
templateSet =>Thermostat.Bad.OG_WindowRec=>start
templateSet =>Thermostat.Bad_Climate=>start
templateSet =>Thermostat.Bad_Weather=>start
templateSet =>Thermostat.Bad_WindowRec=>start
templateSet =>Thermostat.GZ=>start
templateSet =>Thermostat.GZ=>0>tc1=>auto 15 off off
templateSet =>Thermostat.GZ_Climate=>start
templateSet =>Thermostat.GZ_Climate=>0>TC_02_test=>central temp-only
templateSet =>Thermostat.GZ_Weather=>start
templateSet =>Thermostat.GZ_WindowRec=>start
templateSet =>Thermostat.Keller=>start
templateSet =>Thermostat.Keller=>0>tc1=>auto 15 off off
templateSet =>Thermostat.Keller_Climate=>start
templateSet =>Thermostat.Keller_Climate=>0>TC_02_test=>central temp-hum
templateSet =>Thermostat.Keller_Weather=>start
templateSet =>Thermostat.Keller_WindowRec=>start
templateSet =>Thermostat.Kueche=>start
templateSet =>Thermostat.Kueche=>0>tc1=>auto 25 off on
templateSet =>Thermostat.Kueche_Climate=>start
templateSet =>Thermostat.Kueche_Weather=>start
templateSet =>Thermostat.Kueche_WindowRec=>start
templateSet =>Thermostat.OZ=>start
templateSet =>Thermostat.OZ=>0>tc1=>auto 15 off off
templateSet =>Thermostat.OZ_Climate=>start
templateSet =>Thermostat.OZ_Climate=>0>TC_02_test=>central temp-hum
templateSet =>Thermostat.OZ_Weather=>start
templateSet =>Thermostat.OZ_WindowRec=>start
templateSet =>Thermostat.SZ=>start
templateSet =>Thermostat.SZ=>0>tc1=>auto 15 off off
templateSet =>Thermostat.SZ_Climate=>start
templateSet =>Thermostat.SZ_Climate=>0>s1=>
templateSet =>Thermostat.SZ_Weather=>start
templateSet =>Thermostat.SZ_WindowRec=>start
templateSet =>Thermostat.WZ=>start
templateSet =>Thermostat.WZ=>0>tc1=>auto 25 off on
templateSet =>Thermostat.WZ_Climate=>start
templateSet =>Thermostat.WZ_Weather=>start
templateSet =>Thermostat.WZ_WindowRec=>start
templateSet =>Tuer.SZ=>start
templateSet =>Tuer.WZ.Terrasse=>start
templateSet =>Ventil.AZ.Nord=>start
templateSet =>Ventil.AZ.West=>start
templateSet =>Ventil.Bad=>start
templateSet =>Ventil.Kueche=>start
templateSet =>Ventil.SZ=>start
templateSet =>Ventil.WZ=>start
templateSet =>Wetter.Nord=>start
templateSet =>Wetter.Sued=>start
templateSet =>Wetter.Sued=>0>THPL_00_default=>
templateSet =>test_IEC_01=>start
templateSet =>test_IEC_02=>start
======= finished templates ===
workaround für fehler b)
damit hminfo keine cfgState fehler für ignored entities anzeigt, kann man die cfgState-readings bei den ignored entities löschen.
fix für fehler b)
oder alle ignored entities vom fehler sammeln ausschliessen:
ich habe das problem jetzt mal mit diesem zusätzlichen code in zeile 319 98_HMinfo.pm eleminiert:
next if(CUL_HM_getAttrInt($eName,"ignore"));
ich habe nun mal ein paar logmeldungen eingebaut, wodurch 3 fehler "sichtbar" werden:
a) in 10_CUL_HM in die funktion:
sub CUL_HM_cfgStateUpdate($) {#update cfgState
my $tmrId = shift;
my (undef,$name) = split(':',$tmrId,2);
my ($hm) = devspec2array("TYPE=HMinfo");
Log(1,"----- cfgState test01 ----- -> name:$name id:$tmrId");
HMinfo_GetFn($defs{$hm},$hm,"configCheck","-f","^(".join("|",(CUL_HM_getAssChnNames($name),$name)).")\$") if(defined $hm);
}
b) und in 98_HMinfo in der funktion HMinfo_loadConfig am anfang und am ende der funktion:
sub HMinfo_loadConfig($@) {####################################################
Log(1,"----- loadConfig ----- -> start");
...
Log(1,"----- loadConfig ----- -> end");
return $ret;
}
1. "template undefined" nach fhem restart
das ergebnis bestätigt den verdacht, dass die template definitionen zu spät zur verfügung stehen, wodurch regelmässig "template undefined" gemeldet wird.
2020.09.15 14:57:11.761 1: ----- loadConfig ----- -> start
2020.09.15 14:57:11.862 1: ----- cfgState test01 ----- -> name:Fenster.Bad id:cfgStateUpdate:Fenster.Bad
2020.09.15 14:57:11.950 1: ----- cfgState test01 ----- -> name:Fenster.Bad id:cfgStateUpdate:Fenster.Bad
2020.09.15 14:57:12.018 1: ----- cfgState test01 ----- -> name:SwitchPBU01 id:cfgStateUpdate:SwitchPBU01
2020.09.15 14:57:12.162 1: ----- cfgState test01 ----- -> name:SwitchES01 id:cfgStateUpdate:SwitchES01
2020.09.15 14:57:12.340 1: ----- cfgState test01 ----- -> name:Tuer.WZ.Terrasse id:cfgStateUpdate:Tuer.WZ.Terrasse
2020.09.15 14:57:12.426 1: ----- cfgState test01 ----- -> name:Tuer.WZ.Terrasse id:cfgStateUpdate:Tuer.WZ.Terrasse
2020.09.15 14:57:12.508 1: ----- cfgState test01 ----- -> name:Thermostat.OZ id:cfgStateUpdate:Thermostat.OZ
2020.09.15 14:57:12.664 1: ----- cfgState test01 ----- -> name:Thermostat.WZ id:cfgStateUpdate:Thermostat.WZ
2020.09.15 14:57:12.775 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 14:57:13.031 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 14:57:13.098 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 14:57:13.182 1: ----- cfgState test01 ----- -> name:Wetter.Sued id:cfgStateUpdate:Wetter.Sued
2020.09.15 14:57:13.297 1: ----- cfgState test01 ----- -> name:Wetter.Nord id:cfgStateUpdate:Wetter.Nord
2020.09.15 14:57:13.369 1: ----- cfgState test01 ----- -> name:SwitchUP02 id:cfgStateUpdate:SwitchUP02
2020.09.15 14:57:13.438 1: ----- cfgState test01 ----- -> name:SwitchUP02 id:cfgStateUpdate:SwitchUP02
2020.09.15 14:57:13.488 1: ----- loadConfig ----- -> end
2. unnötige configChecks für ignored devices
ausserdem wird viel zeit vergeudet durch configchecks von ignored devices. im beispiel sind HM_114B05 und SwitchUP02 ignored.
3. seltsame "blockbildung" der durchgeführten configchecks
ich habe gestern 6 restarts mit den eingebauten logmeldungen durchgeführt.
dabei sind mir einige seltsame dinge aufgefallen.
(vor jedem restart habe ich einen manuellen configcheck ausgeführt, wenn configfehler existierten.
ein manueller configcheck zeigt bei mir zur zeit null einträge an und "repariert" somit alle readings cfgState mit "ok".
ausserdem habe ich das file fhem.save kontrolliert, ob wirklich vor einem restart bei allen entities cfgState=ok eingetragen war.)
a) es werden grundsätzlich nur 2 unterschiedliche "blöcke" von configchecks mit wenigen devices durchgeführt.
eigentlich hatte ich vermutet, dass bei jedem restart alle entities einen configcheck erfahren.
das erklärt meine beobachtung, dass von 9 thermostaten, denen das selbe template zugewiesen ist, immer nur genau die selben 2 devices den fehler "template undefined" gemeldet haben => denn es werden grundsätzlich seit wochen immer nur diese beiden thermostate gecheckt.
die reihenfolge der devices in jedem block variiert zwar, aber es sind jedes mal exakt die selben devices, die für die configchecks aufgerufen werden. sogar die wiederholungen der einzelnen devices sind jeweils identisch.
b) die 2 blöcke erscheinen immer abwechselnd.
der kürzere block verursacht bei mir keine "template undefined" meldungen, da bei diesen devices keine templates definiert sind.
der andere block enthält genau die 8 entities, die bei mir regelmässig die fehlermeldungen erzeugen.
da die fehlermeldungen also immer bei jedem zweiten restart auftauchen, ist das auch die erklärung für meine "halluzination" von vorgestern.
fazit: mit der "auswahl" der devices für einen configcheck beim fhem restart stimmt etwas nicht.
2020.09.15 12:57:55.633 1: ----- cfgState test01 ----- -> name:Ventil.Bad id:cfgStateUpdate:Ventil.Bad
2020.09.15 12:57:55.710 1: ----- cfgState test01 ----- -> name:Ventil.Bad id:cfgStateUpdate:Ventil.Bad
2020.09.15 12:57:55.789 1: ----- cfgState test01 ----- -> name:Ventil.AZ.Nord id:cfgStateUpdate:Ventil.AZ.Nord
2020.09.15 12:57:55.895 1: ----- cfgState test01 ----- -> name:Ventil.AZ.Nord id:cfgStateUpdate:Ventil.AZ.Nord
2020.09.15 12:57:56.017 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 12:57:56.126 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 12:57:56.204 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 12:57:56.289 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 13:15:25.224 1: ----- cfgState test01 ----- -> name:Fenster.Bad id:cfgStateUpdate:Fenster.Bad
2020.09.15 13:15:25.336 1: ----- cfgState test01 ----- -> name:Fenster.Bad id:cfgStateUpdate:Fenster.Bad
2020.09.15 13:15:25.460 1: ----- cfgState test01 ----- -> name:Wetter.Nord id:cfgStateUpdate:Wetter.Nord
2020.09.15 13:15:25.532 1: ----- cfgState test01 ----- -> name:SwitchUP02 id:cfgStateUpdate:SwitchUP02
2020.09.15 13:15:25.641 1: ----- cfgState test01 ----- -> name:SwitchUP02 id:cfgStateUpdate:SwitchUP02
2020.09.15 13:15:25.746 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 13:15:25.817 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 13:15:26.090 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 13:15:26.175 1: ----- cfgState test01 ----- -> name:Thermostat.WZ id:cfgStateUpdate:Thermostat.WZ
2020.09.15 13:15:26.306 1: ----- cfgState test01 ----- -> name:Tuer.WZ.Terrasse id:cfgStateUpdate:Tuer.WZ.Terrasse
2020.09.15 13:15:26.397 1: ----- cfgState test01 ----- -> name:Tuer.WZ.Terrasse id:cfgStateUpdate:Tuer.WZ.Terrasse
2020.09.15 13:15:26.481 1: ----- cfgState test01 ----- -> name:SwitchES01 id:cfgStateUpdate:SwitchES01
2020.09.15 13:15:26.679 1: ----- cfgState test01 ----- -> name:Wetter.Sued id:cfgStateUpdate:Wetter.Sued
2020.09.15 13:15:26.784 1: ----- cfgState test01 ----- -> name:SwitchPBU01 id:cfgStateUpdate:SwitchPBU01
2020.09.15 13:15:26.944 1: ----- cfgState test01 ----- -> name:Thermostat.OZ id:cfgStateUpdate:Thermostat.OZ
2020.09.15 14:22:17.469 1: ----- cfgState test01 ----- -> name:Ventil.AZ.Nord id:cfgStateUpdate:Ventil.AZ.Nord
2020.09.15 14:22:17.574 1: ----- cfgState test01 ----- -> name:Ventil.AZ.Nord id:cfgStateUpdate:Ventil.AZ.Nord
2020.09.15 14:22:17.679 1: ----- cfgState test01 ----- -> name:Ventil.Bad id:cfgStateUpdate:Ventil.Bad
2020.09.15 14:22:17.756 1: ----- cfgState test01 ----- -> name:Ventil.Bad id:cfgStateUpdate:Ventil.Bad
2020.09.15 14:22:17.834 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 14:22:17.943 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 14:22:18.027 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 14:22:18.148 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 14:38:37.081 1: ----- cfgState test01 ----- -> name:Wetter.Sued id:cfgStateUpdate:Wetter.Sued
2020.09.15 14:38:37.190 1: ----- cfgState test01 ----- -> name:Tuer.WZ.Terrasse id:cfgStateUpdate:Tuer.WZ.Terrasse
2020.09.15 14:38:37.276 1: ----- cfgState test01 ----- -> name:Tuer.WZ.Terrasse id:cfgStateUpdate:Tuer.WZ.Terrasse
2020.09.15 14:38:37.355 1: ----- cfgState test01 ----- -> name:SwitchES01 id:cfgStateUpdate:SwitchES01
2020.09.15 14:38:37.530 1: ----- cfgState test01 ----- -> name:Fenster.Bad id:cfgStateUpdate:Fenster.Bad
2020.09.15 14:38:37.618 1: ----- cfgState test01 ----- -> name:Fenster.Bad id:cfgStateUpdate:Fenster.Bad
2020.09.15 14:38:37.701 1: ----- cfgState test01 ----- -> name:Thermostat.WZ id:cfgStateUpdate:Thermostat.WZ
2020.09.15 14:38:37.812 1: ----- cfgState test01 ----- -> name:SwitchUP02 id:cfgStateUpdate:SwitchUP02
2020.09.15 14:38:37.914 1: ----- cfgState test01 ----- -> name:SwitchUP02 id:cfgStateUpdate:SwitchUP02
2020.09.15 14:38:38.026 1: ----- cfgState test01 ----- -> name:Thermostat.OZ id:cfgStateUpdate:Thermostat.OZ
2020.09.15 14:38:38.170 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 14:38:38.234 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 14:38:38.491 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 14:38:38.556 1: ----- cfgState test01 ----- -> name:SwitchPBU01 id:cfgStateUpdate:SwitchPBU01
2020.09.15 14:38:38.709 1: ----- cfgState test01 ----- -> name:Wetter.Nord id:cfgStateUpdate:Wetter.Nord
2020.09.15 14:45:52.350 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 14:45:52.459 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 14:45:52.544 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 14:45:52.666 1: ----- cfgState test01 ----- -> name:Tuer.SZ id:cfgStateUpdate:Tuer.SZ
2020.09.15 14:45:52.740 1: ----- cfgState test01 ----- -> name:Ventil.AZ.Nord id:cfgStateUpdate:Ventil.AZ.Nord
2020.09.15 14:45:52.819 1: ----- cfgState test01 ----- -> name:Ventil.AZ.Nord id:cfgStateUpdate:Ventil.AZ.Nord
2020.09.15 14:45:52.897 1: ----- cfgState test01 ----- -> name:Ventil.Bad id:cfgStateUpdate:Ventil.Bad
2020.09.15 14:45:53.002 1: ----- cfgState test01 ----- -> name:Ventil.Bad id:cfgStateUpdate:Ventil.Bad
2020.09.15 14:57:11.862 1: ----- cfgState test01 ----- -> name:Fenster.Bad id:cfgStateUpdate:Fenster.Bad
2020.09.15 14:57:11.950 1: ----- cfgState test01 ----- -> name:Fenster.Bad id:cfgStateUpdate:Fenster.Bad
2020.09.15 14:57:12.018 1: ----- cfgState test01 ----- -> name:SwitchPBU01 id:cfgStateUpdate:SwitchPBU01
2020.09.15 14:57:12.162 1: ----- cfgState test01 ----- -> name:SwitchES01 id:cfgStateUpdate:SwitchES01
2020.09.15 14:57:12.340 1: ----- cfgState test01 ----- -> name:Tuer.WZ.Terrasse id:cfgStateUpdate:Tuer.WZ.Terrasse
2020.09.15 14:57:12.426 1: ----- cfgState test01 ----- -> name:Tuer.WZ.Terrasse id:cfgStateUpdate:Tuer.WZ.Terrasse
2020.09.15 14:57:12.508 1: ----- cfgState test01 ----- -> name:Thermostat.OZ id:cfgStateUpdate:Thermostat.OZ
2020.09.15 14:57:12.664 1: ----- cfgState test01 ----- -> name:Thermostat.WZ id:cfgStateUpdate:Thermostat.WZ
2020.09.15 14:57:12.775 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 14:57:13.031 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 14:57:13.098 1: ----- cfgState test01 ----- -> name:HM_114B05 id:cfgStateUpdate:HM_114B05
2020.09.15 14:57:13.182 1: ----- cfgState test01 ----- -> name:Wetter.Sued id:cfgStateUpdate:Wetter.Sued
2020.09.15 14:57:13.297 1: ----- cfgState test01 ----- -> name:Wetter.Nord id:cfgStateUpdate:Wetter.Nord
2020.09.15 14:57:13.369 1: ----- cfgState test01 ----- -> name:SwitchUP02 id:cfgStateUpdate:SwitchUP02
2020.09.15 14:57:13.438 1: ----- cfgState test01 ----- -> name:SwitchUP02 id:cfgStateUpdate:SwitchUP02
a) TmplChk zeigt immer bei einigen devices "template undefined".
korrekt, das einlesen des "Archives", so es in HMInfo eingeschalten ist, kommt typisch nach CUL_HM finish. Ich baue ein zwingendes templateCheck nach jedem loadConfig ein
b) ignored entities mit cfgState fehlern werden ebenfalls in hminfo ermittelt und angezeigt.
Ignored Entites werden nicht geprüft. d.h. gefiltert. Ich sehe das Problem also nicht.
Ich werden keine Readings von Entites löschen, welche auf "Ignored" stehen. Das Attribut ist systemweit und sollte immer die gleiche Ausprägung haben. Wenn es gesetzt ist, kann ich mich auf viele Readings nicht mehr verlassen, ausser die ID. Ich werde das einbauen, was üblich ist. Es ist Sache des Anwenders, "ignored" devices auszuschliessen.
next if(CUL_HM_getAttrInt($eName,"ignore"));
ist absolut korekt und das hätte ich bei Status-Update einbauen sollten - danke.
c) wenn mehrere cfgState fehler existieren, müssten diese sortiert werden.
Genauer redest du nicht von Sortieren sondern akkumulieren. Das sehe ich erst einmal nicht. State könnte sich entweder auf "configFail - please check" reduzieren oder es so lassen wie es ist.
d) ausserdem erzeugt das reading ERR_cfgState in hminf ständig neue events
Ich baue ein "sort" ein - das sollte es lösen.
das Config file ist eine Art journaling config - um zu häufiges aufräumen zu vermeiden. Die Definitionen ggf überschrieben. Purge räumt auf... sollte technisch aber keinen Unterschied machen. Interessant ist also das config vor und nach dem purge sowie die Fehlermeldung.
Ich sehe ein problem: wenn die defines erst nach den Sets im File stehen. Könnte möglich sein... werde ich "sequenzialisieren"
Ein Config-Check wird für alle Devices durchgeführt - in einem Schuss.
Zitata) TmplChk zeigt immer bei einigen devices "template undefined".
korrekt, das einlesen des "Archives", so es in HMInfo eingeschalten ist, kommt typisch nach CUL_HM finish. Ich baue ein zwingendes templateCheck nach jedem loadConfig ein
im log ist der templateCheck zwar zu sehen, aber am problem hat es nichts geändert.
es werden immer noch die selben 8 entities mit "template undefined" nach jedem 2 restart gemeldet.
2020.09.19 11:33:58.907 3: HMinfo hminfo get:loadConfig :
2020.09.19 11:33:59.011 3: HMinfo hminfo get:configCheck :-f,^(Fenster.Bad|Fenster.Bad)$
2020.09.19 11:33:59.099 3: HMinfo hminfo get:configCheck :-f,^(Fenster.Bad|Fenster.Bad)$
2020.09.19 11:33:59.184 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.OZ|Thermostat.OZ_Climate|Thermostat.OZ_Weather|Thermostat.OZ_WindowRec|Thermostat.OZ)$
2020.09.19 11:33:59.342 3: HMinfo hminfo get:configCheck :-f,^(Tuer.WZ.Terrasse|Tuer.WZ.Terrasse)$
2020.09.19 11:33:59.452 3: HMinfo hminfo get:configCheck :-f,^(Tuer.WZ.Terrasse|Tuer.WZ.Terrasse)$
2020.09.19 11:33:59.549 3: HMinfo hminfo get:configCheck :-f,^(SwitchPBU01|SwitchPBU01_Btn_01|SwitchPBU01_Btn_02|SwitchPBU01_Sw_01|SwitchPBU01_Sw_02|SwitchPBU01)$
2020.09.19 11:33:59.702 3: HMinfo hminfo get:configCheck :-f,^(Wetter.Sued|Wetter.Sued)$
2020.09.19 11:33:59.805 3: HMinfo hminfo get:configCheck :-f,^(SwitchUP02|SwitchUP02)$
2020.09.19 11:33:59.874 3: HMinfo hminfo get:configCheck :-f,^(SwitchUP02|SwitchUP02)$
2020.09.19 11:33:59.954 3: HMinfo hminfo get:configCheck :-f,^(SwitchES01|SwitchES01_Pwr|SwitchES01_SenF|SwitchES01_SenI|SwitchES01_SenPwr|SwitchES01_SenU|SwitchES01_Sw|SwitchES01)$
2020.09.19 11:34:00.139 3: HMinfo hminfo get:configCheck :-f,^(Wetter.Nord|Wetter.Nord)$
2020.09.19 11:34:00.222 3: HMinfo hminfo get:configCheck :-f,^(Thermostat.WZ|Thermostat.WZ_Climate|Thermostat.WZ_Weather|Thermostat.WZ_WindowRec|Thermostat.WZ)$
2020.09.19 11:34:00.341 3: HMinfo hminfo get:configCheck :-f,^(HM_114B05|HM_114B05)$
2020.09.19 11:34:00.600 3: HMinfo hminfo get:configCheck :-f,^(HM_114B05|HM_114B05)$
2020.09.19 11:34:00.669 3: HMinfo hminfo get:configCheck :-f,^(HM_114B05|HM_114B05)$
2020.09.19 11:34:00.717 3: HMinfo hminfo get:templateChk :
wie du beobachtetest - bei jeden 2. Reload. Das liegt an den Zeitstempeln der State-Files.
Es war etwas mehr Umbau, die Kontrolle nach Reboot zu sequenzialisieren und nicht zu duplizieren....
Nun kann ich es (mit diesem Ablauf) nicht mehr reproduzieren.
HMInfo und CUL_HM sind notwendig. HMConfig wegen der Änderung zuvor.
danke,
das aktuelle update erzeugt nun keine "template undefined" meldungen mehr.
2020.09.21 10:18:35.636 3: HMinfo hminfo get:loadConfig :
2020.09.21 10:18:35.789 2: HMinfo hminfo get:configCheck :-f,^(Thermostat.OZ|Thermostat.OZ_Climate|Thermostat.OZ_Weather|Thermostat.OZ_WindowRec|Thermostat.OZ)$
2020.09.21 10:18:35.845 2: HMinfo hminfo get:configCheck :-f,^(Thermostat.WZ|Thermostat.WZ_Climate|Thermostat.WZ_Weather|Thermostat.WZ_WindowRec|Thermostat.WZ)$
2020.09.21 10:18:35.945 2: HMinfo hminfo get:configCheck :-f,^(Tuer.WZ.Terrasse|Tuer.WZ.Terrasse)$
2020.09.21 10:18:35.986 2: HMinfo hminfo get:configCheck :-f,^(SwitchPBU01|SwitchPBU01_Btn_01|SwitchPBU01_Btn_02|SwitchPBU01_Sw_01|SwitchPBU01_Sw_02|SwitchPBU01)$
2020.09.21 10:18:36.284 2: HMinfo hminfo get:configCheck :-f,^(HM_114B05|HM_114B05)$
2020.09.21 10:18:36.336 2: HMinfo hminfo get:configCheck :-f,^(SwitchES01|SwitchES01_Pwr|SwitchES01_SenF|SwitchES01_SenI|SwitchES01_SenPwr|SwitchES01_SenU|SwitchES01_Sw|SwitchES01)$
2020.09.21 10:18:36.435 2: HMinfo hminfo get:configCheck :-f,^(Fenster.Bad|Fenster.Bad)$
2020.09.21 10:18:36.494 2: HMinfo hminfo get:configCheck :-f,^(Wetter.Nord|Wetter.Nord)$
2020.09.21 10:18:36.570 2: HMinfo hminfo get:configCheck :-f,^(SwitchUP02|SwitchUP02)$
2020.09.21 10:18:36.630 2: HMinfo hminfo get:configCheck :-f,^(Wetter.Sued|Wetter.Sued)$
2020.09.21 10:18:36.645 2: HMinfo hminfo get:configCheck :
nun hätte ich noch warnungen von "get hminfo protoEvents long" im angebot:
2020.09.21 11:14:36.585 2: HMinfo hminfo get:protoEvents :long
2020.09.21 11:14:36.595 1: PERL WARNING: Use of uninitialized value $date in sprintf at ./FHEM/98_HMinfo.pm line 1282.
2020.09.21 11:14:36.596 1: stacktrace:
2020.09.21 11:14:36.596 1: main::__ANON__ called by ./FHEM/98_HMinfo.pm (1282)
2020.09.21 11:14:36.596 1: main::HMinfo_GetFn called by fhem.pl (3816)
2020.09.21 11:14:36.597 1: main::CallFn called by fhem.pl (1988)
2020.09.21 11:14:36.597 1: main::CommandGet called by fhem.pl (1255)
2020.09.21 11:14:36.597 1: main::AnalyzeCommand called by ./FHEM/01_FHEMWEB.pm (2715)
2020.09.21 11:14:36.598 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (941)
2020.09.21 11:14:36.598 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (592)
2020.09.21 11:14:36.598 1: main::FW_Read called by fhem.pl (3816)
2020.09.21 11:14:36.599 1: main::CallFn called by fhem.pl (763)
2020.09.21 11:14:36.599 1: PERL WARNING: Argument " -" isn't numeric in addition (+) at ./FHEM/98_HMinfo.pm line 1283.
2020.09.21 11:14:36.599 1: stacktrace:
2020.09.21 11:14:36.600 1: main::__ANON__ called by ./FHEM/98_HMinfo.pm (1283)
2020.09.21 11:14:36.600 1: main::HMinfo_GetFn called by fhem.pl (3816)
2020.09.21 11:14:36.600 1: main::CallFn called by fhem.pl (1988)
2020.09.21 11:14:36.601 1: main::CommandGet called by fhem.pl (1255)
2020.09.21 11:14:36.601 1: main::AnalyzeCommand called by ./FHEM/01_FHEMWEB.pm (2715)
2020.09.21 11:14:36.601 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (941)
2020.09.21 11:14:36.602 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (592)
2020.09.21 11:14:36.602 1: main::FW_Read called by fhem.pl (3816)
2020.09.21 11:14:36.602 1: main::CallFn called by fhem.pl (763)
seit ein paar tagen zeigt ein RHS-fensterkontakt im reading cfgState plötzlich "updating" an und hängt in diesem zustand quasi fest.
ich hätte gedacht, dass "updating" ein "übergangs-status" ist, der nach einer gewissen zeit in ein "ergebnis-zustand" übergeht.
ist dem so, oder soll das eine "aufforderung" für mich sein?
ich wüsste nicht, was ihm plötzlich fehlt.
ich habe gerade gesehen, dass unter get deviceInfo fälschlicher weise der mode lazyconfig angezeigt wird, der aber in der eq3-xml datei gar nicht existiert. dort werden die modes CONFIG und WAKEUP angegeben => https://github.com/eq-3/occu/blob/master/firmware/rftypes/rf_rhs.xml (https://github.com/eq-3/occu/blob/master/firmware/rftypes/rf_rhs.xml)
deviceInfo:
Device name:Fenster.Bad
org ID :0030 Model=HM-SEC-RHS
alias ID :0030 Model=HM-SEC-RHS
mode :config,lazyConf - activity:switchedOff
protState : CMDs_done pending: none
configuration check: updating
list rhs:
Internals:
DEF 1C1BE3
FUUID 5c4ce2e9-f33f-09c4-7a30-ecfb079a3a5fdcec
IODev cul868
LASTInputDev hmlan1
MSGCNT 116
NAME Fenster.Bad
NOTIFYDEV global
NR 309
NTFY_ORDER 50-Fenster.Bad
STATE Fenster:tilted (to ccu), Status:tilted, Cover:cover, Bat:ok
TYPE CUL_HM
chanNo 01
cul868_MSGCNT 58
cul868_RAWMSG A0D04A6101C1BE31ACE1F06016400::-65.5:cul868
cul868_RSSI -65.5
cul868_TIME 2020-10-01 08:59:42
hmlan1_MSGCNT 58
hmlan1_RAWMSG E1C1BE3,0000,90CFD69B,FF,FFC0,04A6101C1BE31ACE1F06016400
hmlan1_RSSI -64
hmlan1_TIME 2020-10-01 08:59:42
lastMsg No:04 - t:10 s:1C1BE3 d:1ACE1F 06016400
protLastRcv 2020-10-01 08:59:42
protRcv 58 last_at:2020-10-01 08:59:42
protSnd 107 last_at:2020-10-01 08:59:42
protState CMDs_done
rssi_at_cul868 cnt:58 min:-77.5 max:-59.5 avg:-67.68 lst:-65.5
rssi_at_hmlan1 cnt:58 min:-81 max:-62 avg:-69.65 lst:-64
.attraggr:
.attreocr:
.*
.attrminint:
.attrtocr:
.*
.userReadings:
HASH(0x4e74e60)
READINGS:
from archivexx .D-devInfo 910101
from archivexx .D-stc 80
2020-09-21 11:24:11 .associatedWith Fenster.Bad,Fenster.Bad
2020-08-10 13:21:09 .peerListRDate 2020-08-10 13:21:09
2020-10-01 08:59:42 .protLastRcv 20201001085942
2020-08-10 17:14:38 Activity switchedOff
2020-08-10 13:17:55 CommandAccepted no
from archivexx D-firmware 2.0
from archivexx D-serialNr JEQ0346697
2020-08-10 13:21:08 PairedTo 0x1ACE1F
2020-09-21 10:18:36 R-cyclicInfoMsg on
2020-09-21 10:18:36 R-eventDlyTime 0 s
2020-09-21 10:18:36 R-ledOnTime 0.5 s
2020-09-21 10:18:36 R-msgRhsPosA closed
2020-09-21 10:18:36 R-msgRhsPosB open
2020-09-21 10:18:36 R-msgRhsPosC tilted
2020-09-21 10:18:36 R-pairCentral 0x1ACE1F
2020-09-21 10:18:36 R-sign off
2020-09-21 10:18:36 R-transmDevTryMax 6
2020-09-21 10:18:36 R-transmitTryMax 6
2020-08-10 13:21:08 RegL_00. 00:00 02:01 09:01 0A:1A 0B:CE 0C:1F 10:01 14:06
2020-08-10 13:21:09 RegL_01. 00:00 08:00 20:6C 21:00 22:64 30:06
2020-08-10 13:21:34 alive yes
2020-08-12 07:59:44 battery ok
2020-09-28 14:37:41 cfgState updating
2020-08-12 07:59:44 commState CMDs_done
2020-09-30 09:09:30 contact tilted (to ccu)
2020-09-30 08:54:40 powerOn 2020-09-30 08:54:39
2020-08-10 13:21:34 recentStateType info
2020-08-10 13:21:34 sabotageError off
2020-09-30 09:09:30 state tilted
2020-09-30 09:09:30 trigger_cnt 3
helper:
HM_CMDNR 4
PONtest 0
mId 0030
peerFriend peerAct,peerVirt
peerOpt 4:threeStateSensor
regLst 0,1,4p
rxType 20
supp_Pair_Rep 0
tmplChg 0
ack:
cfgChk:
cmds:
TmplKey :1600680269.35338:1601544785.79812
TmplTs 1601544785.79812
cmdKey 1:1:0::Fenster.Bad:0030:01:
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) [-peerChn-]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan -btnNumber- -actChn- [({single})] [({set}|unset)] [actor|remote|both]
peerSmart -peerOpt-
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
sign [(on|{off})]
tplDel -tplDel-
tplSet_0 -tplChan-
trgEventL -peer- -condition-
trgEventS -peer- -condition-
trgPressL [(-peer-|{all})]
trgPressS [(-peer-|{all})]
unpair noArg
lst:
condition closed,open,tilted
peer
peerOpt DimPBU01_Sw1_V01,DimPBU01_Sw1_V02,DimPBU01_chn01,DimUP01,SDTeam_Btn1,SwitchES01_Sw,SwitchPBU01_Sw_01,SwitchPBU01_Sw_02,SwitchPBU02_Sw_01,SwitchPBU02_Sw_02,SwitchPBU03,SwitchPBU06,SwitchUP01,SwitchUP02,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,virtAktorAlarmOff_Btn1
tplChan RHS
tplDel
tplPeer
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
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:
newChn +1C1BE3,00,00,00
nextSend 1601535582.68104
rxt 2
vccu ccu
p:
1C1BE3
00
00
00
prefIO:
cul868
mRssi:
mNo 04
io:
cul868:
-61.5
-61.5
hmlan1:
-64
-64
hmuart1:
hmusb1:
prt:
bErr 0
sProc 0
sleeping 1
rspWait:
q:
qReqConf 00
qReqStat
role:
chn 1
dev 1
rpt:
IO cul868
flg A
ts 1601535582.47422
ack:
HASH(0x4e76b80)
0480021ACE1F1C1BE300
rssi:
at_cul868:
avg -67.6810344827586
cnt 58
lst -65.5
max -59.5
min -77.5
at_hmlan1:
avg -69.6551724137931
cnt 58
lst -64
max -62
min -81
shadowReg:
tmpl:
Attributes:
.mId 0030
IODev cul868
IOgrp ccu:cul868
actCycle 000:00
actStatus switchedOff
autoReadReg 5_readMissing
comment Lueftung
event-on-change-reading .*
expert defReg,allReg,rawReg,templ
firmware 2.0
group Alarmmelder
model HM-SEC-RHS
peerIDs 00000000,
room 01_ALARM,40_Bad
serialNr JEQ0346697
stateFormat Fenster:contact, Status:state, Cover:cover, Bat:battery
subType threeStateSensor
timestamp-on-change-reading .*
edit_1:
ausgelösst wurde cfgState=updating durch einen configCheck, den ich gerade in fhem.log gesehen habe.
2020.09.28 14:37:40.645 2: HMinfo hminfo get:configCheck :
ein weiterer configCheck, der keine fehler zeigt, kann den zustand cfgState=updating aber nicht beseitigen.
requests pending
----------------
autoReadReg :
recent : none
status request :
autoReadReg wakeup : Fenster.Bad
status request wakeup:
autoReadTest : Fenster.Bad
edit_2:
es gibt ein haufen hminfo warnings:
2020.10.01 11:57:51.501 2: HMinfo hminfo get:models :-f,RHS
2020.10.01 11:57:51.505 1: PERL WARNING: Use of uninitialized value $s in string eq at ./FHEM/98_HMinfo.pm line 1675.
2020.10.01 11:57:51.506 1: stacktrace:
2020.10.01 11:57:51.506 1: main::__ANON__ called by ./FHEM/98_HMinfo.pm (1675)
2020.10.01 11:57:51.507 1: main::HMinfo_GetFn called by fhem.pl (3816)
2020.10.01 11:57:51.507 1: main::CallFn called by fhem.pl (1988)
2020.10.01 11:57:51.507 1: main::CommandGet called by fhem.pl (1255)
2020.10.01 11:57:51.508 1: main::AnalyzeCommand called by fhem.pl (1106)
2020.10.01 11:57:51.508 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2717)
2020.10.01 11:57:51.508 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (941)
2020.10.01 11:57:51.508 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (592)
2020.10.01 11:57:51.509 1: main::FW_Read called by fhem.pl (3816)
2020.10.01 11:57:51.509 1: main::CallFn called by fhem.pl (763)
2020.10.01 11:57:51.509 1: PERL WARNING: Use of uninitialized value $e in string eq at ./FHEM/98_HMinfo.pm line 1675.
2020.10.01 11:57:51.510 1: stacktrace:
2020.10.01 11:57:51.510 1: main::__ANON__ called by ./FHEM/98_HMinfo.pm (1675)
2020.10.01 11:57:51.510 1: main::HMinfo_GetFn called by fhem.pl (3816)
2020.10.01 11:57:51.511 1: main::CallFn called by fhem.pl (1988)
2020.10.01 11:57:51.511 1: main::CommandGet called by fhem.pl (1255)
2020.10.01 11:57:51.511 1: main::AnalyzeCommand called by fhem.pl (1106)
2020.10.01 11:57:51.511 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2717)
2020.10.01 11:57:51.512 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (941)
2020.10.01 11:57:51.512 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (592)
2020.10.01 11:57:51.512 1: main::FW_Read called by fhem.pl (3816)
2020.10.01 11:57:51.513 1: main::CallFn called by fhem.pl (763)
2020.10.01 11:57:51.513 1: PERL WARNING: Use of uninitialized value $s in concatenation (.) or string at ./FHEM/98_HMinfo.pm line 1675.
2020.10.01 11:57:51.513 1: stacktrace:
2020.10.01 11:57:51.514 1: main::__ANON__ called by ./FHEM/98_HMinfo.pm (1675)
2020.10.01 11:57:51.514 1: main::HMinfo_GetFn called by fhem.pl (3816)
2020.10.01 11:57:51.514 1: main::CallFn called by fhem.pl (1988)
2020.10.01 11:57:51.515 1: main::CommandGet called by fhem.pl (1255)
2020.10.01 11:57:51.515 1: main::AnalyzeCommand called by fhem.pl (1106)
2020.10.01 11:57:51.515 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2717)
2020.10.01 11:57:51.516 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (941)
2020.10.01 11:57:51.516 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (592)
2020.10.01 11:57:51.516 1: main::FW_Read called by fhem.pl (3816)
2020.10.01 11:57:51.517 1: main::CallFn called by fhem.pl (763)
push.
hallo martin,
die 2 letzten posts sind noch aktuell.
gruss frank