reading ersten Zeichen auswerten

Begonnen von Bartel_12, 14 Februar 2022, 19:49:27

Vorheriges Thema - Nächstes Thema

Bartel_12

Hallo zusammen,

wie kann ich das erste zeichen von einem Reading auswerten.
das ganze wollte ich in einem Userreading machen und entsprechend ein Vorzeichen setzen

z.B.
1.8.0_Verbrauch    <8692033.5         hier soll das > ausgewertet werden
16.7.0_Power         548.11              hier soll dann ein - als vorzeichen gesetzt werden.

ich habe das ganze schon probiert in einem Userreading, vermutlich bin ich aber komplett auf dem Holzweg!!????
Bezug:16.7.0_Power.* { if (ReadingsVal($name,"1.8.0_Verbrauch",0) == ">") { ReadingsVal($name,"16.7.0_Power",0) } else { 0 } }, Einspeisung:16.7.0_Power.* { if (ReadingsVal($name,"1.8.0_Verbrauch",1) == "<") { - ReadingsVal($name,"16.7.0_Power",0) } else { 0 } }

Geht das denn überhaubt?

Danke schon mal im vorraus




Raspberry 3 - 3* Siemens Logo fs8 (vollausbau) - IR leskeopf(Stromzähler)

betateilchen

Zitat von: Bartel_12 am 14 Februar 2022, 19:49:27
Geht das denn überhaubt?

Natürlich.

substr(ReadingsVal($name,"1.8.0_Verbrauch",0),0,1)

Und ein Minuszeichen davorsetzen geht einfach, in dem man entweder den Wert von 0 abzieht oder mit -1 multipliziert. Mathematik, 4. Klasse Grundschule.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rabehd

if (ReadingsVal($name,"1.8.0_Verbrauch",1) == "<")
Ja, Holzweg!
Auch funktionierende Lösungen kann man hinterfragen.

Bartel_12

Danke soweit
jetzt hab ich es auch geschnallt  ::)

aktuelle_Leistung:16.7.0_Power.* {if (substr(ReadingsVal($name,"1.8.0_Verbrauch",0),0,1) eq "<" )  { -ReadingsVal($name,"16.7.0_Power",0) } else {if (substr(ReadingsVal($name,"1.8.0_Verbrauch",0),0,1) eq ">" )  { ReadingsVal($name,"16.7.0_Power",0) } } }

so funktioniert es.
Raspberry 3 - 3* Siemens Logo fs8 (vollausbau) - IR leskeopf(Stromzähler)