diff --git a/src/mqtt_client.cpp b/src/mqtt_client.cpp index c2ff30a..dc8bea6 100644 --- a/src/mqtt_client.cpp +++ b/src/mqtt_client.cpp @@ -180,7 +180,27 @@ void MqttClient::onMessage(const char* topic, byte* payload, unsigned int length // Reset-Kommando if (strcmp(topic, MQTT_TOPIC_RESET) == 0) { + bool doReset = false; + + // Plain "1" (rueckwaertskompatibel) if (strcmp(msg, "1") == 0) { + doReset = true; + } + // JSON: {"reset":true} oder {"reset":1} + else if (msg[0] == '{') { + JsonDocument doc; + DeserializationError err = deserializeJson(doc, msg); + if (!err) { + JsonVariant v = doc["reset"]; + if (!v.isNull()) { + doReset = v.as() || v.as() == 1; + } + } else { + Serial.printf("[MQTT] JSON-Parse-Fehler: %s\n", err.c_str()); + } + } + + if (doReset) { Serial.println("[MQTT] RESET-Kommando empfangen -> laserTracker.resetTotal()"); laserTracker.resetTotal(); } diff --git a/test_sketches/README.md b/test_sketches/README.md index 2dfb071..2702d5b 100644 --- a/test_sketches/README.md +++ b/test_sketches/README.md @@ -288,7 +288,9 @@ pio device monitor -e test-mqtt 3. `total_min` erhoehte sich trotzdem (Gratiszeit zaehlt in NVS) **D) Reset-Kommando via MQTT:** -1. Im MQTT Explorer auf Topic `lasercutter/reset` publishen, Payload: `1` +1. Im MQTT Explorer auf Topic `lasercutter/reset` publishen + - JSON-Payload (empfohlen): `{"reset":true}` + - Alternativ Plain: `1` 2. Serial: `[MQTT] RESET-Kommando empfangen -> laserTracker.resetTotal()` 3. Naechster Heartbeat zeigt `"total_min": "0.00"` @@ -334,7 +336,7 @@ pio device monitor -e test-mqtt | Heartbeat alle 60 s | Topic aktualisiert sich periodisch | [x] | | Session-Publish nach Burst | `lasercutter/session` mit Session-Daten | [x] | | Gratis-Burst publiziert `session_s: 0` | `total_min` trotzdem erhoehiert | [ ] | -| Reset via MQTT (`lasercutter/reset` = `1`) | `total_min` springt auf 0 | [ ] | +| Reset via MQTT (`lasercutter/reset` = `{"reset":true}`) | `total_min` springt auf 0 | [ ] | | LWT `{"online":false}` nach Verbindungsabbruch | Nach 60 s im MQTT Explorer sichtbar | [ ] | | MQTT-Error Modul 5 bei Verbindungsverlust | `E` auf Display Modul 5 | [ ] | | Reconnect nach WiFi-Ausfall | Automatisch nach <= 10 s | [ ] |