Autor Thema: Fehler bei valueFormat  (Gelesen 1515 mal)

Offline schnofer

  • New Member
  • *
  • Beiträge: 3
Fehler bei valueFormat
« 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

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21025
Antw:Fehler bei valueFormat
« Antwort #1 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
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline schnofer

  • New Member
  • *
  • Beiträge: 3
Antw:Fehler bei valueFormat
« Antwort #2 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

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21025
Antw:Fehler bei valueFormat
« Antwort #3 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
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH