Automatische Bewässerung von Gewächshaus und Rasen

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
zinnik
Beiträge: 174
Registriert: 7. Sep 2021 11:28
Answers: 0

Re: Automatische Bewässerung von Gewächshaus und Rasen

Beitrag von zinnik »

Das Item liefert den richtigen Wert
Screenshot (378).png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openhab 4.1.0.M Docker (Qnap)
influxDB 1.8.2 Docker (Qnap)
Grafana v8.3.3 Docker (Qnap)
Deconz 2.19.03 Docker (Qnap)
Homematic (Raspberrymatic Pi 3B+)
Grafana, Phoscon, Shelly, Gardena, Tuya
Camera IP Binding mit ffmpeg
Solaredge PV Anlage mit 8kW Speicher (solaredgeBinding)
u.v.m.

Lg zinnik

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

Re: Automatische Bewässerung von Gewächshaus und Rasen

Beitrag von udo1toni »

Vorsicht! Da steht erst mal nur 75 %. Die Frage ist, in welchem Format dieser Wert im Item gespeichert ist. Wie ist die Unit im Item definiert?
Was passiert, wenn Du in der Rule den Wert noch mit loggst:

Code: Alles auswählen

rule "Bewässerung dynamisch Blumenbeet"
when
    Time cron "0 0 20 * * ?"  // täglich um 20:00:00 Uhr "0 0 9 * * ?"      Test Minuten nach der vollen Stunde"0 06 * * * ? *"
then
    logInfo("watering", "Bewässerung dynamisch Blumenbeet gestartet- geplante Startzeit 20 Uhr")
    if(Sensor_6_Bodenfeuchtigkeit.state instanceof Number) {                  // enthält das Item einen gültigen Zahlenwert?
        logInfo("watering","Bodenfeuchte {} als Zahl {}",Sensor_6_Bodenfeuchtigkeit.state,(Sensor_6_Bodenfeuchtigkeit.state as Number).floatValue)
        if((Sensor_6_Bodenfeuchtigkeit.state as Number).floatValue >= 45)     // größer oder gleich 45?
            return;                                                                         // dann Rule abbrechen
    }
...
Tipp am Rande: Die log-Befehle erwarten zwei Strings. Dabei ist der erste String der Loggername, der zweite String ist die Logger Meldung. Sehr viele User missverstehen den ersten String als "Überschrift", das ist aber nicht der Fall. Stattdessen wird der Loggername genutzt, um das Logverhalten zu steuern. Deshalb sollte der Loggername möglichst
  • kurz sein
  • keine Sonderzeichen, Leerzeichen oder Umlaute enthalten
  • am besten CamelCase verwenden
Der Logger befindet sich in einer Baumstruktur, der String ist nur der letzte Teil des Loggernamens. Für alle DSL Rules lautet der erste Teil des Loggernamens org.openhab.core.model.script., erst dann folgt der angegebene String. Der vollständige Loggername der Logbefehle oben lautet also org.openhab.core.model.script.watering und mit diesem Namen kann man von der Karaf Konsole aus einfach per Befehl

Code: Alles auswählen

log:set WARN org.openhab.core.model.script.watering
verhindern, dass die Logbefehle irgendeine Ausgabe erzeugen (das Level WARN liegt über dem gewünschten INFO Level)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

zinnik
Beiträge: 174
Registriert: 7. Sep 2021 11:28
Answers: 0

Re: Automatische Bewässerung von Gewächshaus und Rasen

Beitrag von zinnik »

Ok kann ich probieren aber ich denke das es nicht an dem Itemwert liegt.

Denn dann würden die einachen erstellten rule nicht funktionieren habe noch weitere rules die ich aber dann deaktiviere wenn die dynamischen laufen sollen. zb hier

Code: Alles auswählen

rule "Bewässerung über Hauswasser Blumenbeet"
when
    Time cron "0 0 20 * * ?"  // täglich um 20:00 Uhr ab 40%
then
    if(Sensor_6_Bodenfeuchtigkeit.state instanceof Number)                    // enthält das Item einen gültigen Zahlenwert?
        if((Sensor_6_Bodenfeuchtigkeit.state as Number).floatValue >= 45)     // größer oder gleich 45?
            return;                                                                         // dann Rule abbrechen
            
    if(Sensor_6_Bodentemperatur.state instanceof Number)                      // enthält das Item einen gültigen Zahlenwert?
        if((Sensor_6_Bodentemperatur.state as Number).floatValue <= 1)        // kleiner oder gleich 1?
            return;                                                                         // dann Rule abbrechen
    
       shelly_pug_s_31_shellyplugsa7558f192168131_Betrieb.sendCommand(ON)                   // Gartenwasser Ventil einschalten
       Bewaesserung_1_STATE.sendCommand(ON)                                                 // Ventil einschalten
    // GartenpumpeHomematicSteckdose_State.sendCommand(ON)                                  // Pumpe einschalten
    createTimer(now.plusSeconds(1200), [|                                                    // Timer für Bewässerungsdauer
    // GartenpumpeHomematicSteckdose_State.sendCommand(OFF)                                 // Pumpe ausschalten
       Bewaesserung_1_STATE.sendCommand(OFF)                                                // Ventil ausschalten
       shelly_pug_s_31_shellyplugsa7558f192168131_Betrieb.sendCommand(OFF)                  // Gartenwasser Ventil ausschalten
    ])
end
openhab 4.1.0.M Docker (Qnap)
influxDB 1.8.2 Docker (Qnap)
Grafana v8.3.3 Docker (Qnap)
Deconz 2.19.03 Docker (Qnap)
Homematic (Raspberrymatic Pi 3B+)
Grafana, Phoscon, Shelly, Gardena, Tuya
Camera IP Binding mit ffmpeg
Solaredge PV Anlage mit 8kW Speicher (solaredgeBinding)
u.v.m.

Lg zinnik

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

Re: Automatische Bewässerung von Gewächshaus und Rasen

Beitrag von udo1toni »

Ah. Ok, ja, dann wird der Wert schon passen.
Es wäre so schön gewesen...

Alllerdings... Die Rule, die Du da zeigst, ist ja quasi identisch zu der von oben (also abgesehen von den zu schaltenden Elementen)
Insbesondere verwendet sie den identischen Trigger.

Identische Trigger bedeuten, man kann (und sollte) die Rules zu einer Rule zusammenfassen, soweit das möglich ist.
Der einzige Unterschied zwischen den beiden Rules ist ja, dass bei der einen noch zusätzlich das Item shelly_pug_s_31_shellyplugsa7558f192168131_Betrieb mit gesteuert wird. (übrigens kein guter Name für ein Item, in jeglicher Hinsicht...)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

zinnik
Beiträge: 174
Registriert: 7. Sep 2021 11:28
Answers: 0

Re: Automatische Bewässerung von Gewächshaus und Rasen

Beitrag von zinnik »

Hallo ja die sind auch fast identisch laufen aber nicht beide zusammen.


Momentan habe ich nur die Rule im Einsatz "Bewässerung über Hauswasser Blumenbeet"

Diese würde ich aber deaktivieren wenn die andere Rule "Bewässerung dynamisch Blumenbeet" und "Bewässerung dynamisch Blumenbeet Quelle"

richtig laufen würden.

Zum testen ist auch immer die "Bewässerung über Hauswasser Blumenbeet" deaktiviert.
openhab 4.1.0.M Docker (Qnap)
influxDB 1.8.2 Docker (Qnap)
Grafana v8.3.3 Docker (Qnap)
Deconz 2.19.03 Docker (Qnap)
Homematic (Raspberrymatic Pi 3B+)
Grafana, Phoscon, Shelly, Gardena, Tuya
Camera IP Binding mit ffmpeg
Solaredge PV Anlage mit 8kW Speicher (solaredgeBinding)
u.v.m.

Lg zinnik

zinnik
Beiträge: 174
Registriert: 7. Sep 2021 11:28
Answers: 0

Re: Automatische Bewässerung von Gewächshaus und Rasen

Beitrag von zinnik »

Hallo

wie kann man die Rule erweitern indem man mehrere Sensoren abfragt und der, der die geringste bodenfeuchte hat soll die rule dann ablaufen lassen.

macht man das mit dem "oder" Befehl?

zb. für Sensor_3_Bodenfeuchtigkeit.state und Sensor_4_Bodenfeuchtigkeit.state

Die Bodentemperatur muss nicht zwingend abgefragt werden da sie ja schon vorhanden ist und in die Sensoren sich in der gleichen Umgebung liegen.

Code: Alles auswählen

rule "Bewässerung über Tank Topfpflanzen"
when
    Time cron "0 45 18 * * ?"  // täglich um 18:45 Uhr ab 55%
then
    if(Sensor_2_Bodenfeuchtigkeit.state instanceof Number)                    // enthält das Item einen gültigen Zahlenwert?
        if((Sensor_2_Bodenfeuchtigkeit.state as Number).floatValue >= 60)     // größer oder gleich 60?
            return;                                                                                  // dann Rule abbrechen

    if(Sensor_2_Bodentemperatur.state instanceof Number)                      // enthält das Item einen gültigen Zahlenwert?
        if((Sensor_2_Bodentemperatur.state as Number).floatValue <= 1)        // kleiner oder gleich 1?
            return;                                                                                  // dann Rule abbrechen

        shelly_plug_s_80_shellyplugsde4aaa192168180_Betrieb.sendCommand(ON)                          // Ventil am Tank einschalten
        GartenpumpeHomematicSteckdose_State.sendCommand(ON)                                          // Regenwasser Pumpe einschalten
    createTimer(now.plusSeconds(1200), [|                                                             // Timer für Bewässerungsdauer
        GartenpumpeHomematicSteckdose_State.sendCommand(OFF)                                         // Regenwasser Pumpe ausschalten
        shelly_plug_s_80_shellyplugsde4aaa192168180_Betrieb.sendCommand(OFF)                         // Ventil am Tank ausschalten
    ])
end

Danke

Lg Sven
openhab 4.1.0.M Docker (Qnap)
influxDB 1.8.2 Docker (Qnap)
Grafana v8.3.3 Docker (Qnap)
Deconz 2.19.03 Docker (Qnap)
Homematic (Raspberrymatic Pi 3B+)
Grafana, Phoscon, Shelly, Gardena, Tuya
Camera IP Binding mit ffmpeg
Solaredge PV Anlage mit 8kW Speicher (solaredgeBinding)
u.v.m.

Lg zinnik

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

Re: Automatische Bewässerung von Gewächshaus und Rasen

Beitrag von udo1toni »

Es ist ja schon eine weile her... bist Du nur die ganze Zeit nicht dazu gekommen (bzw. wegen Jahreszeit unnötig...)?

Was ist der eigentliche Wunsch? (Ich bin zu faul, den ganzen Thread von vorne zu lesen)

Welche Sensoren (und wie viele genau) willst Du auswerten?
Was soll konkret gesteuert werden?
Gibt es mehrere gleichartige Steuerungen (also z.B. immer ein Messwert soll einen Aktor steuern)?

Deine Frage mit dem oder "Befehl" verstehe ich nicht so ganz. Im gezeigten Code wird die Rule ja per Zeit gesteuert, nicht durch Sensorwerte.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

zinnik
Beiträge: 174
Registriert: 7. Sep 2021 11:28
Answers: 0

Re: Automatische Bewässerung von Gewächshaus und Rasen

Beitrag von zinnik »

Hi ja genau wegen der Jahreszeit war es unnötig. ;)
In der rule die ich gepostet habe wird ja der Sensor_2_Bodenfeuchtigkeit überwacht.
Ich möchte die rule so erweitern das in der rule noch weitere sensoren überwacht werden zb sensor3 und sensor4.
Die bewässerung soll starten wenn einer der drei sensoren 2,3 oder 4 zb . 50% Feuchtigkeit haben.

Lg sven
openhab 4.1.0.M Docker (Qnap)
influxDB 1.8.2 Docker (Qnap)
Grafana v8.3.3 Docker (Qnap)
Deconz 2.19.03 Docker (Qnap)
Homematic (Raspberrymatic Pi 3B+)
Grafana, Phoscon, Shelly, Gardena, Tuya
Camera IP Binding mit ffmpeg
Solaredge PV Anlage mit 8kW Speicher (solaredgeBinding)
u.v.m.

Lg zinnik

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

Re: Automatische Bewässerung von Gewächshaus und Rasen

Beitrag von udo1toni »

Dann bilde Gruppen. Z.B.

gBodenfeuchte_1 ist die Gruppe aller Sensoren für die erste Pflanze. Du kannst wahlweise die Gruppe mit einem berechneten Status versehen, hier z.B. MIN, dann musst Du lediglich den Status der Gruppe prüfen.
Oder Du kannst in der Rule auch so abfragen:

Code: Alles auswählen

var minimum = 100
gBodenfeuchte_1.members.filter[s|s.state instanceof Number].forEach[i|
    if((i.state as Number).floatValue< minimum) 
        minimum = (i.state as Number).floatValue
]
if(minimum < 50)
...
Das Ganze kann man auch so gestalten, dass mehrere Gruppen von Sensoren für mehrere Ventile (oder ähnliches) individuell zuständig sind.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

zinnik
Beiträge: 174
Registriert: 7. Sep 2021 11:28
Answers: 0

Re: Automatische Bewässerung von Gewächshaus und Rasen

Beitrag von zinnik »

Ok das mit den Gruppen ist mir bisschen zu kompliziert da es sein kann das die die Sensoren auch mal die Pflanze wechseln. Ist es nicht möglich die anderen sensoren einfach in die bestehende rule ei zu fügen. Zb.

Wenn Sensor2 oder Sensor3 oder Sensor4 eine Feuchtigkeit von kleiner 50% dann starte die rule?
Mit gruppen da sind sie ja wieder fest einer Gruppe zu geordnet :roll:
Lg Sven
openhab 4.1.0.M Docker (Qnap)
influxDB 1.8.2 Docker (Qnap)
Grafana v8.3.3 Docker (Qnap)
Deconz 2.19.03 Docker (Qnap)
Homematic (Raspberrymatic Pi 3B+)
Grafana, Phoscon, Shelly, Gardena, Tuya
Camera IP Binding mit ffmpeg
Solaredge PV Anlage mit 8kW Speicher (solaredgeBinding)
u.v.m.

Lg zinnik

Antworten