DIY Füllstandsmessung für Wassertanks in Campern und Wohnmobilen

Wassertanks sind in Campern oft fest eingebaut und nur schwer zugänglich. Eine zuverlässige Messung des Füllstands, egal ob Frisch-, Grau- oder Abwasser ist deshalb wichtig.

Bisherige Lösungen erfodern oft einen Kontakt zum Wasser und sind gleichzeitig beschränkt auf eine olle analoge Anzeige. In 2025 geht das wirklich besser.

Ganz nach meinem Anspruch, alle Sensoren etc. in einer Oberfläche in Home Assistant abzulesen, war ich auf der Suche nach einer guten Lösung.

Die verschiedenen Arten der Füllstandsmessung

Diese modernen Sensoren habe ich getestet und war leider mit allen unzufrieden:

Ultraschallsensor

Dieser Sensor sendet Schallwellen aus, die von der Wasseroberfläche reflektiert werden. Die Zeit, die die Wellen benötigen, um zurückzukehren, ermöglicht eine genaue Berechnung des Füllstands.

Der klassische HC-SR04 Ultraschallsensor kam hier nicht in Frage. Er ist zwar sehr günstig, hat jedoch kein Gehäuse und würde beim Kontakt mit Wasser früher oder später korrodieren.

Besser geeignet: Der A02YYUW als wasserdichter Ultraschallsensor. Recht teuer, gab mir aber zumindest recht zuverlässige Messwerte.

Ultraschall-Abstandssensor UART-gesteuerter 3-450 Cm Reichweite DC 3,3 V-5 V Wasserdichter Sensor, Entfernungsdetektor 3 Bis 450 Cm Low-Power-Design IP67 für Roboter
  • Präzise Entfernungsmessung: Mit einer Reichweite von 3 cm bis 450 cm liefert dieser Ultraschall-Abstandssensor genaue und zuverlässige Messungen, die nicht von der Umgebung beeinflusst werden. Es gewährleistet eine präzise Abstandserkennung für verschiedene Anwendungen.

Das grundsätzliche Problem: Der Sensor brauch eine klare Sicht auf die Wasseroberfläche, wodurch sich schnell Kondenswasser am Sensor bildet und dadurch nur noch unzuverlässige Werte angezeigt werden. Ein weiteres Problem: Durch das recht schmale Format meines Wassertanks wurden die Schallwellen gelgentlicht von den Seitenwänden refkletiert, wodurch sich Fehlmessungen ergaben.

TOF-Sensoren (Time-of-Flight)

Diese Sensoren arbeiten ähnlich zum Ultraschallsensor, nutzen aber Licht statt Schall. Hier habe ich den TOF10120 Sensor getestet. Er wird offiziell von ESPHome unterstützt und lässt sich damit ebenfalls leicht auslesen.

Montage des TOF-Sensors

Er ist günstiger als der Ultraschallsensor, hatte aber letztlich ähnliche Probleme. Die Messwerte waren gut, solange kein Wasser an den Sensor kam. Letztlich habe ich auch diese Idee schnell verworfen.

Youmile TOF10120 Laser-Entfernungssensor 100-1800mm UART I2C-Ausgang Laser-Entfernungsmesser-Entfernungssensor Laser-Flugentfernungsmessung
  • 【Eigenschaften】: Einzelnes Netzteil; UART I2C-Schnittstelle zur Gerätesteuerung und Datenübertragung; Bleifrei, RoHS-konform.

Weitere Möglichkeiten zur Messung

Drucksensoren messen den hydrostatischen Druck am Tankboden. Durch die Messung des Drucks an der Unterseite des Tanks kann der Füllstand berechnet werden. Diese Methode ist wohl sehr genau, erfordert aber auch eine Tanksonde die dauerhaft im Tank verbleibt und somit ebenfalls mit dem Trinkwasser in Kontakt kommt. Das wollte ich vermeiden. Zusätzlich schien mir das die teuerste Lösung, da ich nur einen Sensor finden konnte, der für die Konfiguration mit ESPHome in Frage kam.

Auch spannend: Eine neuere Lösung von VOTRONIC mit einer Tanksonde. Ob sich diese mit ESPHome auslesen lassen würde, weiß ich nicht. Vielleicht teste ich die aber auch mal in Zukunft.

VOTRONIC Tank-Sensor FL (für Füllstandsmessungen von Wasser und wasserhaltigen Flüssigkeiten) Votronic 5530 Tank-Sensor FL
  • zulässige Betriebsspannung: 12V und 24V DC (für Dauerbetrieb geeignet) — für Montage an Tank-Oberseite oder Seitenwand — geeignet für Frisch- und Abwassertanks-Tanks

Meine Erfahrungen mit den verschiedenen Systemen

In der Praxis haben sich besonders bei Ultraschall- und TOF-Sensoren einige Herausforderungen gezeigt:

  • Kondenswasserbildung verfälscht früher oder später die Messwerte.
  • Die bewegte Wasseroberfläche beim Fahren macht präzise Messungen nahezu unmöglich.
  • Eingriff in den Tank notwendig. Ohne wenigstens ein kleines Loch an der Oberseite des Tanks war keine Messung möglich.

Die smarte Eigenbau-Lösung: XKC-Y25-NPN Kapazitive Sensoren an der Außenwand des Tanks

Nach vielen Experimenten habe ich die perfekte Lösung gefunden: XKC-Y25-NPN kapazitive Sensoren in Kombination mit einem ESP zum Auslesen und Übermitteln an Home Assistant. Diese Kombination läuft bei mir seit über drei Jahren sehr zuverlässig. Und da es keinen Kontakt zum Wasser gibt auch absolut verschleißfrei.

Angebot
Jadeshay Flüssigkeitsstandsensoren 5–12V Wasserstandssensor, Füllstandsanzeige Wassertank Füllstandssensor Berührungslose NPN-Ausgangsschnittstelle IP67 Wasserdicht
  • 【Der langlebige】 Flüssigkeitsspiegelsensor ist für die äußere Wand nicht-metallischer Rohre ohne direkten Kontakt mit Flüssigkeiten geeignet und wird nicht durch ätzende Flüssigkeiten wie starke Säure und Alkali korrodiert und wird nicht von Skalierungen oder anderen Trümmern beeinflusst.

So funktioniert die kapazitive Messung

Die Sensoren arbeiten durch die Tankwand hindurch und können Flüssigkeiten in Behältern aus Kunststoff, Glas oder Keramik bis zu 20mm Dicke erkennen. Das Messprinzip basiert auf der Änderung der elektrischen Kapazität. Erreicht der Wasserstand die Höhe des Sensors, ändert sich die Kapazität – der Sensor schaltet. Jeder Sensor kann also signalisieren: „Ja, hinter der Wand befindet sich auf meiner Höhe gerade Wasser – oder eben auch nicht“.

Durch die Kombination mehrerer Sensoren lässt sich so sagen: Der Tank ist z.B. min. zu 75 % gefüllt.

Ich habe mich für 5 Sensoren entschieden, die ich bei 10%, 25%, 50%, 75% und 100% des Füllstands von außen auf den Tank geklebt habe. Für mich persönlich reicht diese Präzision aus, theoretisch könnte man aber auch 10 Sensoren verwenden und so in 10%-Schritten messen.

In der Praxis wird es vor Allem interessant, wenn der Füllstand kritisch, also bei Frischwasser niedrig und bei Grauwasser hoch ausfällt. Aus diesem Grund werden bei mir die Abstände in den niedrigen %-Stellen auch kleiner.

Die Vorteile meiner Lösung

  • Berührungslose Messung: Die Sensoren werden außen am Tank angebracht
  • Keine Verunreinigung: Kein Kontakt mit dem Trinkwasser
  • Wartungsfrei: Keine beweglichen Teile, keine Korrosion
  • Smart-Home-Integration: Volle Einbindung in Home Assistant

Ein großer Nachteil

  • Messung nur in Etappen: Durch die Anzahl der Sensoren bestimmt sich wie präzise gemessen werden kann.

Auslesen der Werte

Die Sensoren habe ich anschließend alle mit einem D1 Mini verbunden:

Angebot
AZDelivery D1 Mini NodeMcu mit ESP8266-12F WLAN Module CH340G Lua kompatibel mit Arduino inklusive E-Book!
  • Sichern Sie sich jetzt ein D1 Mini NodeMcu mit ESP8266-12F zum Vorteilspreis mit Mengenrabatt. Das D1 Mini ist ein Allroundtalent und eines unserer meistverkauften Produkte. Das D1Mini zeichnet sich vor allem durch seine technischen Daten aus.

Stromversorgung

Um die im Camper üblichen 12V auf die vom D1 benötigten 5V zu bringen habe ich einen Step-Down-Converter verwendet, wie z.B. den von Bauer Electronics:

Bauer Electronics | DC-DC 8V-32V zu 5V Spannungs-wandler 3A 15W | 12-V 5-V Buck Converter Netzteil 24-V Spannungs-regler Spannungs-stabilisator Spannungs-begrenzer Step-down Volt Input: 8-32V Output: 5V | 15W | 3A
  • Einsatzgebiet | Die Module finden breite Anwendung in den Bereichen KFZ, Photovoltaik, Industrieanlagen, LKW, Boot, Landmachinen, Camping, mobile Einrichtungen, Hobby und Heimwerken sowie Haus und Garten.

So wirds installiert

Sensoren am Tank positionieren

Die richtige Platzierung ist entscheidend für aussagekräftige Messwerte. Zum Beispiel so:

  • 0% (Leer): Ca. 5 cm über dem Tankboden
  • 20%: Bei 1/5 der Tankhöhe
  • 40%: Bei 2/5 der Tankhöhe
  • 60%: Bei 3/5 der Tankhöhe
  • 80%: Bei 4/5 der Tankhöhe
  • 100% (Voll): Ca. 5 cm unter der Oberkante

Tipp: Ich habe die Position zunächst mit Kreppband getestet. Wenn alles passt, kann man dann einfach doppelseitiges Klebeband zur Montage verwenden.

Die Sensoren schalten sich nacheinander ein, wenn der Füllstand steigt.

Verkabelung

Jeder XKC-Y25-NPN Sensor hat drei Anschlüsse:

  • Braun: VCC (+5V Versorgungsspannung)
  • Blau: GND (Masse)
  • Schwarz: Signal (zum GPIO des ESP32)

Mehr Infos finden sich im Datenblatt.

Kalibrierung bei speziellen Tankformen

Wichtiger Tipp: Falls dein Wassertank eine spezielle Form hat (z.B. Tanks über dem Radkasten mit schrägen Wänden), empfehle ich folgende Kalibrierungsmethode:

  1. Tank komplett entleeren
  2. Schrittweise befüllen – verwende einen Messbecher oder Kanister, damit du genau weißt, wieviel Liter bereits im Tank sind
  3. Montieren – Klebe bei z.B. 10% den ersten Sensor auf die Tankwand, usw.

Das schien aus meiner Sicht die einfachste und praktikabelste Lösung zur Berechnung des Füllstands zu sein.

Integration in Home Assistant

Nachdem alle Sensoren montiert und mit dem D1 Mini verkabelt sind, geht’s an die Software. Ich verwende ESPHome und folgenden Code zur Konfiguration:

esphome:
  name: waterlevel-d1
  friendly_name: waterlevel_d1

esp8266:
  board: d1_mini

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: ENCRYPTION_KEY

# Enable Over-The-Air updates
ota:
  - platform: esphome
    password: OTA_PASSWORD

wifi:
  ssid: !secret wifi_ywbab_ssid
  password: !secret wifi_ywbab_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Waterlevel-D1 Fallback Hotspot"
    password: AP_PASSWORD

captive_portal:

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO5
      inverted: false
      mode: INPUT_PULLUP
    name: waterlevel_10
    id: waterlevel_10
    filters:
      delayed_on_off: 20ms
  - platform: gpio
    pin:
      number: GPIO4
      inverted: false
      mode: INPUT_PULLUP
    name: waterlevel_25
    id: waterlevel_25
    filters:
      delayed_on_off: 20ms
  - platform: gpio
    pin:
      number: GPIO12
      inverted: false
      mode: INPUT_PULLUP
    name: waterlevel_50
    id: waterlevel_50
    filters:
      delayed_on_off: 20ms
  - platform: gpio
    pin:
      number: GPIO14
      inverted: false
      mode: INPUT_PULLUP
    name: waterlevel_75
    id: waterlevel_75
    filters:
      delayed_on_off: 20ms
  - platform: gpio
    pin:
      number: GPIO13
      inverted: false
      mode: INPUT_PULLUP
    name: waterlevel_100
    id: waterlevel_100

# Example configuration entry
sensor:
  - platform: template
    name: "waterlevel_0_to_100"
    unit_of_measurement: "%"
    accuracy_decimals: 0
    update_interval: 5s
    lambda: |-
      std::array<bool, 5> states = {
        id(waterlevel_10).state,
        id(waterlevel_25).state,
        id(waterlevel_50).state,
        id(waterlevel_75).state,
        id(waterlevel_100).state
      };

      // Count active sensors from highest to lowest
      for (int i = 4; i >= 0; i--) {
        if (states[i]) {
          switch (i) {
            case 4: return 100;
            case 3: return 75;
            case 2: return 50;
            case 1: return 25;
            case 0: return 10;
          }
        }
      }

      return 0;  // No sensors active

Wenn dein angezeigter Füllstand zu häufig hin und her springt, kann folgende Einstellung in ESPHome helfen:

  • delayed_on: 100ms – Sensor muss mindestens 100ms durchgehend Wasser erkennen
  • delayed_off: 3s – Sensor muss 3 Sekunden kein Wasser mehr erkennen, bevor er umschaltet

Darstellung auf dem Dashboard

Zu Darstellung der Messerwerte habe ich die Fluid-Level-Background-Card in Kombination mit der Big-Number-Card verwendet

  - type: custom:fluid-level-background-card
    entity: sensor.waterlevel_d1_waterlevel_0_to_100
    card:
      type: custom:bignumber-card
      title: Water
      entity: sensor.waterlevel_d1_waterlevel_0_to_100
      scale: 30px
      from: bottom
    level_color:
      - 48
      - 30
      - 138

Automatisierungen

Da gibt’s natürlich vielfältige Ideen. Hier ein Beispiel zum automatischen Abschalten der Pumpe bei niedrigem Füllstand:

alias: Pumpe aus bei leerem Tank
trigger:
  - platform: state
    entity_id: binary_sensor.tank_leer
    to: 'off'
condition: []
action:
  - service: switch.turn_off
    target:
      entity_id: switch.wasserpumpe
  - service: notify.dein_smartphone
    data:
      title: "🚰 Wasserpumpe abgeschaltet"
      message: "Tank ist leer - Pumpe wurde zum Schutz ausgeschaltet."

Weitere Möglichkeit: Durchflussmessung

Was ich bisher noch nicht getestet habe, ist eine Anzeige per Durchflussmessung. Diese, wahrscheinlich sehr präzise, Möglichkeit finde ich sehr spannend. Aber auch hier bleibt die Problematik: Der Durchflussmesser ist nicht wirklich lebensmittelecht und wird mit der Zeit verkeimen.

Fazit: Smart, günstig und zuverlässig

Mit einem Gesamtbudget von unter 100 Euro hast du ein Füllstandsmesssystem, welches kontaktlos auskommt. Mir sind bisher keine kommerziellen Lösungen bekannt, die diese Möglichkeit bieten.

Nach über drei Jahren Dauereinsatz kann ich sagen: Das System funktioniert absolut zuverlässig und ermöglicht durch zusätzliche Automatisierungen auch einen echten Mehrwert gegenüber herkömmlichen Lösungen.