Problem beim Update von Readings: Frage von FHEMWEB ?

Begonnen von Prof. Dr. Peter Henning, 20 März 2016, 16:10:39

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Folgendes Problem: Ein Device habe Readings mit Namen "A", "B", etc...

Diese Readings sollen ebenfalls im zusammenfassenden "state" auftauchen, und zwar z.B. in der Form "A: 1.5 V B: 2.0 V..."

Im zugehörigen Modul gibt es ein ganz ordnungsgemäßes Bulk Update, in dem zuerst das Reading A, dann das Reading B und ganz zum Schluss das Reading state geupdatet werden.

Effekt im Frontend ist aber, dass der Inhalt von "state" nicht nur bei "state" angezeigt wird, sondern auch bei "A" - aber nicht bei "B".

Dieser Effekt tritt nur auf, wenn im Inhalt von "state" der Doppelpunkt auftaucht, also wie oben beschrieben: "A: 1.5 V B: 2.0 V..." . Lässt man den Doppelpunkt weg, also z.B.  "A 1.5 V B 2.0 V...", passiert dies nicht.

Meine Vermutung ist, dass irgendwo beim Weiterreichen ans FHEMWEB Frontend der Doppelpunkt als Separator verwendet wird.

LG

pah

justme1968

das ist ein altes problem und wir hatten schon mindestens zwei threads dazu.

die ursache ist das historische verhalten das für state der reading name nich mit im event enthalten ist. es sieht dann zwar schon aus weil  man events der form device: on bekommt aber das führt umgekehrt dazu das man das event für state das mit A: anfängt nachträglich nicht von einem event für A: unterscheiden kann.

der anfang einer lösung wurde damals mit deviceEvents und addStateEvent implementiert. damit kann man eindeutig erkennen wenn ein event für state auftritt, aber leider reicht das im vorliegenden fall aus zwei gründen nicht aus:

- bei gesetzem addStateEvent ist state zwar eindeutig unterscheidbar, aber das alte zweideutige event ohne state: wird immer noch erzeugt.
- auf dem longpoll socket wird addStateEvent ignoriert

man müsste also zuerst bei gesetztem addStateEvent nur noch ads state: event erzeugen und nicht das alte und dann addStateEvent auch für longpoll aktivieren.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

@pah: Danke fuer den Hinweis, habs gefixt.

So habe ich es reproduziert:
Zitatfhem> define d dummy
fhem> setreading d A A1
fhem> setreading d B B1
fhem> set d A: A4 B: B4
und dabei Detailfenster von d beobachten.

@Andre: falls ich was verpasst habe, bitte sagen.

justme1968

schaut gut aus.

aber wäre es nicht besser das direkt in deviceEvents einzubauen und das 'falsche' event nicht mit zurück zu geben sobald $withState gesetzt ist? dann hätten alle module die deviceEvents verwenden etwas davon.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Prof. Dr. Peter Henning


rudolfkoenig

Zitataber wäre es nicht besser das direkt in deviceEvents einzubauen und das 'falsche' event nicht mit zurück zu geben sobald $withState gesetzt ist?

Theoretisch ja. Ob das zu Nebeneffekten fuehrt, werden wir ab morgen sehen. Will heissen, ich habe die Aenderung in fhem.pl implementiert, und die zusaetzlichen Zeilen aus FHEMWEB entfernt. Mein vorheriger Test mit dem dummy klappt noch :)

Prof. Dr. Peter Henning

Sieht so aus, als ob es das war. Mache zu.

LG

pah