Skip to content

1.61

Choose a tag to compare

@InnuendoPi InnuendoPi released this 28 Mar 12:37
· 68 commits to main since this release

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. NEXT blockiert am letzten gültigen Maische-Schritt jetzt korrekt; zuvor konnte der Ablauf auf einen ungültigen Step-Index weiterlaufen
  • Korrektur: Fermenter-Stop über Btn-Power räumt den Prozess jetzt sauber auf; MODE_FERM -> MODE_NONE ruft stopFerm() direkt auf statt mashState und Timer inkonsistent stehen zu lassen
  • Korrektur: setFerm(...) persistiert den aktiven Fermenterplan jetzt direkt in config.txt; dadurch funktioniert Reboot-Resume im Ramp-Step und im finalen Step wieder konsistent
  • Korrektur: /setFerm akzeptiert jetzt zusätzlich vollständige Fermenter-Planobjekte mit misc[]/ferm[], übernimmt Fername, duration und autonext sauber und vermeidet damit leere Namen sowie fehleranfällige Zwischenkonvertierungen
  • Korrektur: /setFerm schreibt Fermenterpläne explizit auf /Fermenter/...-Ziele
  • Korrektur: tempGateOk() blockiert den Fortschritt in WAIT_TEMP jetzt bei ungültigem oder fehlerhaftem Step-Sensor zuverlässig; die bestehende ErrOut-Ausgangslogik bleibt dabei unverändert
  • Korrektur: der alte automatische Sensorfehler-Pfad im Maischeprozess erzwingt in RUNNING_STEP kein implizites MASH_PAUSED und kein stilles Auto-Resume mehr; Ausgang und PID bleiben bei ErrOut=0 weiter sicherheitsorientiert auf 0
  • Korrektur: GET /Btn-Power?statePower=... weist fehlende Parameter jetzt sauber mit 400 zurück statt still 200 OK zu liefern
  • Korrektur: JSON-POST-Routen wie /setMisc und /setMiscLang setzen ihre erlaubten HTTP-Methoden jetzt explizit; damit greifen die Handler trotz fehlerhafter Default-Initialisierung in der gebündelten ESPAsyncWebServer-Library wieder zuverlässig statt 404 Not found zu 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 -1 bereinigt statt still falsch weiterzulaufen
  • Optimiert: aktiver Sensor-SSE-Pfad reduziert unnötige String-Allokationen und formatiert zyklische Werte über feste C-Buffer
  • Korrektur: chartdots.json wird für /getDots nur noch kurz unter Chart-Mutex eingelesen und vor dem Senden wieder geschlossen; Chart-Readback und Cleanup arbeiten dadurch robuster
  • Korrektur: Backup-Erzeugung schreibt backup.json inkrementell 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; /scan blockiert 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, /edit und 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 /edit und /language 200 OK an das WebIf zurückgeliefert
  • Korrektur: Zugriffe auf chartdots.json sind 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 apiPOST zeigt bei HTTP-Fehlern zusätzlich den Response-Body an (bessere Diagnose)
  • Geändert: Cache-Strategie WebServer präzisiert: index/language mit no-store, brautomat.min.css/js mit no-cache,must-revalidate, bootstrap.* mit max-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 /bfbatche wird 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())