DIY: Bodenfeuchtesensor für Hydrawise

T

top_gun_de

Guest
Hallo allerseits,

für Beregnungscomputer gibt es seit Jahren fertige Bodensensoren. Damit wird die Bewässerung solange blockiert, wie noch genug Restwasser in der oberen Bodenschicht ist. Der Senor wird an zwei Kontakte des Bewässerungscomputers angeschlossen und hat selbst noch ein kleines Steuergerät, auf dem man einen Prozentwert für die minimale Bodenfeuchtigkeit einstellen kann. Sinkt die Bodenfeuchtigkeit unter diesen Prozentwert, schließt der Sensor die Kontakte vom Bewässerungscomputer kurz und erlaubt so die Bewässerung.

Mir gefallen dabei zwei Sachen nicht: Der Preis, und die fehlende Möglichkeit sich die Messwerte mobil anzusehen. Hydrawise meldet da nur, dass der Sensor die Beregnung gesperrt hat. Ob das jetzt 90 oder 60% sind, kann man nicht erkennen.

Für Hausautomatisierung mit Do-it-yourself-Mitteln gibt es schon seit einiger Zeit günstige Sensoren, die man mit einem Raspberry Pi oder anderen Kleinstrechnern auswerten kann. So einen Sensor möchte ich einsetzen und mit der Hydrawise verbinden. Damit lässt sich hoffentlich massiv Geld sparen, und man kann den aktuellen Feuchtigkeitswert ohne Marsch in den Geräteschuppen abfragen. :)

Den Aufbau denke ich mir folgendermaßen:

a) Auf der Rasenfläche wird ein kapazitiver Feuchtigkeitssensor vergraben. Die gibt es für ca. 3 Euro auf eBay.
b) Um nicht 25m Kabel über den Rasen zu ziehen, schließe ich am Sensor einen "Briefmarkencomputer" an. Es gibt für 5 Euro Kleinstcomputer mit WLAN-Fähigkeit. Die können nicht viel, aber es reicht um alle 20 Minuten den Sensor auszulesen und den Messwert per WLAN zu verschicken. Dann legt der sich wieder schlafen. Läuft mit 1,5V-Akkus ca. 3 Monate, mit Lithium ginge wohl noch mehr.
c) Im Haus habe ich auf einem Raspberry Pi das Programm "ioBroker" für Hausautomatisierung laufen. Das nimmt die Messwerte an und entscheidet je nach Messwert, ob die Bewässerung freigeschaltet wird oder gesperrt bleibt.
d) Die Steuerung des Bewässerungscomputers ist auf zwei Wegen möglich: 1.) Bei Hydrawise kann ich über Internet einen Befehl "Pause 24h" losschicken. Das müsste täglich wiederholt werden. 2.) Man kann über WLAN ein Relais steuern, das mit den Kontakten am Bewässerungscomputer verbunden wird.

634718



Für den Sensor im Rasen fehlt noch eine Plastikabdeckung für den Sensor. Mit Glück kann mir ein Kollege etwas passendes aus dem 3D-Drucker ziehen. Hier mal ein Foto vom ersten Aufbau um die Gehäusemaße zu prüfen. Es ist noch nichts verlötet und die Kabel fehlen noch. Der Minicomputer ist wirklich so groß wie eine Briefmarke, den meisten Platz nimmt links die Batteriehalterung (4x AAA) weg.

634719


Der Mini-Rechner funkt dann per WLAN an den Raspberry Pi mit ioBroker, die beiden unterhalten sich mit dem Protokoll "MQTT", einem gängigen Standard für Internet of Things-Kommunikation. Auf dem ioBroker muss ich dann noch ein kleines Programm schreiben, das entweder ein Relais schaltet (Relais ist noch nicht gekauft) oder per Script einen "24h Pause"-Befehl an meinen Controller schickt.

Wenn ich auf das Relais verzichte, kostet der Sensor mit allen Teilen vielleicht 20-25 Euro. Das Relais plus Gehäuse werden noch einmal ca. 20 Euro.

Mal sehen ob das alles so hinhaut :)
 
  • T

    top_gun_de

    Guest
    Ja, Parzival fehlt hier tatsächlich. Aber wir alle sind hier freiwillig und weil es für uns richtig ist. Wenn es das nicht mehr ist, dann muss man weiterziehen.

    Für dieses konkrete Winterprojekt gilt aber: Er ist auf dem Laufenden, keine Sorge :)
     
  • Jazz Brazil

    Foren-Urgestein
    Registriert
    11. Mai 2009
    Beiträge
    15.584
    Die herzlichsten Grüße bitte....ach was, ich schreib nachher selber....
     
  • T

    top_gun_de

    Guest
    So. Nachdem ich mich in den ESP32 eingearbeitet habe, war das Ergebnis: Lieber beim ESP8266 bleiben. Der Stromverbrauch der Fertigmodule im "Deep Sleep" ist so hoch, dass die 4xAAA nicht lange halten würden. Dann bleibe ich lieber beim 8266 und wechsle die Batterien wenn sie ausfallen. 8 AAA-Primärzellen von Varta kosten keine 2 Euro.

    Der neue Sensor sieht ein bischen anders aus - vor allem bringt er noch eine kleine Platine mit Signalaufbereitung mit. Deshalb wird es im Gehäuse sehr eng:

    635432


    Das Foto täuscht - der Sensor ist nur gut daumenlang, und das Platinchen ist gut 2cm lang. Aber das Gehäuse ist schon ohne Zweitplatine voll - man kann das reinstauchen und hoffen, dass man beim Batteriewechsel nichts abrupft.

    Ein größeres Gehäuse ist geordert, Dann gibt es ein neues Foto vom Gesamtaufbau.

    Hier mal ein paar Bilder, wie die Daten im ioBroker ankommen und am Handy visualisiert werden können. Logik um den Hydrawisecontroller anzusteuern ist noch nicht erstellt. Es ist ja noch nicht mal Winter
    :)


    Handyansicht - da habe ich mir alles zusammengeschoben, was ich für den Rasen wichtig finde:

    635430


    (Feuchte Keller ist zugegebenermaßen etwas deplaziert, aber so schaue ich gelegentlich drauf
    ;)



    Historische Daten in der Adminkonsole:
    635431




    Die Rohdaten sind noch keine Feuchtigkeitsprozente! Der Wert um die 110 kommt zustande wenn der Sensor in gesättigter Erde steckt, die 34-36 ergeben sich wenn ich den Sensor säubere und in die Erde lege. Immerhin sind die Daten über Stunden sehr stabil ohne "Rauschen". Spannend wird, wie klar sich Zwischenwerte differenzieren, um dann einen guten Schwellwert für "Beregnung freigeben" zu finden.

    Der Code für den ESP8266 ist schon ziemlich fertig. Programme für den ESP8266 zur Messdatenerfassung funktionieren immer nach einem ähnlichen Schema:

    1.) Sensorstrom anschalten
    2.) kurz warten damit der Sensor sich stabilisieren kann
    3.) WLAN aktivieren
    4.) Verbindung zum Server aufbauen
    5.) Daten lesen
    6.) Daten an den Server schicken
    7.) Sensor für 30-60 Minuten schlafenlegen um Strom zu sparen
    und wieder von vorne



    Hier mal der Code für die Sensorseite (wer was zu verbessern findet, immer her damit - ich bin Neuling in der Mikrocontrollerprogrammierung). Zudem ist C die übliche Sprache auf dem Controller - kann ich so gut wie gar nicht.


    Code:
    #include <Wire.h>
    #include <ESP8266WiFi.h>
    #include <PubSubClient.h>
    
    // Update these with values suitable for your network.
    const char* ssid = "meinkleinesWlan";
    const char* password = "sagichnicht";
    const char* mqtt_server = "192.168.178.xx";
    
    // DS-Intervall ist die Pause die der ESP im Deep Sleep bleibt. Produktion: 60 Minuten
    const uint32_t DS_Intervall = 60*60*1000000;
    // oder für Debuggingzwecke (dann nur 3s pro Durchgang)
    //const uint32_t DS_Intervall = 3*1000000;
    
    WiFiClient espClient;
    PubSubClient client(espClient);
    
    void setup_wifi() {
    // Adressen statisch konfigurieren. Passend für "SENSOR02"
        IPAddress ip(192, 168, 178, 46);
        IPAddress gateway(192, 168, 178, 1);
        IPAddress subnet(255, 255, 255, 0);
        IPAddress dns(192, 168, 178, 1);
        WiFi.config(ip, dns, gateway, subnet);
      
      // We start by connecting to a WiFi network
        Serial.print("Connecting to ");
        Serial.println(ssid);
        WiFi.begin(ssid, password);
        while (WiFi.status() != WL_CONNECTED)
        {
          delay(500);
          Serial.print(".");
        }
      randomSeed(micros());
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
    }
    
    void setup()
    {
        //Seriellen Port auf 9600 bps
        Serial.begin(9600);
        Serial.println("Feuchtigkeitssensor");
        // Feuchtigkeitssensor anschalten
        pinMode (D7, OUTPUT); // D7 ist Stromversorgung für Sensor
        digitalWrite (D7, HIGH);
        delay(1000);
      
        //wlan starten
        setup_wifi();
        //mqtt Server ansprechen
        client.setServer(mqtt_server, 1883);
        Serial.print("Attempting [definition='2','0']MQTT[/definition] connection...");
        String clientId = "Sensor02";
        // Attempt to connect
        if (client.connect(clientId.c_str()))
        {
          Serial.println("connected");
        //once connected to [definition='2','0']MQTT[/definition] broker, subscribe command if any
        //      client.subscribe("OsoyooCommand");
        } else {
          Serial.print("failed, rc=");
          Serial.print(client.state());
          Serial.println(" try again in 30 minutes");
          ESP.deepSleep(DS_Intervall);
          delay(100);
          // remember: After deep sleep, the program terminates
        }
    
    // Temperatur abholen und seriell ausgeben 
        int humd = analogRead(A0);                  // Read Humidity
        Serial.print("Time:");
        Serial.print(millis());
        Serial.print(" Humidity:");
        Serial.print(humd, 1);
        Serial.println();
        String msg="";
        char MsgFeuch[25];
        char MsgTemp[25];
        char Msgvcc[25];
        msg=humd;
        msg.toCharArray(MsgFeuch,25);
        client.publish("Sensoren/Sensor02/Feuchtigkeit",MsgFeuch);
      
        Serial.println("300ms warten");
        delay(300);
        Serial.println("Jetzt Deep Sleep");
        ESP.deepSleep(DS_Intervall);
        delay(100);
    }
    void loop()
    {
    }


    Der Code für einen ESP8266 hat zwei Pflichtprozeduren: setup() und loop().

    setup() wird immer direkt nach dem Neustart aufgerufen. Bei Geräten die mit Batteriestrom immer nur kurz arbeiten wird hier die gesamte Arbeit erledigt, danach geht der Prozessor gleich wieder aus.

    Falls ihr euch wundert, dass ich hier für den Sensor eine feste IP-Adresse konfiguriere: Das soll beim Starten des WLAN ein paar Sekunden sparen. WLAN-Betrieb ist der größte Energiefresser bei dem Prozessor. Wenn man hier ein paar Sekunden sparen kann, halten die Batterien wieder ein paar Wochen länger. Mal in Zahlen: Der Prozessor geht einmal pro Stunde für ca. 5s an, davon sind ca. 3s WLAN-Betrieb. Wenn man den Sensor 2s länger laufen lässt, wären das 7s Laufzeit mit 5s WLAN. Das läppert sich.

    loop() ist eine Schleife die im Dauerbetrieb permanent abgearbeitet wird. Da steht Code drin bei Geräten, die dauernd an sind. Der Prozessor wird z.B. viel in billigen WLAN-Steckdosen, Funkklingeln usw. eingesetzt - da wird dann in dieser Schleife der ganze Steuer- und Regelbetrieb erledigt.

    Wer sich ähnliches bauen möchte - einen Fehler unbedingt vermeiden: Die Sensoren brauchen meist 3,3 oder 5V. Bitte NICHT die Plus-Leitung am 3,3V-Anschluss des ESP anschließen. Der bleibt unter Spannung auch wenn der Prozessor selbst schlafen geht. Und damit nuckelt der Sensor immer fleißig an der Batterie, egal wieviel Arbeit man sich mit dem Energiesparen am Prozessor macht. Stattdessen kommen diese Minisensoren an einen schaltbaren Anschluss des Controllers. Bei mir ist das "D7" geworden - wer genau hinsieht sieht, dass der in der Setuproutine auf HIGH geschaltet wird. Erst dann geht Versorgungsspannung an den Sensor. Den Fehler sieht man auf ganz vielen Bauanleitungen im Internet. Da wird immer nur gezeigt dass man es "überhaupt" hinbekommen hat.

    Also: Es geht weiter
    :-)
     
  • Similar threads
    Thread starter Titel Forum Antworten Datum
    T DIY: Professioneller Bodenfeuchtesensor Trübner SMT50 am Beregnungscomputer Bewässerung 2
    P DIY Laube sanieren - Baustelle 1: Boden Sanierung & Renovierung 7
    djnele Hydrostatische Schlauchbewässerung DIY Bewässerung 0
    I Gartenbewässerung diy planen und umsetzen Bewässerung 2
    Zero DIY Abdeckung Hochbeet, Material? Heimwerken 6
    Supernovae DIY und Upcycling Obst und Gemüsegarten 15
    automatic_grow Autonomes Gewächshaus DIY Low Budget Obst und Gemüsegarten 6
    G Mülltonnenverkleidung DIY Eigenbau Heimwerken 2
    Marcel Neues Projekt aus unserem Haus - Talu.de - DIY-Magazin Gartenfreunde 13
    G Bodenfeuchtesensor Bewässerung 4
    H Wasserverteiler mit Bewässerungssteuerung Master und Bodenfeuchtesensor Bewässerung 1
    Bandito76 Bodenfeuchtesensor gesucht Bewässerung 1
    M Gardena Regensensor und Bodenfeuchtesensor anschließen Bewässerung 1
    Irmchen1952 Gelöst Was sind das für Gewächse - Hasenglöckchen und Bergenie Wie heißt diese Pflanze? 2
    R Pumpe für Tropfbewässerung und Garten gießen Bewässerung 5
    H Pflanzerde für Beerensträucher Obst und Gemüsegarten 1
    schreberin Garten-Tipps für die sächsische Schweiz? Gartenfreunde 4
    coronella Geschickter Mixer für warme Mahlzeiten gesucht. Wie sind eure Erfahrungen? Essen Trinken 9
    Golden Lotus Herzhaftes für die Vorratskammer Selbstversorger 7
    R Unkraut- oder Drainagevlies für Rigole? Heimwerken 0
    P Hecken für Nützlinge Hecken 4
    Goldi 1 Marmorkies für die Bakterien im Teich Teich & Wasser 2
    D Tipp für Pflasterreinigung Haus & Heim 7
    N Grüngut für Hochbeet woher? Gartengestaltung 3
    P Dünger für Erdbeeren? Obst und Gemüsegarten 42

    Similar threads

    Oben Unten