Wo liegt mein Fehler in der valueFormat Anweisung?
{if($READING eq "batteryLevel")
{if($VALUE>=3){$VALUE=100}elsif($VALUE>=2.7){$VALUE=75}elsif($VALUE>=2.5){$VALUE=50}elsif($VALUE>=2.2){$VALUE=25}else{$VALUE=0}}
elsif($READING eq "desired-temp"){'desired-temp' => "%0.1f °C"}
elsif($READING eq "measured-temp"){'measured-temp' => "%0.1f °C"}
elsif($READING eq "ValvePosition"){'ValvePosition' => "%0.f %"}
elsif($READING eq "R-dayTemp"){'R-dayTemp' => "%0.1f °C"}
elsif($READING eq "R-nightTemp"){'R-nightTemp' => "%0.1f °C"}
elsif($READING eq "state"){'state' => "%0.1f °C"}}
Die Fehlermeldung im Logfile lautet:
PERL WARNING: Useless use of a constant (desired-temp) in void context at (eval 33795) line 2
Diese Medlung kommt für desired-temp,measured-temp,ValvePosition,R-dayTemp,R-nightTemp,state
Die Anzeige sieht aber so aus,wie ich sie mir vorstelle.
Grüße
Thomas
du erzeugst jeweils einen hast, verwendest ihn aber nicht da es kein return gibt. da wird nur implizit etwas zurück gegeben.
ich würde das ganze aber anders aufbauen:{ batteryLevel => '{if($VALUE>=3){$VALUE=100} elsif($VALUE>=2.7){$VALUE=75} elsif($VALUE>=2.5){$VALUE=50} elsif($VALUE>=2.2){$VALUE=25} else{$VALUE=0}}',
'desired-temp' => "%0.1f °C",
'measured-temp' => "%0.1f °C",
'ValvePosition' => "%0.f %",
'R-dayTemp' => "%0.1f °C",
'R-nightTemp' => "%0.1f °C",
'state' => "%0.1f °C" }
d.h. den umweg über den perl code nur da machen wo es nötig ist.
gruss
andre
Funktioniert. Vielen Dank.
Der Aufbau ist mir aber nicht ganz klar. Warum ist batteryLevel nicht in Hochkommas eingeschlossen, wie die anderen readings? Gibt es eine Beschreibung, wie valueFormat aufgebaut sein muss? Ich habe bisher nur die Seite mit den Beispielen gefunden.
Grüße
Thomas
dastände ist ein perl hash. das was links vom => steht ist der key. dieser darf ohne anführungszeichen geschrieben werden wenn es ein string ohne sonderzeichen ist. d.h. state und ValvePosition könnte man auch ohne schreiben.
gruss
andre