No description
Find a file
conny b08607867e version.json auf v1.0.10 aktualisiert
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 17:10:35 +01:00
.vscode OTA-IP auf 192.168.20.143, Extensions-Empfehlungen ergaenzt, releases/ ignoriert 2026-10-24 11:00:44 +02:00
include Initial commit: PlatformIO ESP8266 Lüftersteuerung 2026-06-27 09:44:06 +02:00
lib Initial commit: PlatformIO ESP8266 Lüftersteuerung 2026-06-27 09:44:06 +02:00
src v1.0.10: Neustart nach 10 min ohne MQTT auch wenn nie verbunden 2026-10-26 17:10:30 +01:00
test Initial commit: PlatformIO ESP8266 Lüftersteuerung 2026-06-27 09:44:06 +02:00
.gitignore OTA-IP auf 192.168.20.143, Extensions-Empfehlungen ergaenzt, releases/ ignoriert 2026-10-24 11:00:44 +02:00
platformio.ini OTA-IP auf 192.168.20.143, Extensions-Empfehlungen ergaenzt, releases/ ignoriert 2026-10-24 11:00:44 +02:00
README.md version.json auf v1.0.10 aktualisiert 2026-10-26 17:10:35 +01:00
version.json version.json auf v1.0.10 aktualisiert 2026-10-26 17:10:35 +01:00

Lüftersteuerung ESP8266

Temperaturgesteuerte Lüftersteuerung für einen ESP8266 (NodeMCU v2). Die Temperatur kommt per MQTT, der Lüfter hängt an Pin D1 (PWM). Status und Konfiguration laufen über ein Webinterface, der Status wird per MQTT publiziert und in Home Assistant automatisch angelegt.

Funktionen

  • Lüftersteuerung: ab dem Temperatur-Schwellenwert (Standard 60 °C) 100 %, darunter aus
  • Failsafe: ohne MQTT-Verbindung oder ohne aktuelle Temperatur läuft der Lüfter auf 100 % (Erstinstallation, WLAN- oder Broker-Ausfall)
  • MQTT: Temperatur abonnieren, Status (fan_percent, fan_on, temperature, threshold) als JSON publizieren
  • Home Assistant: MQTT-Auto-Discovery für Lüfter-Prozent, Temperatur und Lüfter an/aus
  • Webinterface: Live-Status, Dark-Mode, Konfiguration, Reset
  • Optionaler Passwortschutz (Benutzer admin) für Einstellungen und Firmware-Update
  • Updates: PlatformIO-OTA, Upload der .bin im Browser, HTTPS-Update über version.json
  • WLAN-Fallback: ohne Verbindung öffnet sich ein Access Point, der ESP versucht im Hintergrund weiter, sich zu verbinden

Hardware

Teil Anschluss
NodeMCU v2 (ESP8266) –
Lüfter-Steuerung (PWM) D1 (GPIO5)

Erste Inbetriebnahme

  1. Firmware per USB flashen: pio run -e nodemcuv2_usb -t upload
  2. Der ESP öffnet den Access Point Hoymiles-Lüfter (Passwort 12345678).
  3. Mit dem AP verbinden, 192.168.4.1 aufrufen und WLAN-SSID und -Passwort eintragen.
  4. Nach dem Neustart ist der ESP im WLAN erreichbar. Die IP steht im seriellen Monitor (115200 Baud).
  5. Unter /mqttconfig MQTT-Server, Topics und Schwellenwert eintragen.

Bis eine Temperatur per MQTT ankommt, läuft der Lüfter auf 100 %.

Webinterface

Pfad Zweck Passwortschutz*
/ Status (im AP-Modus: WLAN-Konfiguration) nein
/data Live-Daten als JSON nein
/mqttconfig MQTT, OTA, Schwellenwert, Passwort ja
/update Firmware (.bin) im Browser hochladen ja
/trigger-ota gefundenes Update installieren ja
/check-ota nach Update suchen nein
/reset alle gespeicherten Daten löschen nein

* nur, wenn ein Passwort gesetzt ist. /reset ist bewusst immer erreichbar, damit man bei einem vergessenen Passwort zurücksetzen kann. Der Reset löscht auch das Passwort.

Hinweis: Der Passwortschutz gilt nur fürs Webinterface. Der PlatformIO-OTA-Port ist ohne Passwort offen. Wer im selben Netz ist, kann darüber Firmware aufspielen.

MQTT

  • Subscribe-Topic: liefert die Temperatur als Zahl (z. B. 62.5)
  • Publish-Topic: bekommt den Status als JSON:
{"fan_percent":100,"fan_on":1,"temperature":62.5,"threshold":60.0}
  • Home Assistant: Beim Verbinden werden unter homeassistant/… drei Entitäten angelegt (retained). Sie hängen an einem Gerät "Luefter ESP8266".

Firmware aktualisieren

Per PlatformIO (OTA): In platformio.ini die IP des ESP bei upload_port eintragen, dann pio run -e nodemcuv2 -t upload.

Per USB: pio run -e nodemcuv2_usb -t upload

Per Browser: /update aufrufen und die Datei firmware.bin hochladen.

Per Update-Check (HTTPS):

  1. Unter /mqttconfig die URL zur version.json eintragen. Bei einem privaten Repo zusätzlich Benutzer und Zugriffstoken.
  2. Auf der Statusseite "Auf Updates prüfen" klicken. Der ESP prüft außerdem alle 24 Stunden von selbst.
  3. Gibt es eine neuere Version, erscheint "Jetzt aktualisieren".

Die version.json sieht so aus:

{"version":"1.0.10","bin":"https://forgejo.black-mail.org/conny/luefter-steuerung/releases/download/v1.0.10/firmware.bin"}

HTTPS-Zertifikate werden nicht geprüft (setInsecure()).

Neue Version veröffentlichen

  1. FW_VERSION in src/main.cpp erhöhen.
  2. Bauen: pio run -e nodemcuv2_usb. Die Datei liegt unter .pio/build/nodemcuv2_usb/firmware.bin.
  3. Auf dem Forgejo ein Release vX.Y.Z anlegen und firmware.bin als Anhang hochladen.
  4. version.json auf die neue Version setzen, committen und pushen. Erst danach sehen die Geräte das Update.

Projektstruktur

src/main.cpp      gesamte Firmware
platformio.ini    Build- und Upload-Umgebungen (nodemcuv2 = OTA, nodemcuv2_usb = USB)
version.json      aktuelle Version für den Update-Check

Bibliotheken

PubSubClient, ArduinoJson (v7), Preferences (vshymanskyy/Preferences) sowie die ESP8266-Arduino-Standardbibliotheken.