diff --git a/Feature-Requests.md b/Feature-Requests.md index 3ba9428..fab859d 100644 --- a/Feature-Requests.md +++ b/Feature-Requests.md @@ -23,6 +23,15 @@ Status: `[ ]` = offen · `[x]` = erledigt ## Erledigt +### Version 1.6.2 + +- [x] **FR-018** Bug: `display.reinit()` wird beim Display-Einschalten nicht aufgerufen ✅ + - **Symptom**: Nach dem Einschalten des Displays per MQTT-Befehl (`{"display":true}`) oder Web-Toggle konnte das Display gestört sein (leere Module, keine Sekundenanzeige), weil die MAX7219-Kontrollregister nach einem EMV-Spike nicht neu gesetzt wurden. + - **Ursache**: In FR-014 (v1.5.2) wurde `display.reinit()` nur in `LaserTracker::onSessionStart()` und `onSessionEnd()` aufgerufen. Der MQTT-CMD-Handler (`{"display":true}`) und der Web-Toggle-Handler (`POST /display-toggle`) riefen nur `setEnabled(true)` auf, aber kein `reinit()`. + - **Fix**: `display.reinit()` nach `setEnabled(true)` in beiden Handlern ergänzt (MQTT-CMD und Web-Toggle). + - **Betroffene Dateien**: `src/mqtt_client.cpp`, `src/web_server.cpp` + - Commit: *(offen)* + ### Version 1.6.1 - [x] **FR-017** Bug: Maschinenlaufzeit ist in HA nicht verfügbar (MQTT Discovery Sensor fehlt) ✅ diff --git a/platformio.ini b/platformio.ini index af78daa..b744581 100644 --- a/platformio.ini +++ b/platformio.ini @@ -23,7 +23,7 @@ build_flags = -DCORE_DEBUG_LEVEL=1 ; 0=keine, 1=Fehler, 3=Info, 5=Verbose -DARDUINO_LOOP_STACK_SIZE=8192 -DELEGANTOTA_USE_ASYNC_WEBSERVER=1 - -DFIRMWARE_VERSION='"1.6.1"' ; Semantic Versioning – hier erhöhen bei neuem Release + -DFIRMWARE_VERSION='"1.6.2"' ; Semantic Versioning – hier erhöhen bei neuem Release lib_deps = majicDesigns/MD_Parola @ ^3.7.3 majicDesigns/MD_MAX72XX @ ^3.5.1 diff --git a/src/mqtt_client.cpp b/src/mqtt_client.cpp index 5a473bb..eabc3db 100644 --- a/src/mqtt_client.cpp +++ b/src/mqtt_client.cpp @@ -563,6 +563,9 @@ void MqttClient::onMessage(const char* topic, byte* payload, unsigned int length if (!vDisplay.isNull()) { bool on = vDisplay.as(); display.setEnabled(on); + if (on) { + display.reinit(); // FR-018: Kontrollregister nach EMV-Spike neu setzen + } LOG_I("MQTT", "CMD display -> %s", on ? "an" : "aus"); // Sofortiges Feedback an HA (kein 60s warten auf naechsten Heartbeat) mqttClient.publishHeartbeat(); diff --git a/src/web_server.cpp b/src/web_server.cpp index 9ee5205..cb3f542 100644 --- a/src/web_server.cpp +++ b/src/web_server.cpp @@ -262,6 +262,9 @@ void WebServerManager::registerRoutes() { // --- POST /display-toggle – Display ein-/ausschalten (öffentlich) ---------- _server->on("/display-toggle", HTTP_POST, [this](AsyncWebServerRequest* request) { display.setEnabled(!display.isEnabled()); + if (display.isEnabled()) { + display.reinit(); // FR-018: Kontrollregister nach EMV-Spike neu setzen + } mqttClient.publishHeartbeat(); // FR-015+016: HA-Update + WS-Push LOG_I("WEB", "Display %s", display.isEnabled() ? "an" : "aus"); request->send(204); // No Content – Browser bleibt auf aktueller Seite