FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Prof. Dr. Peter Henning am 20 März 2016, 16:10:39

Titel: Problem beim Update von Readings: Frage von FHEMWEB ?
Beitrag von: Prof. Dr. Peter Henning am 20 März 2016, 16:10:39
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
Titel: Antw:Problem beim Update von Readings: Frage von FHEMWEB ?
Beitrag von: justme1968 am 20 März 2016, 18:06:24
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.
Titel: Antw:Problem beim Update von Readings: Frage von FHEMWEB ?
Beitrag von: rudolfkoenig am 20 März 2016, 18:18:44
@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.
Titel: Antw:Problem beim Update von Readings: Frage von FHEMWEB ?
Beitrag von: justme1968 am 20 März 2016, 18:47:51
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.
Titel: Antw:Problem beim Update von Readings: Frage von FHEMWEB ?
Beitrag von: Prof. Dr. Peter Henning am 20 März 2016, 19:06:55
Jedenfalls danke für den Fix.

LG

pah
Titel: Antw:Problem beim Update von Readings: Frage von FHEMWEB ?
Beitrag von: rudolfkoenig am 21 März 2016, 10:32:05
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 :)
Titel: Antw:Problem beim Update von Readings: Frage von FHEMWEB ?
Beitrag von: Prof. Dr. Peter Henning am 31 März 2016, 12:05:52
Sieht so aus, als ob es das war. Mache zu.

LG

pah