FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: accessburn am 12 April 2018, 17:19:19

Titel: State von Reading trotz ReadingVal aktuell halten
Beitrag von: accessburn am 12 April 2018, 17:19:19
Hallo,
für einen Gast-Wlan-Button will ich die Restzeit anzeigen lassen im STATE.
Problem ist nur das die Zeit so nicht aktuallisiert wird, ich müsste quasi immer auf "on" oder "off" klicken um zu wissen ob das Gästewlan an oder aus ist und wie lange noch läuft.

Habt ihr eine Idee wie ich das lösten kann?

Internals:
   CFGFN     
   NAME       Gast_WLAN
   NR         24145
   STATE      90 Minuten
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2018-04-12 17:15:28   STATE           90 Minuten
Attributes:
   icon       it_wifi
   room       FritzBox
   setList    on off
   stateFormat STATE
   userReadings STATE {ReadingsVal("FritzBox3","box_guestWlanRemain","")." Minuten"}
   webCmd     on:off
Titel: Antw:State von Reading trotz ReadingVal aktuell halten
Beitrag von: Otto123 am 12 April 2018, 17:27:35
Hi,

soweit ich weiß, werden die userreadings getriggert wenn das Device selbst aktiv wird.
Du müsstest das Reading von extern setzen lassen, also z.B. vom FRITZBOX Modul selbst.

Anderer Vorschlag:
Warum nimmst Du anstatt eines Dummy nicht einen Readingsproxy? Hatte ich mal gefunden, dahinein kannst Du dein Userreadings packen.
defmod rp_FB_GWLAN1 readingsProxy FB7490:box_guestWlan
attr rp_FB_GWLAN1 devStateIcon on:it_wifi@green:off off:it_wifi@red:on
attr rp_FB_GWLAN1 event-on-change-reading .*
attr rp_FB_GWLAN1 room Haus
attr rp_FB_GWLAN1 setFn {($CMD eq "on")?"guestWlan on":"guestWlan off"}
attr rp_FB_GWLAN1 setList on off


Gruß Otto
Titel: Antw:State von Reading trotz ReadingVal aktuell halten
Beitrag von: accessburn am 12 April 2018, 17:37:20
So weit war ich schon mal, aber da hab ich überhaupt keine Laufzeit eingefügt bekommen.

Aber mal zum Testen in das StateFormat eingefügt und es scheint zu gehen. War mir nicht bewusst das man dort auch Perl eingeben kann.
Titel: Antw:State von Reading trotz ReadingVal aktuell halten
Beitrag von: Otto123 am 12 April 2018, 17:44:57
Da geht sogar set magic  :D - aber auch gerade erst gelesen.
ZitatstateFormat
Ändert den Gerätestatus, dies ist z.Bsp. in der Ausgabe des list Kommandos zu sehen, oder in der Raumübersicht von FHEMWEB. Falls nicht gesetzt, dann wird das state Reading übernommen. Sonst werden alle Wörter im Wert des Attributes durch das entsprechende Reading des Gerätes ersetzt (soweit vorhanden). Falls der Wert in {} eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die Auswertung passiert bei jeder Änderung eines Readings.
Die hier beschriebene "set magic" wird auch angewendet.
Titel: Antw:State von Reading trotz ReadingVal aktuell halten
Beitrag von: accessburn am 12 April 2018, 17:47:02
Ja ich hatte mich so auf stateFormat versteift. Da wäre ich auch nicht alleine drauf gekommen denke ich.

Abschließend, farblich wie beim Icon ist der Text dort nicht dynamisch anzupassen oder? Nur per HTML-Tags so weit ich das verstanden habe.
Titel: Antw:State von Reading trotz ReadingVal aktuell halten
Beitrag von: nils_ am 13 April 2018, 09:16:19
state vs. STATE !

nicht das da mal irgendwas durcheinander geht  :o

Zitatnternals:
   CFGFN     
   NAME       Gast_WLAN
   NR         24145
   STATE      90 Minuten
   TYPE       dummy
   OLDREADINGS:
   READINGS:
     2018-04-12 17:15:28   STATE           90 Minuten
Attributes:
   icon       it_wifi
   room       FritzBox
   setList    on off
   stateFormat STATE
   userReadings STATE {ReadingsVal("FritzBox3","box_guestWlanRemain","")." Minuten"}
   webCmd     on:off
Titel: Antw:State von Reading trotz ReadingVal aktuell halten
Beitrag von: accessburn am 13 April 2018, 11:41:52
Habs dann jetzt tatsächlich mit dem readingproxy hinbekommen.
Nicht so schön wie ich das wollte mit Farben etc, aber immerhin :-)

defmod Gast_WLan readingsProxy FritzBox3:box_guestWlan
attr Gast_WLan devStateIcon on:it_wifi@green:off off:it_wifi@red:on
attr Gast_WLan event-on-change-reading .*
attr Gast_WLan icon it_wifi
attr Gast_WLan room FritzBox
attr Gast_WLan setFn {($CMD eq "on")?"guestWlan on":"guestWlan off"}
attr Gast_WLan setList on off
attr Gast_WLan stateFormat {ReadingsVal("FritzBox3","box_guestWlanRemain","")." Minuten"}