devStateIcon mit my $light = ReadingsVal($name,... auslesen

Begonnen von vic, 06 März 2022, 08:59:47

Vorheriges Thema - Nächstes Thema

vic

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
Raspberry Pi 4
RFXTRX 868MHz und 433MHz
FS20, Intertechno, Homematic, Shelly
MAX!-Cube, Philips HUE-Bridge

OdfFhem

@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';;


vic

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>)}
Raspberry Pi 4
RFXTRX 868MHz und 433MHz
FS20, Intertechno, Homematic, Shelly
MAX!-Cube, Philips HUE-Bridge

Beta-User

...zwischenzeitlich sollte das attrTemplate aber auch diese Readings per jsonMap in state umbenennen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors