Gartenbewässerung 2.0 ohne Bodenfeuchtesensoren

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • DaOptika
    Smart Home'r
    • 19.06.2019
    • 79

    #1

    Gartenbewässerung 2.0 ohne Bodenfeuchtesensoren

    Hey,

    in meinem neusten Projekt hab ich meine Gartenbewässerung auf's nächste Level gebracht und meine Bodenfeuchtesensoren obsolet gemacht.
    Dazu habe ich die FAO-56 Penman-Monteith Formel genutzt um mit Daten der Wetterstation und der PV-Anlage die aktuelle Evapotranspirationsrate der Pflanzen zu berechnen und mit diesem Wert die nötige Bewässerungsdauer zu bestimmen.

    Das Video dazu mit der vollständigen Erklärung findet ihr hier:


    In der Videobeschreibung findet ihr auch alle Formeln - für die Umsetzung direkt in Loxone hab ich euch ein kleines Template gebaut, siehe Anhang!

    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Screenshot 2026-06-15 175908.png Ansichten: 56 Größe: 233,7 KB ID: 486272
    Zuletzt geändert von DaOptika; 15.06.2026, 17:35.
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 5470

    #2
    Danke für deine Anleitung! Die Bewässerung anhand der Evapotranspiration funktioniert hervorragend. Ich hatte dazu vor Jahren auch schon einmal eine Anleitung geschrieben:

    LoxBerry: https://wiki.loxberry.de/start

    Kommentar

    • DaOptika
      Smart Home'r
      • 19.06.2019
      • 79

      #3
      Ach das hätte mir einigen Aufwand gespart 😅
      Immerhin kam so eine alternative Umsetzung mit Live-Daten raus, wäre mal spannend die Ergebnisse zu vergleichen 🤓

      Kommentar

      • Prof.Mobilux
        Supermoderator
        • 25.08.2015
        • 5470

        #4
        Ich nutze auch Temperatur und Luftfeuchtigkeit als Live-Daten, mehr brauche ich aber bei meiner Lösung auf Grund der Haude-Konstanten nicht. Du wirst da definitiv genauer sein, weil Du Wind und Strahlung noch mit einbeziehst. Und dazu die PV-Anlage zu nehmen ist eine super Idee - die haben ja mittlerweile viele auf dem Dach.

        Von daher sind es aus meiner Sicht einfach zwei Ansätze: Ein Minimaler über die Haude-Konstante und ein genauerer Ansatz, der aber auch mehr Messdaten benötigt.

        Ich nehme aber auf jeden Fall Dein Video direkt zum Anlass und baue die Evapotranspiration noch in meiner WeatherLox Wetterstation ein. Da hatte ich bisher nur die Werte von OpenMeteo für die Evapotranspiration genommen.
        LoxBerry: https://wiki.loxberry.de/start

        Kommentar

        • <Andreas>
          LoxBus Spammer
          • 07.03.2023
          • 445

          #5
          Ich verwende ebenfalls die gleiche Methode, allerdings komplett auf OpenMeteo gestützt ohne Wettersation

          Ich nutze für die grundlegende Berechnung Node-Red und rechne jeden Kreis einzeln dagegen wieviele Lieter ich bewässert habe
          Die restliche Logik liegt in Loxone
          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 24,9 KB ID: 486322
          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 23,0 KB ID: 486323

          Kommentar


          • Noschvie
            Noschvie kommentierte
            Kommentar bearbeiten
            Wie berechnest du den Bewässerungsindex?

          • <Andreas>
            <Andreas> kommentierte
            Kommentar bearbeiten
            // --- CONFIGURATION ---
            const PFLANZEN_FAKTOR = 0.8; // 0.8 = Rasen, 1.1 = Gemüse, 0.6 = Sträucher
            const BODEN_DECKEL = 35; // Max. Speicherkapazität (Lehmboden ca. 30-40l, Sandboden ca. 15-20l)
            const REGEN_SCHWELLE = 1.5; // Regen unter 1.5l/m² verdunstet auf den Blättern (Interzeption)
            const WIND_SCHWELLE = 20; // Ab 20 km/h Wind wird die Verdunstung erhöht
            const WIND_AUFSCHLAG = 1.1; // 10% mehr Verdunstung bei Wind
            // ---------------------

            const d = msg.payload.daily;

            if (!d || !d.precipitation_sum || !d.et0_fao_evapotranspiration) {
            node.status({fill:"red", shape:"ring", text:"Daten fehlen"});
            return null;
            }

            let bilanzKonto = 0;

            // Schleife von D-10 (Index 0) bis D2 (Index 12)
            for (let i = 0; i <= 12; i++) {
            // 1. Effektiver Regen (Kleinstmengen ignorieren)
            let regenHeute = d.precipitation_sum[i] || 0;
            if (regenHeute < REGEN_SCHWELLE) regenHeute = 0;

            // 2. Verdunstung mit Pflanzen-Faktor
            let verdunstungHeute = (d.et0_fao_evapotranspiration[i] || 0) * PFLANZEN_FAKTOR;

            // 3. Wind-Korrektur
            let windHeute = d.wind_speed_10m_max ? d.wind_speed_10m_max[i] : 0;
            if (windHeute > WIND_SCHWELLE) {
            verdunstungHeute *= WIND_AUFSCHLAG;
            }

            // 4. Tages-Saldo berechnen
            bilanzKonto += (regenHeute - verdunstungHeute);

            // 5. Boden-Deckel (Lehmboden-Sättigung)
            // Wenn es mehr regnet als der Boden speichern kann, fließt es weg.
            if (bilanzKonto > BODEN_DECKEL) {
            bilanzKonto = BODEN_DECKEL;
            }
            }

            // Endergebnis
            const wert = parseFloat(bilanzKonto.toFixed(2));
            const einheit = "l/m²";

            // Status-Logik
            let farbe = "green";
            if (wert > 10) farbe = "blue";
            if (wert < 0) farbe = "yellow";
            if (wert < -15) farbe = "red";

            node.status({
            fill: farbe,
            shape: "dot",
            text: `${wert} ${einheit}`
            });

            msg.payload = wert;
            msg.einheit = einheit;
            return msg;

          • <Andreas>
            <Andreas> kommentierte
            Kommentar bearbeiten
            Und hier noch der Config Block, hier braucht man aber nicht alle abgefragten Werte
            (Achtung, habe mit KI gearbeitet)

            const lat = 0.000;
            const lon = 0.000;
            const model = "icon_seamless";

            // 1. Parameter für die tägliche Bilanz & Heute-Max (daily)
            const dailyParams = [
            "temperature_2m_mean",
            "precipitation_sum",
            "relative_humidity_2m_mean",
            "wind_speed_10m_max",
            "wind_speed_10m_mean",
            "et0_fao_evapotranspiration",
            "soil_moisture_0_to_7cm_mean"
            ].join(",");

            // 2. Parameter für den Stunden-Countdown (hourly)
            // Das ist wichtig für die "In X Stunden wird es windig" Logik
            const hourlyParams = [
            "wind_speed_10m"
            ].join(",");

            // 3. Zusammenbau der URL
            // Wir holen 10 Tage Vergangenheit und 7 Tage Vorhersage
            msg.url = `https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${lon}`
            + `&daily=${dailyParams}`
            + `&hourly=${hourlyParams}`
            + `&past_days=10&forecast_days=7`
            + `&timezone=Europe%2FBerlin&models=${model}`;

            return msg;
        • DaOptika
          Smart Home'r
          • 19.06.2019
          • 79

          #6
          Hey zusammen,

          falls jemand mein Template und/oder meine Formeln nutzt:

          Ich hatte nen Fehler drin. Ich bin mit der Tages-Transpiration gestartet, die stündliche Evapotranspiration braucht aber andere Koeffizienten!
          Dadurch kam der Wert etwa Faktor 2 zu hoch raus.

          Ich hab das nun behoben. Da tagsüber und Nachts unterschiedliche Konstanten gelten nutze ich nun die Loxone-Systemvariable "Sonne Höhe" zur Auswahl der Koeffizienten.

          Genau genommen müsste ich eigentlich auch die Nettostrahlung statt der Globalstrahlung berechnen: Das ist enorm aufwändig und in mehreren Rechenbeispielen war der Unterschied in der Tagessumme tatsächlich vernachlässigbar!

          Zur Referenz könnt ihr euch den et0-Wert der vorherigen Stunde auch von Open Meteo abrufen:
          Code:
          https://api.open-meteo.com/v1/forecast?latitude=xx.xxx&longitude=y.yyy&hourly=et0_fao_evapotranspiration&past_hours=1&forecast_hours=0&timezone=auto
          (bei latitude und longitude eure Koordinaten eingeben)
          Befehlserkennung: "et0_fao_evapotranspiration":[\v

          Kommentar

          Lädt...