"Gelöst" - Reading ohne Einheit - Motion Eye Akku Reading ohne %

Begonnen von Steffmaster, 09 Juni 2016, 11:14:34

Vorheriges Thema - Nächstes Thema

Steffmaster

Hallo!

Kurze Erklärung, was ich möchte. Bei meinen Jalousien habe ich folgendes Userreading angelegt:

status {if ((Value("Rollo_Bad") eq "off") || Value("Rollo_Bad") eq "up") {"0"} else {substr(Value("Rollo_Bad"),4) ;;}}

Damit erzeuge ich ein neues Reading, welches mir den state der Jalousie ohne das "dim" in das Reading "status" schreibt. Das benötige ich, um den state im TabletUi grafisch umzusetzen.

Genau dieses benötige ich nun auch für das Akku Reading des Motion Eye. Dort wird dem "battery" Reading ein "%" angehangen. Kann mir jemand helfen das umzusetzen? Ein DOIF mit:

MotionEye:battery:d

bringt mich hier nicht wirklich weiter.

Ich habe es mal so versucht

status {if ((Value("MotionEye:battery") = 100) || Value("MotionEye:battery") eq = 1) {"0"} else {substr(Value("MotioEye:battery"),4) ;;}}

Da bekomme ich folgenden Fehler:

Error evaluating MotionEye userReading status: Can't modify non-lvalue subroutine call in scalar assignment at (eval 119444) line 1, near "100) " syntax error at (eval 119444) line 1, near "eq =" syntax error at (eval 119444) line 1, near ";}"

marvin78


Steffmaster

Hallo und danke für deine Antwort. Ich nehme an, das ReadingsNum gehört zu TabletUi? Ich kann da leider nichts zu finden. Hast du ein kurzes Beispiel String da?

marvin78

Wenn jemand ein Stichwort rein wirft, gibt die Logik vor, dass man es nimmt und in der Doku danach sucht. Wäre es anders (ich habe keinerlei Ahnung, wie du auf TabletUI kommst), hätte ich schon mehr geschrieben.

ReadingsNum ist eine Perl Funktion, die FHEM dir zur Verfügung stellt, um die Werte aus Reading zu extrahieren. Es funktioniert wie ReadingsVal (Grundlagen!), liefert aber z.B. Werte ohne Einheiten.

Bitte die Grundlagen lernen, angepinnte Beiträge lesen....

Steffmaster

#4
Für die, die es vlt. noch interessiert. So funktioniert es als Userreading.

status {substr(ReadingsVal("MotionEye","battery","none"),0,3)}

und so geht es auch

status {(ReadingsNum("MotionEye","battery","none"))}

Dank dir

betateilchen

Zitat von: Steffmaster am 09 Juni 2016, 12:58:16
und so geht es auch
status {(ReadingsNum("MotionEye","battery","none"))}

und so auch:


{ (ReadingsVal("MotionEye","battery",0) + 0) }
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!