gelöst - readinggroups HM Heizung

Begonnen von Inputsammler, 10 Mai 2015, 12:14:24

Vorheriges Thema - Nächstes Thema

Inputsammler

Hallo zusammen,

Ich habe ein kleinen Schönheitsfehler in meiner Config.
ich bekomme folgenden Log Eintrag
2015.05.10 11:54:54 1: PERL WARNING: Argument "off" isn't numeric in subtraction (-) at (eval 87437) line 1.
Der kommt daher da ich bei meinen Heizungen jetzt im auf Off stehen habe.
Der Fehler liegt in der Value Style.  :-[
attr heatingInfo valueStyle {if($READING eq "measured-temp")
{my $t=$VALUE;;my $d=ReadingsVal($DEVICE,'desired-temp',0);;
if($t-$d>=1){'style="color:rgb(251,63,11);;"'}elsif($t-$d<=-1){'style="color:rgb(79,58,251);;"'}
else{'style="color:rgb(12,251,12);;"'}}}

Ich weis das ich zuerst überprüfen muss ob bei dem ersten Check mein desired-temp off ist wenn dann grün machen.
Aber ich habe irgendwie ein Problem mit dem Syntax
Das ist falsch hier  :o >:(
attr heatingInfo valueStyle {if($READING eq "measured-temp")
{my $t=$VALUE;;my $d=ReadingsVal($DEVICE,'desired-temp',0);;
if($d=off){'style="color:rgb(79,58,251);;"'}
elsif($t-$d>=1){'style="color:rgb(251,63,11);;"'}
elsif($t-$d<=-1){'style="color:rgb(79,58,251);;"'}
else{'style="color:rgb(12,251,12);;"'}}}


Danke
Gruß Gerd
Rpi's und Bpi's und Hw von Dirk und locutus
CCU2,F20,Ks300,1-Wire,Homematic usw ...
vitodens 300 & IstrkrM372 auslesen über USB und FHEM
RUHE IN FRIEDEN AHA1805 RIP Mallorca +29.08.16
I miss you and your Family H.H.L.L.

FHEm2005

#1
Hallo Inputsammler,

Dein Problem liegt m.E. in deiner Werte-Tabelle für die Variable $d. Sie kann von beginnend bei OFF über diverse numerische Werte bis zu ON aufnehmen. ON un OFF sind KEINE numerischen Werte.

Die Vergleichsoperatoren unterscheiden sich je nach dem, wie die Variable aussieht:

Numerische Werte: ==, !=, <,>,<=,>=
Nicht numerische Werte: eq, ne,gt,lt,ge,le

Du hast aber nur eine Vergleichsoperation für numerische Werte. Wenn  $d der Wert  "off" hat und Du dann in $t-$d>=1 versuchst damit zu rechnen führt das unweigerlich zum Fehler.

Wenn Du dich auf numerische Werte beschränkst,  sollte die Fehlermeldung ausbleiben. Sonst musst Du diesen Fehler durch eine Abfrage auf ON bzw. OFF abfangen.

Gruß
Eberhard

EDIT: in der Abfrage ($d=off) ist das Gleichheitszeichen falsch.
Numerisch: ($d==25), nicht numerisch:  ($d eq "off")

Bei einer korrekten Abfrage erreicht $d mit Inhalt "off" die Kaklkulationszeilen gar nicht. Was machst Du mit dem "on"?
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

octek0815


Inputsammler

Danke zusammen.

Es hat wunderbar funktioniert.
Was ein kleiner eq alles ausmacht.

{if($READING eq "measured-temp") {my $t=$VALUE;my $d=ReadingsVal($DEVICE,'desired-temp',0);
if($d eq 'off'){'style="color:rgb(12,251,12);"'}
elsif($t-$d>=1){'style="color:rgb(251,63,11);"'}
elsif($t-$d<=-1){'style="color:rgb(79,58,251);"'}
else{'style="color:rgb(12,251,12);"'}}}


Danke nochmals
Rpi's und Bpi's und Hw von Dirk und locutus
CCU2,F20,Ks300,1-Wire,Homematic usw ...
vitodens 300 & IstrkrM372 auslesen über USB und FHEM
RUHE IN FRIEDEN AHA1805 RIP Mallorca +29.08.16
I miss you and your Family H.H.L.L.