Formatierung und Icons mit valueFormat/valueIcon - if-Bedingung wird ignoriert

Begonnen von Henrik Aalto, 29 September 2017, 13:08:13

Vorheriges Thema - Nächstes Thema

Henrik Aalto

Hallo Allerseits,

schon länger lese ich hier im Forum mit und konnte so auch bisher meine Probleme lösen. Nun habe ich aber einer Frage zu der ich bisher nichts gefunden haben, darum eröffne ich hiermit ("feierlich") meinen ersten Eintrag  :)

Ich möchte in meinem Floorplan die Temperatur und den Status meiner Heizkörper anzeigen lassen. Das funktioniert mit einer readingGroup auch ganz gut:

define hzk_Wohnzimmer_read_temp readingsGroup hzk_Wohnzimmer:mode,desiredTemperature
attr hzk_Wohnzimmer_read_temp alias Wohnzimmer
attr hzk_Wohnzimmer_read_temp fp_Heizung 112,484,0,hzk_Wohnzimmer_read,
attr hzk_Wohnzimmer_read_temp nonames 1
attr hzk_Wohnzimmer_read_temp notime 1
attr hzk_Wohnzimmer_read_temp room Heizung,MAX
attr hzk_Wohnzimmer_read_temp style style="font-size:20px;;color:gray"
attr hzk_Wohnzimmer_read_temp valueFormat {desiredTemperature => '%.1f °C'}
attr hzk_Wohnzimmer_read_temp valueIcon {'mode.auto' => 'campfire', 'mode.manual' => 'campfire_man'}


Das Ganze hat lediglich zwei Schönheitsfehler:
1.) Für 'mode' würde ich gern drei Symbol anzeigen lassen. Beim Wert 'auto' passt das ja schon. Wenn 'mode' auf 'manual' steht soll jedoch unterschieden werden. Ist die 'desiredTemperature' gleichzeitig 'off' soll keine Symbol (transparenter Platzhalter) angezeigt werden. Bei jeder anderen Temperatur das Icon für Manuelle-Steuerung. Nach meinem Verständnis müsste valueIcon so definiert werden:
{'mode.auto' => 'campfire', 'mode.manual' => '{if(desiredTemperature eq off){Transparent} else{campfire_man}}'}
Leider scheint die if-Bedingung nicht ausgewertet zu werden, denn es wird immer nur der Text "manual" angezeigt.

2.) Wenn ich den Regler auf "off" setze wird 'desiredTemperature' im FP mit 0.0 °C angezeigt - da würde ich "Aus" oder auch nur "-" bevorzugen, doch bekomme ich die valueFormat-Sequenz nicht hin. Auch hier wird die if-Bedingung wohl nicht ausgewertet. Ich vermute ich mach beides mal den gleichen Fehler.

Alternativ könnte ich es sonst nur mit einem dummy lösen - oder?

Gruß
Henrik

Elektrolurch

Zitat:
if(desiredTemperature eq off){Transparent} else

das ist kein perl-code "desired-.."

Du musst das durch den Aufruf if(ReadingsVal($DEVICE,"desired...) eq "..

ersetzen.
Achtung: Aussen die ' ' verwenden für den Hash, innen im perl-Ausdruck nur "".

Elektrolurch
configDB und Windows befreite Zone!

Henrik Aalto