Changelog

All notable changes are documented here, grouped by release version.


2.4.0 (Build 186) — 2026-03-15

Firmware-Binaries

  • firmware_zigbee.bin — ESP32-C5 ZigBee + BLE Variante
  • firmware_matter.bin — ESP32-C5 Matter + BLE Variante
  • firmware_esp8266.bin — ESP8266 (OS 3.x)

Neue Features

Matter (CHIP) Protokoll

  • Vollständige Matter-Protokoll-Unterstützung für ESP32-C5 hinzugefügt.
  • Commissioning-Fenster-Steuerung und QR-Code-Ausgabe implementiert.
  • Matter Pairing-Informationen werden per JSON-API bereitgestellt.

ZigBee Gateway-Modus

  • Neue API für die Konfiguration des IEEE 802.15.4-Radios: Laufzeit-Umschaltung zwischen Matter- und ZigBee-Modus.
  • ZigBee Gateway-Modus für ESP32-C5: Devices joinen, verwalten und abfragen.
  • Konfigurationspersistenz im LittleFS im JSON-Format.
  • Neue Endpoints: Radio-Modus lesen/setzen, ZigBee-Netzwerk joinen, Geräte im Gateway-Modus verwalten.

ZigBee Client-Modus — Lokale Datenpunkte

  • OpenSprinkler meldet eigene Sensordaten, Zonen, Programme und Regensensorstatus an einen ZigBee-Coordinator.
  • ZCL-Endpoints für Temperatur, Feuchte, Durchfluss, Analogsensoren, Zonen, Programme und Regensensoren.
  • Periodische Synchronisierung der Sensorwerte und Zonenzustände mit dem ZigBee-Coordinator.

Online OTA Firmware-Updates

  • Online-Update-Verwaltung in online_update.cpp / online_update.h.
  • Manifest-Prüfung: automatische Erkennung verfügbarer Firmware-Versionen.
  • Neue Endpoints zum Abfragen des Update-Status, Starten eines Updates und Abrufen von Backup-Daten.

MCP Server

  • OpenSprinkler MCP-Server unter tools/mcp-server/ implementiert.
  • Stellt die gesamte OpenSprinkler REST-API als MCP-Tools für KI-Assistenten (z. B. GitHub Copilot) bereit.
  • Unterstützte Tools: get_all, get_debug, get_sensors, get_zigbee_devices, get_ble_devices, get_system_resources, get_station_status, get_options und weitere.

BLE & ZigBee Koexistenz

Radio Coexistence Manager

  • Neues Modul radio_coex.h / radio_arbiter für WiFi/ZigBee/BLE-Koexistenz auf ESP32-C5.
  • Radio-Arbiter für priorisierte Steuerung: Web-Traffic hat Vorrang, periodische BLE-Scans werden parallel ermöglicht.
  • ZigBee wird während BLE-Scans in niedrigerer Priorität betrieben (sensor_zigbee_pause / sensor_zigbee_resume).
  • Frühzeitige Initialisierung von BLE und ZigBee in sensors.cpp, um korrekte Ressourcen-Allokation sicherzustellen.

ZigBee Device Info Anreicherung

  • Hersteller- und Modellinformationen werden aus gespeicherten Sensordaten in ZigbeeDeviceInfo übernommen.
  • Basic Cluster (ZCL): ManufacturerName und ModelIdentifier werden für ZigBee-Geräte abgefragt und persistiert.
  • Vendor API-Lookups für bekannte ZigBee-Sensorhersteller implementiert.
  • Profil-Hinting für Tuya-Geräte hinzugefügt.

BLE Verbesserungen

  • BLEDeviceInfo erweitert um Geräteinformations-Service (DIS)-Felder (Hersteller, Modell).
  • adv_data_pending_push-Flag für Management von Advertisement-Data-Pushes.
  • Thread-sicherer Zugriff auf discovered_ble_devices mittels Mutex in sensor_ble.cpp.
  • Batteriestatus-Initialisierung auf UINT32_MAX für noch nicht gemessene Werte.

Sensoren & Sensor-API

Verbesserungen

  • Neue Scratch-Tests für ADS1115 und SC16IS752 zur zuverlässigeren Sensor-Erkennung.
  • detect_asb_board-Funktion auf neue Erkennungsmethoden für ADS1115 aktualisiert.
  • I2C-Erkennungslogik für ADS1115 angepasst, um falsche Negative auf ESP8266 zu vermeiden.
  • Sensor-Unit-ID-Mapping überarbeitet; neue Einheit „Liter" hinzugefügt; maximale Anzahl der Sensor-Einheitsnamen erhöht.
  • Internen Sensor-Daten-Handler verbessert: data_ok-Flag wird auch gesetzt, wenn Daten unverändert bleiben.

Tuya Protokoll

  • Tuya-spezifisches ZigBee-Protokoll implementiert: DP-Reports werden verarbeitet und auf Standardattribute gemappt.
  • Verbesserte Gateway-Logik für Geräteanmeldungen und Basic-Cluster-Abfragen.

MQTT Deferred Push & Koordination

  • MQTT-Nachrichten werden bei Netzwerkausfall in einer Warteschlange gepuffert und nach Verbindungswiederherstellung gesendet.
  • MQTT-Start wird während ZigBee-Join-Mode oder ZigBee-Lock übersprungen, um Interferenzen zu vermeiden.
  • Verbesserte ZigBee-Sensor-Reportlogik mit Boost-Management und Join-Mode-Berücksichtigung.

Web-API / HTTP-Server

Neuer Endpoint: Monatlicher Wasserverbrauch (/jw)

  • Gibt monatliche Wasserverbrauchsdaten zurück, inkl. Pulzrate und aktuellen Durchfluss-Aufzeichnungen.
  • server_json_matter und server_zigbee_status enthalten nun Sensor-Status für SN1/SN2 und Wetterdaten.

Matter Pairing

  • JSON-Ausgabe für Matter Pairing-Informationen (QR-Code und manueller Pairing-Code) über die API verfügbar.

ESP32-C5 Speicher-Optimierungen

PSRAM

  • PSRAM-Analyse-Utilities eingeführt (psram_debug.cpp, analyze_psram.py).
  • UI-Animationsarray und Reboot-Ticker nutzen EXT_RAM_BSS_ATTR für bessere Speicherverwaltung.

TLS 1.3

  • TLS 1.3 aktiviert; ältere Protokolle (TLS 1.2, DTLS) deaktiviert.
  • Hardware-Beschleunigung für AES, SHA, ECC und MPI konfiguriert.
  • Nur notwendige ECC-Kurven und kryptographische Algorithmen für TLS 1.3 beibehalten.

AES Software-Fallback

  • aes_sw_fallback.cpp: AES-Software-Fallback-Wrapper für Situationen mit niedrigem internem RAM.
  • Eigene mbedTLS-Memory-Allocatoren nutzen SPIRAM, wenn interner RAM erschöpft ist.
  • Pre-Build-Skript pre_build_sdkconfig.py zur automatischen sdkconfig-Optimierung.

Bugfixes

Bereich Beschreibung
Netzwerk WiFi-State-Machine: Unmögliche STA-Bedingung im AP-Modus-Zweig entfernt; verhinderte korrekte Reconnect-Logik (IP 0.0.0.0 nach Verbindungsabbruch).
Sensoren Legacy-Binär-Ladelogik für Sensoren entfernt; beschädigte Sensor-Dateien werden beim Laden umbenannt statt abgestürzt.
ESP8266 Pin-Definitionen für ESP8266 in defines.cpp / defines.h ergänzt.
Zigbee Nicht unterstützte Sensortypen werden beim Laden korrekt behandelt; Roh-JSON-Daten werden beibehalten.
Build platformio.ini Upload-Befehle und Konfigurationen korrigiert.

Bekannte Einschränkungen

  • Die ZigBee- und Matter-Varianten können auf ESP32-C5 nicht gleichzeitig aktiv sein; der Radio-Modus muss per API umgeschaltet werden.
  • Online-Updates erfordern eine aktive Internetverbindung und ein erreichbares Update-Manifest.

Ältere Versionen

Für Changelogs älterer Versionen (2.3.x und früher) siehe archive.md bzw. die GitHub Releases-Seite.