Präzise und preiswert mit piezoelektrischen Drucksensoren

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

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 7 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.

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!

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.

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.

Angebot
YWBL-WH TL – 136 Flüssigkeitsstandsender Wasser Ölstandsensor Detektor 24VDC 420mA Signalausgang(0-2m), Sender
  • Mehrschichtiger wasserdichter Schutz IP68, 45-Grad-Schrägwinkel-Anti-Schock, abnehmbarer Anti-Blocking-Schutz.
  • Eingangspegelgeber, hochpräzise Diffusion von Silizium, genauere Überwachung des Wasserstandes.
  • Das gemessene Medium ist Wasser, Öl und andere Flüssigkeiten, die Edelstahl nicht angreifen.
D1 ESP8266 Mini Board,3 Stücke Wemos d-1 Mini Node-Mcu Lua WiFi Basiert ESP8266 Wireless Entwicklungsboard Mini D1
  • 🔷 WIFI Entwicklungsboard: D1 ESP8266 Mini Board on-board 5V 1A Schaltnetzteil, 4M Bytes.
  • 🔷 Vorteile:4 MBit Flash-Speicher und eine integrierte Chipkarte für ESP8266,die mit Arduino kompatibel ist; 500mA rücksetzbare Sicherung.
  • 🔷 ESP8266-Chip: Das Modul enthält den ESP8266-Chip. Das Beste am ESP8266 ist, dass er über Wi-Fi-Kommunikation verfügt, was bedeutet.
LAOMAO 5X Step-up Boost Power Converter XL6009 für Arduino Raspberry DIY-Projects basteln
  • Es handelt sich hierbei um ein Step-UP, Spannungsregler Aufwärtswandler oder Boost-Converter.
  • Die Ausgangsspannung ist nach dem Umwandlung immer größer als die Eingangsspannung.
  • Die Platine wandelt Spannungen von 3V-32V, einstellbar an dem Potentiometer in 5V – 35V Volt um.
Best Price Square Module, Water Tank Level Indicator M167N by KEMO Electronic
  • MODULE, WATER TANK LEVEL INDICATOR M167N By KEMO ELECTRONIC
  • Manufacturer Part Number: M167N
  • Manufacturer Name: KEMO ELECTRONIC
Strom-Spannungs-Wandlermodul Eujgoov 0/4-20mA Signalumwandlungsplatine 0-3,3V/5V/10V Spannungssender
  • BREITER AUSGANGSVOLATFE-BEREICH – Der Strom-Spannungs-Wandler hat einen weiten Versorgungsspannungsbereich und die Ausgangsspannung unterstützt mehrere Bereiche
  • EINSTELLBAR – Der Strom-Spannungs-Wandler verwendet eine ausgeklügelte Produktionstechnologie, der 0-Punkt und der Vollbereich können selbst eingestellt werden
  • KUNSTSTOFFMATERIAL – Das Konvertermodul besteht aus hochwertigem Kunststoff und hat eine hohe Stabilität, gute Linearität und Industriequalität
Kompatibel mit ADS 1115 ADC Modul 16bit 4 Kanäle, Analog-Digital-Wandler,ADC-Modul,Kompatibel mit Arduino, Raspberry Pi usw.
  • Dieser Analog-Digital-Wandler hat eine Auflösung von 16-bit und I2C-Interface zur komfortablen Ansteuerung.
  • Das Modul eignet sich für alle gängigen Mikrocontroller mit 2.0V – 5.5V, eine Verwendung mit Raspberry ist problemlos möglich.
  • Die Sample Rate des Moduls ist bis 860/s programmierbar.

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.

Update 2023 – zuverlässiger und genauer messen

Wie letztes Jahr angekündigt, habe ich den Wasserstandsensor optimiert. Das Problem beim ursprünglichen Projekt war der schlechte ADC des ESP8266, der sehr stark rauscht. Zudem war die Schaltung mit dem einfachen Messwiderstand nicht besonders sicher, was auch hier in den Kommentaren richtigerweise angemerkt wurde. Wegen der Wintersaison und anderen Projekten, hat es mit dem Update etwas länger gedauert, als geplant.

Wie bereits beschrieben, habe ich nun einen ADS1115 4-fach ADC im Einsatz. Man benötigt nur einen der 4 Kanäle des ADS1115, hat also noch 3 ADC für andere Aufgaben übrig.

Nach einigen Tests habe ich mich auch für den günstigen Stromwandler / Messwertumformer entschieden. Dieses kleine Modul hat nicht nur den Vorteil, dass der Eingang des ADS1115 nie mehr als 3,3 Volt sieht. Dazu entfernt man alle Jumper auf dem Modul. Außerdem kann man den Nullpunkt (Sensor nicht eingetaucht) und die maximale Ausgangsspannung einstellen. So lässt sich der Messbereich maximieren, auch wenn man etwa bei einem 0-1 Meter Sensor nur bis maximal 70 cm messen muss. Ich habe die Klemmen ausgelötet, damit ich das Modul auf meine Streifenrasterplatine löten kann.

Vereinfachter Schaltplan der neuen Version mit ADS1115 (zum Vergrößern anklicken!)

Nach einem Hinweis in den Kommentaren musste ich mein Wissen über 4-20 mA Stromschleifen wieder auffrischen (das ist dann doch schon knapp 30 Jahre her und ich hatte das nicht mehr parat): Diese Stromschleifen sind sehr robust gegen Störungen und können 100 m und mehr lang sein. So kann man den TL136 Sensor bis ins Haus verlängern, wo die zugehörige Elektronik im Warmen und Trockenen montiert ist

Die Beschaltung ist denkbar einfach. Der ADS1115 wird per I2C-Bus an den Wemos angebunden, der Ausgang des Messwertumformers kommt an einen Eingang (bei mir ADC0) des ADS1115.

TL136 Wasserstandssensor
Erste Tests und Messreihe mit der neuen Elektronik

Mit dem im Schaltplan „Zero“ bezeichneten Trimmer, stellt man die Ausgangsspannung des Moduls (grünes Kabel im Plan) auf nahe 0 Volt ein, wenn der Sensor nicht eingetaucht ist. Nun taucht man den TL136-Sensor bis zur maximalen Tiefe bei maximalem Füllstand ein und stellt mit dem „Span“ Trimmer die Spannung am Ausgang (grünes Kabel im Plan) auf knapp 3,3 Volt ein. Damit hat man den möglichen Messbereich optimal ausgenutzt und erhält somit die maximale Auflösung.

Ich habe wieder eine Messreihe mit 10 cm Schritten gemacht und die entsprechenden Spannungen notiert. Daraus wird, wie vorher auch, erst die Füllhöhe in Zentimetern errechnet und von dieser wieder die Füllmenge nach dem vorliegenden Fülldiagramm des Herstellers.

Dank des Messwertumformers und des ADS1115 wird man mit einer sehr präzisen (wenngleich für die Anwendung schon übertriebenen Genauigkeit) und rauschfreien Messung belohnt. Das Restrauschen beträgt maximal 0,1 % und entspricht damit der Toleranz des TL136 Sensors.

Hier ein Vergleich der alten Methode mit der neuen, was wohl für sich spricht:

Stark hineingezoomt sieht man, dass die Abweichung nun nur noch +- 1mm beträgt:

Die übrigen ADC-Kanäle des ADS1115 kann man z. B. für einfache Bodenfeuchtesensoren etc. nutzen.

Da ohnehin noch GPIOs am Wemos frei waren, habe ich auch noch einen Eingang für 1-Wire-Sensoren vorgesehen. Mit den günstigen DS18B20 Temperatursensoren kann man z. B. die Bodentemperatur, Termperatur im Gerätehaus oder die Wassertemperatur der Zisterne erfassen. Mehrere dieser 1-Wire-Sensoren lassen sich parallel an einem Eingang betreiben.

Stückliste:

Der neue Code mit ADS1115 und 1-Wire (die 1-Wire-Beschaltung ist aber im Schaltplan nicht enthalten – das schafft ihr selbst, wenn ihr es benötigt 😉 !) sieht bei mir so aus:

esphome:
  name: zisterne
  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
  use_address: zisterne.local


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

captive_portal:

# i2c Bus auf D1 und D2 konfigurieren
i2c:
  id: bus_a
  sda: D2
  scl: D1
  scan: True

# 1-Wire-Sensoren am Pin D4
dallas:
  - pin: D4

# ADC einrichten, ADDR-Pin ist auf VCC gelegt, daher Adresse 0x49
ads1115:
  - address: 0x49
    id: ads1115_49

# ADC Kanal A0 zur Messwerterfassung 
sensor:
  - platform: ads1115
    multiplexer: 'A0_GND'
    gain: 4.096
    name: "Wasserstand Zisterne cm"
    id: levelraw
    update_interval: 2s
    unit_of_measurement: cm
    accuracy_decimals: 1
    icon: "mdi:car-coolant-level"
# Messwerte glätten:
    filters:
      - sliding_window_moving_average:
          window_size: 20
          send_every: 20
# Spannungen nach Messreihe in Füllhöhe umrechnen          
      - calibrate_linear:
          - 0.0 -> 0.0
          - 0.3 -> 10
          - 0.69 -> 20
          - 1.0 -> 30
          - 1.35 -> 40
          - 1.75 -> 50
          - 2.03 -> 60
          - 2.42 -> 70
          - 2.7 -> 80
          - 3.1 -> 90

# Füllmenge nach Füllstandskurve berechnen

  - 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.5 -> 4980

    unit_of_measurement: l
    accuracy_decimals: 0

# 1-Wire Temperatursensor 

  - platform: dallas
    address: 0xef0516905a21ff28
    name: "Zisterne Sens1"
    unit_of_measurement: °C
    accuracy_decimals: 1
 



Code-Sprache: YAML (yaml)

Wer will, kann über den I2C-Bus oder die Wemos SPI-Bus Pins D5, D6 und D7 auch noch ein Display zur Anzeige des Wasserstands, der Temperatur etc. anbinden. Hier bieten sich ein LC-Display vom Typ 1602/HD44780 oder ein MAX7219 7-Segment-Display an. Letzteres habe ich auch in meiner Bewässerungssteuerung „Waterking“ im Einsatz, die auch bereits den Wasserstand der Zisterne anzeigt.

Letzte Aktualisierung am 28.03.2024 / Affiliate Links / Bilder von der Amazon Product Advertising API

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!


Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.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.

134 Kommentare

  1. Vielen Dank für die Top-Anleitung, letztes Jahr funktionierte auch alles einwandfrei. Allerdings wird nach der Winterpause der Sensor nicht mehr erkannt bei mir….

    [E][ads1115:076]: Communication with ADS1115 failed

    Der ds1820 tempsensor funktioniert noch und liefert Werte.

    Wie finde ich am einfachsten und schnellsten den Fehler?
    Eigentlich möchte ich nur ungern wieder alles zerlegen und nochmal mit dem Lötkolben ran, aber hilft wahrscheinlich nicht oder :-(?

    VG

    • Naheliegend wäre, einen neuen ADS1115 zu testen. Zuvor mal die Verbindungen zum ADS durchmessen und sehen, ob er seine 3,3 Volt bekommt. Wenn man ein Oszilloskop hat, kann man sich mal ansehen, ob sich auf den Bus-Leitungen was tut.

  2. Die Anleitung ist super, habe die Messung seit letzten Sommer in Betrieb.
    Den Wasserstand kann ich auf den cm genau auslesen. Was leider nicht funktioniert ist die Umrechnung in Liter. Ich bin ratlos, warum die Umrechnung nicht klappt. Vlt habt ihr eine Idee

    Zisterne ist voll.
    Spannung beträgt ca. 1,4104.
    Dies wird umgerechnet und ergibt korrekerweise 155cm
    Der Wert in id(levelraw)) ist ebenfalls 155
    Laut hinterlegter Füllstandsberechnung müssten nun 4100 berechnet werden, es sind aber 3900

    # Spannungen nach Messreihe in Füllhöhe umrechnen
    – calibrate_linear:
    datapoints:
    – 0.00 -> 0.0
    – 0.02 -> 1
    – 0.06 -> 5
    – 0.15 -> 15
    – 0.24 -> 25
    – 0.33 -> 35
    – 0.43 -> 45
    – 0.51 -> 55
    – 0.61 -> 65
    – 0.7 -> 75
    – 0.79 -> 85
    – 0.87 -> 95
    – 0.96 -> 105
    – 1.06 -> 115
    – 1.14 -> 125
    – 1.23 -> 135
    – 1.33 -> 145
    – 1.40 -> 155

    # Wert aus ID leveraw ausgeben
    – platform: template
    name: „Wemos6 Idraw“
    lambda: |-
    return id(levelraw).state;

    # Füllmenge nach Füllstandskurve berechnen
    – platform: template
    name: „Wemos6 Zisterne Liter“
    lambda: |-
    return id(levelraw).state;
    filters:
    – calibrate_linear:
    datapoints:
    – 0 -> 0
    – 1 -> 10
    – 5 -> 45
    – 10 -> 80
    – 20 -> 200
    – 40 -> 650
    – 60 -> 1200
    – 65 -> 1350
    – 80 -> 2000
    – 90 -> 2250
    – 100 -> 2680
    – 120 -> 3300
    – 140 -> 3900
    – 155 -> 4100
    – 160 -> 4270
    – 180 -> 4400
    – 200 -> 4500

  3. Also I found a nice product that combines the cable gland with a pressure-equalization valve which may be of interest since it links in nicely with these sensors. I have some and they are of excellent quality, in fact better than the standard glands from my local store (I only question the yellow plastic under UV long-term, I should ask them about that).

    https://www.aliexpress.com/item/1005005730174801.html (M16 with 5-10mm bore)

    • Hallo Nachbelichtet, oder wie auch immer du heißt 😉
      Vor etwa einem jahr habe ich mich von einem wohlgemerkt sehr gut dokumentierten Projekt inspierieren lassen – vielen Dank dafür gleich mal vorab.
      Dazu kann ich nun folgendes Update für mich persönlich da lassen: der 27k Widerstand zum „Schutz“ des ESP bzw. ADS1115 kam mir schon etwas suspekt vor bzw. habe ich ihn angesichts der Bauteilkosten für nicht notwendig befunden. Inzwischen bin ich als Einsteiger in die Materie auch um einiges schlauer, denn die beschriebenen Störungen haben mir genauso zu schaffen gemacht. Kann es sein, dass du eventuell die Schaltung ein wenig falsch verstanden hast? Der Kondensator ist nämlich ein Teil eines RC Filters, der eventuelle hochfrequente Einstreuungen in das Mess-Signal blockieren soll, allerdings ist er falsch positioniert.
      Richtig wäre folgendes:
      https://ibb.co/fMtrX40

      die Werte für deinen 1µF Kondesator und den 27k Widerstand sind willkührlich und müssen ausprbiert werden. Die Grenzfrequenz, die mit dem Filter gesperrt wird, kann mit zB diesem Tool berechnet werden:
      https://elektrotechnik-rechner.at/rechner/grenzfrequenz-rc-glied
      Ich kann zwar noch keine endgültige Empfehlung geben – die Werte sind wahrscheinlich auch individuell unterschiedlich, allerdings kann die Grenzfrequenz bei einem Gleistromsignal sicherlich sehr niedrig angesetzt werden. Wichtig ist dabei zu beachten, dass der Widerstand in diesem RC-Filter bei zu hoher Auslegung auch dämpfend auf das Gleichspannungs-Mess-Signal wirkt. Mehr als angenommen 50k sollten es wahrscheinlich nicht sein. Natürlich kann danach das gedämpte Signal genauso kalibriert werden..
      Ich habe übrigens einen TL231 Sensor verwendet – das Rauschen ist genauso vorhanden.
      https://www.amazon.de/gp/product/B07D3R3NWR/

      Gerne kannst du mich zum Austausch persönlich per Mail kontaktieren

      • Vielen Dank für deinen Input. Allerdings weiß ich schon, was ein Hoch-/Tief-/Bandpass verschiedener Güte ist und wie man ihn berechnet (ich komme aus der Nachrichten- und Elektrotechnik). Ich hatte damals einfach mit einer Widerstandskaskade und einigen Kapazitäten getestet, ob sich das Signal etwas beruhigen lässt (im Sinne eine Gleichrichtung). Das Problem ist aber (wie im Text beschrieben) nicht der Sensor, sonder der unglaublich schlechte ADC des ESP8266. Daher die Variante mit dem externen ADC, mit dem auch die alte Beschaltung komplett entfällt.

  4. Thanks for your work and documentation on this, I agree these sensors are the best thing ever for consistent results. I used your work and moved to an RS-485 modbus middle-ground although I didn’t end up using the full capability (distance) yet. The availability of 4-20mA -> modbus industrial devices for $5 impressed me. They work too, and appear to have all the isolation and abuse tolerance you’d expect.

    https://community.home-assistant.io/t/esphome-water-level-sensor/126504/475 is my writeup.

    • Das ist eine Hobby-Bastelei, daher wird es keine Komplettgeräte geben. Die Zertifizierung (ISO, CE, EMV) für so etwas würde tausende Euro kosten. Gar nicht zu sprechen von Gewährleistung, Produkthaftung, Altgeräterücknahme etc. Vielleicht gibt es dieses Jahr eine Platine – nagelt mich aber nicht darauf fest.

  5. Danke für die Erklärung und das tolle Projekt! Nachdem der Einbau der Zisterne im letzten Sommer Fokus hatte, genau das richtige Projekt für das 2. Jahr 🙂

    Nun habe ich die 4rain Mono mit 5.000l, der Ablauf liegt auf 1,865m. Dementsprechend benötige ich also einen TL-146 mit 2m Länge. Die Saugleitung liegt in einem ca. 4m langen Rohr, sodass mein TL-146 2m Messlänge bei 6m Kabellänge benötigt. Bei Aliexpress finde ich da nur 5m Messlänge bei 7m Kabel oder 2m Messlänge bei 10m Kabel (aber 15€ teurer). Die 5m auf 7m sollten doch aber auch problemlos passen, oder?

    Ist der TL-146 so schwer, dass dieser problemlos in der Zisterne stehen bleibt und nicht durch Bewegung des Wassers umkippt?

    Du hast die Spannung über ein 1m HT Rohr gemessen, geht das für alle 5.000l Tanks, sodass ich in meinem Fall ein 2m HT Rohr nehme?

    • Der Sensor liegt bei mir auf dem Boden der Zisterne – der muss nicht stehen. Den Füllstand kann man auch im Laufe der Zeit direkt in der Zisterne ermitteln. Einfach mit einem Holzstab (Latte, Besenstiel etc.), den Wasserstand messen. Man muss das nicht nicht außerhalb mit dem HT-Rohr machen, wenn man etwas mehr Zeit hat. Einfach ein paar unterschiedliche Füllhöhen und Spannungen ermitteln, dann ist das ausreichend genau.

      So lange das Ende des Sensorkabels mit dem Röhrchen im Trockenen liegt, kann man das eigentliche Kabel einfach verlängern. Die Kapilare am Ende muss nur offen bleiben.

      • Super, danke für die Hilfe.

        Leider kann/möchte der Hersteller meiner Garantia/4rain MONO Zisterne mir keine Füllstandskurve anbieten – Allerdings seine eigene Füllstandsanzeige im Zubehör für ca. 160€. Die Zeichnungen der Zisterne sind jetzt leider auch nicht so detailiert. Gibts vielleicht noch Ideen wie/woher ich Füllstandsdaten bekommen kann?

        • Du könntest natürlich die leere Zisterne einmalig mit Leitungswasser befüllen und dabei den Wasserzähler und den Füllstand regelmäßig ablesen.

  6. Hallo,
    erstmal Danke für das tolle Projekt! – TOP !
    Ich habe es zum Anlass genommen damit meinen Heizöltank im Keller überwachen, nachdem meine Lösung mit einem Ultraschallsensor defekt war.
    Soweit läuft auch alles, aber ich habe immer wieder Messfehler von 4-9 cm.
    Ich hatte zuerst ein zu schwaches Netzteil 5V/1A im Verdacht und habe es gegen eines mit 5V/2.4A ausgetauscht.

    Die Messwerte sind geglättet und werden alle 5 min abgefragt
    update_interval: 300s
    sliding_window_moving_average:
    window_size: 20
    send_every: 20

    Ich habe mal ein Bild vom Messdiagramm auf Dropbox gelegt:
    https://www.dropbox.com/scl/fi/til8nz6ypi59vg2cdz2xi/diagramm.jpg?rlkey=vddpt9xkn2wd7wnab4d92797y&dl=0

    Hat da jemand eine Idee was das verursachen könnte?

      • Hi,

        ja, die Schaltung mit dem Wandler und dem ADS1115.
        Ich hatte eben im Netz was von Störungen über WLAN gelesen, im Bild oben sitzt die Antenne aber auch nah am ADS. Bei mir ist der auf einer kleinen Platine (als shield) direkt über dem Wemos.

  7. Hallo,

    zweite Frage 🙂

    Ist es korrekt, dass durch dein Update des Projektes, u.a. mit ADC-Wandler, die beiden Widerstände und der Kondensator nicht mehr benötigt werden?

    Danke für die Klarstellung!

  8. Danke für das Teilen der Idee und die sehr gute Aufbereitung des Projekts! 1A!

    Ich wohne direkt an einem kleinen Fluss, dessen Wasserstand durch den Einfluss von Ebbe und Flut um ca. 1 Meter steigen/fallen kann. Dies möchte ich gerne mit Deinem Projekt umsetzen und hoffe, dass ich damit vollautomatisch und sicher ohne Wartung/Komplikationen die Daten über Jahre hinweg konstand und genau bekomme.

    Der Fluss ist ja 60 Meter weit vom Haus entfernt. Entweder ich lege ein Stromversorgung oder ich möchte das ganze mit Deepsleep, Akku und Solar-Panel realisieren.

    Wie sind Deine Langzeiterfahrungen? Läuft es bei dir stabil?

    Muss der Sensor länger am Strom sein, damit er sauber funktioniert oder kann man den ESP für die Messung aufwecken und danach wieder in den Schlaf schicken? Würde einen ESP32 nehmen.

    Gibt es Erfahrungen, wenn das Wasser gefroren ist?

    Der kleine Schlauch für die „Luftversorgung“ lasse ich an der Stelle offen und verlänger dort aber (nur) die elektrischen Kabel, korrekt?

    Vielleicht kommen noch mehr Fragen, wenn ich die bestellten Sachen bekommen habe.

    Vielen Dank!
    Ede

    Nur Hinweis/Anregung: Würde es gut finden, wenn die erfolgten Updates nicht unten angeführt werden sondern der ursprüngliche Text überarbeitet wird. Das macht es einfacher.

    • Mein Sensor läuft seit Mai 22 problemlos, 1 Meter tief in einer Zisterne, die aber im Winter nicht gefriert (ist 2 Meter tief eingegraben).
      Der Sensor funktioniert sobald er Strom bekommt. Deepsleep dürfte daher kein Problem sein. Du benötigst aber 24 Volt, daher müsstest du einen Stepup-Konverter auch aktiv schalten, wenn du das per PV und Akku betreiben willst. Der Ruhestrom des Konverters und des Regelkreises dürfte den Akku rel. schnell leersaugen (besonders im Winter).

      Der Schlauch muss unbedingt frei sein, da darüber der Einfluss des Luftdrucks auf das Messergebnis kompensiert wird.

  9. Hallo,
    Erst einmal vielen Dank, dass du dieses Projekt teilst und so viele hilfreiche Tips gibst. Ich würde gerne die erste Version nachbauen, bin aber absoluter Laie und frage mich jetzt, ob ich alle GNDs miteinander verbinde. Die zwei Spannungen verwirren mich ein wenig. Wäre super wenn du mir da weiterhelfen kannst.
    Den Wemos kann ich nachher direkt mit USB an den Computer hängen? Welche Software nehme ich zum programmieren?
    Danke.
    Viele Grüße
    Markus

    • Ohne dir da zu nahe treten zu wollen: Die Fragen sagen mir, dass das nicht das richtige Projekt für dich ist und es nicht zum Erfolg führen wird. Beginne doch mal mit https://www.elektronik-kompendium.de/ und einem Arduino. Meine Artikel wenden sich an Anwender, die belastbare Grundlage in Elektrotechnik und Programmierung haben. Zudem nützt dir das Projekt in dieser Form nur wirklich, wenn du auch eine Home Assistant Installation betreibst.

      • Hallo Markus von nachbelichtet,

        Danke für deine Nachricht. Hört sich für mich so an, als wenn jeder der eine Sylvester Rakete starten möchte ein paar Semester Luft- und Raumfahrttechnik studiert haben sollte. Erfahrungsgemäß bekommen das aber auch andere gut hin, zumindest bleiben die meisten unfallfrei und haben ein tolles Feuerwerk… 😉

        Nachdem ich gestern unterwegs war habe ich heute Morgen vor dem Arbeitstag die erste Version deiner Schaltung zusammengelötet wobei ich nach kurzer Google Recherche auf „Common Ground“ gestoßen bin, welches meine erste Frage beantwortet (es wird also nur eine gemeinsame Masse für beide Spannungen verwendet).

        In der Mittagspause habe ich dann festgestellt, dass man besser das HASS Raspberry Image nimmt und nicht nur die bei mir laufende Core Version. Also schnell noch das Image auf den Raspberry und dann noch das ESPHome über die Add ins installiert (sind im HASS Core anscheinend etwas komplizierter einzubinden). Nach dem übertragen deines Skripts über ESPHome (Meine zweite und dritte Frage Flashen des Wemos am PC über ESPHome in HASS), kam zum Feierabend dann der erste Test des Ganzem im Waschbecken. Leider nur mit mäßigem Erfolg . Ein kurzer Blick auf den A0-Pin brachte dann aber auch direkt die Lösung (Verbindung A0 zum großen Widerstand vergessen). Also noch einmal Lötkolben an und siehe da es scheint zu funktionieren.

        Mal schauen, ob ich dieses Jahr noch den „Elektrokasten“ im Garten umbaue, so dass ich die Schaltung in die Zisterne bringen kann. Die Kalibrierung für unsere 1,5m tiefe Zisterne steht auch noch aus, wobei ich da primär die Aussage haben will es ist noch genug Wasser für die Pumpe da und wie hoch ist die Zisterne gefüllt. Die Liter Umrechnung schmeiße ich also vermutlich raus oder ich schaue mal, ob ich nächstem Hochsommer die Zisterne mal über den Schlauch fülle und dann die Werte notiere.

        Ich freue mich, dass dein Projekt mir sehr geholfen hat auch ohne das ich die geforderten Kenntnisse habe. ich hoffe, dass du uns Noobs auch weiterhin so teilhaben lässt, denn schon jetzt sind deine Anleitungen auch für Anfänger weitgehend verständlich und beim Rest hilft Google uns auch weiter.

        Daher noch einmal Danke für die ausführliche Beschreibung von meiner Seite und Entschuldigung für meine vermutlich nicht präzise oder ggf. sogar falsche Erläuterung.

        Viele Grüße
        Markus

  10. Hallo Zusammen, danke für die ausführliche Beschreibung. Habe die Spannungsteiler Variante aktuell in Betrieb und eigentlich lief es ganz gut. Seit paar Wochen sehe ich jedoch ab und an einen recht linearen Abfall des Wasserstandes um ca 5cm / Tag bei 1m Höhe des Behälters. Nach dem nächsten Regen oder Gießen ist der Wert wieder konstant. Habe noch kein System da gefunden. Da es sich um eine Kunststoffzisterne handelt sorgt das durchaus für schlechte Laune. Fällt jemandem ein Grund für das Verhalten ein außer Loch in der Zisterne? Der Sensor liegt auf dem Boden in recht feinem Schlamm. Das Kabelende ist in einer Verteildose im Behälter.

  11. Hallo, vielen Dank für die Anleitung.
    Ich habe das Projekt nachgebaut. Die Spannungsversorgung habe ich mit einem 24V Netzteil erledigt und dann mit einem Step-down die 5V für den ESP erledigt. Ich verwende außerdem Tasmota auf dem ESP und openHAB zur Auswertung. Vom ADC bekomme ich Werte von 0 bis 16000, welche ich dann zur Füllhöhe oder Litern umrechnen kann.
    Problem war bei mir, wenn ich den Messwertumformer mit 24V versorge, laufen die Werte nach ca. 3 Stunden nach oben weg. (Sensor nicht eingetaucht, 0V kalibriert. Nach 3 Std. habe ich statt 0V 3,4V oder mehr am Ausgang). Nun versorge ich den Umformer mit 5V und nur die Stromschleife mit 24V. Damit läuft es schon besser, aber die Werte schwanken noch um ca. 1% rauf und runter.
    Könnte man das noch mit einem Kondensator stabilisieren?

    • Ein Kondensator kann da nicht helfen. Zuerst würde ich mal die 24V Versorgung überprüfen, ob die stabil ist. Der Umformer benötigt aber mindestens 7 Volt als Versorgungsspannung.
      Dann vielleicht mal einen festen Spannungsteiler an den ADC-Eingang (z. B. 2x 10 kOhm Widerstände zwischen +3,3 V und GND und in der Mitte abgreifen) anschießen um zu sehen, ob der ADC überhaupt stabil ist.
      Und dann einfach mal einen anderen Umformer probieren – könnte ja defekt sein.

  12. Den Sensor gibt es auch mit spannungsausgabe. 0-5v oder 0-10v das ganze messe ich noch mit einem shelly uni, da ich erst am Anfang bin.

  13. Hallo! Hat jemand Langzeiterfahrung mit dem TL 136? Meiner ist nun nach 7 Monaten defekt, schwankt nun extrem und ist damit unbrauchbar. Da hat der Ultraschallsensor länger gehalten. Ist das Ausnahme oder Regel?

    • Mein Sensor ist seit Mai 2022 durchgehend in knapp 1 Meter tiefe im Einsatz und funktioniert noch einwandfrei. Hast du mal geprüft, ob das Röhrchen im Kabel frei ist? Wenn der keinen konstanten Referenzdruck bekommt, könnte sowas passieren.

  14. Hallo Nachbelichtet,
    danke für das tolle Projekt.
    Habe es bereits nachgebaut und Erfolgreich in meiner Zisterne integriert.
    Ich möchte nun das selbe für einen zweiten Schacht umsetzen und Frage mich ob es möglich ist den zweiten Sensor mittels zusätzlichen Messwertumformer zu integrieren.
    Am ADS hätte ich ja noch genug Eingänge frei.
    Lg

    • Das geht natürlich. Du brauchst den Umformer nur an einem weiteren ADC-Eingang anschließen und den Code-Teil mit anderen Namen wiederholen, z. B.

      
      # ADC Kanal A0 zur Messwerterfassung 
      sensor:
        - platform: ads1115
          multiplexer: 'A1_GND'
          gain: 4.096
          name: "Wasserstand Zisterne 2 cm"
          id: levelraw2
      ...
      ...
      Code-Sprache: PHP (php)
      • Wow mit so einer schnellen Antwort hab ich nicht gerechnet.
        Danke dann werd ich mir gleich mal den Sensor bestellen 🙂

        Lg

  15. Hallo,

    gibt es jemanden, der mir diese seltsamen Schwankungen erklären kann?
    „`
    [23:51:37][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=0.663500V
    [23:51:39][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=3.509500V
    [23:51:41][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=3.600625V
    [23:51:43][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.990625V
    [23:51:45][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=3.179125V
    [23:51:47][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.888500V
    [23:51:49][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.877500V
    [23:51:49][D][sensor:093]: ‚Wasserstand Zisterne cm‘: Sending state 148.84886 cm with 1 decimals of accuracy
    [23:51:51][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.812000V
    [23:51:53][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.720625V
    [23:51:55][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.497875V
    [23:51:57][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.428875V
    [23:51:59][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.375125V
    [23:52:01][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=0.669250V
    [23:52:03][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=-0.384375V
    [23:52:05][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=-0.377875V
    [23:52:07][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=-0.375250V
    [23:52:09][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=-0.352250V
    [23:52:11][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=-0.183500V
    [23:52:13][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=0.043375V
    [23:52:15][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=0.440875V
    [23:52:17][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=0.728750V
    [23:52:19][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=2.021625V
    [23:52:21][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=3.562875V
    [23:52:23][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=3.601375V
    [23:52:25][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=3.543875V
    [23:52:27][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=2.648750V
    [23:52:29][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.871750V
    [23:52:29][D][sensor:093]: ‚Wasserstand Zisterne cm‘: Sending state 114.97159 cm with 1 decimals of accuracy
    [23:52:31][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.776250V
    [23:52:33][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.710375V
    [23:52:35][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.538125V
    [23:52:37][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.444500V
    [23:52:39][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.241500V
    [23:52:41][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=-0.382500V
    [23:52:43][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=-0.371000V
    [23:52:45][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=0.170750V
    [23:52:47][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.410875V
    [23:52:49][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=3.604375V
    [23:52:51][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=3.593125V
    [23:52:53][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.891375V
    [23:52:55][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.805500V
    [23:52:57][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.722125V
    [23:52:59][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.558375V
    [23:53:01][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=1.423750V
    [23:53:03][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=0.478500V
    [23:53:05][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=0.235375V
    [23:53:07][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=-0.381375V
    [23:53:09][D][ads1115:186]: ‚Wasserstand Zisterne cm‘: Got Voltage=-0.367750V
    [23:53:09][D][sensor:093]: ‚Wasserstand Zisterne cm‘: Sending state 109.55569 cm with 1 decimals of accuracy
    „`

    Will „Zero“ einstellen, aber ist schwierig wenn die Werke so schwanken.

    Sonst TOP Anleitung hast mir viel Zeit erspart.

    • Stell den Zero- und Max-Wert besser mit einem Multimeter am Ausgang des Moduls ein. Das geht sehr viel schneller und einfacher.
      Häng den Sensor doch mal ein einem 10l Eimer Wasser und schau mal, was er dann anzeigt und was das Multimeter am Ausgang des Stromwandler-Moduls sagt.

  16. Hi, erstmal 1000 Dank für das tolle Projekt!
    Ich habe alles wie beschrieben incl dem Strom-Spannungswandler aufgebaut.
    Die Füllstandshöhe wird korrekt (+/- 1cm) ausgegeben.
    Nur die Umrechnung in Liter funktioniert bei mir irgendwie nicht.
    Bei 2cm Füllhöhe bin ich bei 400+ Litern, bei 0cm (Sensor auf dem trockenen) zeigt die Füllmenge -270 Liter an.
    Auch wird der Wert für den Inhalt der Zisterne im Log nur sehr sporadisch ausgegeben (so einmal pro Minute).
    Die Füllhöhe dagehen so alle 15 Sekunden, die Rohdaten (Spannung) alle 2 Sekunden.
    Das coding habe ich von Dir 1:1 übernommen.
    Die Ausgabe erfolgt bei mir in ioBroker, nicht Homeassistant. Sollte aber keine Rolle spielen, da ich mich mal nur auf das Logging des ESP beziehe.
    Sorry ich bin in ESPHome kompletter Laie – Was mache ich da falsch?
    Danke Stephan

    • Du darfst das nicht 1:1 übernehmen! Die Kalibrierung von Spannung zur Füllhöhe und Füllmenge muss individuell an deine Zisterne angepasst werden. Bitten den Beitrag noch einmal genau (!) lesen. Es ist alles beschrieben.

      • Ich habe exakt dieselbe 5000L Rewatec Zisterne wie Du 🙂 Ich gehe mal davon aus, dass die Kalibrierung prinzipiell übernehmen kann.
        Die Füllhöhe wird bei mir korrekt berechnet. Nur die Berechnung der Füllmenge ist für mich etwas kryptisch. Nach meinen Beobachtungen bisher stimmt bei Füllhöhen >15cm die Füllmenge in etwa. Bei einem Füllstand <15cm kommen etwas komische werte – zB bei 2cm Füllhöhe bin ich bei 400+ Litern, korrekt nach der Kalibrierung wären eher <80 Liter. Bei 0cm (Sensor auf dem trockenen) zeigt die Füllmenge -270 Liter an. Da würde ich um die Null Liter erwarten. Ist das ein Bug?

        Zweite Frage, während die Füllhöhe sauber alle 10-15 Sekunden geupdated wird, erfolgt ein Update der Menge nur alle 30-60 Sekunden – kann ich das irgendwo einstellen?

        • Nein, du kannst meine Kalibrierung NICHT übernehmen! Du MUSST die Spannungen bei unterschiedlichen Füllhöhen selbst messen und im Code (ab Zeile 62) anpassen, da alleine schon die Einstellung des Wandlermoduls große Abweichungen haben kann. Da kannst du wenige oder mehr Messpunkte erfassen. Je mehr du hast, umso genauer wird alles.
          Das ist aber alles beschrieben. An der der Berechnung der Füllmenge ist doch nichts kryptisch: Links steht die Höhe und rechts dazu die Füllmenge, die ich aus der Füllstandskurve ermittelt habe. Diese Kalibrierung kannst du übernehmen.

          Die Verzögerung kommt durch die Glättung der Messwerte (ab Zeile 57). Da kann man die Window-Size kleiner machen. Aber wozu braucht man bei dieser Anwendung eine so schnelle Erfassung?

      • Wir reden hier aneinander vorbei. Die Berechnung der Füllhöhe stimmt bei mir auf den Zentimeter, ich habe dazu auch deine Füllhöhenkalibrierung entsprechend angepasst.
        Was bei mir nicht stimmt, ist die Umrechnung in Liter bei Füllständen 0 oder -2 ->40 werden im Filter irgendwie ignoriert. Vielleicht mache ich da was falsch, ich kenne mich mit ESPhome nicht aus. Im Moment habe ich als Workaround in ioBroker ein eigenes Programm geschrieben was unplausible Daten vom ESPhome rausfiltert.

        • Okay, verstanden! Lass die Liste bei Füllstandskurve mit

          - platform: template
              name: "Zisterne Liter"
              lambda: |-
                return id(levelraw).state;
              
              filters:
                - calibrate_linear:
                    - 0 -> 0
          Code-Sprache: JavaScript (javascript)

          beginnen, damit hier auch ein Wert für „leer“ vorhanden ist.

  17. Hallo,

    so, gerade alles nachgebaut, nachdem die letzten Teile da waren. Weg Zisterne/Drucksensor zur Elektronik ca. 50m Kabellänge. Arbeite mit einem D1 mini von AZ Delivery (dann muss man im Code D01 und D02 entsprechend mit GPIO5 und GPIO4 ansprechen – das kann man im Internet nachlesen). Habe eine 2m Sonde. Der Span lässt sich bei mir auf maximal 2.2 V einstellen. Das reicht aber. Alles andere funkt genauso, wie beschrieben. Läuft jetzt erst mal in einer provisorischen Installation. Wenn über längere Zeit fehlerfrei, dann wird das sauber verlötet und in einen kleinen Kasten verstaut. 5V über Hutschienentransformator. Das ganze wird bei mir in ioBroker eingespielt und über Homematic – Historian ausgelesen und angezeigt.
    Klasse Beschreibung und Arbeit – Top.

    Lieben Dank

    Michael

  18. Hallo, danke für das tolle Projekt. Ich bin derzeit noch etwas am „troubleshooten“ und möchte die Werte vorerst zu Testzwecken über die Arduino IDE auslesen. Der Code dafür erscheint mir an sich simpel, aber ich bekomme nur „1“ zurück.

    Übersehe ich hier etwas, bzw. wie müsste der Code korrekt lauten?

    Vielen Dank, Frank

    void setup()
    {
    Serial.begin(115200);
    pinMode(D2, INPUT);
    }

    void loop()
    {
    int status = digitalRead(D2);
    Serial.println(status);
    }

    • Was erwartest du für einen Wert, wenn du den digitalen Pin eines ic2-Bus ausliest?
      Du brauchst erst einmal eine Arduino-Library, die dir den ADC1115 einbindet, z. B. https://github.com/RobTillaart/ADS1X15

      Dort ist auch alles beschrieben, was du sonst tun müsstest. Die Frage zeigt mir aber, dass du hier vielleich noch etwas Knowhow anhäufen solltest, weshalb die von mir beschriebene Variante mit dem ES8266 (oder 32) und ESPHome (was auch ohne Home Assistant nutzbar ist) wohl sehr viel einfacher und erfolgversprechender sein dürfte. Spätestens wenn es um die Kalibrierung und Glättung der Werte, Ansteuerung eines Displays etc. geht, dürften sich mehr Fragen aufwerfen als die grundsätzliche Anbindung des ADC.

      Wenn, dann solltest du externen ADC erst einmal weglassen und den Sensor an einen Analog-Pin (z. B. A1) anschließen. Die ADC der Arduinos sind ja ganz brauchbar und die Auflösung ist für diese Aufgabe auch hoch genug. Dann würdest du mit

      
      int analogPin = A1; 
                         
      void setup() {
        Serial.begin(9600);
      }
      
      void loop() {
        val = analogRead(analogPin);  
        Serial.println(val);          
      }Code-Sprache: JavaScript (javascript)

      die Analogwerte vom Konverter-Modul bekommen (wo du den Jumper auf 5V setzen solltest).

      Oder noch einfacher: https://ebay.us/W9Oxa5

  19. Hallo ich finde das Projekt auch sehr Interessant und bin grad dran es nachzubauen. Mal noch ne Frage wegen dem Display Typ 1602/HD44780,I2C-Bus oder die Wemos SPI-Bus Pins D5, D6 und D7. Hast Du da zufällig ein Schaltbild und einen Code für den Füllstand zum anzeigen lassen?

  20. Hallo, dass ganze hört sich nach einem spannenden Objekt an.

    Mein Problem ist, dass ich rund um Löten, Widerstände und ähnliches ein absoluter Laie bin.
    Auch wenn mich die Materie interessiert, so fehlt mir die Zeit um so etwas auf die Beine zu stellen.

    Gibt es hier evtl jemand, der genau dieses Projekt schon in die Tat umgesetzt hat und mir da zur Hand gehen könnte und dieses Projekt für mich Bauen könnte?

  21. Hallo,
    Super cooles Projekt. Ich möchte das ganze ebenfalls nachbauen und habe mir die Bauteile aus dem Update besorgt:
    – Wemos D1 pro
    – Step up Konverter LM2596
    – ADS 1115
    – TL-136
    – Messwertumformer

    Werde die Tage loslegen und das Projekt umsetzen.
    Wo ich nun auf dem Schlauch stehe.
    In der ersten Variante hattest du einen 150 Ohm und 27 kOhm Widerstand auf dem Schaltplan.
    Bei dem vereinfachten Schaltplan sind diese nicht mehr enthalten.
    Werden diese nun nicht mehr benötigt?

    Danke,
    Kevin

    • In der ersten Variante dienten die beiden Widerstände dazu, den Strom in eine messbare Spannung umzuwandeln (die Elektroniker unter euch verzeihen mir diese vereinfachte Erklärung!).

      In der verbesserten Variante übernimmt das der Messwertumformer, sodass man die Widerstände nicht mehr benötigt. Das geht genauer und zuverlässiger. Zudem kann man den gesamten Spannungsbereich ausnutzen und erhält damit sehr genaue Messwerte.

  22. Was für ein toller und ausführlicher Bericht ! Ich stehe leider noch am Anfang und habe ein grundlegendes Problem: Die Sonde habe ich auf der Terasse mit einem Rohr getestet und der Strom ging je nach Eintauchtiefe von 4mA bis 16 mA (längeres Füllrohr hatte ich nicht zur Hand). Also alles gut. Eingebaut habe ich es dann in einen Wohnmobilwassertank (Höhe ca. 50cm). Sobald nur etwas Wasser an die eingetauchte Sonde kommt, springt das Amperemeter auf die vollen 20mA. Auch ein öffnen des Tanks brachte keine Verbesserung. Ich habe dann das innere Luftröhrchen nach etwa einem Meter aufgechnitten, da ich dachte ich hätte es auf dem Verlegeweg (ca. 5 m) gequetscht und der Ausgleich kann nicht stattfinden. Aber das war es auch nicht. Wo soll ich jetzt noch suchen?
    Danke vorab für alle Tipps, die ich ausprobieren kann.
    VG Jürgen

  23. Hallo,
    zuerst einmal ein großes Lob für dieses Projekt. Genau das, was ich schon lange gesucht habe – ich aber mit der Materie nicht wirklich vertraut bin. Als Laie hätte ich aber gleich einmal eine Frage: Bei meiner Zisterne liegt der Überlauf bei 1,25m. Schafft das der TL-136 mit dem Messbereich von 0-1m noch hinreichend genau oder würde der Sensor nach erreichen von 1m Füllhöhe nur noch konstante Spannungswerte ausgeben? Sollte ich hier auf den nächst größeren Messbereich (0-2m) zurück greifen? Vielen Dank

    • 125 cm habe ich nicht probiert. Bis 110 cm ging es. Ausprobieren oder gleich den 0-2 m nehmen. Der wird ähnlich genau sein – ist ja auch keine Insulinpumpe, bei der es auf Milliliter ankommt 😉

  24. Hi…
    Per Zufall auf Dein Tutorial gestoßen und direkt begeistert… Genau das wofür ich schon seit langem ne geeignete Lösung gesucht habe..
    Hatte erst mehrere Kontaktlose Sensoren an der Außenseite meiner IBC-Container geplant, aber da ist die Auflösung ja grottig…
    Direkt die Komponenten bestellt, heute morgen kam das die Letzte Komponente an…
    Es kann losgehen… ?
    Eins ist mir aufgefallen: die schwarze Leitung in Deinem Fritzing plan vom „GND“ zum „-“ Anschluss des Messwandlers ist eigentlich obsolete… Die beiden Pins sind bereits auf der Platine miteinander verbunden… Ähnliches Vermute ich bei „VCC“ & „+“, was ich aber noch nachmessen müsste…
    Wenn dem so ist einfach nur den Sensor an den beiden Schraubklemmen ankleben und gut is…

    Hast Du zufällig schon Erfahrungswerte der tatsächlichen Reichweite der Stromschleife des Sensors?
    Den Elektronik-Kram ins Haus zu packen gefällt mir auch besser als es der Witterung auszusetzen..

    LG aus Do

  25. Servus!
    Erstmal danke für die ganze Arbeit, die du reingesteckt hast. Ich habe es soweit inkl. dem 2023er Update nachgebaut und soweit stimmen auch alle Stromwerte (Spannungen). Leider bekomme ich keine Kommunikation über den I2C Bus mit dem ADS1115 hin:

    [14:00:35][C][i2c.arduino:053]: I2C Bus:
    [14:00:35][C][i2c.arduino:054]: SDA Pin: GPIO5
    [14:00:35][C][i2c.arduino:055]: SCL Pin: GPIO4
    [14:00:35][C][i2c.arduino:056]: Frequency: 50000 Hz
    [14:00:35][C][i2c.arduino:059]: Recovery: bus successfully recovered
    [14:00:35][I][i2c.arduino:069]: Results from i2c bus scan:
    [14:00:35][I][i2c.arduino:071]: Found no i2c devices!
    [14:00:35][C][ads1115:073]: Setting up ADS1115…
    [14:00:35][C][ads1115:074]: Address: 0x49
    [14:00:35][E][ads1115:076]: Communication with ADS1115 failed!

    Habt ihr eine Ahnung woran das liegen könnte? Hier noch ein Ausschnitt aus meiner yaml:

    esphome:
    name: werkstatt

    esp8266:
    board: d1_mini

    ads1115:
    – address: 0x49
    id: ads1115_49

    sensor:
    # ADC Kanal A0 zur Messwerterfassung
    – platform: ads1115
    multiplexer: ‚A0_GND‘
    gain: 4.096
    name: „Zisterne Liter“
    id: levelraw
    filters:
    – sliding_window_moving_average:
    window_size: 20
    send_every: 20
    update_interval: 2s
    unit_of_measurement: l
    accuracy_decimals: 1

    Gruß
    Till

    • Schau mal, ob du den ADDR-Pin am ADC auch auf HIGH (3,3 Volt) gelegt hast, sonst hat er eine andere Adresse (0x48, Zeile 43). Ein Klassiker ist natürlich SDA und SCL vertauscht.

      Man kann aber auch mal ein defektes Teil erwischen. Vielleicht hast du ja einen anderen i2c Sensor, den du alternativ anschließen kannst um herauszufinden, ob überhaupt ein Sensor gefunden wird.

      • Hab ich beides geprüft, also 3.3 liegt am ADDR-Pin an. SDA und SCL hab ich auch schon geprüft und probeweise mal getauscht, wenn es falsch ist kommt auch die Zeile Recovery: bus successfully recovered nicht.
        Dann wird es vermutlich ein Defekt sein… Ich schau mal, ob ich einen anderen Sensor zum testen habe.

  26. Super Sache! Respekt!
    Gehöre auch zu den „Leidensgenossen“ mit Ultraschall-Sensoren die leider nach einem Jahr den Geist aufgegeben haben.
    Mein Problem ist das ich eine Absolute Null beim Messen bin. Löten etc. alles kein Problem. Die Frage wo ich mit meinen Messgerät ansetzen muss für die Messreihe? Also an welche Pins. Sorry für die Frage. Ich habe die „Update“ Version nachgebaut.

  27. Klasse umgesetzt, ich habe seit gestern die erste Version am Start 🙂
    Allerdings gebe ich zu, dass mir etwas Hintergrund Infos zu der Yaml fehlen.
    Ich habe meine so umgesetzt :
    sensor:
    – platform: adc
    pin: A0
    name: „Wasserstandcm“
    id: levelraw
    update_interval: 2s
    filters:
    – multiply: 0.839
    – 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: 0.1
    – median:
    window_size: 7
    send_every: 4
    send_first_at: 3

    – platform: template
    name: „Zisterne Liter“
    lambda: |-
    return id(levelraw).state;

    filters:
    – calibrate_linear:
    – 0.28 -> 5
    – 0.30 -> 30
    – 0.35 -> 100
    – 0.41 -> 200
    – 0.47 -> 300
    – 0.53 -> 400
    – 0.59 -> 500
    – 0.64 -> 600
    – 0.70 -> 700
    – 0.80 -> 900
    – 0.85 -> 1000
    – 1.10 -> 1500
    – 1.33 -> 2000
    – 1.54 -> 2500
    – 1.76 -> 3000
    – 1.95 -> 3500
    – 2.33 -> 4000
    unit_of_measurement: l
    accuracy_decimals: 0

    – platform: template
    name: „Idraw“
    lambda: |-
    return id(levelraw).state;

    wobei ich die ersten „calibrate Linear“ einfach übernommen habe und wert „multiply“ so lange angepasst habe, dass mein Volumen hin haut. Allerdings würde ich es gerne schon richtig haben. Ich habe alle Volt Werte messen können bei jeweils 100 Liter „Zufluss“, daher kenne ich die Werte für 100,200,300 usw.Liter Inhalt. Wie könnte ich die Yaml anpassen, ohne die Füllstandshöhe in cm (die brauche ich nicht). mich interessiert nur der tatsächliche Inhalt. Jemand einen Tip ?
    Danke

  28. Super Sache! Respekt!
    Gehöre auch zu den „Leidensgenossen“, die sich an TOFL oder Ultraschall-Sensoren versucht haben.
    Auch die Idee mit dem Wasserdruck hatte ich schon (Wasserdruck minus Luftdruck = Wassertiefe), leider fand ich keine Sensoren, die im dunklen, kalten Wassertank wohnen wollten. Waren zwar als „water resistent“ ausgewiesen, aber haben nicht lange überlebt.
    Da meine Zisterne recht weit vom Haus entfernt ist, kann ich kein WiFi gebrauchen. Ich nehme 433 MHz zur Übertragung. Werde das Ganze also auf SAMD21 Chipsets übertragen. Würde gerne auf einen zusätzlichen AD-Wandler verzichten …. mal schauen, vielleicht sind die auf den SAMD Boards ja qualitativ besser.

    • Guten Tag Markus,

      mit Begeisterung habe ich Deine Lösung nachgebaut. Ich habe aber einen Shelly Uni verwendet und dieses in Home Assistant dargestellt.
      Nun meine Frage. Wie kann/muss ich diese lineare Kalibrierung in HA eingeben, um exakte Werte zu erhalten?
      Oder ist dies nur über einen ESP32 zu machen oder nötig?
      Viele Grüße Steffen

  29. Hi zusammen,

    habe meinen IBC nun auch umgerüstet.
    TL-136 vom Ali für 26 Euro
    Da ich mit automatischer Nachspeisung arbeite, habe ich mir zur Sicherheit noch einen Schwimmerschalter an der Decke montiert.
    Alles schön auf ein PCB gepackt und bei JLCPCB bestellt.
    Dazu noch ein TM-1637 und ab in die Abzweigdose. Läuft bisher perfekt.
    Hatte das PCB auf für den ADS1113 vorbereitet, finde aber im Nachhinein, dass man das wirklich nicht benötigt. Messung funktioniert auch so zuverlässig und schwankt bei mir um 2-3 Liter (von 1000…)

  30. Super Bericht, danke!! Hab nun auch den Ultraschallsensor aus meiner Zisterne durch einen TL-136 ersetzt. Ultraschallsensor musste ich jährlich wechseln, der vergammelt in der feuchten Umgebung. Deine Anleitung war dazu sehr hilfreich. Hoffe der TL136 hält länger, bin gespannt. Hast du ev. eine Einschätzung darüber wie lang das Ding halten sollte?

    PS:
    Ich verwende auch den Wemos D1 mini. Ich schreibe die Daten auf Thingspeak. Mir gefällt besonders die Visualisierung am Handy mit der Virtuino-app 🙂

  31. Hallöchen,
    Wann können wir ungefähr mit einem Update rechnen?

    Schaltplan sowie Code des ESPHome wären SUPER.

    Danke schonmal
    Viele Grüße

  32. Sehr schönes Projekt.

    Aber ich kann den Aufwand mit dem ADS1115 noch nicht ganz nachvollziehen. Klar der ESP hat nicht den besten ADC aber das Signal lässt sich ja durch den Kondensator glätten und bei einer Abtastrate von 10-30sec (mehr Daten braucht man eigentlich bei einer Zisterne nicht). Und bezüglich der genauigkeit Kalibriert man den Sensor ja so oder so auf den Wasserstand, somit wird ja auch die nicht linearität des ADC ausgeglichen.

  33. Hallo,

    ich habe die Lösung hier gefunden https://www.youtube.com/watch?v=-IEYP6vItec&t=440s setzt auf einen Shelly Uni und den Sensor mit Volt Ausgang https://de.aliexpress.com/item/1005004940352922.html?aff_fcid=68e0b501cfd142db9fc0f6c944f7ac1b-1681384472227-06364-_Dmg3WBd&tt=CPS_NORMAL&aff_fsk=_Dmg3WBd&aff_platform=shareComponent-detail&sk=_Dmg3WBd&aff_trace_key=68e0b501cfd142db9fc0f6c944f7ac1b-1681384472227-06364-_Dmg3WBd&terminal_id=acf09f93d6dc437eb6c5de3202072ff7&afSmartRedirect=y Gibt es hier einen grossen Unterschier zum TL-136?

  34. Hallo,

    nachdem ich nun weitere zwei Woche das ganze im IBC-Tank bei 1000 Liter am laufen habe ist mir aufgefallen, das die Anzeige sehr stark von der Wassertemperatur abhängig ist. Jeder Grad macht ca. 0.1-0.2 cm bei mir aus. Ist das bekannt?
    Wenn Nachts die Temperaturen ordentlich runter gehen, fällt das schon stark ins Gewicht.

    • Einen Drift des Sensors könnte ich noch nicht feststellen, was aber bei 5000 Litern auch nur seeehr langsam erfolgen würde.

      Da du deinen Aufbau nicht beschreibst, könnte sich auch die Versorgungsspannung ändern.

      Allerdings muss man die Anwendung mal realistisch betrachten: Deiner Angabe nach sprechen wir hier von 10-20 Litern bei 10 K Temperaturänderung, was 1-2 % der Füllmenge entspricht. Das ist doch ein hervorragender Wert und absolut praxisgerecht- wir bauen hier ja keine Insulinpumpe. Es wäre sogar denkbar, das sich das Volumen deines IBC Containers temperaturbedingt verändert.

      Der Sensor selbst (ohne Außenbeschaltung) ist mit 0,2 – 0,5 % FS angegeben. Die Temperaturabhängigkeit mit 0,01 % pro Grad FS, dürfte also vernachlässigbar sein.

  35. Hallo zusammen,
    hat schon mal jemand über die Alternative INA219 mit einem 2-Ohm-shunt (oder auch 1Ohm) nachgedacht oder das schon mal gebaut? Ansonsten bau ich das mal 🙂
    Ich denke, dass die hohe Spannung dann keine Rolle spielt (Busvoltage bis 32V) und könnte mit 2Ohm-Shunt und Gain=1 fullscale die 20mA in 12bit auflösen und auch noch average-sampling -> Rauschen weg.

  36. 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.

  37. 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 🙂

      • Guden,
        wann kommt denn das Update? Wollte in den Osterferien mit Basteln anfangen.
        Deine Beschreibung ist bis jetzt die Beste, die ich gesehen habe. Hört sich nach der (für mich) perfekten Lösung an. Einfach, einigermaßen günstig und einigermaßen genau. Außerdem ist die Beschreibung einfach 🙂

        Viele Grüße tors10hl

      • Hi Klasse Projekt,

        hätte auch Interesse an dem Update Schaltplan mit den Schottky-Dioden.

        Thx im Voraus.

  38. 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.

  39. 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.

  40. 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

  41. 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

  42. 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

    • Nein, das ist wirklich reine Bastelarbeit. Vielleicht kennst du ja jemanden, der mit einem Lötkolben und Elektronik umgehen kann. Evtl. gibt es in deiner Nähe auch einen Maker-Space.

  43. 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… ?

  44. 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

    • Wie schon in anderen Kommentaren erwähnt, kommt das im Frühjahr, wenn ich die Werte ohne Gefahr von Frostbeulen kalibrieren kann 🙂 Momentan hat es bei uns -5 Grad.

      • Hallo,
        Danke für die Antwort
        das verstehe ich gut.

        Dan warte ich gespannt auf die nächsten Wochen und Monate.

        Danke schon mal im voraus.
        Grüße

      • Hi,
        konntest du schon etwas testen?
        Habe das nun auch nachgebaut, bekomme leider den ADS1115-Part nicht hin.

        – platform: ads1115
        multiplexer: ‚A0_GND‘
        gain: 6.144
        name: „ADS1115 Channel A0-GND“
        id: leveladc0

        Erhalte vom TL-136 leider nur 1.593 zurück, auch wenn ich Wasser entnommen habe.

  45. 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

  46. 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.

  47. 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.

  48. 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

  49. 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 😉

  50. 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

  51. 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

  52. 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 😉

  53. 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.

  54. 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 🙂

    • So isses! Basteln ist zwar schön, am Ende soll es aber auch zuverlässig funktionieren.
      Freut mich, dass du die gleichen guten Erfahrungen damit machen konntest!

      • Auch nach einem weiteren Jahr (fast) arbeitet diese Lösung einwandfrei. Also Info für alle „Nachbauer“ 🙂

    • Kann ich ebenfalls bestätigen. Habe es ebenfalls mit ESPeasy umgesetzt, jedoch ohne Strom-Spannungswandler und extra AD-Wandler, sondern, wie zuerst hier beschrieben, mit einem Messwiderstand. Das (nicht unerhebliche) Rauschen bekommt man im Webinterface per Oversampling (10 Messungen pro Sekunde über X Sekunden und anschließender Mittelwertbildung) in der ESPeasy SW in Griff. Die Kalibrierung konnte einfach über eine 2-Punkt-Kalibrierung ebenfalls übers Webinterface erfolgen (https://espeasy.readthedocs.io/en/latest/Plugin/P002.html). Kalibrierung über mehrere Punkte ist ebenfalls möglich.
      Das Ganze läuft bei mir so jetzt ca. 2 Wochen sehr zuverlässig. Bin mir auch ziemlich sicher, dass es länger als die ganzen Ultraschall-Lösungen hält, die ich vorher ausprobiert hatte.

      Vielen Dank @nachbelichtet für den Impuls und den tollen Beitrag!

Schreibe einen Kommentar zu ChristianAntworten abbrechen

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