Seite 1 von 1

Regel: Zirkulationspumpe aus

Verfasst: 15. Mär 2021 20:20
von Rob69
Hallo,

Ich beschäftige mich seit einigen Monaten mit openHAB 2.5 und habe schon einiges geschafft.
Aber bei den Rules habe ich so meine Probleme !

Mein Ziel: Bei einer Gewissen Temperatur z.B 32 Grad soll meine WW-Zirkulationspumpe wieder ausgehen,
Da wir eine Frischwasserstation haben kommt der Befehl Pumpe an aus dieser.
Über einen Shelly 1 mit Addon versuche ich dies momentan!
Hier meine Rules.

rule "Zirkulation aus"

when
//Item Zirkulation changed
//if((Zirkulation.state as Number).floatValue<= 32)
then
//sendCommand(Zirkulationspumpe , OFF)
end

Vielleicht hat einer von euch einen Tipp für mich.

Gruß Rob

Re: Regel: Zirkulationspumpe aus

Verfasst: 16. Mär 2021 06:37
von udo1toni
Immer wieder die gleichen Verständnisprobleme... :) Du bist also in guter Gesellschaft. ;)

Grundsätzlich arbeitet openHAB ereignisorientiert. Das gilt im besonderen Maße für die Rules Engine. Eine Rule wird ausgeführt, sobald ein bestimmtes Ereignis auftritt. es stehen verschiedene Ereignisse zur Verfügung.

Hier geht es um die Auswertung eines Messwerts, das bedeutet, es kommen zwei Trigger in Frage, recieved update (triggert jedes Mal, wenn das Item ein Status Update erhält) und changed (triggert jedes Mal, wenn der Item Status sich ändert).
Da die Rule bei Unterschreiten eines Grenzwertes etwas tun soll, ist changed hier korrekt.
changed als Trigger hat zwei weitere Optionen, man kann die Änderung von und/oder auf einen fixen Wert als Trigger-Bedingung definieren. Hier ist aber keine der beiden Optionen sinnvoll, denn man müsste ja für jeden möglichen Wert einen eigenen Trigger verwenden, da für beide Werte nur jeweils ein fixer Wert angegeben werden kann, kein Wertebereich.
Soweit der Trigger der Rule.

Innerhalb der Rule wird eine Aktion ausgeführt. Ob diese Aktion ausgeführt wird, soll nun davon abhängig gemacht werden, ob ein bestimmter Zustand herrscht. Zustand und Ereignis sind zwei komplett unterschiedliche Dinge, das ist der Knackpunkt bei dieser Betrachtung. :)

Die Rule hat zwei Abschnitte, nämlich den when-Teil und den then-Teil. Der when-Teil enthält eine Liste aller Trigger, die zur Ausführung der Rule führen sollen, der then-Teil enthält den Code, der ausgeführt werden soll. Damit ist auch erklärbar, warum es im when-Teil der Rule kein Schlüsselwort and gibt. Jeder angegebene Trigger führt dazu, dass die Rule gestartet wird. Man kann kein Ereignis definieren, welches nur dann auftritt, wenn ein bestimmter Zustand herrscht, noch weniger sinnvoll ist es, darauf zu bestehen, dass zwei Ereignisse zeitgleich auftreten müssen (das wären die einzig möglichen Interpretationen eines and im Trigger-Bereich)

Da wir die Aktion nur unter bestimmten Bedingungen ausführen wollen, muss dies im Code der Rule passieren. Deshalb muss Deine Rule wie folgt aussehen:

Code: Alles auswählen

rule "Zirkulation aus"
when
    Item Zirkulation changed
then
    if((Zirkulation.state as Number).floatValue<= 32)
        sendCommand(Zirkulationspumpe , OFF)
end
Besser wäre es allerdings, die Zirkulationspumpe nur einmalig auszuschalten. Außerdem solltest Du Dir direkt angewöhnen, wann immer möglich die Methode der Action vorzuziehen:

Code: Alles auswählen

rule "Zirkulation aus"
when
    Item Zirkulation changed
then
    if((Zirkulation.state as Number).floatValue<= 32 && Zirkulationspumpe.state != OFF)
        Zirkulationspumpe.sendCommand(OFF)
end
Der Befehl wird also nur gesendet, wenn die Temperatur unter 32 liegt (oder gleich ist...) und gleichzeitig die Zirkulationspumpe nicht ausgeschaltet ist.

Re: Regel: Zirkulationspumpe aus

Verfasst: 16. Mär 2021 16:32
von Rob69
Danke erstmal!

Aber mein openHAB Log Viewer sagt mir ich hätte in der Regel einen Fehler


2021-03-16 16:29:45.343 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'WW-Zirkulation.rules' has errors, therefore ignoring it: [7,6]: missing ')' at 'Zirkulationspumpe'

Aber wo!!!!!!

Irgendwie klappt es nicht! :oops: Rob69

Re: Regel: Zirkulationspumpe aus

Verfasst: 16. Mär 2021 21:44
von udo1toni
Dann zeig doch mal Deine Rule. Vielleicht ist da irgendwo noch ein Copy&Paste Fehler.

Re: Regel: Zirkulationspumpe aus

Verfasst: 17. Mär 2021 16:12
von Rob69
Kleine Fehler bestraft das Leben,


Copy fehler




Danke

Re: Regel: Zirkulationspumpe aus

Verfasst: 17. Mär 2021 22:37
von udo1toni
:)