FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Alveole am 16 Oktober 2015, 21:16:09

Titel: [gelöst] notify und Perl mit KNX
Beitrag von: Alveole am 16 Oktober 2015, 21:16:09
Hallo,
ich hab eine Problem.
Ich lese einen Wert (Heizungsdruck per KNX) aus.
Zitat
define Heiz_druck EIB 0003
attr Heiz_druck IODev EIB
attr Heiz_druck alias Druck Heizung
attr Heiz_druck dummy 1
attr Heiz_druck group Heizung
attr Heiz_druck model pressuresensor
attr Heiz_druck room Heizung
attr Heiz_druck sortby 3
Nun möchte ich gern benachrichtigt werden, wenn dieser unter 1 fällt.
Meine Idee sieht so aus.

define alarm_heiz_druck notify Heiz_druck {if (ReadingsVal("Heiz_druck",0,0)<"1") {fhem "set pushmsg msg 'Heizung' 'Druck zu niedrig'"}}


ein Problem gibts da:
sobald der Druck sich ändert, bekomme ich eine Nachricht. Egal ob über oder unter 1. Auch egal, ob er den Granzwert überschreitet. Er irgnoriert also vollkommen den Vergleich.

Wo liegt der Fehler (im PERL - Da bin ich noch totaler Laie!)?

Danke!
Titel: Antw:notify und Perl
Beitrag von: rapster am 16 Oktober 2015, 21:27:27
Wenn du eine Zahl vergleichen möchtest solltest du auch eine Zahl angeben und nicht einen String.
Also aus "1" eine 1 machen ;)

Und bei ReadingsVal("Heiz_druck",0,0) fehlt auch noch das Reading welches du lesen möchtest, außer du hast ein Reading welches "0" lautet?
Sonst wird immer 0 zurückgeliefert und das ist auch immer <1
Titel: Antw:notify und Perl
Beitrag von: Otto123 am 16 Oktober 2015, 21:28:52
Hallo,

du nimmst den Zahlenoperator aber machst dann aus der Zahl eine Zeichenkette:
"2" -> Zeichen 2
2 --> Zahl 2
< 2
lt "2"

lies Dir in der commandref den DOIF Abschnitt durch, da steht es ganz gut erklärt.

Gruß Otto
Titel: Antw:notify und Perl
Beitrag von: Alveole am 16 Oktober 2015, 22:36:31
@rapster
Danke für Deinen Tip!!!
die ""-Zeichen waren versehentlich geblieben.
Das Reading, wie das bei knx lautet, hatte ich noch nicht komplett durchschaut. Jetzt aber!
so funktionierts:
define alarm_heiz_druck notify Heiz_druck {if (ReadingsVal("Heiz_druck","state","") < 1) {fhem "set pushmsg msg 'Heizung' 'Druck zu niedrig'"}}

@Otto123
die ""-Zeichen waren versehentlich geblieben aus einem anderen notify. dummes Copy-Past
natürlich hatte ich schon die sagenumwogene commandref gelesen, aber für KNX sagt die manchmal nicht wirklich was aus!

Danke beiden für die schnelle Antwort!