Fehler bei valueFormat

Begonnen von schnofer, 20 Dezember 2016, 12:14:14

Vorheriges Thema - Nächstes Thema

schnofer

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

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

schnofer

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

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968