Icons in readingsGroup mit valueIcon - if-Bedingung wird ignoriert

Begonnen von mtb, 19 März 2019, 11:24:11

Vorheriges Thema - Nächstes Thema

mtb

Hallo liebe Gemeinde,

in Anlehnung an Beitrag https://forum.fhem.de/index.php/topic,77256.0.html habe ich in einer ansonsten einwandfrei funktionierenden readingsGroup versucht, im Attribut valueIcon ein Icon mittels perl-IF zu beeinflussen. Leider aber scheint das IF im Augenblick nichts zurückzugeben und ich kann nicht erkennen, warum?


Für valueIcon steht aktuell ...

{
'wohnzimmer_schalter_04.state.off' => 'general_aus@red',
...
'onkyo.mute.on' => '{if(ReadingsVal("onkyo","state",0) eq "disconnected") {"rc_MUTE@red"} else {"rc_MUTE@yellow"}}',
'onkyo.mute.off' => '{if(ReadingsVal("onkyo","state",0) eq "disconnected") {"rc_MUTE@red"} else {"rc_MUTE@green"}}',
...
'kodi_wz.state.opened' => 'general_an@green'
}


Kurz zum verfolgten Ziel:
Ist das AV-Receiver Device "onkyo" im "state" "disconnected", soll für das "onkyo"-reading "mute" das Icon "rc_MUTE" rot eingefärbt werden.

Für Ideen und Vorschläge bzw. Code-Korrekturen wäre ich sehr dankbar!

VG
Tim

Otto123

Hallo Tim,

Hilfe zur Selbsthilfe, was geben denn (nacheinander) diese Ausdrücke in die FHEM Komamndozeile "geworfen" zurück?
{if(ReadingsVal("onkyo","state",0) eq "disconnected") {"rc_MUTE@red"} else {"rc_MUTE@green"}}
{ReadingsVal("onkyo","state",0) eq "disconnected"}
{ReadingsVal("onkyo","state",0)}
{{"rc_MUTE@red"}}


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle

aktives Mitglied des FHEM e.V. (Technik)

mtb

Hallo Otto,

vorab schon einmal herzlichen Dank für Deine Zeit. Wie folgt nun die Ergebnisse:



{if(ReadingsVal("onkyo","state",0) eq "disconnected") {"rc_MUTE@red"} else {"rc_MUTE@green"}}
--->
Global symbol "@red" requires explicit package name (did you forget to declare "my @red"?) at (eval 32809) line 1.
Global symbol "@green" requires explicit package name (did you forget to declare "my @green"?) at (eval 32809) line 1.

{ReadingsVal("onkyo","state",0) eq "disconnected"}
--->
1

{ReadingsVal("onkyo","state",0)}
--->
disconnected

{{"rc_MUTE@red"}}
--->
Global symbol "@red" requires explicit package name (did you forget to declare "my @red"?) at (eval 32824) line 1.


Soweit ich sehe, liegt der Fehler nicht im IF-Ausdruck sondern in den "ungültigen" Werten, die zurückgegeben werden. Nun natürlich die Frage, wie ich es schaffe, dass z.B. "rc_MUTE@red" als Icon aus der Anweisung resultiert!?

Eventuell noch ein Zaunspfahl bei der Hand?


VG
Tim

Otto123

Eventuell hilft maskieren? Muss man innerhalb von "" eigentlich tun :)
anstatt @ so \@
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle

aktives Mitglied des FHEM e.V. (Technik)

mtb

Hallo Otto,

was soll ich sagen, das Maskieren hatte ich hier gar nicht in Erwägung gezogen. Es funzt einwandfrei (z.B.) mit ...


{"rc_MUTE\@red"}


Vielen Dank für Deine Hilfe!

VG
Tim