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.
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
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
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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
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.
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..)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian