Für das Projekt Pflanzensensoren müssen vorab folgende Schritte ausgeführt werden.

Zusätzlich wird folgendes benötigt:

 

Bilder der benötigten Bauteile VERSION 1

 

Bilder der benötigten Bauteile VERSION 2

 

Ja es gibt eine 2. Version! Nach ca. 1-2 Wochen hat mein Sensor kaum noch korrekte Werte geliefert. Meine Frau hat fleißig die Blumen gegossen (und meinte, dass sie im Leben noch nie so oft die Blumen hintereinander gegossen hat) und trotzdem meinte FHEM, dass immer noch Wasser fehlt. 

 

Ja, nach 2 Wochen hat mein Sensor tatsächlich so ausgesehen.

 

Im Internet habe ich zwar gelesen, dass es damit wohl Probleme gibt. Aber dass diese nach 2 Wochen schon auftreten hat mich dann doch sehr verwundert. 

 

Der Sensor hat sich auf beiden Seiten aufgelöst. Es musste also ein Lösung her. 

 

Aus diesem Grund gibt es jetzt die Version 2.

 

Beide Versionen sind, was die elektronische und die ESPEasy Konfiguration angeht, identisch.

 

Dank eines Hinweises aus dem FHEM Forum habe ich den Schaltplan und die ESP Easy Konfiguration komplett überarbeitet. Somit sollte das Zerstören des Sensors nicht so schnell auftauchen. Laut Forumsbenutzer müsste der Sensor dann einige Jahre sauber funktionieren.

 

Für den Pflanzensensor habe ich ein eigenes Gehäuse entworfen. Auf den Einbau der NodeMCU habe ich ganz bewusst verzichtet. Damit halte ich mir die Möglichkeit offen, an den NodeMCU noch weitere Sensoren anzuschließen.

Schaltplan

 

 

  • VERSION 1: Sensorelektronik in das Gehäuse einbauen und verbinden

 

  • Beide Sensormodule in die Box legen
  • Beide Sensormodule mit zwei kleinen Drahtbrücken(1) verlöten
  • Vor dem Löten solltet Ihr die Stiftkontakte etwas anschleifen, damit das Lötzinn besser haftet.
  • Die Stiftreihe(2) habe ich direkt am Knick mit einem Seitenschneider abgetrennt.
  • Danach kann man den schwarze Plastikschutz der Stiftreihe nach oben schieben und entfernen.
  • Auch hier habe ich die Stiftkontakte angeschliffen, damit das Lötzinn besser haftet.
  • Jetzt noch die Anschlusskabel anlöten.
  • VERSION 2: Sensorelektronik in das Gehäuse einbauen und verbinden

 

  • Sensormodule(1) in die Box legen
  • Das Sensormodule mit den zwei Drahtstiften(2) verlöten
  • Vor dem Löten sollte Ihr die Drahtstiften etwas anschleifen, damit das Lötzinn besser haftet.
  • Jetzt noch die Anschlusskabel anlöten.

ESPEasy - Konfiguration

Wie immer basiert diese erweitere Konfiguration auf der bereits vorab getätigten Firmware Installation mit anschließender Grundkonfiguration.

 

Damit der Sensor nicht dauerhaft mit Strom versorgt wird müssen drei Devices definiert werden. Folgende Devices werden benötigt:

  • Sensor_Power (Steuert die Stromversorgung des Sensors)
  • Sensor_Pflanze (Liefert den Wert der Bodenfeuchte des Sensors)
  • Sensor_Dummy (Übermittelt den Wert an FHEM)

 

  • Registerkarte "Device" auswählen
  • Über "Edit" ein neues Device hinzufügen

Sensor Power (Steuert die Stromversorgung des Sensors)

 

Zuerst legen wir ein "Schalter" Gerät an. Folgende Konfiguration muss hier gemacht werden:

  1. Device = Switch input
  2. Name = Kann frei vergeben werden
  3. Enabled = Haken setzten, damit der Schalter auch aktiv ist
  4. Beide Kaben setzen (Standard)
  5. 1st GPIO = Hier GPIO-14(D5) einstellen (siehe auch Schaltplan)
  6. Switch Type= Switch
  7. Switch Button Type = Push Button Active Low
  8. Send to Controller = Hier darf der Haken NICHT gesetzt sein. Der Schalterstatus wird am FHEM Server nicht benötigt
  9. Speicher der Konfiguration mit "Submit"
  10. Beende der Konfiguration mit "Close"

Sensor_Pflanze (Liefert den Wert der Bodenfeuchte des Sensors)

 

Folgende Konfiguration wurde von mir gemacht

  1. Device = Analog input
  2. Name = Sensor_Pflanze (Bitte nicht ändern, wird später noch benötigt)
  3. Enabled = Haken setzten, damit der Pulse Counter auch aktiv ist
  4. Send to Controller = Hier darf der Haken NICHT gesetzt sein. Der Schalterstatus wird am FHEM Server nicht benötigt
  5. Delay = 1 Sekunden. Hier wird definiert das der Wert einmal pro Sekunde aktualisiert wird
  6. Alle Werte auf 0 setzen, da der Sensor nur ganze Zahlen liefert.
  7. Speicher der Konfiguration mit "Submit"
  8. Beende der Konfiguration mit "Close"

Sensor_Dummy (Übermittelt den Wert an FHEM)

Folgende Konfiguration wurde von mir gemacht

  1. Device = Dummy Device
  2. Name = Pflanze_001 (Bitte nicht ändern, wird später noch benötigt)
  3. Enabled = Haken setzten, damit das Dummy Device auch aktiv ist
  4. Send to Controller = Hier muss der Haken gesetzt sein, damit auch die ermittelten Werte an FHEM gesendet wird
  5. Delay = 60 Sekunden. Hier wird definiert dass nur alle 60 Sekunden die Werte an den Controller gesendet werden.
  6. Name = Analog
  7. Wert auf 0 setzen, da der Sensor nur ganze Zahlen liefert.
  8. Name = IsInTime
  9. Wert auf 0 setzen, da hier nur ganze Zahlen verwendet werden
  10. Speicher der Konfiguration mit "Submit"
  11. Beende der Konfiguration mit "Close"

Rules erstellen

Zum Abschluss müssen noch div. Rules angelegt werden, hierzu die Registerkarte "Rules" auswählen. Wenn die Registerkarte nicht vorhanden ist, könnt Ihr hier schauen wie diese aktiviert wird.

 

  1. In den Bereich (1) das Skript (siehe unten) kopieren
  2. Im Bereich (2) kann der Intervall definiert werden, welchen den Sensor aktiviert. Wenn der Intervall zu kurz gesetzt wurde, kann es sein das sich Euer Sensor in recht kurzer Zeit auflöst. (siehe Bild oben) . 
  3. Im Bereich (3) wird der Startzeitpunkt für den Zeitraum in welchem der Sensor aktiv sein kann definiert.
  4. Im Bereich (4) wird der Endzeitpunkt für den Zeitraum in welchem der Sensor aktiv sein kann definiert.
  5. Zum Schluss noch speichern

 

In diesem Beispiel ist der Sensor nur zwischen 07:00 Uhr und 20:00 Uhr aktiv. Er prüft dann alle 3600 Sekunden für ca. 2 sek. den Wert der Bodenfeuchte.

 

Das Skript ist in 4 Bereiche unterteilt

  1. "System#Boot" Versorgt den Sensor nach dem Reboot des NodeMCUs mit Spannung und aktiviert den "Rules#Timer=1" in 10 sek. und den "Rules#Timer=3" in 10 sek.
  2. "Rules#Timer=1" Versorgt den Sensor mit Spannung und aktiviert den "Rules#Timer=2" in 2 sek. Wenn der Timer außerhalb des definierten Zeitraumes befindet wird der "Rules#Timer=1" in 60 sek. wieder aktiviert.
  3. "Rules#Timer=2" Schreibt den aktuellen Wert des Sensors in das Dummy Device. Danach wird der Sensor wieder deaktiviert. Zum Abschluss wird der "Rules#Timer=1" in 3600 sek. wieder reaktiviert.
  4. "Rules#Timer=3" Hier wird der Zeitraum definiert in welchem der Sensor arbeitet. In diesem Beispiel ist der Sensor nur zwischen 07:00 Uhr und 20:00 Uhr aktiv.
  5. "startsensor" Hier kann der Sensor von außen für 2 sek. aktiviert werden.
    1. Die Aktivierung ist über eine URL "http://IPAdresse/control?cmd=event,startsensor" möglich
    2. Oder über FHEM mit "set <name> event startsensor"

 

On System#Boot do
  gpio,14,1
  timerSet,1,10
  timerSet,3,10
endon

On Rules#Timer=1 do
  if [Pflanze_001#IsInTime] = 2
    gpio,14,1
    timerSet,2,2  
  else
    timerSet,1,60
  Endif
endon

On Rules#Timer=2 do
   TaskValueSet 3,1,[Sensor_Pflanze#Analog]
   gpio,14,0
   timerSet,1,3600
endon

On Rules#Timer=3 do
  If %systime% > 07:00:00
    TaskValueSet 3,2,1
  else
    TaskValueSet 3,2,0
  Endif

  If %systime% < 20:00:00
      TaskValueSet 3,2,[Pflanze_001#IsInTime]+1
  Endif

  timerSet,3,10
endon

On startsensor do 
  gpio,14,1
  timerSet,2,2  
endon

 

Nach der kompletten Konfiguration solltet Ihr noch mal einen Reboot durchführen.

 

Wenn der Sensor sauber arbeitet, sollte er in der Übersicht seinen aktuellen Wert anzeigen.

Version 1: Folgende Werte zeigt mein Sensor an:

  • ca. 330 - 400 - Pflanze steht komplett unter Wasser
  • ca. 450 - 700 - Pflanze hat genügend Wasser
  • ca. 720 - 800 - Pflanze sollte gegossen werden
  • ca. > 850 - Pflanze hat kein Wasser mehr

Version 2: Folgende Werte zeigt mein Sensor an:

  • ca. 180 - 250 - Pflanze steht komplett unter Wasser
  • ca. 300 - 500 - Pflanze hat genügend Wasser
  • ca. 600 - 650 - Pflanze sollte gegossen werden
  • ca. > 680 - Pflanze hat kein Wasser mehr

In der Regel können diese Werte so übernommen werden.

 

Jetzt kann der neue Sensor in FHEM angepasst werden. Sobald das Device zum ersten mal Daten an den Controller sendet, erscheint das Device in dem FHEM Raum "ESPEasy"

Folgende Attribute wurden von mir noch angepasst

 

  • Attribut Icon
  • Attribut room
  • Attribut alias
  • Attribut group

 

Hier das fertige Ergebnis.

FHEM readingsGroup

 

Zum Anzeigen des aktuellen Status habe ich mir noch zusätzliche FHEM Icons und eine "readingsGroup" erstellt.

 

Version 1

Version 2


 

Wer möchte kann sich hier die FHEM Icons herunterladen. Die Icons müsst ihr dann in das Verzeichnis "../fhem/www.images/fhemSVG" kopieren. Danach einfach euren FHEM Server neu starten, und schon könnt Ihr die neuen Icons nutzen.

Download
moisture_0.svg
Scalable Vector Bild 2.5 KB
Download
moisture_25.svg
Scalable Vector Bild 2.5 KB
Download
moisture_50.svg
Scalable Vector Bild 2.3 KB
Download
moisture_75.svg
Scalable Vector Bild 2.2 KB
Download
moisture_100.svg
Scalable Vector Bild 1.9 KB

 

Wer möchte kann jetzt noch ein SVG Plot erzeugen

Kommentar schreiben

Kommentare: 6
  • #1

    Rico (Freitag, 04 Mai 2018 16:30)

    Einfach nur schön wie das beschrieben wurde. ESP und fhem die beste kombi 4ever.

  • #2

    Christof (Donnerstag, 16 August 2018 08:41)

    Super Beitrag! Hat mir sehr geholfen. Vielen Dank.
    Mich würde noch interessieren, ob Du den Sensor an einer Battery betreibst und wenn ja, wie Du das mit dem Sleep Mode umgesetzt hast.

  • #3

    zebbl (Montag, 29 April 2019 13:33)

    Super Beschreibung... Ich hab das ganze grad mit einem Wemos Mini D1 in Betrieb genommen. Die Frage wäre nun noch, ob es auch machbar wäre mehrere Feuchtigkeitssensoren an einem D1 zu betreiben?

  • #4

    Toni (Dienstag, 18 Juni 2019 11:45)

    Danke für die tolle Anleitung, werde ich direkt mal umsetzen. Ich habe allerdings keinen FHEM Server - wäre die Abfrage auch über MQTT realisierbar? Bin da jetzt nicht so der Fachmann, aber was muss außer den MQTT Einstellungen noch verändert werden?
    LG Toni

  • #5

    Harald (Freitag, 19 Juli 2019 10:08)

    Auch von mir besten Dank. Ich habe etwas ganz ähnliches realisiert, allerdings zusätzlich zum Analogeingang meines WeMos Mini D1 nutze ich ein ADS1115 mit I2C-Bus und habe damit alles in allem 5 Feuchtesensoren. Meine Anzeige habe ich zudem auf Werte zwischen 0 (trocken) und 10 (im Wasser) kalibriert. Weiter habe ich die lange Leitung nicht zwischen WeMos und Sensoreinheit sondern zwischen Sensor und Messfühler angelegt. Ich hatte einen "Trockenversuch" mit 100 m Kabel und daraus keinen Einfluss wahrnehmen können. Im Realbetrieb sind es aber max. ca. 10 m Kabel.
    Leider habe ich aber bei keinem der 5 Sensoren eine wirklich zuverlässige Angabe. Die Änderung der Spannung ist anscheinend von wesentlich mehr Faktoren abhängig als nur von der Feuchtigkeit. Da überlege ich mir noch eine Verbesserung. Vielleicht bringt ja Deine Version 2 da eine bessere Empfindlichkeit? Ich habe mir auch schon überlegt, die Spitzen in einen durchlässigen Schaumstoff zu packen, dass der direkte Kontakt zur Erde nicht ist.
    Zu den Rules: Ich habe das bei mir so realisiert, dass alle drei Stunden für eine Minute im 10-Sekunden-Takt gemessen wird und FHEM dann daraus den Median entnimmt. Einzelwerte hatten eine zu große Streuung und zudem habe ich den Eindruck, dass die Spannung doch eine gewisse Zeit anliegen muss, bis sich ein einigermaßen stabiler Wert einstellt. Vielleicht war das aber auch ein Irrweg. Auf jeden Fall ist mein System noch nicht so weit, dass ich ihm die alleinige Kontrolle über meine Blumentopfbewässerung überlassen will.
    Sleepmodus: Ist ganz einfach über die Rules zu realisieren. Im Anschluss an eine Messung wird Sleep aufgerufen für 1 Stunde (die Zeit muss man schätzen, die interne Uhr ist da nicht so genau). Ist dann die volle Stunde nicht gleich einem der festgelegten Werte, geht der WeMos gleich wieder schlafen. Es muss der WeMos mit Verbindung von Pin16 zu Ground selbstverständlich vorbereitet sein.

  • #6

    Reimund (Mittwoch, 13 November 2019 12:48)

    Kann man auch ein Relais ansteuern. Wenn trocken dann Relais gewisse Zeit anschalten