[erledigt] Die Definition set erzeugt ein leeres Reading

Begonnen von GammaTwin, 20 April 2019, 17:37:57

Vorheriges Thema - Nächstes Thema

GammaTwin

Grüße,

eine Frage zum Verständnis, vielleicht liegt auch ein Fehler vor.

Typischerweise schalten ich meine Lampen über eine Gruppenadresse und der Status wird über eine zweite Gruppenadresse zurückgeliefert. Am Aktor hat das Kommunikationsobjekt zum Schalten den Flag "Schreiben", aber nicht "Lesen". Das Kommunikationsobjekt der Rückmeldung genau andersherum. Daher dachte ich, ich lege meine Devices folgendermaßen an:
defmod KNX_0101000 KNX 1/1/0:dpt1.001:set 1/2/0:dpt1.001:get

Klappt auch wunderbar aus FHEM heraus.
Allerdings gibt es da diese Lichtschalter.  ;) Also ein Busteilnehmer sendet ein Telegramm an die Gruppenadresse "Schalten", nicht FHEM. Setzt man ":set" nicht, wird ein "getG1" angelegt.

defmod KNX_0101000 KNX 1/1/0:dpt1.001:set 1/2/0:dpt1.001:get
attr KNX_0101000 IODev KNX

setstate KNX_0101000 off
setstate KNX_0101000 2019-04-20 17:24:55 getG1 off
setstate KNX_0101000 2019-04-20 17:24:55 getG2 off
setstate KNX_0101000 2019-04-20 17:24:55 last-sender 1/0/2
setstate KNX_0101000 2019-04-20 17:24:55 state off


Legt man ":set" an, sieht es so aus. Es wird ein Reading "" (kein Zeichen, oder ein Leerzeichen - ich weiß es nicht) angelegt.
defmod KNX_0101000 KNX 1/1/0:dpt1.001:set 1/2/0:dpt1.001:get
attr KNX_0101000 IODev KNX

setstate KNX_0101000 off
setstate KNX_0101000 2019-04-20 17:03:38  off
setstate KNX_0101000 2019-04-20 17:03:38 getG2 off
setstate KNX_0101000 2019-04-20 17:03:38 last-sender 1/0/2
setstate KNX_0101000 2019-04-20 17:03:38 state off


Ich denke, entweder wird bei ":set" gar kein "getGx" angelegt, oder es wird ein "getGx" gesetzt. Ein Reading ohne eine Bezeichnung erscheint mir nicht optimal.

Marco

GammaTwin

Grüße,

ich würde bei dieses Thema nochmal nach oben schubsen. Ich reduziere daher einfach den Text / die Fragestellung :)

Wird auf dem Bus eine GA von einem Busteilnehmer geschrieben (write) und ich habe diese GA in FHEM mit :set markiert, wird ein leeres Reading angelegt.

Könnte man trotz des :set nicht auch ein getGx als ReadingName vergeben?

(Bilder und Details im vorherigen Beitrag)

Andi291

Abend!

Ich geb zu, das ist ein wenig holprig.
Ursache dürfte die komplexe Steuerung (teilweise über Leerstrings) sein.

Man könnte es auch als Feature verkaufen - es macht durchaus Sinn, bei einfachen Devices kein getG* zu haben. Das war früher im Übrigen der Normalzustand :-)

Vergib mal bitte einen Namen - dann dürfte das Verhalten sein, wie Du willst...

defmod KNX_0101000 KNX 1/1/0:dpt1.001:steuern:set 1/2/0:dpt1.001:status:get

Grüße...


GammaTwin

Grüße,

leider wird das Reading ohne Namen auch dann angelegt. Weiter unten habe ich noch eine Analyse mit Verbose5 angelegt, aber:

Ich glaube inzwischen, dass es sich eher um einen Verständnisthema handelt.
Mein Erklärungsversuch:
Auf dem Bus gibt es 2 Arten von Telegrammen, GroupValueWrite und GroupValueRead (ETS).
In FHEM gibt es 2 Readings, setGx und getGx. Man könnte nun annehmen, dass setGx zu GroupValueWrite gehört und getGx zu GroupValueRead.
Dem ist aber nicht so!
Es ist egal, ob das Telegramm auf dem Bus GroupValueWrite oder GroupValueRead ist. Das Ergbnis landet immer im getGx. setGx sagt nur, dass FHEM das GroupValueWrite geschrieben hat - mehr nicht.
Daher denke ich das die Option ":set" auch zu einem getGx führen sollte. Einfach damit die GroupValueWrite vom Bus sind gleich verhalten. Die ":set" sollte nur das abfragen, durch FHEM unterbinden, da keine Antwort vom Aktor zu erwarten ist.

Ich denke, dass hat auch JoeALLb im Thema "[open] set funktioniert nicht korrekt?" gemeint.
Zitat von: JoeALLb am 29 August 2018, 16:38:48
Punkt2:
Es geht mir tatsächlich darum, dass hier set nicht funktioniert!

Bin gespannt auf die Antwort :)

Marco

------------------------------------
Und noch die Analyse:

Auf den Bilder sieht man folgendes:
ohne ":set": getG1 und setG1
mit ":set": leeres Reading und setG1
mit ":steuern:set": leeres Reading und steuern-set

Ich habe eine Vergleich der Logeinträge mit Verbose 5 gemacht, siehe Screenshot notpad++. Mit :set wird der Teil mit "parse" nicht ausgeführt.
Vielleicht stützt dies ja meine aktuelle Vermutung, dass eigentlich ein getGx angelgt werden sollte.

Andi291

Korrekt verstanden und wiedergegen. Die Flags vom Bus werden ignoriert.
Trotzdem sollte bei Angabe eines Namens kein leeres Reading angelegt werden.

Wird dauern, hab im mOment keine Zeit. Werd bei Gelegenheit mal schauen...