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..)