Hallo, ich bin dabei meine Batteriebetriebenen Geräte zu vereinheitlichen.
Dazu zählt auch die Batterieanzeige in ein einheitliches Format zu bringen.
Da ich die meisten Batteriegeräte von Homematic habe, habe ich mich entschlossen, die nicht so sprechende Werteangabe von Homematic zu nutzen. Da auch einzelne Geräte einen Prozentwert als Reading wiedergeben muss ich diesen nun entsprechend in die drei Statuse wie bei Homamatic umwandeln.
Dazu habe ich folgendes Userreading angelegt:
batteryStatus {if(ReadingsVal("$name","batteryPercent",'') ge 25) {return "Ok"} elsif (ReadingsVal("$name","batteryPercent",'') ge 10) {return "Low"} else {return "Dead"}}
Leider gibt mir dies IMMER "Low" als Wert zurück, egal wieviel Prozent das Reading batteryPercent anzeigt.
Ich weiß, die Frage passt mal wieder in mehrere Unterforen, dennoch einfach kurz die Frage wo mein Fehler im Ansatz ist bzw. warum egal welcher Prozentwert angegeben ist immer der gleiche Returnwert ausgegeben wird.
was wird denn ausgegeben, wenn du
{ReadingsVal("$name","batteryPercent",'')}
in fhem eingibst? steht da zufällig ein % zeichen drin?
für deine abfrage wäre es besser, wenn du die Werte mit ReadingsNum holst
ReadingsNum($name,'batteryPercent',0)
'50%' >= 25 ergibt false ..
https://www.mathe2.uni-bayreuth.de/perl/GK/skalareDaten.htm#Operatoren
Es war die Art der Operatoren. Mit ">" funktioniert es.
Ich hab irgendwie immer Probleme zu unterscheiden wann es sich um Zahlen und wann um Strings handelt.