Gartenbewässerung 2.0 ohne Bodenfeuchtesensoren

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

    #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; vor 3 Tagen.
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 5410

    #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
      • 78

      #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
        • 5410

        #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
          • 435

          #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;
        Lädt...