UserReading funktioniert nicht

Begonnen von Marko1976, 26 August 2025, 23:24:55

Vorheriges Thema - Nächstes Thema

Marko1976

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.

Guybrush

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 ..


Marko1976

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.