1.61
ESP32 Arduino 3.3.7 ESP-IDF v5.5.4
VSCode 1.113 pioarduino IDE 1.3.2
InnuAPID AutoTune PID lib 1.10.18
InnuTask lib 0.10.16
InnuNextion Display lib 0.9
InnuLog Debug lib serial monitor
InnuFramework CSS/JS bootstrap 5.3.8
Breaking / Upgrade Notes: when updating from version 1.59 or older, run AutoTune once after the update
New PID engine V 1.60 cannot use or migrate PID parameters from 1.59 and older
PID parameters from V 1.59 and older are reset to 0.0 during WebUpdate proccess.
- Optimiert: Sortierung BrewFather Rezepte und Sude über die Tabellenspalten implementiert
- Optimiert: Sortierung BrewFather Rezepte und Sude aus Firmware in den Browser verschoben
- Optimiert: Pagination für BrewFather Rezepte und Sude an
start_after=<letzte_id>angepasst - Korrektur: maximale Anzahl an BrewFather Rezepten und Sude auf 300 beschränkt
- Geändert: Anpassungen BrewFather API aktualisiert (Stand 3.0.0 - 12.03.2026)
- Update: ESP-IDF 5.5.4
- Optimiert: WebIf-Initial- und Reload handling optimiert (
reqVis,cfgjson, Plan-Header,/channel,/checkAliveSSE, Reconnect, Sichtbarkeit) - Optimiert: WebIf-Listen und Modalpfade (
Actor,Sensor,Sud,System,Induction,HLT,Sud kettle) optimiert. Select-Aufbau, Profil-Listen, PID-Tune-Init und Sichtbarkeitslogik sind kompakter und einheitlich. Redundanten SSE Informationen entfernt - Korrektur: gitbook links
- Update: ESPAsyncWebServer 3.10.3
- Update: pioarduino 1.3.1
- Korrektur: Off-by-one im
NEXT_STEP-Pfad behoben.NEXTblockiert am letzten gültigen Maische-Schritt jetzt korrekt; zuvor konnte der Ablauf auf einen ungültigen Step-Index weiterlaufen - Korrektur: Fermenter-Stop über
Btn-Powerräumt den Prozess jetzt sauber auf;MODE_FERM -> MODE_NONEruftstopFerm()direkt auf stattmashStateund Timer inkonsistent stehen zu lassen - Korrektur:
setFerm(...)persistiert den aktiven Fermenterplan jetzt direkt inconfig.txt; dadurch funktioniert Reboot-Resume im Ramp-Step und im finalen Step wieder konsistent - Korrektur:
/setFermakzeptiert jetzt zusätzlich vollständige Fermenter-Planobjekte mitmisc[]/ferm[], übernimmtFername,durationundautonextsauber und vermeidet damit leere Namen sowie fehleranfällige Zwischenkonvertierungen - Korrektur:
/setFermschreibt Fermenterpläne explizit auf/Fermenter/...-Ziele - Korrektur:
tempGateOk()blockiert den Fortschritt inWAIT_TEMPjetzt bei ungültigem oder fehlerhaftem Step-Sensor zuverlässig; die bestehendeErrOut-Ausgangslogik bleibt dabei unverändert - Korrektur: der alte automatische Sensorfehler-Pfad im Maischeprozess erzwingt in
RUNNING_STEPkein implizitesMASH_PAUSEDund kein stilles Auto-Resume mehr; Ausgang und PID bleiben beiErrOut=0weiter sicherheitsorientiert auf0 - Korrektur:
GET /Btn-Power?statePower=...weist fehlende Parameter jetzt sauber mit400zurück statt still200 OKzu liefern - Korrektur: JSON-POST-Routen wie
/setMiscund/setMiscLangsetzen ihre erlaubten HTTP-Methoden jetzt explizit; damit greifen die Handler trotz fehlerhafter Default-Initialisierung in der gebündeltenESPAsyncWebServer-Library wieder zuverlässig statt404 Not foundzu liefern - Korrektur: SSE-Kanalvergabe reserviert freie Kanäle jetzt atomar bereits in
/channel; hängen gebliebene Reservierungen laufen per Timeout aus und verdrängen parallele Clients nicht mehr - Korrektur:
checkAliveSSE()arbeitet jetzt mit einem unter dem SSE-Kanal-Mux gezogenen Snapshot von Kanalstatus, Session-ID und Client-Status; stale Sessions werden nur nach Re-Check des aktuellen Zustands bereinigt - Korrektur: Sensor-Adressscan im WebIf auf asynchronen Start/Status-Pfad umgestellt, der blockierende Legacy-Sync-Fallback wurde entfernt
- Korrektur: Sensor-Mutationen aktualisieren Runtime, SSE, Display und Kesselpfad konsistent; Sensorlöschungen ziehen alle betroffenen
senid-Referenzen korrekt nach - Korrektur: Config-Save liest Sensoren über konsistente Snapshots; ungültige Sensorzuweisungen aus Config/Profilen werden auf
-1bereinigt statt still falsch weiterzulaufen - Optimiert: aktiver Sensor-SSE-Pfad reduziert unnötige
String-Allokationen und formatiert zyklische Werte über feste C-Buffer - Korrektur:
chartdots.jsonwird für/getDotsnur noch kurz unter Chart-Mutex eingelesen und vor dem Senden wieder geschlossen; Chart-Readback und Cleanup arbeiten dadurch robuster - Korrektur: Backup-Erzeugung schreibt
backup.jsoninkrementell auf LittleFS statt das Gesamtdokument vollständig im RAM zu erstellen - Korrektur: Restore liest
config[]schlüsselbasiert statt positionsabhängig - Korrektur: Restore schützt den JSON-Import mit klaren Größen-/Heap-Grenzen und bricht zu große
restore.json-Dateien mit Diagnose sauber ab - Optimiert: Restore stoppt vor dem JSON-Parse zusätzlich FreeRTOS Tasks und pausiert SSE. Bei Restore-Fehler werden sie wieder sauber gestartet
- Korrektur: Captive-Portal WLAN-Scan läuft jetzt asynchron mit Ergebnis-Cache;
/scanblockiert den Request nicht mehr und serialisiert SSIDs/JSON robust statt per String-Verkettung - Korrektur: SSE-Kanäle werden bei echten Disconnects sofort freigegeben; getrennte Clients blockieren keine Event-Kanäle mehr bis zum nächsten Alive-Check
- Korrektur: Dateibrowser/FS-Editor verwendet für
/list,/download,/editund Uploads nun eine einheitliche Pfadnormalisierung - Korrektur: Rekursives Löschen im FS-Editor entfernt verschachtelte Verzeichnisse wieder zuverlässig und meldet Fehler sauber an das WebIf zurück
- Korrektur: der FS-Editor hat auch bei fehlerhaften Uploads über
/editund/language200 OK an das WebIf zurückgeliefert - Korrektur: Zugriffe auf
chartdots.jsonsind jetzt serialisiert;writeDotsAll(),removeDots()und der Legacy-Dot-Pfad verwenden einen gemeinsamen Mutex und öffnen Dateien erst kurz vor dem eigentlichen Schreiben - Korrektur: Dateischreibvorgänge für Konfigurationen, Profile, Maischeplan, Fermenter-, Import- und Logdateien prüfen jetzt vollständige JSON-Ausgabe; bei Fehlern werden defekte Dateien entfernt und Vorgänge sauber abgebrochen
- Korrektur: Backup-Erzeugung bricht bei unvollständigen oder fehlerhaften Einträgen jetzt konsequent mit Cleanup ab statt still unvollständige Backups zu erzeugen
- Korrektur: Dateihandling im Maischeplan schließt offene Dateien auch bei Formatkonvertierung und Fehlerpfaden zuverlässiger
- Korrektur: WLAN-Startlogik erkennt Fehler beim Zurücksetzen des BSSID-Locks und verhindert problematische Fallback-Verbindungen
- Geändert: Nextion auf Hardware-Serial überarbeitet. Deferred-Refresh Reste und Code Fragmente aus SoftSerial entfernt
- Geändert: Performance Steiergung für das Senden von Daten an das Display
- Geändert: Das Dateihandle für handleUploadLanguage hängt jetzt am Request (request->_tempFile). global/shared Objekt ersetzt
- Geändert: Backup und Restore optimiert und korrigiert
- Geändert: globales File Objekt ersetzt (parallele Zugriffe)
- Update: ArduinoJSON 7.4.3 Fix a buffer overrun in
as<T>()(issue #2220) - Geändert: MMum Rezept Import werden die Steps Ein- und Abmaischen bei validen Temperaturen immer erstellt
- Korrektur: die Chart für Kessel Sud war an einem falschen visible flag gebunden
- Korrektur: WebIf
apiPOSTzeigt bei HTTP-Fehlern zusätzlich den Response-Body an (bessere Diagnose) - Geändert: Cache-Strategie WebServer präzisiert:
index/languagemitno-store,brautomat.min.css/jsmitno-cache,must-revalidate,bootstrap.*mitmax-age=86400 - Geändert: CORS auf den bisherigen kompatiblen Stand zurückgestellt (
Access-Control-Allow-Origin: *, Standard-Allow-Headers/Methods,Max-Age=600) - Korrektur: Legacy-Kompatibilität ergänzt:
POST /bfbatchewird auf den bestehenden Import-Handler gemappt - Korrektur: Batch-Doppelklick im Brewfather-Tab läuft nicht mehr in
404 Not found - Korrektur: Backup-Schreiben stabilisiert (Datei-Iteration mit korrekten Pfaden und sauberem
file.close()/root.close())