Release 2.4.0 (build 219)
Firmware binaries:
- firmware_zigbee.bin – ESP32-C5 ZigBee + BLE variant
- firmware_matter.bin – ESP32-C5 Matter + BLE variant
- firmware_esp8266.bin – ESP8266 (OS 3.x)
All releases: https://github.com/opensprinklershop/OpenSprinkler-Firmware/releases
Added
- Remote-JSON-/MQTT-Sensor: Array-Index in verschachtelten Pfaden: Die
[N]-Array-Index-Adressierung funktioniert jetzt auch auf nicht-letzten Segmenten eines Filters, z. B.ch_soil[3]|humidity. Intern wird die Auswahl des N-ten Array-Elements durch wiederholte Segment-Suche emuliert; die abschließende[N]-Variante (z. B.hourly|wind_gusts_10m[3]) bleibt weiterhin gültig. - OTA-Fähigkeits-Erkennung (Dual-OTA): Der Update-Server meldet nun seine Plattform-Fähigkeiten als JSON (
dualOta,uploadPort,platform). ESP32-C5 meldetdualOta:1, ESP32/ESP8266dualOta:0, sodass das UI den passenden Upload-Weg wählen kann.
Changed
- Sensor-Gruppen: Mehrfachzuordnung über Gruppen-Nr: Ein Gruppen-Sensor (MIN/MAX/AVG/SUM) kann jetzt selbst eine Gruppen-Nr besitzen. Ist diese gesetzt (≠ 0), fließen alle Sensoren mit derselben Gruppen-Nr in die Berechnung ein – dadurch können mehrere Gruppen-Sensoren (z. B. AVG und MIN) dieselben Mitglieder auswerten und ein Sensor lässt sich mehreren Gruppen zuordnen. Andere Gruppen-Sensoren werden dabei übersprungen, damit sich Gruppen nicht gegenseitig aufsummieren. Bleibt die Gruppen-Nr des Gruppen-Sensors leer bzw.
0, gilt weiterhin das bisherige Verhalten: Mitglieder verweisen über ihre Gruppen-Nr auf die Sensor-Nr des Gruppen-Sensors (verschachtelte Gruppen bleiben erhalten). - ESP32-C5: Optimierung des internen RAM: Sobald Ethernet + RainMaker aktiv sind, wird die WiFi-STA abgeschaltet, um ~24 KB knappen internen RAM freizugeben (und das 2,4-GHz-Radio an Zigbee/BLE zu übergeben). Zusätzlich wurde der Task-Stack des
local_ctrl-HTTPD von 10 KB auf 6 KB verkleinert – der Transport ist reines HTTP, der volle TLS-Stack wird nicht benötigt. - Speicherschonende JSON-Erzeugung: Große Konfigurations-/JSON-Puffer werden nicht mehr auf dem Stack gehalten; das
ArduinoJson::JsonDocumentwird jetzt heap-basiert (new (std::nothrow)) angelegt. Die Sensor-Liste (/sl) und weitere Endpunkte bleiben auch unter Speicherdruck bedienbar (Notfall-Fallback mit"warnings":["LOW_MEMORY"]), statt den Webserver hängen zu lassen.
Fixed
- ESP32-C5 Zigbee-Gateway: Absturz (Load-Access-Fault) verhindert: Nach einem fehlgeschlagenen
Zigbee.begin()(typisch bei erschöpftem internen RAM) wird kein erneuterbegin()-Versuch mehr unternommen. Ein zweiter Aufruf hätte auf bereits anZigbeeCoreübergebene, veraltete Endpoint-Zustände zugegriffen und das System zum Absturz gebracht. Der Gateway degradiert nun kontrolliert (bis zum nächsten Reboot deaktiviert), statt zu paniken. ESP_ERR_HTTPD_TASKbeim Boot (ESP32-C5): Behebt das Fehlschlagen der HTTPD-Task-Erzeugung, wenn das Zigbee-Gateway beim Start bereits den Großteil des internen RAM belegt hatte (siehe Stack-Right-Sizing oben).- Stack-Overflow unter Speichermangel: Beseitigt mögliche Stack-Überläufe durch die Auslagerung großer Puffer vom Stack in den Heap.