Featured image of post Windmessgeräte mit ESPHome in Home Assistant integrieren

Windmessgeräte mit ESPHome in Home Assistant integrieren

In diesem Beitrag zeige ich euch, wie ihr einen professionellen Windmesser mit minimalem Aufwand und ohne große Elektronikkenntnisse mithilfe von ESPHome in Home Assistant oder andere Smart-Home-Hubs integriert.

YouTube Video
Zum Aktivieren des Videos musst Du auf das Bild klicken. Ich möchte Dich darauf hinweisen, dass durch die Aktivierung Daten an YouTube übermittelt werden.

Was ihr dafür braucht

Um loszulegen, benötigt ihr nur wenige Bauteile:

  • Einen ESP8266-Mikrocontroller (hier kaufen*)
  • Einen Windmesser (hier kaufen*)
  • Eine 5V Stromversorgung (z. B. ein altes Handyladegerät)
  • ESPHome (bereits installiert)
  • Euren Smart-Home-Hub, hier am Beispiel von Home Assistant

Falls ihr ESPHome noch nicht kennt, empfehle ich Euch zuerst diese Einführung zu diesem Thema.

Wind messen

Der Windmesser misst die Windbewegung über Umdrehungen. Jede Umdrehung erzeugt elektrische Impulse, die der Mikrocontroller erfasst. Anhand einer definierten Formel (abhängig vom Windmesser-Modell) wird die aktuelle Windgeschwindigkeit berechnet und per Wifi an Euren Smarthome-Hub übertragen.

Verkabelung

Verbindet die Kabel des Windmessers mit den GPIO-Pins des Mikrocontrollers. Nutzt ein Standard-5-Volt-Netzteil, um den Mikrocontroller mit Strom zu versorgen. Ein altes Handyladegerät reicht völlig aus. Wichtig: Notiert euch, an welchem GPIO-Pin der Windmesser angeschlossen ist – diese Information braucht ihr später für die Konfiguration.

Software-Setup – Programmierung mit ESPHome

Grundkonfiguration erstellen

Beginnt mit einer einfachen Konfigurationsdatei in ESPHome. Sie enthält die grundlegenden Informationen, die euer Mikrocontroller braucht, z.B.

  • Name des Geräts (z. B. „windsensor“),
  • Plattform (ESP8266 oder ESP32, je nach Mikrocontroller),
  • WiFi-Einstellungen (SSID und Passwort eures WLANs).

Dies alles passiert in den Zeilen 1-26 unten.

Sensor für den Windmesser definieren

Der Windmesser wird als pulse_counter konfiguriert. Das Modul zählt die Impulse und berechnet mit einem Filter die Windgeschwindigkeit (ab Zeile 37). Dazu greifen wir auf die Formel zurück, die der Hersteller uns in seiner Anleitung aufgezeigt hat, und setzen sie hier als Lambda-Funktion in die Sensordefinition ein (Zeile 62).

Durchschnittswerte und Windböen berechnen

Neben der aktuellen Windgeschwindigkeit sind Durchschnittswerte und maximale Windgeschwindigkeiten (Windböen) besonders interessant. Dazu verwendet ihr Template-Sensoren mit entsprechenden Filtern.

  • Durchschnittswert (sliding_window_moving_average): Berechnet die mittlere Windgeschwindigkeit über die letzten 30 Minuten (Zeile 81)
  • Maximalwert (max): Speichert die höchste Geschwindigkeit der letzten 5 Minuten (Windböen) (Zeile 96)

Hier die komplette Konfiguration:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
esphome:
  name: windspeed
  friendly_name: Windmesser
  
esp8266:
  board: nodemcuv2

# Enable Logging
logger:

# Home Assistant API, wird benötigt damit HomeAssistant auf den Mikrokontroller zugreifen kann
api:
  encryption:
    key: "xxx"

ota:
  - platform: esphome
    password: "xxx"

web_server:
  port: 80
  
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# Definition der Sensoren die in HomeAssistant als Entities bereitgestellt werden
sensor:
  # Sensor der die Stärke des WiFi Signals des Mikrokontrollers zeigt
  - platform: wifi_signal
    name: "WiFi Signal"
    update_interval: 60s
  # Sensor der die Betriebszeit des Mikrokontrollers zeigt
  - platform: uptime
    name: Uptime 
  # Messung der momentanen Windgeschwindigkeit mittels "pulse_counter"
  - platform: pulse_counter
    name: 'Wind Speed Realtime'
    icon: "mdi:windsock"
    id: wind_speed
    unit_of_measurement: 'km/h'
    device_class: wind_speed
    state_class: measurement
    # Häufigkeit mit der das Signal des Windmessers geprüft wird
    internal_filter: 1us 
    # Häufigkeit mit der die Windgeschwindigkeit in HomeAssistant aktualisiert wird
    update_interval: 1s
    accuracy_decimals: 1
    # Verkabelung des Windmessers
    pin:
      number: D5
      inverted: true
      mode:
        input: true
        pullup: true
    # Stellt eine zusätzliche Entity mit der Gesamtzahl der Impulse bereit (nur zu Debug-Zwecken sinnvoll)
    total:
       name: "Total Pulses"
    # Berechnet die Windgeschwindigkeit mit der Formel des Herstellers: Windgeschwindigkeit (km/h) = 0.8*Hz +3
    # In der Filterdefinition wird die Windgeschwindigkeit mit Hilfe der Formel berechnet
    # Die Eingangsvariable x entspricht dabei der Anzahl "Pulse pro Minute"
    filters:
      - lambda: !lambda |-
          if (x == 0) return 0;
          return (x/60)*0.8+3;
      - min:
          window_size: 2
          send_every: 1
  # Sensor, der die "mittlere Windgeschwindigkeit" bereitstellt
  - platform: template
    name: "Wind Speed Average"
    icon: "mdi:windsock"
    unit_of_measurement: 'km/h'
    device_class: wind_speed
    state_class: measurement
    lambda: |-
      return id(wind_speed).state;      
    update_interval: 1s
    # Definition Windgeschwindigkeit = Mittlerer Wind der letzten 30 min
    filters:
    - sliding_window_moving_average:        
        window_size: 1800
        send_every: 1
  # Sensor, der die max. Geschwindigkeit von Windböen
  - platform: template
    name: "Wind Speed Gusts"
    icon: "mdi:windsock"
    unit_of_measurement: 'km/h'
    device_class: wind_speed
    state_class: measurement
    lambda: |-
      return id(wind_speed).state;      
    update_interval: 1s
    # Böe = Momentane Maximalgeschwindigkeit innerhalb der letzten 5min
    filters:
    - max:        
        window_size: 300
        send_every: 1

Konfiguration aufspielen

Öffnet ESPHome und verbindet euren Mikrocontroller per USB. Klickt auf „Install“ und ladet die Konfiguration hoch. Wenn der Mikrocontroller bereits programmiert wurde, könnt ihr künftige Updates kabellos („Over the Air“) aufspielen.

Integration in Home Assistant

ESPHome macht die Integration besonders einfach:

Öffnet Home Assistant. Navigiert zu „Einstellungen > Integrationen > Integration hinzufügen“. Wählt „ESPHome“ aus und gebt die IP-Adresse des Mikrocontrollers an. Tragt den Verschlüsselungsschlüssel aus der ESPHome-Konfiguration ein. Sobald die Integration abgeschlossen ist, könnt ihr die erfassten Werte (aktuelle Geschwindigkeit, Durchschnitt, Böen) in Home Assistant einsehen und für Automationen nutzen.

Ausblick

Mit den erfassten Winddaten stehen euch zahlreiche Steuerungsmöglichkeiten offen, z. B.:

  • Markisen automatisch einfahren, wenn eine kritische Windgeschwindigkeit erreicht wird.
  • Rollos schließen, um Fenster bei Sturm zu schützen.
  • Warnmeldungen senden, wenn extreme Wetterbedingungen drohen.

Habt ihr Fragen oder Kommentare? Nutzt gerne die Kommentarfunktion hier oder unter dem Video! Wenn euch der Beitrag gefallen hat, freue ich mich über einen Daumen hoch 👍 und ein Abo für den Kanal bei YouTube, damit ihr keine neuen Videos verpasst.

Hinweis: Die so (*) markierten Links sind Affiliate-Links. Das bedeutet, dass ich eine kleine Provision erhalte, wenn ihr über diese Links einkauft. Für euch entstehen dabei keine zusätzlichen Kosten. Die Einnahmen helfen mir, diesen Blog und meinen YouTube-Kanal zu betreiben und weiterhin kostenlose Inhalte für euch zu erstellen. Vielen Dank für eure Unterstützung!

Joachim
Zum Aktivieren der Kommentare musst Du auf 'Kommentare anzeigen' klicken. Ich möchte Dich darauf hinweisen, dass durch die Aktivierung Daten an Disqus übermittelt werden.
Kommentare anzeigen
Erstellt mit Hugo
Theme Stack gestaltet von Jimmy