Regenmenge messen mit Zigbee – DIY
Dieses Projekt basiert auf dem DIY Zigbee rain gauge von parrel.
Ich habe das Projekt nachgebaut, eine Video-Anleitung erstellt und den Code überarbeitet sowie vereinfacht und deutsch kommentiert. Ich verwende ausserdem ausschließlich das metrische System in diesem Beispiel. Außerdem zeige ich euch, wie ihr die ApexCharts-Card über HACS integriert und konfiguriert und alle anderen benötigten Grundlagen, die das Projekt benötigt, und danach bin ich sicher,



Hier findet ihr das benötigte Material!
Zusätzlich braucht ihr einen Lötkolben samt Lötzinn, einen feinen Schlitzschraubendreher sowie ein Cuttermesser.
Regensensor – Vorbereitung
Der Regensensor funktioniert nach dem Prinzip einer Wippe. Jedes Mal, wenn die Wippe voll ist, kippt sie um und ein kleiner Magnet löst einen Impuls aus.

Um diese Impulse zählen zu können, schließen wir den Aqara Tür- und Fenstersensor an die Kontakte des Regensensors an. Dazu müssen wir das Gehäuse des Aqara Sensors vorsichtig öffnen und zwei Kabel an den Reed-Kontakt löten.
Kalibrierung: Wie viel ist ein Wippenschlag?
Damit Home Assistant weiß, wie viel Regen (in mm/m²) gefallen ist, müssen wir berechnen, wie viel Wasser ein einziger „Flip“ der Wippe darstellt.
2. Wassermenge pro Flip: Mit einer Spritze Wasser einfüllen, bis die Wippe kippt (z.B. 1,67 ml).
3. Berechnung:
(Milliliter / Fläche in cm²) * 10 = mm pro Flip(1.67 / 55) * 10 = 0.3036 mm pro FlipCode-Integration in Home Assistant
Zuerst öffnen wir den File Editor und erstellen im Hauptverzeichnis homeassistant/ einen neuen Ordner mit dem Namen packages.
Anschließend navigieren wir in diesen Ordner und legen eine neue Datei mit dem Namen regenmesser.yaml an.
In diese Datei könnt ihr nun den folgenden YAML-Code einfügen und anschließend speichern.
{% set mm_per_flip = 0.30303 %}YAML – regenmesser.yaml (zum Aufklappen)
# 1. Zählt die "Flips" des Regensensors seit Mitternacht
sensor:
- platform: history_stats
name: Rainsensor Flips Today
entity_id: binary_sensor.regensensor_opening
state: 'off'
type: count
start: "{{ as_timestamp(now().replace(hour=0, minute=0, second=0, microsecond=0)) }}"
end: "{{ as_timestamp(now()) }}"
unique_id: rainsensor_flips_today
# 2. Berechnet die tägliche Regenmenge und die Intensität
template:
- sensor:
# Sensor für täglichen Regen
- name: Rainfall today
unique_id: rainfall_today
unit_of_measurement: 'mm'
state_class: total_increasing
state: >-
{% set count = states('sensor.rainfall_today') | int(0) %}
{% set mm_per_flip = 0.30303 %}
{{ (count * mm_per_flip) | round(1, 'floor') }}
availability: >-
{{ states('sensor.rainfall_today') not in ['unknown', 'unavailable'] }}
# 2b. Aktuelle Regenintensität in mm/h
- name: "Rain intensity"
unique_id: rainfall_per_hour
unit_of_measurement: 'mm/h'
state_class: measurement
state: >-
{% set gradient = state_attr('binary_sensor.rainfall_trend', 'gradient') | float(0) %}
{% set rain_hour = (gradient * 3600) | round(1, 'floor') %}
{% if rain_hour >= 0 %}
{{ rain_hour }}
{% else %}
{{ 0 }}
{% endif %}
availability: >-
{{ state_attr('binary_sensor.rainfall_trend', 'gradient') is not none }}
# 3. Trend-Sensor zur Berechnung der Änderungsrate der täglichen Regenmenge
binary_sensor:
- platform: trend
sensors:
rainfall_trend:
entity_id: sensor.rainfall_today
max_samples: 4
# 4. Zähler für wöchentliche, monatliche und jährliche Regenmengen
utility_meter:
rain_week:
source: sensor.rainfall_today
cycle: weekly
rain_month:
source: sensor.rainfall_today
cycle: monthly
rain_year:
source: sensor.rainfall_today
cycle: yearlyDamit unsere neu erstellte YAML-Datei auch eingebunden wird, öffnen wir nun die configuration.yaml und ergänzen unter dem Abschnitt homeassistant: den Verweis auf den packages-Ordner.
homeassistant:
packages: !include_dir_named packagesWenn wir keine Fehlermeldung bekommen haben, dann können wir jetzt Home Assistant neu starten.
Dashboard einrichten
Als Nächstes möchten wir die Daten in unserem Dashboard anzeigen.
Wählt dazu die Stelle aus, an der ihr die Karte einfügen möchtet, und fügt eine neue Karte hinzu.
Der Kartentyp ist dabei zunächst egal, da wir den Inhalt im Anschluss direkt im Code bearbeiten.
Sobald die Karte erstellt ist, klickt unten links auf „Code-Editor anzeigen“ und fügt folgenden Code ein:
YAML – Dashboard Karte: Niederschlag Übersicht (zum Aufklappen)
type: entities
title: Niederschlag Übersicht
entities:
- entity: binary_sensor.regensensor_opening
name: Regensensor Status
- entity: sensor.rainsensor_flips_today
name: Flips Heute
- entity: sensor.rainfall_today
name: Regen Heute
icon: mdi:water
- entity: sensor.rain_intensity
name: Regenintensität
icon: mdi:water
- entity: sensor.rain_week
name: Wöchentlicher Regenfall
icon: mdi:weather-rainy
- entity: sensor.rain_month
icon: mdi:weather-rainy
name: Monatlicher Regenfall
- entity: sensor.rain_year
name: Jährlicher Regenfall
icon: mdi:weather-rainy
state_color: true
ApexChart im Dashboard – für Fortgeschrittene
Für die Chart-Karte verwenden wir die ApexCharts-card, die sich im HACS (Home Assistant Community Store) befindet. Wie ihr HACS in Home Assistant installiert, erfahrt ihr hier.
Im HACS installieren wir die ApexCharts-card von RomRider und fügen sie in unserem Dashboard hinzu und dort könnt ihr folgenden Code einfügen.

YAML – ApexCharts Card: Regenfall (zum Aufklappen)
type: custom:apexcharts-card
graph_span: 30d
header:
show: true
title: Regenfall
show_states: true
span:
start: day
offset: "-29d"
series:
- entity: sensor.rainfall_today
color: aqua
type: column
group_by:
func: max
duration: 1d
GRATULATION! Das Projekt ist nun fertiggestellt, und ich hoffe, es hat euch gefallen. Lasst mir gerne einen Kommentar da und teilt mir mit, wie es euch mit dem Regenmengen-Sensor-Projekt ergangen ist oder ob ihr auf irgendwelche Probleme gestoßen seid.
Bonus: Zähler zurücksetzen
Um den Zähler wieder auf 0 zu setzen, können wir einen Taster in Lovelace Dashboard erstellen, der alles wieder zurück setzt.
YAML – Dashboard Karte: Zähler zurücksetzen (zum Aufklappen)
type: button
name: Regenzähler zurücksetzen
icon: mdi:restart
tap_action:
action: call-service
service: utility_meter.reset
data:
entity_id:
- sensor.rain_week
- sensor.rain_month
- sensor.rain_year
Zeitraum der ApexCharts-Karte anpassen
Ihr könnt den Startzeitraum der Karte festlegen oder ihr wartet einfach das Monat ab, bis die „Testdaten“ verschwinden. Es ist nicht empfohlen die Datenbank zurückzusetzen, zumindest nicht auf einem „Live-System“.
span:
start: minute
offset: +0d # beginnt heuteFotos vom Projekt aus der Community

Hier seht ihr den Regensensor bei Walter im Einsatz.
Vielen Dank für das Foto.

Hier ist der Regensensor bei Wolfgang im Betrieb zu sehen.
Vielen Dank für das Foto.
Wenn dir dieser Beitrag geholfen hat, freue ich mich über einen kleinen Beitrag für die Kaffeekasse.

