Seite 1 von 2
Rule soll auslösen, wenn Wert unter- oder überschritten
Verfasst: 27. Apr 2022 10:34
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
Re: Rule soll auslösen, wenn Wert unter- oder überschritten
Verfasst: 27. Apr 2022 12:12
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.
Re: Rule soll auslösen, wenn Wert unter- oder überschritten
Verfasst: 27. Apr 2022 12:33
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.
Re: Rule soll auslösen, wenn Wert unter- oder überschritten
Verfasst: 27. Apr 2022 13:41
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
Re: Rule soll auslösen, wenn Wert unter- oder überschritten
Verfasst: 27. Apr 2022 18:56
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.

Re: Rule soll auslösen, wenn Wert unter- oder überschritten
Verfasst: 30. Apr 2022 10:50
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

Re: Rule soll auslösen, wenn Wert unter- oder überschritten
Verfasst: 30. Apr 2022 11:16
von peter-pan
...nur am Rande... edu musst den Status des Items abfragen, also
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
Re: Rule soll auslösen, wenn Wert unter- oder überschritten
Verfasst: 30. Apr 2022 11:38
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
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?
Re: Rule soll auslösen, wenn Wert unter- oder überschritten
Verfasst: 30. Apr 2022 11:46
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.
Re: Rule soll auslösen, wenn Wert unter- oder überschritten
Verfasst: 30. Apr 2022 12:00
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.