FHEM Forum

FHEM - Hausautomations-Systeme => KNX/EIB => Thema gestartet von: Guybrush am 25 Januar 2024, 08:40:17

Titel: falsches dpt
Beitrag von: Guybrush am 25 Januar 2024, 08:40:17
Hallo zusammen,

ich hab ein seltsames Problem. Bei einem Device habe ich 2 KNX Adressen definiert:

defmod Buero.Heizen KNX 5/0/101:dpt1.001:state:listenonly:nosuffix 5/0/28:dpt1.011:stateAktor:listenonly:nosuffix
attr Buero.Heizen DbLogExclude .*
attr Buero.Heizen DbLogInclude state
attr Buero.Heizen DbLogRetentionPeriod 2592000
attr Buero.Heizen IODev KNX
attr Buero.Heizen devStateIcon on:rc_GREEN off:rc_RED
attr Buero.Heizen event-min-interval .*:3600
attr Buero.Heizen event-on-change-reading state
attr Buero.Heizen group Heizung
attr Buero.Heizen icon temp_temperature
attr Buero.Heizen room Keller->Büro
attr Buero.Heizen stateFormat state

Das Reading "state" sollte also 0/1 als off/on (dpt1.001) und das Reading "stateAktor" 0/1 als inactive/active (dpt1.011) interpretieren. Nun ist es aber so, dass das Reading "state" als dpt1.011 behandelt wird, also der state auch immer active/inactive ist. Lösche ich die Adresse 5/0/28 aus dem Define, dann ist state im dpt1.001 format. Bei allen anderen Devices mit mehreren Readings tritt dieses Problem nicht auf. Daher muss das irgendwas spezifisches von diesem Device sein. Allerdings sieht die Definition für mich richtig aus.

Weiß einer vielleicht was, was ich übersehe?
Titel: Aw: falsches dpt
Beitrag von: erwin am 25 Januar 2024, 12:05:39
Hi,
defmod Buero.Heizen KNX 5/0/101:dpt1.001:state:listenonly:nosuffix 5/0/28:dpt1.011:stateAktor:listenonly:nosuffixdeine definition enthält eine alias-Namen 'state',
Alias-Names werden aber auch für die Erstellung von Readingsnamen verwendet...
das reading state hat aber eine spezielle Bedeutung, wird automatisch erzeugt und wird bei jedem event upgedatet....
Vorschlag: nenne 'state' in deiner definition anders, z.B. 'State' oder 'status'
Du musste dann natürlich auch stateformat, DbLogInclude,... anpassen.
l.g. erwin
Titel: Aw: falsches dpt
Beitrag von: Guybrush am 26 Januar 2024, 22:01:59
danke für das feedback! ich probiere das mal aus. Was mich nur wundert ist der Umstand, dass ich das bei 50+ anderen devices auch so hab - mit state und da hab ich dieses Problem nicht. Ich werde es dann aber vorsorglich auch bei den anderen ändern
Titel: Aw: falsches dpt
Beitrag von: erwin am 26 Januar 2024, 22:33:16
Was mich nur wundert ist der Umstand, dass ich das bei 50+ anderen devices auch so hab
das Problem tritt nur auf wenn: gadname=state UND option=nosuffix !
... und erkennbar ist es nur, wenn mehrere, unterschiedliche dpt's im define vokommen!
Dieses Problem werde ich in der nächste Version fixen - mit Errormessage im Log. -damit wird eine solche definition verhindert.

Grundsätzlich ist die Verwendung von state als gadNamen keine gute idee:
1) weil reading 'state' in core-fhem eine spezielle Bedeutung hat - z.B: wird reading state durch die core funktion nach INTERNAL STATE kopiert - und damit die Basis für devstateicon...., weiters schauen die EVENTs anders aus als bei anderen readings...
2) im KNX-Module wird jede ankommende bus-msg UND auch jeder set command Wert in einem eigenen reading gespeichert, weiters wird automatisch der Wert auch nach state kopiert. Das kann man allerdings auch noch durch die Attribute stateCmd und stateRegex, ... beeinflussen -siehe cmd-ref.

in deinem Beispiel war also eine "Mischung" aus on/off und inactive/active im state reading, jenachdem, welche msg zuletzt ankam.
klar erkennbar wird das, wenn du den event-monitor mitlaufen lässt!
Ich verwende für logging/EVENTS nur jene readings, die mich interessieren, ganz selten ist das state.
l.g. erwin