Notify und Pearl IF Abfrage

Begonnen von Bison, 11 August 2019, 19:46:41

Vorheriges Thema - Nächstes Thema

Bison

Hallo zusammen,

ich möchte gerade in einem Notify eine if Abfrage verknüpfen. Leider funktioniert es nicht so wie ich es mir vorstelle.

Hier meine Erklärung was ich im Code vorhabe:

Wenn der Sensor KB_SENS_1_SW_03 ein closed meldet soll mit der Pearl Abfrage if {Value ("Zisterne.level") < "80") eine Überprüfung durchgeführt werden ob der Wasserstand in der Zisterne kleiner 80 ist. Wenn diese Bedingung war ist soll der Rest des Befehls ausgeführt werden.

Ich bin mir nicht sicher ob ich innerhalb Pearl die Werte von FHEM so einfach abfragen kann oder ob ich hierfür Dummys generieren muss (wäre nicht schön)


hier der Code:

KB_SENS_1_Sw_03:.*closed {if (Value("Zisterne.level") < "80") {DebianMail('Wxxx.yyy@t-online.de','Puffer Zisterne voll','Puffer Zisterne voll');; }}; set FBDECT_Fritzbox_17 on-for-timer 600

Vielen Dank für eine kleine Hilfe in die richtige Richtung zu denken.

Gruß

Bison
Raspberry, Homematic, CUL, 50 Device, 260 Entities

binford6000

Hallo Bison,
mit Value() fragst du den STATE ab. Wenn der Wert also da drin steht würde das notify funktionieren.
Bei sowas am besten immer über den Event-Monitor gehen und sich die Events anschauen und dann ein notify
oder doif generieren lassen  ;)
Ich hab deins mal etwas korrigiert [ungetestet]:
KB_SENS_1_Sw_03:.*closed {
if (Value("Zisterne.level") < 80) {
fhem("{DebianMail('Wxxx.yyy@t-online.de','Puffer Zisterne voll','Puffer Zisterne voll')}");
fhem("set FBDECT_Fritzbox_17 on-for-timer 600");
}
}

[/code]

VG Sebastian

Bison

Hallo Sebastian,

ja der Wert steht im State. Ich habe es mit deinem Code versucht da bekam ich nur Fehlermeldungen. Da ich schon solange über der Sache sitze mach ich jetzt erst mal Schluß und schau mir nächste Woche nochmal das ganze an.

Danke für deine Hilfe.

Ich melde mich, wenn ich das Thema geknackt habe.

Gruß

Bison
Raspberry, Homematic, CUL, 50 Device, 260 Entities

Otto123

Hallo Bison,

bei Pearl kannst Du allerlei Tinnef kaufen, was Du wissen willst ist Perl!
State ist aus meiner Sicht eine blöde Schreibweise, in FHEM gibt es das Internal STATE und das Reading state. Du solltest das genauer nehmen.

Mit dem Begriff Fehlermeldungen kann leider auch keiner was anfangen.
Was hast Du gemacht? Wo gab es Fehler? In der Weboberfläche? Beim define? Im Logfile? Im System?

Noch zum Lesen: https://wiki.fhem.de/wiki/Notify

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Bison

Hallo Otto 123,

danke ich werde ab sofort Perl (verwenden)  :) ;)

in meinem Device (HM-SEN-WA-OD) gibt es das Reading state (welches den Füllgrad der Zisterne in Prozent angibt). Das STATE Internal enthält genau denselben Wert.

Wenn ich den Code von Sebastian direkt im DEF meines Notify eingebe, erhalte ich diese Fehlermeldung:

Global symbol "@t" requires explicit package name at (eval 184069) line 3.

Nachdem ich gesehen habe das Sebastian im Code doppelte Anführungszeichen verwendet habe ich die Stringoperatoren korrigiert. Danach bekomme ich diese Fehlermeldung:

Bad name after de' at (eval 190026) line 3.

Ich sitze nun weiter 5 Stunden an dem einfachen Thema und komme nicht weiter. Ich habe einiges dazugelernt.

Die Aufgabenstellung ist simpel:

Der Kontaksensor meldet closed und wenn die Zisterne noch nicht voll ist soll eine E-Mail versendet werden und gleichzeitig die Pumpe eingeschaltet werden.

Auch dieses Ansatz führte nicht zum Erfolg:

KB_SENS_1_Sw_03:.*closed {if (ReadingsVal("Zisterne","level","99") < "80") {DebianMail('yyy.xxx@t-online.de','Puffer Zisterne voll','Puffer Zisterne voll')}{fhem("set FBDECT_Fritzbox_17 on-for-timer 600")};}

Gruß

Bison




Raspberry, Homematic, CUL, 50 Device, 260 Entities

amenomade

#5
Baue ein paar Log3 Befehle in deinem Code ein.
Z.B.
Log3 $name, 1, "getriggert. level ist ".ReadingsVal("Zisterne","level","99");

Dann wirst Du sehen, was passiert

Bitte ein "list" von deinem notify posten.


Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Otto123

#6
Hallo Bison,

Das hier ist falsch:
{DebianMail('yyy.xxx@t-online.de','Puffer Zisterne voll','Puffer Zisterne voll')}{fhem("set FBDECT_Fritzbox_17 on-for-timer 600")};

Die if Abfrage in Perl sieht so aus: if (Bedingung) {Ausführung wenn Bedingung erfüllt}
Befehle müssen im Perl durch semikolon getrennt werden.

Ich nehme an, Du willst beide Befehle nur ausführen wenn die Bedingung erfüllt ist. Dann muss der Ausführungsteil des if in der DEF so aussehen:
{DebianMail('yyy.xxx@t-online.de','Puffer Zisterne voll','Puffer Zisterne voll');fhem("set FBDECT_Fritzbox_17 on-for-timer 600")}

Schau Dir zur Unterstützung diesen Artikel an
https://wiki.fhem.de/wiki/Notify
Nutze die Möglichkeit der Anlage eines notify Gerüstes im Eventmonitor und nutze die Hinweise im Abschnitt mein notify geht nicht. ;D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Bison

Hallo Otto123,

es funktioniert! Es war das Semikolon ds mich geärgert hat.

Danke für deine Hilfe!

Mit freundlichen Grüßen

Bison
Raspberry, Homematic, CUL, 50 Device, 260 Entities