Rule soll auslösen, wenn Wert unter- oder überschritten

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Absinthe
Beiträge: 83
Registriert: 16. Jan 2022 13:30
Answers: 0

Rule soll auslösen, wenn Wert unter- oder überschritten

Beitrag von Absinthe »

Hallo zusammen,

ich möchte mir im Openhab 3 Regeln bauen, die bei unterschreiten oder überschreiten gewisser Parameter auslösen.

Beispiel wäre eine Batteriewarnung für Shelly-Sensoren oder wenn die Luftfeuchtigkeit überschritten wird. Leider funktioniert der Trigger bei mir nicht...

Kann es sein, dass Operatoren wie < > = beim Update eines ITEMS in der Rule nicht zulässig sind? Habe ich hier den falschen Wert als Basis gewählt?

Code: Alles auswählen

triggers:
  - id: "3"
    configuration:
      itemName: Shelly_Humiditiy_1
      state: ">0,5"
    type: core.ItemStateUpdateTrigger


Schöne Grüße
OpenHAB 4.3.0
in einem Docker-Container
auf einer Synology DS1515+

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Rule soll auslösen, wenn Wert unter- oder überschritten

Beitrag von KellerK1nd »

Du kannst nicht im Trigger auf so etwas prüfen. Generell solltest du einfach auf changes triggern lassen. Und im when Teil prüfst du dann die Werte, da kommen dann die if-Schleifen rein für z.Bsp. >= 0.5 oder <= 0.5. Ich persönlich erstelle die Regeln immernoch über die DSL und nicht über GUI, darum kann ich dir nicht genau sagen, wie das bei dir jetzt auszusehen hat.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Rule soll auslösen, wenn Wert unter- oder überschritten

Beitrag von peter-pan »

So wie es @KellerK1nd beschrieben hat sollte es auch über die MainUI möglich sein. Dabei solltest du aber bei beachten, dass die Schreibweise "0,5" nicht geht, sondern nur "0.5" für Dezimal-Werte als Zahlenwert interpretiert wird.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Absinthe
Beiträge: 83
Registriert: 16. Jan 2022 13:30
Answers: 0

Re: Rule soll auslösen, wenn Wert unter- oder überschritten

Beitrag von Absinthe »

Hallo zusammen,

vielen Dank für die schnellen Antworten. Genau das wars ;)

@peter-pan: Richtig, es müssen Dezimalwerte mit . und nicht mit , getrennt werden. Dies war ein verzweifelter Versuch mögliche Fehlerquellen zu eliminieren ;)
Bildschirmfoto 2022-04-27 um 13.40.24.png
VG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Absinthe am 30. Apr 2022 11:15, insgesamt 1-mal geändert.
OpenHAB 4.3.0
in einem Docker-Container
auf einer Synology DS1515+

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Rule soll auslösen, wenn Wert unter- oder überschritten

Beitrag von udo1toni »

Ja, aber nein.

Du kannst den Wert über das But only if prüfen, das ist aber etwas anderes, als von KellerK1nd und peter-pan beschrieben. :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Absinthe
Beiträge: 83
Registriert: 16. Jan 2022 13:30
Answers: 0

Re: Rule soll auslösen, wenn Wert unter- oder überschritten

Beitrag von Absinthe »

Hallo @udo1toni,

ich habe mich, zugegeben aus Neugierde, nun an den anderen beschriebenen Weg gesetzt. Leider bekomme ich diesen nicht zum Laufen... Ich vermute, dass ich einen Fehler im Vergleich der Variablen habe? Oder verwende ich hier die if/else grundsätzlich falsch?

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: Shelly_Humidity_02
    type: core.ItemStateChangeTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: >+
        if (Shelly_Humidity_02<0.5) {

        val mailActions = getActions("mail","mail:smtp:Mail_SMTP") 

        val success = mailActions.sendMail("mail@mail.de", "Betreff", "IF") 


        } else {

        val mailActions = getActions("mail","mail:smtp:Mail_SMTP") 

        val success = mailActions.sendMail("mail@mail.de", "Betreff", "ELSE") 

        }

    type: script.ScriptAction

Grüße und vielen Dank :)
OpenHAB 4.3.0
in einem Docker-Container
auf einer Synology DS1515+

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Rule soll auslösen, wenn Wert unter- oder überschritten

Beitrag von peter-pan »

...nur am Rande... edu musst den Status des Items abfragen, also

Code: Alles auswählen

if (Shelly_Humidity_02.state < 0.5)....
bzw. ist das Item "nur" numerisch oder numerisch mit UoM ?

Mich würde auch noch interessieren, ob die Mail-Ausgabe bei dir funktioniert. Bei mir klappt, das nämlich nicht (mehr) mit OH3
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Absinthe
Beiträge: 83
Registriert: 16. Jan 2022 13:30
Answers: 0

Re: Rule soll auslösen, wenn Wert unter- oder überschritten

Beitrag von Absinthe »

Das Item ist nur numerisch ohne Maßeinheit.

DANKE! Mit .state funktioniert es. Wichtig sind die Leerzeichen dabei.

Ja die E-Mails kommen bei mir an, dass klappt. Welchen Mailserver nimmst Du? Gmail habe ich nicht zum Laufen gebracht...

Jetzt noch eine Spezialfrage :D

Ich würde mir gerne einen Alarm einbauen, wenn ein Flutsensor, z.B. seit länger als 24h kein Update mehr gesendet hat, dass dann ein Alarm gesendet wird.

Ist es möglich anstelle des Wertes mit .state auch ein ITEM mit folgendem Wert "2022-04-30T04:11:22.000+0200" als Bedingung einzubauen? Würde hier ungern auf eine Persistence-Lösung gehen. Wie würde dann hier die Bedingung aussehen müssen?
OpenHAB 4.3.0
in einem Docker-Container
auf einer Synology DS1515+

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Rule soll auslösen, wenn Wert unter- oder überschritten

Beitrag von peter-pan »

Absinthe hat geschrieben: 30. Apr 2022 11:38 Ich würde mir gerne einen Alarm einbauen
Da bin ich im Moment auch überfragt, aber Udo hat da bestimmt eine Idee.
Absinthe hat geschrieben: 30. Apr 2022 11:38 Welchen Mailserver nimmst Du?
Ich habe verschiedene, aber bei keinem klappt es. Ich bekomme immer eine Fehlermeldung. Vermutlich liegt es an meinem "Thing". Hab aber noch nicht heraus gefunden, was ich falsch gemacht habe. Ich habe T-Online, Gmail und Web.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Absinthe
Beiträge: 83
Registriert: 16. Jan 2022 13:30
Answers: 0

Re: Rule soll auslösen, wenn Wert unter- oder überschritten

Beitrag von Absinthe »

peter-pan hat geschrieben: 30. Apr 2022 11:46 Ich habe verschiedene, aber bei keinem klappt es. Ich bekomme immer eine Fehlermeldung. Vermutlich liegt es an meinem "Thing". Hab aber noch nicht heraus gefunden, was ich falsch gemacht habe. Ich habe T-Online, Gmail und Web.
Mit Gmail habe ich es auch nicht zum Laufen gebracht. Ich benutze nun einen SMTP von Strato. Das funktioniert bisweilen zuverlässig.
OpenHAB 4.3.0
in einem Docker-Container
auf einer Synology DS1515+

Antworten