Hallo zusammen,
hier wird beschrieben, wie ich ein mehrzeilige devStateIcon setzen kann:
https://forum.fhem.de/index.php/topic,97586.msg908277.html#msg908277
Ich bekomme es nicht hin, meine Attribute ähnlich darzustellen.
Mein "stateFormat" sieht wie folgt aus:
{'Abschattung'.AttrVal($name,'ARS_AktivAbschattung','nv').' <br>
morgens:'.AttrVal($name,'ARS_AktivMorgens','nv').' <br>
abends:'.AttrVal($name,'ARS_AktivAbends','nv').' <br>
Komfort:'.AttrVal($name,'ARS_AktivLueften','nv')}br>
Damit werden mir die vier Attribute auch sauber untereinander dargestellt.
Aber den Part mit den Icons bekomme ich nicht hin. Kan mir da jemand helfen?
Danke!
Ich habe angenommen, dass alle Readings nur on und off als Wert annehmen koennen.
Dann kann ich mit dieser Definition:
define i2 dummy
attr i2 room iconDemo
attr i2 stateFormat\
Abschattung:\
1:ARS_AktivAbschattung\
<br>\
morgens:\
2:ARS_AktivMorgens\
<br>\
abends:\
3:ARS_AktivAbends\
<br>\
Komfort:\
4:ARS_AktivLueften
attr i2 devStateIcon 1.on:on 1.off:off 2.on:on 2.off:off 3.on:on 3.off:off 4.on:on 4.off:off
und nachfolgende Initialisierung:
setstate i2 2019-02-19 10:15:12 ARS_AktivAbschattung on
setstate i2 2019-02-19 10:20:24 ARS_AktivMorgens off
setstate i2 2019-02-19 10:15:14 ARS_AktivAbends on
setstate i2 2019-02-19 10:14:32 ARS_AktivLueften off
set i2 on
das angehaengete Bild erzeugen.
Kurze Erklaerung:
- die Daten fuer ein Bild muessen im state in einer eigenen Zeile stehen (z.Bsp. 1:ARS_AktivAbschattung)
- stateFormat erkennt Reading Namen, und loest diese automatisch auf (aus 1:ARS_AktivAbschattung wird 1:on)
- der Kunstgriff mit 1:, 2:, etc ist fuer devstateicon, damit man da das on fuer Abschattung vom on fuer morgens unterscheiden kann. Wenn das nicht noetig ist, kann mann 1: usw sparen, und im devstateIcon 1.on, 2.on etc als on zusammenfassen.
- im devStateIcon schreibt man 1.on fuer 1:on, da hier : der Trenner ist, und damit im Regexp-Teil nicht verwendet werden darf, aber 1.on auch 1:on matcht.
Vielen Dank für die Erklärung. Allerings sollen bei mir Attribute dargestellt werden und keine readings.
Es sind die Attribute:
ARS_AktivAbschattung
ARS_AktivMorgens
ARS_AktivAbends
ARS_AktivLueften
Die ich mir über stateFormat
{'Abschattung'.AttrVal($name,'ARS_AktivAbschattung','nv').' <br>
morgens:'.AttrVal($name,'ARS_AktivMorgens','nv').' <br>
abends:'.AttrVal($name,'ARS_AktivAbends','nv').' <br>
Komfort:'.AttrVal($name,'ARS_AktivLueften','nv')}br>
anzeigen lasse.
Mit Attributen scheint das aber so nicht zu funktionieren.
Dass es hier um Attribute geht, habe ich uebersehen, ist fuer mich irgendwie ungewoehnlich.
stateFormat unterstuetzt noch "Set Magic" (https://fhem.de/commandref_modular.html#set), oder perl.
Fuer diesen Zweck sollte Set Magic reichen:
attr i2 stateFormat\
Abschattung:\
1:[a:$name:ARS_AktivAbschattung]\
<br>\
morgens:\
2:[a:$name:ARS_AktivMorgens]\
<br>\
abends:\
3:[a:$name:ARS_AktivAbends]\
<br>\
Komfort:\
4:[a:$name:ARS_AktivLueften]
Super. Vielen Dank. Funktioniert wunderbar. SetMagic war mir neu!
Doch nocht nicht ganz zu ende...
kann ich die Attribute auch noch per Klick auf das Icon on/off Schalten?
Ja, es braucht aber neben einem angepassten devStateIcon einen cmdalias:
attr i2 devStateIcon\
1.on:on:ARS_AktivAbschattung+off 1.off:off:ARS_AktivAbschattung+on\
2.on:on:ARS_AktivMorgens+off 2.off:off:ARS_AktivMorgens+on\
3.on:on:ARS_AktivAbends+off 3.off:off:ARS_AktivAbends+on\
4.on:on:ARS_AktivLueften+off 4.off:off:ARS_AktivLueften+on
define ca_i2 cmdalias set i2 ARS_A.* AS attr i2 $EVTPART1 $EVTPART2;; set i2 eval
Es wird hier zunehmend klar, dass man fuer diese Art von Aufgaben nicht Attribute sondern Readings verwenden sollte.