Hi,
nachdem ich vorgestern - seit längerer Zeit - mal wieder ein Update gemacht habe, bekomme ich bei jedem FHEM-Start folgende Fehlermeldung, gefolgt von einem Deaktivieren des Autosave:
Messages collected while initializing FHEM:configfile: Swi_Ventil1: unknown attribute .ignoreSet. Type 'attr Swi_Ventil1 ?' for a detailed list.
Swi_Ventil2: unknown attribute .ignoreSet. Type 'attr Swi_Ventil2 ?' for a detailed list.
Beide Geräte sind HM-LC-SW4-WM. Ein Attribut ".ignoreSet" haben beide Geräte nicht - weder in FHEM angezeigt noch in der fhem.cfg abgespeichert. Natürlich habe ich es ein paar Male versucht, die Config nach der Fehlermeldung und ohne dieses Attribut abzuspeichern. Die Fehlermeldung tritt dennoch weiter auf.
Wie werde ich den Fehler los?
Anbei ein List auf eines der beiden Devices:
Internals:
DEF 3189B1
FUUID 5c681fe6-f33f-e1ef-99d1-fe67b22ed172a4b2
IODev HMUSB
NAME Swi_Ventil1
NOTIFYDEV global
NR 515
NTFY_ORDER 50-Swi_Ventil1
STATE CMDs_done
TYPE CUL_HM
channel_01 Swi_Ventil_blau
channel_02 Swi_Ventil_braun
channel_03 Swi_Ventil_gelb
channel_04 Swi_Ventil1_4
READINGS:
2021-01-06 21:08:08 Activity alive
2018-02-11 08:53:06 D-firmware 1.12
2018-02-11 08:53:06 D-serialNr LEQ0877399
2021-01-06 21:00:20 PairedTo 0xABABAB
2018-05-06 13:21:05 R-intKeyVisib invisib
2018-05-06 13:21:05 R-pairCentral 0xABABAB
2021-01-06 21:00:20 RegL_00. 00:00 02:01 03:00 04:00 05:00 06:00 07:00 08:00 09:00 0A:AB 0B:AB 0C:AB
2021-01-06 21:00:55 cfgState ok
2021-01-06 21:20:00 commState CMDs_done
2021-01-06 21:00:05 level 0
2021-01-06 21:00:05 pct 0
2021-01-06 21:00:05 powerOn 2021-01-06 21:00:04
2021-01-06 21:00:05 recentStateType info
2018-11-10 15:01:05 sabotageAttack_ErrIoAttack cnt 7
2021-01-06 21:20:00 state CMDs_done
2021-01-06 21:00:05 timedOn off
helper:
HM_CMDNR 79
mId 0003
peerFriend
peerOpt -:switch
regLst 0
rxType 1
cmds:
TmplKey :no:1609984924.59649
TmplTs 1609984924.59649
cmdKey 0:1:0::Swi_Ventil1:0003: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-]
getVersion noArg
pair noArg
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
tplDel -tplDel-
tplSet_0 -tplChan-
unpair noArg
lst:
condition slider,0,1,255
peer
peerOpt
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:
newChn +3189B1,00,02,00
rxt 0
vccu vccu
p:
3189B1
00
02
00
prefIO:
HMUSB
mRssi:
mNo
io:
HMLAN1:
HMLAN2:
HMLGW1:
HMLGW2:
HMLGWmobile:
HMUSB:
prt:
bErr 0
sProc 0
q:
qReqConf
qReqStat
role:
dev 1
prs 1
tmpl:
Attributes:
IODev HMUSB
IOgrp vccu:HMUSB
actCycle 024:00
actStatus alive
autoReadReg 5_readMissing
dummy 1
event-on-change-reading .*
expert defReg,allReg,rawReg,templ
firmware 1.12
ignore 1
model HM-LC-SW4-WM
room Cfg_Wasser
serialNr LEQ0877399
subType switch
webCmd getConfig:clear msgEvents
Interessanter ist vielleicht ein grep auf fhem.cfg:
define Swi_Ventil1 CUL_HM 3189B1
setuuid Swi_Ventil1 5c681fe6-f33f-e1ef-99d1-fe67b22ed172a4b2
attr Swi_Ventil1 .ignoreSet 1
attr Swi_Ventil1 .mId 0066
attr Swi_Ventil1 IODev HMUSB
attr Swi_Ventil1 IOgrp vccu:HMUSB
attr Swi_Ventil1 actCycle 024:00
attr Swi_Ventil1 actStatus alive
attr Swi_Ventil1 autoReadReg 5_readMissing
attr Swi_Ventil1 dummy 1
attr Swi_Ventil1 event-on-change-reading .*
attr Swi_Ventil1 expert defReg,allReg,rawReg,templ
attr Swi_Ventil1 firmware 1.12
attr Swi_Ventil1 ignore 1
attr Swi_Ventil1 model HM-LC-SW4-WM
attr Swi_Ventil1 room Cfg_Wasser
attr Swi_Ventil1 serialNr LEQ0877399
attr Swi_Ventil1 subType switch
attr Swi_Ventil1 webCmd getConfig:clear msgEvents
define Swi_Ventil1_4 CUL_HM 3189B104
setuuid Swi_Ventil1_4 5c681fe6-f33f-e1ef-3a15-bb92dfa6a3c37206
attr Swi_Ventil1_4 event-on-change-reading .*
attr Swi_Ventil1_4 expert defReg,allReg,rawReg,templ
attr Swi_Ventil1_4 ignore 1
attr Swi_Ventil1_4 model HM-LC-SW4-WM
attr Swi_Ventil1_4 peerIDs 00000000,
attr Swi_Ventil1_4 webCmd statusRequest:toggle:on:off
Noch zum Hintergrund der gesetzten Attribute: Die HM-LC-SW4-WM sind im Garten verbaut und schalten Hunter Bewässerungsventile - natürlich nicht im Winter. Im Winter ist das alles stromlos, und um die Anzahl an Fehlermeldungen und vergeblichen Versuchen von FHEM zu reduzieren, bekommen die HM-LC-SW4-WM die Attribute dummy und ignore, wenn sie stromlos sind.
Danke vorab für hilfreiche Tipps!
ich habe auch ignored devices. allerdings hat mir cul_hm nicht zusätzlich das versteckte attribut .ignoreSet hinzugefügt.
eventuell waren meine devices bereits ignored, bevor attr .ignoreSet erfunden wurde.
wenn es probleme gibt, würde ich das attr erst einmal in der fhem.cfg löschen.
wenn attr ignore=1 existiert, braucht man eigentlich nicht noch attr dummy=1, oder?
Ja, ignore ist, wenn ich das richtig verstehe, dummy + mehr.
Ich habe noch ein wenig weiter getestet: Setze ich für den HM-LC-SW4-WM ignore = 1, kommt die Fehlermeldung beim Start von FHEM und autosave funktioniert nicht mehr. Lösche ich das Attribut ignore, kommt die Fehlermeldung nicht mehr. (Unabhängig davon, ob dummy gesetzt ist.)
ich meinte:
attr ignore 1 => setzen
und anschliessend
attr .ignoreSet => löschen
Ok, mal testen, ob das hält oder ob das Attribut wieder auftaucht.
Hi, ich wieder. Das Attribut .ignoreSet wird wieder von fhem gesetzt, gespeichert, und führt dann beim nächsten fhem-Start wieder zu einem Fehler und zum Abschalten von Autosave.
Das Attribut findet sich auch im aktuellen Code (Zeile 1140 ff.): https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/10_CUL_HM.pm
Ich verstehe den Code auf Anhieb nicht. Aber das Attribut scheint automatisch gesetzt zu werden, wenn das ignore-Attribut genutzt wird, um zu managen, wie das Attribut auf darunterliegende Channel wirkt. Vmtl. fehlt einfach nur, das Attribut beim Laden von fhem.cfg FHEM ,,irgendwie" bekannt zu machen.
(einfügen als neue Zeile 187? Keine Ahnung...)
Vielleicht liest Martin ja mit und kann was dazu sagen.
Nur als Update: Ich habe das Problem immer noch. Und ich kann es auch ganz einfach reproduzieren:
Ein
attr <HM-LC-SW4-WM> ignore 1
auch über die Oberfläche führt beim nächsten Systemstart zu
Messages collected while initializing FHEM:configfile: Swi_Ventil1: unknown attribute .ignoreSet. Type 'attr Swi_Ventil1 ?' for a detailed list.
D.h. zusammen mit ignore wird auch .ignoreSet gesetzt, aber beim nächsten Systemstart dann bemeckert. Es funktioniert nach wie vor nur, wenn man nach dem Setzen des Attributs ignore das Attribut ignoreSet gleich wieder löscht.
attr <HM-LC-SW4-WM> ignore 1
deleteattr <HM-LC-SW4-WM> .ignoreSet
Vielleicht kann Martin sich das doch nochmal anschauen? Einen laienhaften Vorschlag, das im Code zu adressieren, habe ich ja unten mal gemacht.
push