FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: bartman121 am 30 Januar 2017, 11:12:38

Titel: Perl - Vergleichsoperationen
Beitrag von: bartman121 am 30 Januar 2017, 11:12:38
Hallo,

ich habe derzeit ein kleines Probem.

Ein ReadingsVal liefert mir Werte aus folgendem Berich: "off",15,15.5, ....

Dummerweise ist "off" ein String, damit kann > oder < logischerweise nicht machen ....

Mein Notify arbeitet zwar korrekt, jedoch erhalte ich immer eine Meldung, dass der Ausdruck nicht numerisch ist.

Gibt es eine Übersicht über die Vergleichsoperatoren? Mich persönlich würde eine Art "isnumeric()" interessieren.

Grüße
Titel: Antw:Perl - Vergleichsoperationen
Beitrag von: betateilchen am 30 Januar 2017, 11:16:49
Nimm doch einfach ReadingsNum() anstatt ReadingsVal(), das könnte vielleicht schon helfen.

perl Vergleichsoperatoren findest Du in der perl Doku. Das ist kein fhem-spezifisches Thema.
Titel: Antw:Perl - Vergleichsoperationen
Beitrag von: r00t2 am 30 Januar 2017, 11:19:17
Ein wenig Google hätte Dir schneller weiter geholfen :)

Schau mal hier: http://perldoc.perl.org/perlop.html#Equality-Operators (oder hier http://perldoc.perl.org/perlfaq4.html)

Letztendlich gibt es einige Ansätze, wie man zum ziel kommen kann (z. B. auch per Regex).
Titel: Antw:Perl - Vergleichsoperationen
Beitrag von: bartman121 am 30 Januar 2017, 11:20:49
Hallo,

vielen Dank für die schnelle Hilfe, ReadingsNum() sollte für mein Problem ausreichend sein:

ReadingsNum(<devicename>,<reading>,<defaultvalue>)
Wie ReadingsVal, löscht aber alles, was kein Zahl ist, um den Wert bei Berechnungen verwenden zu können.
Titel: Antw:Perl - Vergleichsoperationen
Beitrag von: betateilchen am 30 Januar 2017, 11:23:09
Ansonsten die Allzweckwaffe in der 99_myUtils.pm verwenden  8)


use Scalar::Util qw(looks_like_number);