Präzise und preiswert mit piezoelektrischen Drucksensoren

Wasserstand in Zisternen mit HomeAssistant, ESPHome und TL-136 Drucksensor messen

Wie erfasst man den Füllstand einer Zisterne oder eines Tanks mit wenig Aufwand und guter Genauigkeit? Ich habe eine Lösung mit ESPHome und einem TL-136 Drucksensor im Einsatz.

Regenwasser ist mittlerweile ein kostbares Gut. Im letzten Jahr haben wir eine 5.000 Liter Regenwasserzisterne von Rewatec bekommen. So etwas extra und nachträglich nur wegen des Regenwassers einbauen zu lassen, dürfte sich eher selten lohnen, da Aufwand und Kosten beträchtlich sind.

5.000 Liter Regenwasserzisterne von Rewatec

Beim Umbau unserer Terrasse stellten wir jedoch fest, dass die Ableitungen unserer Regenrinnen marode waren und der Bagger war ohnehin schon da, sodass die Zisterne mit geringem Aufwand umsetzbar war. In sie fließen nun die Niederschläge, die auf die 75 qm Südseite des Dachs fallen – sofern es überhaupt regnet …

Aus der Zisterne speisen wir unsere Gardena Sprinkler, die durch eine Renkforce Tauchpumpe (welche schon seit 5 Jahren ihren Dienst verrichtet) versorgt werden. Man will natürlich wissen, wie viel Wasser in der Zisterne ist, um danach die Bewässerung steuern zu können. Zudem benötigt die Tauchpumpe mindestens 8 cm Füllstand, damit sie nicht trocken läuft.

DIY-Lösungen meist unzuverlässig

Für die Wasserstandsmessung gibt es einige DIY-Ansätze, die aber oft eher schlecht als recht funktionieren. Ultraschallsensoren, die auf die Wasseroberfläche gerichtet sind, leiden nicht nur unter der feuchten Umgebung und fallen dann aus, sondern messen durch Reflexionen oft nicht korrekt. Gleiches gilt für optische TOF (Time of Flight) Sensoren. Kapazitive Fühler messen eher ungenau, da Verunreinigungen die Dielektrizitätskonstante des Wassers verändern. Ich habe damit auch experimentiert, bin aber schnell wieder davon abgekommen.

Tests mit kapazitiver Wasserstandsmessung

Kaskaden mit Reed-Relais und Widerständen und einem Schwimmer mit Magnet funktionieren gut und sind robust, lösen aber nur sehr grob auf. Für eine Zisterne, die ein Maximallevel von 1,05 Metern erreichen kann, ist das eher unbefriedigend.

Schwimmer mit Umlenkrollen und Seil an einem Potenziometer sind zu abenteuerlich.

Sehr genau sind hingegen Drucksensoren. Kleine Drucksensoren, wie sie in Blutdruckmessgeräten eingebaut sind, wären für die Anwendung ausreichend und sind recht preiswert. Allerdings berücksichtigt man damit nicht den veränderlichen Luftdruck, der auf die Wassersäule wirkt und man erhält keine genauen Messwerte, zudem verstopft der Schlauch zum Sensor gerne.

TL-136 Drucksensor als Lösung

Nicht ganz so preiswert, dafür aber robust und genau, sind piezoelektrische Drucksensoren, den TL-136 Flüssigkeitsstand-Messumformer. Diese haben in der Zuleitung auch ein kleines Rohr, das den Außendruck in die Messung in die Messung einfließen lässt. Diese Sensoren sind für verschiedene Füllhöhen für ungefähr 50 Euro erhältlich. Dafür erhält man ein massives Edelstahlgehäuse samt recht einfacher Ansteuerung. Der Sensor wird einfach auf den Grund der Zisterne oder des Tanks gelegt. Ich habe das 0-1 Meter Modell gewählt, da bei meiner Zisterne der Überlauf bereits bei 105 cm ist. Auch für die beliebten IBC-Container dürfte das 0-1 Meter Modell geeignet sein, lässt man diese ja nicht bis auf den letzten Zentimeter volllaufen.

TL-136 Sensor

Der Sensor wird mit 24 Volt versorgt und wandelt den Druck im Bereich 0-20 mA um. Daher muss man den Strom messen, um daraus Füllhöhe und später die Füllmenge zu berechnen. Es gibt günstige kleine Module, mit Transkonduktanzwandler, also der Umwandlung eines Stroms in eine Spannung. Man kann aber auch einfach einen Widerstand nehmen, an dem die abgefallene Spannung abgreift.

Mit einem 150 Ohm Widerstand kann man den Bereich bis 100 cm so abgreifen, dass daraus eine Spannung mit maximal 3,2 Volt wird – ideal für den ADC eines ESP8266 oder ESP32. Mit einem 27 kOhm Widerstand in Reihe zum Analogeingang des ESP, hat man einen zusätzlichen Schutz, da dieser maximal 3,3 Volt verträgt. Ich nutze noch immer sehr gerne die praktischen und preiswerten WeMos D1 Mini.

Schaltplan mit einem ESP8266 WeMos D1 Mini

Für die 24 Volt des Sensors muss man auch nicht ein zusätzliches Netzteil bemühen. Ein Stepup-Konverter tut es hier auch und kann die 24 V aus dem 5 Volt Pin des ESP erzeugen. Den Step-Up-Konverter stellt man VOR dem Einbau auf die erforderlichen 24 V Ausgangsspannung ein.

Testaufbau mit einem wassergefüllten HT-Rohr und Multimeter

Um herauszufinden, welche Spannung bei welchem Füllstand ausgegeben wird, habe ich ein 100 mm HT-Rohr mit einem Stopfen verstehen, mit Wasser befüllt, den Sensor unterschiedlich tief eingetaucht und die Spannung gemessen. Der hydrostatische Druck ist in einem solchen Rohr in gleicher Tiefe ebenso groß, wie in einer 5.000 Liter Zisterne.

Eintauchtiefe und Messwerte ermitteln

Der ESPHome Code für die Wasserstandsmessung

Der Code für den ESPHome Sensor ist ziemlich selbsterklärend. Es wird der A0 Pin, also der Analog-Digital-Wandler ausgelesen. Beim ESP8266 wird hier übrigens nicht 0 – 3,3 Volt ausgegeben, sondern 0 – 1 V. Darum habe ich einen Filter mit – multiply: 3.3 eingebaut. Die id: levelraw ermöglicht, dass ich später auf den Füllstand in Zentimetern noch einmal in einer anderen Funktion zugreifen kann.

esphome:
  name: waterking
  platform: ESP8266
  board: d1_mini
  

# Enable logging
logger:
  baud_rate: 0
  
# Enable Home Assistant API
api:

ota:
  password: !secret ota password
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Waterking Fallback Hotspot"
    password: !secret fallback password

captive_portal:
  
  
sensor:
  - platform: adc
    pin: A0
    name: "Wasserstandcm"
    id: levelraw
    update_interval: 2s
    filters:
      - multiply: 3.3
      - sliding_window_moving_average:
          window_size: 30
          send_every: 30
      - calibrate_linear:
            - 0.61 -> 0.0
            - 0.76 -> 0.075
            - 0.8 -> 0.09
            - 0.81 -> 0.1
            - 0.8411 -> 0.12
            - 0.99 -> 0.172
            - 1.04 -> 0.22
            - 1.2 -> 0.25
            - 1.8 -> 0.5
            - 2.4 -> 0.75
            - 2.66 -> 0.9
            - 2.983 -> 1.0
            - 3.2 -> 1.19
      - multiply: 100
    accuracy_decimals: 1
    unit_of_measurement: cm
    icon: "mdi:car-coolant-level"
            
  - platform: adc
    pin: A0
    name: "Zisterne Volt"
    update_interval: 5s
    filters:
      - multiply: 3.3
      - median:
          window_size: 7
          send_every: 4
          send_first_at: 3
  
  - platform: template
    name: "Zisterne Liter"
    lambda: |-
      return id(levelraw).state;
    
    filters:
      - calibrate_linear:
          - 4 -> 80
          - 10 -> 200
          - 12.5 -> 300
          - 15 -> 400
          - 17.5 -> 500
          - 20 -> 600
          - 25 -> 850
          - 27.5 -> 1000
          - 40 -> 1700
          - 45 -> 2000
          - 60 -> 3000
          - 70 -> 3600
          - 80 -> 4000
          - 85 -> 4400
          - 90 -> 4700
          - 95 -> 4900
          - 100 -> 5100
    unit_of_measurement: l
    accuracy_decimals: 0

  - platform: template
    name: "Idraw"
    lambda: |-
      return id(levelraw).state; 
Code-Sprache: YAML (yaml)

Der Median glättet die Werte, da das Signal etwas rauscht. Warum habe ich noch nicht herausgefunden. Die Spannungsversorung des Step-Up-Wandlers ist stabil. Allerdings bewegt sich das Rauschen im Bereich von 0,5 cm Füllhöhe, was vernachlässigbar ist. Die Genauigkeit des Sensors selbst ist mit 0,2 – 0,5 % FS angegeben. Bei einer Füllhöhe von 0 – 1 Meter sind die 0,5 cm Rauschen genau 0,5 % …

[Update] Ein 1 uF Kondensator zwischen Masse und A0 schafft etwas Abhillfe gegen das Rauschen und ist im Schaltplan berücksichtigt.

[Update 2] Der A/D-Wandler des ESP8266 ist nicht für solche Messungen geeignet und arbeitet auch nicht linear. Das sagen auch die Datenblätter von Espressif. Darum habe ich jetzt einen ADS1115 AD-Wandler im Einsatz und damit ist das Rauschen weg. Allerdings muss ich die Werte neu erfassen und die Zisterne ist gerade voll. Ein Update dazu kommt demnächst.

Der calibrate_linear Filter wandelt die Spannung in die tatsächliche Füllhöhe um, denn der Sensor arbeitet nicht völlig linear. Ich habe die ersten Werte mit meinem Testaufbau ermittelt und korrigiere nun nach und nach mit den Werten aus der Zisterne. Der – multiply: 100 Filter sorgt dafür, dass die Ausgabe in Zentimetern erfolgt.

Der nachbelichtet-Newsletter

Alle Beiträge und exklusive Infos kostenlos per Mail erhalten - wie über 10.000 andere treue Leser!

Kein Spam - versprochen! Und du kannst dich jederzeit wieder abmelden!
Wasserstandsensor Home Assistant
Die Schaltung auf Perfboard in einer Verteilerdose

Ich frage den ADC dann ein weiteres Mal ab, um eine Ausgabe in Volt zu erhalten, mit der ich nach und nach den Linear-Filter mit den echten Füllständen korrigieren kann.

Die zweite Funktion startet mit – platform: template

Hier hole ich mir mit return id(levelraw).state; den Wert in Zentimetern, um ihn dann mit einem weiteren – calibrate_linear Filter auf den Füllstand in Litern umzurechnen.

Füllhöhe mit Füllstandskurve in Volumen umrechnen

Meine Rewatec-Zisterne hat ja eine recht komplexe Form, sodass die Füllstände in Litern über die Füllhöhe nicht linear sind. Rewatec schickte mir auf Anfrage eine Füllstandskurve. Damit lässt sich der Füllstand in Abhängigkeit der Füllhöhe umrechnen. Wie zuvor erwähnt: Bei 5.000 Litern ist es egal, ob da 20 Liter mehr oder weniger angezeigt werden. Der Rest ist nur eine Hilfsfunktion, die man weglassen kann.

Füllstandskurve der Zisterne

Momentan ist es auch bei uns sehr trocken, sodass sich der Wasserstand in der Zisterne auf einem sehr niedrigen Level von 10 – 25 Zentimetern und damit 150 – 1000 Litern bewegt.

Füllstandsverlauf über 10 Tage mit Bewässerung und wenig Niederschlag

Man sieht jedoch wunderbar Zu- und Abflüsse und kann damit auch feststellen, wie viel Liter etwa 5 Minuten Rasenbewässerung sind. In unserem Fall kommen wir auf etwa 150 Liter pro Bewässerung. Ebenso erkennt man Regenfälle und damit den recht schnellen Anstieg des Levels ausgezeichnet.

Füllstand Zisterne Home Assistant
Füllstandsanstieg bei Regen

Da wir auch noch zwei eingelassene und verbundene Regentonnen mit jeweils 1.500 Litern haben, werde ich hier demnächst auch noch einen Sensor einbauen.

Die zwei eingelassenen Regentonnen werden auch noch mit einem TL-136 versehen

Insgesamt ist die Lösung mit den TL-136 Flüssigkeitsstand-Messumformer eine einfache und hinreichend genaue Lösung für die Messung von Füllständen. Die Sensoren sind robust und einfach anzusteuern. Mit den Linear-Filtern der ESPHome-Plattform lassen sie sich einfach korrigieren, sodass eine Genauigkeit im Bereich von 1 % möglich ist. Für die Anwendung in Regenwassertonnen und Zisternen ist das mehr als ausreichend.

Füllstandsanzeige in Home Assistant

Mit den gewonnenen Werten kann man die Bewässerungsdauer dynamisch steuern, also etwa die Bewässerungszeit verkürzen, wenn nur noch wenig Wasser in der Zisterne ist.


Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Für dich verändert sich der Preis nicht und du unterstützt damit meine Arbeit. Preisänderungen und Irrtümer vorbehalten.

52 Kommentare

  1. P.S: Hab mir das Datenblatt vom ADS1115 angeschaut, der hat als Eingangswiderstand ein paar Megaohm. Bei 27 kiloOhm Vorwiderstand liegen dann bei kurzgeschlossenem Sensor fast die gesamten 24V am Eingang -> nicht gut. Im Datenblatt steht als max. Eingangsspannung für die Analogeingänge VDD+0.3V, also reichen 1N4148 doch nicht – es müssen schon Schottkydioden (z.B. 1N5819) sein.

  2. Schöne Beschreibung!

    Was mir so aufgefallen ist:

    Wenn die Leitungen vom Fühler kurzgeschlossen werden (shit happens), liegen 24V am Knotenpunkt an. Das wird den Eingang A0 bzw. ADS1115 vermutlich killen, am Eingang liegt dann eine viel zu hohe Spannung an (Spannungsteiler von 27kOhm und einem ziemlich hohen Eingangswiderstand am ADC). Als Abhilfe einfach Clamping Dioden einfügen, eine in Sperrrichtung von 3,3V zum A0 und eine vom A0 nach Masse – dann ist der Eingang geschützt. Irgendeine Standarddiode 1N4148 (oder sowas) tut es da.

    Der Schaltplan zeigt einen Buck-Converter, das ist die falsche Wandelrichtung 🙂 Text und Amazon Link nennen aber korrekterweise einen Step-up „Boost“ Converter.

    Die 4-20 mA Stromschleife ist recht robust gegen Störungen, das wird genauso in Industrieanlagen verwenden – und da gibt es noch ganz andere Störungen als im Garten. Einige 10 Meter Leitungen sollten eigentlich kein Problem sein. Kommt auf nen Versuch an …

    • Vielen Dank für deinen Input! Tatsächlich habe ich in der neuen Schaltung die Eingänge mit Schottky-Dioden (BAT54, weil praktisch) geklemmt und das wird auch im Update drin sein.
      Beim Boost-Konverter hast du natürlich recht – ich hatte nur nicht das passende Symbol zur Hand 🙂

  3. Servus Markus,

    danke für die Idee, die Umsetzung und die gute Beschreibung. Das werde ich nachbauen. Bin über das Thema hier im Blog gelandet und hab beim umsehen direkt die ein oder andere Parallele bemerkt (Neben der gleichen Zisterne noch der gleiche Regierungsbezirk und große Ähnlichkeiten beim Auto *lach*).

    Zum Thema: Hast du zusätzlich zur Füllstandsmessung auch schon mal über eine Temperaturmessung nachgedacht? Ist ja insgesamt kein großes Problem, aber würde mich natürlich interessieren ob du da evtl. schon den ein oder anderen Gedanken verschwendet hast. Ich schaue mich gerade um und frage mich was sich dafür wohl gut eignen würde. Ein DS18B20 scheint mir da nicht verkehrt zu sein. Vielleicht hast du ja Gedanken dazu.

    Ansonsten werde ich das ganze nicht in HomeAssistant integrieren, aber ESPHome kann ja nicht nur das und ich wollte sowieso schon lange mal was damit machen.

    Also danke nochmal für die Inspiration und die gute Beschreibung!

    • Ja, ich hatte mal einen 18D20 darin herumhängen, aber das bringt keinen wirklichen Mehrwert oder Erkenntnisgewinn.

      Knapp 5000 l Wasser reagieren sehr träge und mit laaaaanger Phasenverschiebung auf Temperaturänderungen. Eines kann ich sagen: Das Wasser gefriert noch nicht einmal an der Oberfläche, schlieslich ist der Boden der Zisterne 150 cm tief im Erdreich und die Wasseroberfläche noch immer gut 60 cm unter dem Deckel.

      • Danke für deine Einschätzung. Recht hast du vermutlich, irgendwie reizt es mich trotzdem die Temperatur noch mit zu erfassen. Mal sehen, ich werd mir jetzt erstmal die Füllstandsmessung basteln.

  4. Chapeau zu dieser Arbeit! Voraussichtlich im April, wenn ich Urlaub habe, werde ich mich mal daran versuchen. Eine Frage stellt sich mir aber noch:
    Du bist von den US-Sensoren weg, weil Du infolge Temperatur (und anderer Gründe) Messungenauigkeiten festgestellt hast. Wie schätzt Du den Einfluss des Luftdrucks ein? Der müsste doch auch für unterschiedliche Messergebnisse bei gleichem Wasserstand sorgen?

    Beste Grüße aus dem Saarland

    • Also ich habe dieses Prinzip nun auch seit 1 Woche in einem IBC-Tank am Laufen (fast voll bei 970 L) und auch erst diese Annahme gehabt ob dort was passiert. Der Luftdruck ist in der Zeit um 30 hPa gestiegen und etwas gefallen und ich konnte keinen unterschied feststellen.

  5. Hallo,

    Gerne würde diesen Aufbau für mein Grundwasserbrunnen „klonen“.

    Kannst du dazu bitte deinen aktuellen Code des ESP Home Boards mit dem ADS155 teilen?
    Darüber währe ich sehr dankbar. (Copy paste würde mir schon ausreichen ) ?

    Kannst du bitte auch deinen persönlichen Schaltplan des ADS115
    und dem Board mit uns teilen?

    Ich möchte gerne eine solche Messstation mit einem ADS115 nachbauen.

    Vielen lieben Dank im Vorfeld
    Grüße

      • Hallo!

        Ein sehr schönes Projekt!
        Nach genau einer solchen „Messanlage“ für Homeassistant habe ich schon lange gesucht. Bin aber bis jetzt in diversen Foren noch nicht fündig geworden.

        Dieses hier hier scheint genau das richtige für mich zu sein.

        Es freut mich zu hören, dass es hier scheinbar bald eine detailliertere Anleitung bzw. Beschreibung des Schaltplans geben wird.

        Dann kann ich ebenfalls den Füllstand meiner RegenwasserZisterne überwachen.
        Freundliche Grüße

  6. Hallo Markus,
    ich suche jemanden der mir auf meinen Raspi4 Home assistant oder Io Broker aufsetzt. Dann einen shelly uni einbindet und eine Füllstand visu aufsetzt. Die Hardware habe ich fertig und in ein Gehäuse mit Netzteil gebaut. Ich kann das leider nicht selbst programmieren, Hardware kann ich aber keine Software, daher möchte ich die Leistung gerne gegen Honorar machen lassen. Wer Zeit und Lust hat bitte melden. LG Frank frankprivat (at) web.de

  7. Hallo Markus,
    mein Kompliment für Deine Arbeit.
    Scheinbar ist das eine der besten Lösungen um den Wasserstand in der Zisterne zu messen. Ich suche schon länger nach dieser Möglichkeit.
    Nun mein Problem, bzw. meine Frage.
    Ich kenne mich mit Elektrotechnik nicht aus. D.h. die „Bastelarbeit“ werde ich wohl eher nicht hin bekommen. Gibt es so etwas auch „fertig“ und integrierbar in Home Assistant?
    Vielleicht kannst Du mir da ja helfen.
    Liebe Grüße Sven

  8. Hallo.
    Cooles Projekt, bin grad am nachbauen 🙂
    Hardware ist funktional und den Code habe ich 1:1 von dir übernommen.
    Die Werte der beiden adc-sensoren werden auch geloggt, soweit also perfekt.

    ABER: es wird nur ein Sensor im Homeassitant als Entität erkannt…

    Hab auch die Reihenfolge der Sensoren im Code mal umgedreht, es wir immer nur der ertse adc-sensor erkannt… der zweite adc-sensor wird im Homeassistant nicht als Entität angezeigt…

    Kennst du die Problematik? Gibt es da vielleicht eine Lösung?
    Muss ja irgendwie an dem Homeassitant liegen, da die Werte ja ordentlich geloggt werden…
    ESP-Home und HA habe ich auch bereits mehrfach neu gestartet… ohne Erfolg.

    Schöne Grüße
    Peter

      • Hallo, Danke für die schnelle antwort!

        Habe Namen und IDs jetzt geändert, ohne Erfolg.

        Aber glaube, dass wir da auf der richtigen Spur sind…
        Hier mal ein log aus dem HA:
        ———–
        Logger: homeassistant.components.sensor
        Source: helpers/entity_platform.py:540
        Integration: Sensor (documentation, issues)
        First occurred: 14:02:21 (2 occurrences)
        Last logged: 14:02:41

        Platform esphome does not generate unique IDs. ID 40915152d9ca-adc already exists – ignoring sensor.wasserstandcm
        ———-
        Muss auch dazu sagen, dass ich das „Gerät“, also den wemos, bereits mehrfach im esphome entfernt und neu hinzugefügt habe… vermute, dass es dabei irgendwelche Probleme mit bereits vorhandenen Namen/IDs gibt…

        Aber was muss ich da jetzt tun? … 🙂 Vielleicht hat jemand eine Idee?

        • Die Grundlagen lernen 😉
          Er sagt dir ja, dass es die ID schon gibt (40915152d9ca-adc already exists). Darum kann er die nicht nochmal erstellen, weshalb die Entitäten nicht auftauchen. Du musst jedem Sensor im Code eine eigene ID geben. Also etwa so (ich kenne deinen Code nicht):

          
          ads1115:
            - address: 0x48
          sensor:
            - platform: ads1115
              multiplexer: 'A0_GND'
              gain: 6.144
              name: "ADS1115 Channel A0-GND"
              id: leveladc0
          
            - platform: ads1115
              multiplexer: 'A1_GND'
              gain: 6.144
              name: "ADS1115 Channel A1-GND"
              id: leveladc1
          Code-Sprache: JavaScript (javascript)
      • Hallo, ja… bin am lernen 🙂
        Aber so einfach scheint es nicht zu sein… hie rmal der Code (im prinzip die Kopie von deinem Code – mit den empfeohlenen neuen Namen und neuen IDs)
        Die IDs und Namen sind geändert und auch nicht identisch…

        sensor:
        – platform: adc
        pin: A0
        name: „Test2“
        id: levelraw2
        update_interval: 1s
        filters:
        – multiply: 3.3
        – sliding_window_moving_average:
        window_size: 30
        send_every: 30
        – calibrate_linear:
        – 0.61 -> 0.0
        – 0.76 -> 0.075
        – 0.8 -> 0.09
        – 0.81 -> 0.1
        – 0.8411 -> 0.12
        – 0.99 -> 0.172
        – 1.04 -> 0.22
        – 1.2 -> 0.25
        – 1.8 -> 0.5
        – 2.4 -> 0.75
        – 2.66 -> 0.9
        – 2.983 -> 1.0
        – 3.2 -> 1.19
        – multiply: 100
        accuracy_decimals: 1
        unit_of_measurement: V
        icon: „mdi:car-coolant-level“

        – platform: adc
        pin: A0
        name: „Test1“
        id: levelraw3
        update_interval: 1s
        filters:
        – multiply: 3.3
        – median:
        window_size: 7
        send_every: 4
        send_first_at: 3
        accuracy_decimals: 1
        unit_of_measurement: V
        icon: „mdi:car-coolant-level“

        • Hallo,
          Doch, das ist der Plan.
          Einmal um die Spannung auszulesen und einmal um die Kalibrierung in cm vorzunehmen…
          So hattest du das doch in dem Artikel beschrieben. Oder hab ich das falsch verstanden? Oder ist das vielleicht das Problem?
          Müsste bei dir doch so auch funktionieren mit 2x A0… ?

  9. Hallo nachbelichtet!

    Wie schon viele andere auch angemerkt haben, finde ich dein Projekt wirklich super.
    Ich suche schon lange nach einer Möglichkeit ein 4-20mA Füllstandssensor
    (per ESP Home) in Homeassistant einzubinden!

    Gerne würde diesen Aufbau für mein Grundwasserbrunnen „klonen“.

    Kannst du dazu bitte deine ESP Home Config deines Aufbaus mit dem ADS155 teilen?
    Darüber währe ich sehr dankbar. (Copy paste würde mir schon ausreichen ) 🙂

    Könntes du bitte auch deinen persönlichen Schaltplan des ADS115 mit uns teilen?
    Hier bin ich mir noch nicht ganz sicher wie der Sensor mit dem ADS115
    und einem ESPHome Microboard verschalet werden „müssen“.

    Hierüber würde ich mich wirklich freuen.
    Grüße aus München

    Vielen Dank

  10. Sehr interessant!
    Habe mich auch schon länger damit auseinandergesetzt und mit ToF- oder Ultraschall-Sensoren daran versucht – nicht so berauschend. 😉
    Ich nutze RFM69 – Boards mit 433 MHz. Für Wifi ist die Entfernung zur Tonne zu weit, die Verbindung zu instabil. Die RFM69 Boards laufen auf 3.3V. Sollte aber keinen Unterschied machen.
    Irritiert haben mich die Kommentare zur Stromvariante/Spannungsvariante des Sensors. A/D-Wandler messen nach meinem Verständnis Spannungspegel – was soll die „Stromvariante“ bedeuten?

    • Wie du schon richtig schreibst, messen A/D Wandler Spannungen. Das Prinzip des Sensors ist eine Stromschleife. Das habe ich in meinen Ausführungen nicht angegeben: https://www.prelectronics.com/de/die-grundlagen-von-4-20-ma-stromschleifen/
      Damit ist es auch nahezu egal, wie lange die Zuleitung zum Sensor ist, da der Spannungsabfall und Einstreuungen automatisch kompensiert werden.
      Letztlich muss der Strom wieder in eine Spannung umgewandelt werden, die man mit dem AD-Wandler messen kann, was durch den Spannungsabfall am Messwiderstand erfolgt.

      • Danke für die Erläuterung!
        Der Spannungsteiler am A0-Port bringt die 24V Betriebspannung des Sensors auf messbare Werte zwischen 0 und 0.1325 V herunter.Der Stromfluß wird im gleichen Verhältnis zw. Masse und A0 aufgeteilt. Mir ist nicht klar, wo da „Strom-Spannungsumwandlung“ stattfindet. Ist der Spannungsteiler der „Messwiderstand“?

        Danke und Gruß Peter

      • Hallo,
        erstmal Danke für die tolle Anleitung. 🙂
        Wenn ich es richtig verstanden habe (bin kein E-Techniker), dann könnte ich die Zuleitung zum Sensor verlängern, sind so 20 m. Würde die Leitung gerne ins Haus einführen (durch Leerrohr mit Saugschlauch) und dort dann mit dem ADS1115 per I2C direkt an den RasPi anschließen. Die Module die ich gefunden habe haben aber keinen 5V-Ausgang, d.h. ich benötige eine zus. 24V-Quelle und einen enspr. Spannungsteiler der den AIN0 dann auf VDD+0,3V bringt, korrekt. Zus. muss ich dann in meinem Fall noch die Schleifenstärke berechnen um den Spannungsteiler zu dimensionieren, oder?
        Es ist noch nicht so ganz klar …
        Vorab schon vielen Dank!
        Viele Grüße
        Markus

  11. Hallo,
    das ist ja ein tolles Projekt!
    Wäre es auch möglich eine Füllstandsanzeige für einen etwas größeren Gartenteich mittels dieser Sonde und deinem Konzept zu realisieren. Ich nutze iobroker und habe schon einige ESP32…. hier rumfunken.

    • Grundsätzlich kann man das auch für den Bodensee einsetzen 😉 – okay – die maximale Eintauchtiefe des Sensors begrenzt das natürlich. Es gibt unterschiedliche Versionen von 1 bis max. 5 Meter Tiefe (was ein Gartenteich wohl eher selten erreicht).

      Du musst nur eine Messreihe machen, mit der Du verschiedene Wasserstande mit einem Zollstock misst und die gemessene Spannung zuordnest.
      Was der Sensor aber über längere Zeit in sehr schlammigen Wasser macht, ist eine andere Frage. Er ist eher für rel. Saubere Flüssigkeiten ausgelegt.

  12. Hajo, ich habe mir auch 2 Sensoren bei Amazon gekauft.Beim Suchen eines Anschussbildes bin ich auf diesen Beitrag gestoßen.
    Dabei sind mir einiges aufgefallen,war so nicht stimmt.
    Hier wird eigentlich nur gebastelt.
    Das erklärt auch, warum Ihr mit Strom nichts anfangen könnt. Dabei ist genau das die industrielle Übertragung schlechthin, weil: es geht nicht um0-20mA Sonden um4-20mA.
    Der ist also proportional zu 4-20mA.
    Die restlichen 4 mA braucht der Sensor, damit er arbeiten kann.
    Fließt kein Strom, ist er unterbrochen.
    Die angeschlossene Spannungsquelle muss in der Spannung überhaupt nicht stabilisiert sein, der Sensor stellt sich automatisch auf seien Strom ein.
    Und jetzt ganz wichtig, gerade weil der Strom so gering ist,sind sehe große Entfernungen möglich, da sich der Strom immer wieder neu einstellt.

  13. Hajo, ich habe mir auch 2 Sensoren bei Amazon gekauft.Beim Suchen eines Anschussbildes bin ich auf diesen Beitrag gestoßen.
    Dabei sind mir einiges aufgefallen,war so nicht stimmt.
    Hier wird eigentlich nur gebastelt.
    Das erklärt auch, warum Ihr mit Strom nichts anfangen könnt. Dabei ist gau das die industrielle Übertragung schlechthin, weil: es geht nicht um0-20mA Sonden um4-20mA.
    Der ist also proportional zu 4-20mA.
    Die restlichen 4 mA braucht der Sensor, damit er arbeiten kann.
    Fließt kein Strom, ist er unterbrochen.
    Die angeschlossene Spannungsquelle muss in der Spannung überhaupt nicht stabilisiert sein, der Sensor stellt sich automatisch auf seien Strom ein.
    Und jetzt ganz wichtig, gerade weil der Strom so gering ist,sind sehe große Entfernungen möglich, dasich der Strom immer wieder neu einstellt.

    • Hallo Engelbrechtgmbh
      Vielleicht könntest du uns ein wenig erhellen, wie wir den Strom direkt einlesen können. Ich habe schon eine Weile gegoogelt, habe aber keine bessere Lösung gefunden, wie ich 4-20mA einlesen und im Home Assistant virtualisieren kann.
      Ein Lob an den Macher dieser Seite, dass er uns an seinem Wissen teilhaben lässt. Danke
      Gruß Thomas

  14. Hallo Nachbelichtet
    Genial dein Projekt. Genau was ich suchte. Ich möchte den Heizölstand messen. Mit den TOF-Gebastellösungen wurde ich nicht glücklich. Ich habs mit Ultraschall, Laser und Infrarot probiert. Die Abstrahlkegel haben aber irgendwann immer Probleme verursacht oder es gab sonst irgendwie Probleme. Jetzt möchte ich es hydrostatisch versuchen.
    Wenn du mal Zeit und Lust hast das Schaltbild auf den ADS1115 anzupassen, wäre ich sehr dankbar. Ich verstehe aber auch, dass die Lust nicht mehr so gross ist, wenn man alles zum laufen gekriegt hat und das noch nachdokumentieren soll 😉

  15. Super Duper!
    Besten Dank fürs Aufschreiben und Updaten, sehr hilfreich!

    Bevor ich aber meinen Lötkolben aufheize, habe ich da noch ein paar Fragen. Evtl. finden sich ja auch ein paar Antworten.

    – Hat jeder TL-136 Sensor auch den Schlauch bzgl. „Differenzdruck zum Umgebungs-Luftdruck“? Auf den Amazon-Seiten zeigen die Bilder immer nur zwei Adern.
    – Hat jemand das original 5m Kabel um weitere 20 Meter verlängert? Wollte die komplette Elektronik in den Keller bauen und habe dafür ein 20m Erdkabel zwischen Zisterne und Haus.

    • Der Schlauch ist in der Isolierung integriert (in der Mitte verläuft eine kleine Kapillare). Darum muss das Ende der Leitung auch offen bleiben.

      20 m Verlängern wird nichts, da hier nur wenige Milliampere im Spiel sind und diese auf so langen Leitungen erhebliche Messfehler verursachen dürften. Irgendeine Elektronik wirst du direkt an der Leitung des Sensors benötigen.

      Möglichkeiten wären z. B. ein Arduino mit einem RS485 Wandler. Dann kann man aber auch gleich den ESP direkt dort installieren. So einen wasserdichten Verteiler nehmen und gut isses: https://amzn.to/3Y89yLK

      • Besten Dank für die schnelle Antwort!

        Habe bei aliexpr. gesehen, dass es auch fertige Sensoren mit RS485-Anschluss gibt (Suche: rs485 water sensor).

        Nun hab ich für beide Verbindungsarten mal die max. Leitungslänge „gegooglet“.
        – Bei RS485 liegt diese bei 500-1200m -> reicht 😉
        – Aber auch bei der Stromvariante gibt es diverse Aussagen, dass 100 Meter „drin sein sollten“. Dafür wurde der „Industrie-Standard“ auch entwickelt.

        hmmm…im Moment tendiere ich zur Stromvariante, da ich hierzu mehrere Anschluss-/Verarbeitungs-Beispiele für ESP/Raspi gefunden habe (u.a. ja auch deins). RS485 ist leider nicht so verbreitet.
        Klar, Risiko ist höher das es nicht funtzt. Evtl. muss ich dann erneut Geld raushauen und einen RS485-Sensor kaufen.

        Mal schaun, erstmal muss es wieder wärmer werden.

        Schöne Feiertage

  16. Hallo, bin neu und versuche das ganze nach zu bauen.
    Nur wo muss ich den ESP Code eingeben. Steh ein wenig auf den Schlauch.

    Brauche leider genauere Anweisungen.

    Vielen dank

  17. Vielen Dank für den Super Beitrag hier. Ich möchte das Projekt auch angehen hätte allerdings noch ein paar Fragen:

    1) Der Sensor arbeitet ja mit Druck der Wassersäule sprich er sollte am Grund der Zisterne befestigt werden.
    Doch was wenn sich am Grund nach 5 Jahren Schlamm dreck, Steine etc absetzen? Denkt ihr nicht dass dadurch das Messergebnis verfälscht wird (wenn kleine Steine drauf liegen?
    Oder habt ihr den Sensor nicht ganz am Grund befestigt?

    2) Wisst ihr wie lange das Kabel ist bei dem: TL-136 Drucksensor? Habe dazu nichts auf amazon gefunden. Oder ist das bei dem Sensor gar nicht mit dabei? Möchte nähmlich die Technik im Haus neben meiner Saugpumpe aufbauen von dort sind es ca. 7m zum Boden der Zisterne. Daher meine Frage reicht da das Spannungssignal oder brauch ich nochmal was dazwischen zur Verstärkung etc.? Wie habt ihr das gemacht – Wo ist eure Steuerung?

    3) Ich habe in der Vergangenheit oft den pi zero wh verwendet (u.a. aufgrund geringen stromverbrauchs) und möchte diesen hier einsetzen. Meint ihr das geht auch oder seht ihr hier größere Schwierigkeiten?

    Grüße und vielen Dank,
    Markus

    • Hallo Markus 🙂

      Noch ist unsere Zisterne ziemlich sauber. Steinchen etc. würden da nichts ausmachen, da der Wasserdruck deutlich überwiegt. Auch im flüssigen Schlamm wäre der Druck gleich (den Dichteunterschied kann man hier getrost vernachlässigen).

      Das Kabel ist 5 Meter lang und nicht nur ein Kabel! Darin befindet sich ein Röhrchen, das für den Differenzdruck zum Umgebungs-Luftdruck da ist. Das Leitungsende darf auch nicht verschlossen oder verstopft werden. So lange das aber über Wasser ist, kann man die eigentlichen Leitungen auch noch etwas verlängern. Hier sollte man aber auch nicht übertreiben, da ja nur mit geringen Strömen (< 20 mA) gearbeitet wird. Meine Steuerung ist in der Ventilbox für die Gartenbewässerung und diese befindet sich unmittelbar neben dem Zisternenschacht. Der Pi Zero sollte kein Problem darstellen. Die A/D-Wandler des Pi Zero sind ja auch deutlich besser als die des ESP. Die erzeugen bei mir das Rauschen auf dem Signal. Ich habe jetzt einen externen A/D-Wandler (ADS1115) im Testeinsatz und damit ist das Signal glatt. Außerdem teste ich noch den Transkonduktanzverstärker https://amzn.to/3sbT6LI

      Wenn du es nicht so ganz eilig hast, gibt es demnächst noch ein paar neue Erkenntnisse dazu zu lesen. Momentan ist aber ein andere Projekt wichtiger und die Saison ist ja auch vorbei – im Winter ist die Zisterne immer voll 😉

  18. Hi,

    erstmal vielen Dank für das Teilen deines Projektes. Hatte den Sensor auf Amazon gefunden und dachte mir schau ich mal ob den schon jemand in Home Assistant integriert hat. Gesucht gefunden.
    Alle Teile bestellt und die Tage das Ganze nachgebaut und seit heute im Einsatz. Ich bin gespannt wie es sich bewährt.
    Ich hatte vorher eine Variante mit Ultraschallsensoren am Arduino im Einsatz die sind aber schnell korrodiert und waren für den Einsatz nicht zu gebrauchen.

    Viele Grüße
    Sharlynsland

    • Das Rauschen bei den Messwerten kommt übrigens vom ESP8266 selbst. Die ADCs haben fürchterliche Eigenschaften und sind für Messungen nicht wirklich geeignet. Wenn du gleich bessere Messwerte möchtest, kannst du einen ADS1115 einsetzen https://amzn.to/3Bq0PLA
      Damit ist das Rauschen weg und es wird millimetergenau.

      Alternativ kann man auch einen Arduino Mini etc. als Schnittstellenerweiterung nehmen, denn selbst dessen ADC ist besser als der der ESPs, allerdings löst er nur mit 10 Bit und damit 1024 Stufen auf.

      Dazu gibt es bald auch ein Beitragsupdate.

  19. Hallo.
    Nachdem ich mit den gleichen Herausforderungen und Enttäuschungen zu kämpfen hatte, bin ich am Ende auf die gleiche Lösung (allerdings mit ESPEasy am Wemos) wie du gelangt. Ich kann nur bestätigen, dass der Drucksensor nicht nur genauer arbeitet, sondern auch viel langlebiger ist, als alles andere das ich davor probiert habe (so wie du).
    Mein Drucksensor liefert jetzt schon seit April letzten Jahres zuverlässig seine Daten. Und: sie stimmen auch ;-). Bei den vorherigen Versuchen war das nicht immer so sicher.
    Ich verwende die Messung für den Wasserstand in meinem Brunnen. Der Brunnen ist 4 Meter tief und ich habe den Drucksensor für 5 Meter in Verwendung. Eingelernt habe ich die Werte auf 2 Meter in einem Rohr, und bis auf kleine Abweichungen stimmt das Ergebnis auch, wenn der Brunnen annähernd voll ist.
    Fazit: Perfekte Lösung, kann ich nur empfehlen. Auch wenn der Drucksensor einmal mehr kostet, gleicht das die Zufriedenheit mit dem Projekt absolut aus 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert