Tutorial: Digitalen Wasserzähler in Home Assistant auslesen

In diesem Tutorial zeige ich, wie ihr einen digitalen Wasserzähler mit Home Assistant überwachen könnt – selbst wenn er sich nicht direkt per Reed-Kontakt oder Kamera auslesen lässt. Ich nutze dafür das Gerät Aquaro, das die Daten per MQTT bereitstellt.

1. Ausgangssituation

Mein Wasserversorger hat mir einen Hydrus 2.0 Wasserzähler bereitgestellt.
Problem: Dieser lässt sich weder per Reed-Kontakt noch per Kamera auslesen – eine direkte Verbrauchsmessung war also zunächst nicht möglich.

Eine Anfrage beim Versorger, ein anderes Modell zu verwenden, erschien mir wenig erfolgversprechend.

Die Lösung: ein Aquaro-Gerät, das die Zählerstände digital ausliest und per MQTT überträgt. – Ja, ich habe meinen schon bekommen und auch wenn bei kickstarter die Kritik nicht zu überlesen ist – er funktioniert bei mir und tut was er soll. (Stand 02.01.2026)

Hinweis: Dies ist keine Werbung – ich erhalte keinerlei Provision. Ich beschreibe lediglich meine Erfahrungen.

2. Gerät vorbereiten

  1. Aquaro auspacken und gemäß Anleitung einrichten.
  2. Gerät mit eurem WLAN verbinden.
  3. Entweder in der App die Messwerte prüfen oder die MQTT-Funktion aktivieren.

Die MQTT-Funktion ermöglicht die direkte Integration in Home Assistant.

3. Home Assistant vorbereiten (MQTT)

Damit Home Assistant die Daten vom Zähler empfängt, wird ein MQTT-Broker benötigt.

3.1 MQTT-Broker einrichten

  1. In Home Assistant unter Supervisor → Add-on Store → MQTT Broker (z. B. Mosquitto) installieren.
  2. Add-on starten und auf Automatisches Starten setzen.
  3. Benutzername und Passwort vergeben.

3.2 Gerät mit Broker verbinden

  • Im Aquaro Gerät:
    • IP-Adresse des Brokers, Benutzername und Passwort eintragen

3.3 MQTT-Sensor in Home Assistant rausfinden

  • Bei mir hat sich der Aquaro als folgender Sensor mit verschiedenen Werten gemeldet:
    • Name: z. B. Aquaro Sensor 82464xxxxxx143
  • die MQTT Übertragung ist (bei meinem Gerät) aktuell noch etwas „gewöhnungsbedürftig“ die Rohwerte sind derzeit noch nicht direkt nutzbar.

3.4 Werte prüfen und in der configuration.yaml Template Sensoren anlegen

ich nutze eigentlich nur den sensor.aquaro_sensor_123456_cumulative_usage
Ich musste durch testen und Kontrollieren des Wasserzählers noch 2 Korrekturwerte einbauen (Zeile 6 & Zeile 18) – wenn Du hierzu Fragen hast, meld Dich gern bei mir :)

  # Wassersensoren (Aquaro)
- template:
  - sensor:
      - name: "Aquaro Wasserverbrauch (angepasst)"
        unique_id: aquaro_cumulative_adjusted
        state: "{{ ((states('sensor.aquaro_sensor_82464xxxxx143_cumulative_usage') | float * 0.06043) * 0.78) | round(1) }}"
        unit_of_measurement: "L"
        state_class: total_increasing
        device_class: water

      - name: "Wasser SMART"
        unique_id: wasser_smart
        unit_of_measurement: "L"
        state_class: total_increasing
        device_class: water
        state: >
          {% set raw = states('sensor.aquaro_sensor_824xxxxxx143_cumulative_usage') | float(default=0) %}
          {% set current = ((raw * 0.06043) * 0.78) | round(1) %}
          {% set last = states('sensor.wasser_smart') | float(default=current) %}
          {% set diff = current - last %}
          {% if current < last %}
            {{ last | round(1) }}
          {% elif diff > 150 %}
            {{ last | round(1) }}
          {% elif last < current * 0.7 %}
            {{ current | round(1) }}
          {% else %}
            {{ current | round(1) }}
          {% endif %}

4. Visualisierung im Energy-Dashboard

Den Sensor „Wasser SMART“ kannst du direkt im Energy-Dashboard visualisieren, das sieht dann sehr übersichtlich aus.

5. Wasserzähler aktualisieren

In der configuration.yaml habe ich die folgenden Input-Number-Sensoren angelegt.

# Wasserzähler Input
input_number:
  wasserzaehler_m3:
    name: Wasserzählerstand
    min: 0
    max: 10000
    step: 0.001
    unit_of_measurement: "m³"

  last_wasser_smart_value:
    name: Letzter Wasser SMART Wert
    min: 0
    max: 100000
    step: 0.1
    unit_of_measurement: "L"
    icon: mdi:water-check

Diesen möchte ich natürlich aktuell halten, um jederzeit den aktuellen Wasserzählerstand einsehen zu können.

dazu gibt es diese Automation:

alias: "[Wasser] Wasserzähler automatisch aktualisieren"
description: Addiert die Differenz des SMART Sensors zum manuellen Zählerstand
triggers:
  - entity_id: sensor.wasser_smart
    id: smart_sensor_update
    trigger: state
actions:
  - variables:
      current_smart_liters: "{{ states('sensor.wasser_smart') | float(default=0) }}"
      last_smart_liters: >-
        {{ states('input_number.last_wasser_smart_value') |
        float(default=current_smart_liters) }}
      diff_liters: "{{ current_smart_liters - last_smart_liters }}"
      diff_m3: "{{ diff_liters / 1000 }}"
      current_input_m3: "{{ states('input_number.wasserzaehler_m3') | float(default=0) }}"
  - data:
      level: info
      message: >
        Wasser Update: SMART: {{ last_smart_liters | round(1) }}L → {{
        current_smart_liters | round(1) }}L Differenz: +{{ diff_liters |
        round(1) }}L = +{{ diff_m3 | round(3) }}m³ Aktuell: {{ current_input_m3
        | round(3) }}m³
    action: system_log.write
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ diff_m3 > 0 }}"
        sequence:
          - target:
              entity_id: input_number.wasserzaehler_m3
            data:
              value: "{{ (current_input_m3 + diff_m3) | round(3) }}"
            action: input_number.set_value
          - data:
              level: info
              message: >
                ✅ Wasserzähler aktualisiert: {{ current_input_m3 | round(3)
                }}m³  + {{ diff_m3 | round(3) }}m³ = {{ (current_input_m3 +
                diff_m3) | round(3) }}m³
            action: system_log.write
      - conditions:
          - condition: template
            value_template: "{{ diff_m3 < 0 }}"
        sequence:
          - data:
              level: warning
              message: >
                ⚠️ Negative Wasser-Differenz: {{ diff_m3 | round(3) }}m³ ({{
                last_smart_liters | round(1) }}L → {{ current_smart_liters |
                round(1) }}L)
            action: system_log.write
  - target:
      entity_id: input_number.last_wasser_smart_value
    data:
      value: "{{ current_smart_liters }}"
    action: input_number.set_value
mode: single

Fazit

Auch digitale Wasserzähler, die sich nicht direkt auslesen lassen, können über MQTT problemlos in Home Assistant integriert werden. Mein Wasserzähler und die Anzeige in Homeassistant gehen Hand in Hand. Ich hatte nach einem Verbrauch von etwas über 1000 Liter eine „Abweichung“ von 4 Liter. Ich denke das ist vertretbar.

Damit habt ihr:

✅ Live-Zählerstand in Home Assistant
✅ Stündliche, tägliche oder wöchentliche Verbrauchswerte
✅ Visualisierung im Dashboard
✅ Automationsmöglichkeiten für Benachrichtigungen

So lässt sich der Wasserverbrauch vollständig digital überwachen, ohne zur Wasseruhr gehen zu müssen.