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

JEDER KANN DAS!!!

Regenmessung Dashboard Ansicht
Regenmesser MS-WH-SP-RG
Auara DoorSensor

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
				
			
Dashboard Niederschlag Card

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
				
			
Dashboard Regenfall Chart Card

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

				
			
Regensensor zurück setzen Dashboard Taster

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

				
			

★☆★ Wenn ihr den Kanal unterstützen wollt über ★☆★

oder über

Vielen Dank im Voraus, Euer Edi.