fix(display): reinit() nach Display-Einschalten via MQTT und Web-Toggle (FR-018, v1.6.2)
This commit is contained in:
parent
e964beab7c
commit
a5717b2bc0
|
|
@ -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) ✅
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -563,6 +563,9 @@ void MqttClient::onMessage(const char* topic, byte* payload, unsigned int length
|
|||
if (!vDisplay.isNull()) {
|
||||
bool on = vDisplay.as<bool>();
|
||||
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();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user