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
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"?
Hallo,
die Lösung findest Du hier:
http://forum.fhem.de/index.php/topic,14425.1200.html
Antwort #1208
VG
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