Seite 1 von 2

Rule erstellen in Abhängigkeit

Verfasst: 23. Mai 2022 10:16
von Innocent
Guten Morgen 😊

Ich habe einen kleinen Pool, den beheize ich mit einer Solarmatte die vom Wasser durchströmt wird. Die Pumpe dazu hängt an einer Shelly.
Die Pumpe wird aktuell per cron Job eingeschaltet und nach 3 Stunden wieder aus.

Nun würde ich gerne bei bestimmter Temperatur draußen und bestimmter Bewölkung diese rule nicht ausführen lassen. Diese Daten hole ich per openweather, sind also vorhanden.

Wie müßte das aussehen?

Danke schonmal

Re: Rule erstellen in Abhängigkeit

Verfasst: 23. Mai 2022 10:33
von udo1toni
Die Frage ist, welche Version von openHAB nutzt Du und wie hast Du die Regel erstellt? Handelt es sich um eine UI Rule, so musst Du lediglich den But-Only-If-Block entsprechend befüllen. Handelt es sich um eine konventionelle DSL Rule in einer *.rules Datei, so musst Du zu Beginn des Rule Codes einfach eine Abbruchbedingung in der Art

Code: Alles auswählen

rule ...
when
then
    if(Bedingung 1)
        return;
    if(Bedingung 2)
        return;
    // keine der Abbruchbedingungen trifft zu, also
    // Pumpe einschalten
end
einbauen.

Re: Rule erstellen in Abhängigkeit

Verfasst: 23. Mai 2022 10:56
von Innocent
System mit openhab2.5.12

Es ist eine *.rules Datei.

Ich werde mir das zu Hause mal anschauen und versuchen zu adaptieren.
Melde mich 😃

Re: Rule erstellen in Abhängigkeit

Verfasst: 23. Mai 2022 15:43
von EmptySoft
Innocent hat geschrieben: 23. Mai 2022 10:16 Ich habe einen kleinen Pool, den beheize ich mit einer Solarmatte die vom Wasser durchströmt wird. Die Pumpe dazu hängt an einer Shelly.
Am Shelly kannst Du 3 Temperatursensoren DS1820 anschließen, einen davon in den Pool, einen an die Solarmatte und dann kannst Du mit den Differenzen arbeiten.

Ich habe da ein recht aufwendiges System daraus gebaut (mit möglichst wenig Energy möglichst viel Temperatur bringen). Wenn Du Interesse hast, melde Dich bei mir per PN

Re: Rule erstellen in Abhängigkeit

Verfasst: 25. Mai 2022 22:25
von Innocent

Code: Alles auswählen

rule "Pool an wenn 25°C und mehr"
when
    Time cron"0 00 12 * * ? "

then
    if(localCurrentApparentTemperature.state < 25)
        return;


end
So habe ich das mal gemacht, hab ichs richtig verstanden und umgesetzt ???

Soll unter 25°C nicht eingeschaltet werden, über 25°C einschalten.

Re: Rule erstellen in Abhängigkeit

Verfasst: 25. Mai 2022 23:07
von udo1toni
Na ja, es fehlt halt noch der Einschaltbefehl unterhalb des return;, aber ja, mehre oder weniger sollte es so funktionieren.

Allerdings: Die Frage ist auch, wie das Item definiert ist. Handelt es sich um ein Number Item, oder ist es ein Number:Temperature Item?
Der Unterschied:
Number enthält nur die Zahl, also z.B. 25.4,
Number:Temperature enthält zusätzlich die Einheit, also z.B. 25.4 °C oder auch 77.72 °F(!)

Falls eine Einheit mit dabei ist, geht der Vergleich .state < 25 schief, weil die beiden Zahlen sich nicht im gleichen Wertesystem bewegen.

Re: Rule erstellen in Abhängigkeit

Verfasst: 27. Mai 2022 08:49
von Innocent
Ja, den Einschaltbefehl habe ich vergessen, das fiel mir spät auf... 🤣

Nach dem item schaue ich noch. Dann teste ich nochmals.

Re: Rule erstellen in Abhängigkeit

Verfasst: 27. Mai 2022 09:13
von Innocent
Item ist ein number item. Tut also. Dankeschön 😊

Re: Rule erstellen in Abhängigkeit

Verfasst: 27. Mai 2022 13:10
von Innocent
Muss mich korrigieren.
Rule schaltet die Pumpe immer ein egal ob ich < oder > verwende...

Re: Rule erstellen in Abhängigkeit

Verfasst: 27. Mai 2022 15:28
von peter-pan
Bist du sicher, dass es sich um ein Item vom Typ Number handelt ? Oder vielleicht doch um ein Typ "Number:Temperature" ? Das ist der Typ, der von OWM für dieses Item eigentlich vorgegeben wird.

Die Möglichkeiten wären:

Code: Alles auswählen

    if( (localCurrentApparentTemperature.state as Number).floatValue < 7)  {
         .....Code
    oder

    if(localCurrentApparentTemperature.state < 7 | °C) {
       ....Code
Bei der ersten If-Condition wird die Messeinheit im Item entfernt. Bei der zweiten If-Condition wird die Messeinheit dem Vergleichswert hinzugefügt.

Ich finde die erste Form eleganter. Man braucht z.B. nicht zu wissen was die Messeinheit ist und evtl. auch nicht, wie diese formuliert werden muss (z.B.: km, km/h, KM/H, etc..)