Hallo
sorry für die triviale Anfängerfrage.
Ich lese mit dem Fritz! 546 Powerline Adapter den aktuellen Stromverbrauch meiner Waschmaschine aus.
Leider liefert er mir nur den Wert "2.00 W"
Für das spätere Coding will ich aber Abfragen ob dieser Wert > 5 ist.
2016.08.12 12:57:10 1: PERL WARNING: Argument "2.00 W" isn't numeric in numeric gt (>) at (eval 2270) line 1.
Den Wert habe ich in einem dummy gespeichert.
Wie kann ich das umbauen?
Grüße
Achim
Verwende zum Abfragen einfach ReadingsNum statt ReadingsVal (siehe commandref zu Perl Specials).
Warum speichert man eigentlich den Wert eines Readings nochmal extra in einen dummy?
Oder zerlege das Reading mit einem
attr <device> userReadings
Ich habe von meinem Windsensor ein Reading wind_dir mit z.B. 135 NW
dieses zerlege ich mit folgendem userReadings und erhalte ein neues Reading mit dem Namen windrichtungsgrad :
attr windsensor userReadings windrichtungsgrad:wind_dir.* {(split(' ', ReadingsVal("$name","wind_dir",""), 2))[0]}
Du müsstest halt die Namen noch anpassen.
Zitat von: Ma_Bo am 12 August 2016, 13:10:58
Oder zerlege das Reading mit einem
Das ist doch Quatsch, wenn es nur darum geht, den reinen numerischen Wert des readings ohne Einheit zu bekommen. Genau dafür ist ja die Standarfunktion ReadingsNum() eingebaut worden.
ZitatDas ist doch Quatsch, wenn es nur darum geht, den reinen numerischen Wert des readings ohne Einheit zu bekommen. Genau dafür ist ja die Standarfunktion ReadingsNum() eingebaut worden.
Aber es funktioniert :)
Und man hat ein schönes neues Reading ;)
Auch das könntest du mit ReadingsNum bekommen.
Hallo
wow. Danke für den super schnellen support!
ReadingsVal() hat die Lösung gebracht.
... und die SD Karte bedankt sich dank 80MB weniger Logfiles in einem Monat gleich mit :-)
Grüße
Ist meine Methode denn falsch oder überdimensioniert oder warum ist es Quatsch?
Da ich dieses mit dem userReadings öfter so eingebaut habe.
Gesendet von iPhone mit Tapatalk
Zitat von: Ma_Bo am 12 August 2016, 13:22:46
Da ich dieses mit dem userReadings öfter so eingebaut habe.
Du kannst auch das userReading mit ReadingsNum() versorgen anstatt mit einem split.
Ausserdem bleibt es für mich trotzdem sinnlos, zwei Readings zu haben, in denen letztendlich die gleiche Information steht.
Dein userReading verarbeitest Du mit ReadingsVal() weiter, das originale Reading würde mit ReadingsNum() exakt das gleiche Ergebnis liefern, ohne erst zusätzliche readings erzeugen zu müssen.
Mir stellt sich aber die Frage warum sollte ich es mit ReadingNum() machen anstatt mit split?
Zu Ressourcen verbrauchend oder warum?
Gesendet von iPhone mit Tapatalk
Zitat von: betateilchen am 12 August 2016, 13:24:46
Dein userReading verarbeitest Du mit ReadingsVal() weiter, das originale Reading würde mit ReadingsNum() exakt das gleiche Ergebnis liefern, ohne erst zusätzliche readings erzeugen zu müssen.
Ok, verstanden.
Gesendet von iPhone mit Tapatalk