FHEM Forum

FHEM => Frontends => readingsGroup / readingsHistory => Thema gestartet von: schnofer am 20 Dezember 2016, 12:14:14

Titel: Fehler bei valueFormat
Beitrag von: schnofer am 20 Dezember 2016, 12:14:14
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
Titel: Antw:Fehler bei valueFormat
Beitrag von: justme1968 am 28 Dezember 2016, 21:33:22
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
Titel: Antw:Fehler bei valueFormat
Beitrag von: schnofer am 29 Dezember 2016, 06:06:56
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
Titel: Antw:Fehler bei valueFormat
Beitrag von: justme1968 am 29 Dezember 2016, 09:39:22
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