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ötig, und danach bin ich sicher,
JEDER KANN DAS!!!



Hier findet ihr das benötigte Material!
Produkt | Amazon |
---|---|
Regenmesser MS-WH-SP-RG | shopping_cart Bei Amazon kaufen |
Aqara Zigbee Tür - und Fenstersensor | shopping_cart Bei Amazon kaufen |
Produkt | Aliexpress |
---|---|
Regenmesser MS-WH-SP-RG | shopping_cart Bei Aliexpress kaufen |
Aqara Zigbee Tür - und Fenstersensor | shopping_cart Bei Aliexpress kaufen |
Alle Links in dieser Tabelle sind Aliexpress Affiliate Links.
Zusätzlich braucht ihr einen Lötkolben samt Lötzinn, einen feinen Schlitzschraubendreher sowie ein Cuttermesser.
Vorbereitungen in Home Assistant
Für dieses Projekt benötigt ihr ein laufendes Home Assistant sowie eine funktionierende Zigbee-Integration.
Eine Anleitung zur Installation von Home Assistant findet ihr hier, und wie ihr Home Assistant und Zigbee einrichtet als Video, wird hier erklärt.
Um später die configuration.yaml
bearbeiten zu können, wird außerdem das Add-on File Editor benötigt. Wie ihr dieses installiert, erfahrt ihr in dieser Anleitung.
Hardware zusammen bauen
Hier gebe ich euch nur eine kurze Zusammenfassung zum Zusammenbau der Hardware. Für ausführliche Details schaut euch am besten das passende YouTube-Video an.
Zuerst öffnen wir den Aqara Türsensor, bis die Leiterplatte freigelegt ist. Anschließend entfernen wir den Magnetschalter und löten die beiden Adern des Regenmessers an dessen Stelle.
Bevor alles wieder zusammengebaut wird, empfiehlt es sich, den Zigbee-Sensor mit Home Assistant zu verbinden und die Funktion vorab zu testen.
Sensor Kalibrieren und Berechnungen anstellen
Zum Kalibrieren verwende ich 10 ml Wasser und zähle, wie oft sich die Wippe bewegt und uns bei jeder Wippbewegung einen Puls übergibt.
Bei mir waren es 6 Pulse und damit können wir wir Berechnen, dass 10 ml / 6 Pulse = 1,67 ml pro Impuls.
Die standardmäßige Einheit zur Angabe der Regenmenge ist:
Millimeter (mm) Niederschlagshöhe pro Quadratmeter.
Das bedeutet:
1 mm Regen = 1 Liter Wasser pro Quadratmeter Fläche.
Zum Messen verwenden wir eine Fläche von 50 mm x 110 mm, und das ergibt eine Fläche von 5500 mm² = 0.0055 m²
Wie viel Millimeter Regen ergibt ein Impuls?
Da 1 mm Regen auf 1 m² Fläche = 1000 ml ist, ergibt sich auf unserer kleineren Fläche:
1 mm Regen = 1000 ml × 0,0055 m² = 5,5 ml
Das heißt:
5,5 ml Wasser auf unserer Fläche = 1 mm Regen
Umrechnung in Impulse
Wenn 1 Impuls = 1,67 ml und
1 mm Regen = 5,5 ml, dann gilt:
5,5 ml / 1,67 ml/Impuls ≈ 3,3 Impulse pro mm Regen
Oder umgekehrt:
1 Impuls ≈ 0,30303 mm Regen
Das YAML für unser Projekt
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.
Solltet ihr andere Werte für 0,30303 mm Regen pro Impuls errechnet haben, dann könnt ihr eure Wert hier bei template: – sensor eintragen: {% set mm_per_flip = 0.30303 %}
# 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.rainsensor_flips_today') | int(0) %}
{% set mm_per_flip = 0.30303 %}
{{ (count * mm_per_flip) | round(1, 'floor') }}
availability: >-
{{ states('sensor.rainsensor_flips_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: yearly
Damit 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.
Wenn wir keine Fehlermeldung bekommen haben, dann können wir jetzt Home Assistant neu starten.
homeassistant:
packages: !include_dir_named packages
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:
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 erfährt 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.

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.
Wenn dir das Projekt gefallen hat und du meine Arbeit unterstützen möchtest, freue ich mich über eine Spende via PayPal oder Twint. Dein Beitrag hilft mir, weiterhin spannende Inhalte zu erstellen!
Vielen Dank, euer Edi
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.
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 eine «Live-System»
span:
start: minute
offset: +0d # beginnt heute