Regel: Zirkulationspumpe aus

Allgemeine Fragen zum Thema "Smart Home" und Entscheidungshilfen

Moderator: seppy

Antworten
Rob69
Beiträge: 55
Registriert: 26. Feb 2021 07:38

Regel: Zirkulationspumpe aus

Beitrag 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

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

Re: Regel: Zirkulationspumpe aus

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Rob69
Beiträge: 55
Registriert: 26. Feb 2021 07:38

Re: Regel: Zirkulationspumpe aus

Beitrag 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

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

Re: Regel: Zirkulationspumpe aus

Beitrag von udo1toni »

Dann zeig doch mal Deine Rule. Vielleicht ist da irgendwo noch ein Copy&Paste Fehler.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Rob69
Beiträge: 55
Registriert: 26. Feb 2021 07:38

Re: Regel: Zirkulationspumpe aus

Beitrag von Rob69 »

Kleine Fehler bestraft das Leben,


Copy fehler




Danke

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

Re: Regel: Zirkulationspumpe aus

Beitrag von udo1toni »

:)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten