readingsGroup und valueStyle und automatische Aktualisierung

Begonnen von al_ro, 26 Dezember 2014, 22:24:12

Vorheriges Thema - Nächstes Thema

al_ro

Guten Abend,

ich dachte gelesen zu haben, dass valueStyle automatisch bei aktivem longpoll aktualisiert wird. Bei folgendem valueStyle funktioniert das nicht:
attr Heizungswerte valueStyle {if ($READING eq "measured-temp" && (ReadingsVal($DEVICE,"desired-temp",-1) - ReadingsVal($DEVICE,"measured-temp",-1) > 0.5)){'style="color:red;;font-weight:bold"'} elsif ($READING eq "measured-temp") {'style="color:green;;font-weight:bold"'} else {'style="color:white;;font-weight:normal"'}}
Die ReadingGroup ist folgendermaßen definiert:
define Heizungswerte readingsGroup Heizungspumpe:state,<Stell>,<Soll>,<Ist>,<Tag>,<Nacht>,<Fenster>,<Batterie> TYPE=FHT:<{AttrVal($DEVICE,"alias",$DEVICE)}>,actuator,desired-temp,measured-temp,day-temp,night-temp,window,battery
Bei Änderung des "desired-temp"-Wertes ändert sich die Farbe nicht automatisch, es ist ein HTML-Reload notwendig.
Übersehe ich etwas und wenn ja, was?  ;)

Danke & Gruß Alex

justme1968

per longpoll wird der teil der anzeige geändert der zum betreffenden reading gehört. d.h. wenn sich measured ändert wird die measured anzeige aktualisiert, wenn sich desired ändert die desired anzeige. die readingsGroup 'weiss' nicht das eine desired änderung auf den style und die anzeige von measured auswirken soll. deshalb wird nichts aktualisiert.

es gibt mehrere möglichkeiten das zu beheben:

- du erzeugst im device ein userReading das die differenz beider werte enthält und von beiden readings abhängt. in der readings group zeigst du diesen wert an und verwendest ihn um den valueStyle zu bestimmen. als valueFormat verwendest du dann ReadingsVal($DEVICE,"measured-temp","") bzw.

- du trägst im define der readingGroup nicht measured-temp sondern <{ReadingsVal($DEVICE,"measured-temp","")}@(measured-temp|desired-temp}> ein und verwendest cellStyle um die farbe für diese spalte zu setzen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

al_ro

Hallo Andre,

wie gebe ich beim userReading die Abhängigkeiten an, so?
attr RR_Arbeitszimmer userReadings desired_measured_diff {sprintf("%f",ReadingsVal("RR_Arbeitszimmer","desired-temp","")-ReadingsVal("RR_Arbeitszimmer","measured-temp",""))}@(measured-temp|desired-temp)

Danke Alex

justme1968

die trigger werden mit : an den namen des user readings angehängt. also etwas in dieser art: attr RR_Arbeitszimmer userReadings desired_measured_diff:(measured-temp|desired-temp) {ReadingsVal("RR_Arbeitszimmer","desired-temp",0)-ReadingsVal("RR_Arbeitszimmer","measured-temp",0)}

ich würde mir für dieses reading nicht die mühe machen es mit sprintf zu formatieren. es wird ja später nirgendwo im Klartext verwendet.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

al_ro

Hallo Andre,

ich habe es jetzt mal so umgesetzt, wie du oben (Variante 1) vorgeschlagen hast:
attr RR_Arbeitszimmer userReadings desired_measured_diff:(measured-temp|desired-temp) {ReadingsVal("RR_Arbeitszimmer","desired-temp",0)-ReadingsVal("RR_Arbeitszimmer","measured-temp",0)}
Leider wird auch jetzt die Differenz erst bei einem HTML-Refresh neu berechnet und nicht, wenn sich einer der Werte ändert. :(
Das Einbinden in die ReadingsGroup per valueStyle und valueFormat funktioniert, wie du es beschrieben hast.

Hast du eine Idee?

Danke Alex

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

al_ro

Dies ist der FHT-Raumregler:
define RR_Arbeitszimmer FHT 5f1d
attr RR_Arbeitszimmer IODev FHZ_0
attr RR_Arbeitszimmer alias Arbeitszimmer
attr RR_Arbeitszimmer event-on-change-reading actuator,battery,desired-temp,measured-temp,warnings,window,windowsensor
attr RR_Arbeitszimmer group Heizung
attr RR_Arbeitszimmer model fht80b
attr RR_Arbeitszimmer retrycount 3
attr RR_Arbeitszimmer room Arbeitszimmer
attr RR_Arbeitszimmer userReadings desired_measured_diff:(measured-temp|desired-temp) {ReadingsVal("RR_Arbeitszimmer","desired-temp",0)-ReadingsVal("RR_Arbeitszimmer","measured-temp",0)}


Gruß Alex

justme1968

du musst desired_measured_diff auch in event-on-change-reading berücksichtigen. sonst erzeugt es kein event.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

al_ro

Hallo Andre,

.... Hand vor die Stirn klatsch ....

Das war's.

Vielen Dank und schönen Sonntag
Alex