FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Marko1976 am 26 August 2025, 23:24:55

Titel: UserReading funktioniert nicht
Beitrag von: Marko1976 am 26 August 2025, 23:24:55
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.
Titel: Aw: UserReading funktioniert nicht
Beitrag von: Guybrush am 27 August 2025, 00:54:58
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 ..
Titel: Aw: UserReading funktioniert nicht
Beitrag von: TomLee am 27 August 2025, 09:09:06
https://www.mathe2.uni-bayreuth.de/perl/GK/skalareDaten.htm#Operatoren
Titel: Aw: UserReading funktioniert nicht
Beitrag von: Marko1976 am 27 August 2025, 09:47:54
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.