FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: vic am 06 März 2022, 08:59:47

Titel: devStateIcon mit my $light = ReadingsVal($name,... auslesen
Beitrag von: vic am 06 März 2022, 08:59:47
Guten Tag liebe Gemeinde

Unterdessen bin ich schon mehrere Tage am basteln und komme nicht weiter. In den Foren habe ich leider nichts gefunden. Vermutlich liegt es an einem einfachen Überlegungsfehler.

Ich möchte gerne die Standard-Symbole durch eigene tauschen. Der on-Status ist mir gelungen, der off-Status leider nicht.

Dies funktioniert jedoch nur mit state=true:
{my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot': ReadingsVal($name,'new_fw','false') eq 'true' ? '10px-kreis-gelb' : '10px-kreis-gruen';; $onl = FW_makeImage($onl);; my $light = ReadingsVal($name,'params_switch_0_output','false') =~ m{false|off}?'off':'on'?'sani_heating_level_100@red':'sani_heating_level_100@blue';; $light = FW_makeImage($light);; my $cons = ReadingsNum($name,'params_switch_0_apower',0);; my $total = round(ReadingsNum($name,'aenergy_total',0)/1000,1);; my $temp = ReadingsVal($name,'temperature','-100');; my $ip = ReadingsVal($name,'ip','none');; qq(<a href="http://$ip"target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a><div>Watt: $cons</div>)}

Habe einiges probiert aber leider erfolglos. Hier ein Beispiel:
{my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot': ReadingsVal($name,'new_fw','false') eq 'true' ? '10px-kreis-gelb' : '10px-kreis-gruen';; $onl = FW_makeImage($onl);; my $light = ReadingsVal($name,'params_switch_0_output','false') =~ m{false|off}?'off':'on'?'sani_heating_level_100@red': ReadingsVal($name,'params_switch_0_output','true') =~ m{true|on}?'on':'off'?'sani_heating_level_100@blue';; $light = FW_makeImage($light);; my $cons = ReadingsNum($name,'params_switch_0_apower',0);; my $total = round(ReadingsNum($name,'aenergy_total',0)/1000,1);; my $temp = ReadingsVal($name,'temperature','-100');; my $ip = ReadingsVal($name,'ip','none');; qq(<a href="http://$ip"target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a><div>Watt: $cons</div>)}

Vielen Dank für eure Hilfe
Titel: Antw:devStateIcon mit my $light = ReadingsVal($name,... auslesen
Beitrag von: OdfFhem am 06 März 2022, 09:59:21
@vic

Angenommen, es handelt sich um ein ShellyPlus-Gerät ... dann kennt das Reading params_switch_0_output nur die Werte true bzw. false ... on bzw. off sind eher dem state-Reading bekannt

Die initiale Zuweisung für $light in Deinem Beispiel sollte dann (ungetestet) eher so aussehen:

  my $light = ReadingsVal($name,'params_switch_0_output','false') eq 'false'?'sani_heating_level_100@red':'sani_heating_level_100@blue';;

Titel: Antw:devStateIcon mit my $light = ReadingsVal($name,... auslesen
Beitrag von: vic am 06 März 2022, 10:11:51
Super ... Vielen Dank OdfFhem. Nun klappt es. Genau... es handelt sich um ein Shelly.

Anbei das funktionierende devStateIcon:
{my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot': ReadingsVal($name,'new_fw','false') eq 'true' ? '10px-kreis-gelb' : '10px-kreis-gruen';; $onl = FW_makeImage($onl);;   my $light = ReadingsVal($name,'params_switch_0_output','false') eq 'false'?'sani_heating_level_100@blue':'sani_heating_level_100@red';; $light = FW_makeImage($light);; my $cons = ReadingsNum($name,'params_switch_0_apower',0);; my $total = round(ReadingsNum($name,'aenergy_total',0)/1000,1);; my $temp = ReadingsVal($name,'temperature','-100');; my $ip = ReadingsVal($name,'ip','none');; qq(<a href="http://$ip"target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a><div>Watt: $cons</div>)}
Titel: Antw:devStateIcon mit my $light = ReadingsVal($name,... auslesen
Beitrag von: Beta-User am 06 März 2022, 11:35:17
...zwischenzeitlich sollte das attrTemplate aber auch diese Readings per jsonMap in state umbenennen...