docs(tests): Burst-Begriff durch Session ersetzt, MQTT-Payloads aktualisiert
This commit is contained in:
parent
e98002db7b
commit
4111f451d4
|
|
@ -14,7 +14,7 @@ Jeder Sketch laeuft als separates PlatformIO-Environment und beruehrt `src/main.
|
|||
| 2.2 | `test-nvs` | `test_nvs.cpp` | NVS Lesen/Schreiben/Reset (SettingsManager) |
|
||||
| 3.3 | `test-wifi` | `test_wifi.cpp` | WiFiManager Captive Portal, WLAN-Verbindung |
|
||||
| 4.3 | `test-display-mgr` | `test_display_manager.cpp` | DisplayManager API (alle show*-Methoden) |
|
||||
| 5.6 | `test-laser-tracker` | `test_laser_tracker.cpp` | LaserTracker Burst-Logik, Gratiszeit, Session/NVS |
|
||||
| 5.6 | `test-laser-tracker` | `test_laser_tracker.cpp` | LaserTracker Session-Logik, Gratiszeit, Summe Session/NVS |
|
||||
| 6.5 | `test-mqtt` | `test_mqtt_client.cpp` | MqttClient TLS, Heartbeat, Session-Publish, JSON-Reset, LWT |
|
||||
| 7.7 | `test-web` | `test_web_server.cpp` | WebServer Routen, Config-Formular, Reset, ElegantOTA OTA |
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ SPI-Datenfluss: ESP32 -> Modul 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8
|
|||
| Modul(e) | 0-Index | Funktion |
|
||||
|-----------|---------|-------------------------------------------------------|
|
||||
| Modul 1 | 0 | WiFi-Fehler-Indikator (`E` = kein WLAN, leer = OK) |
|
||||
| Modul 2-4 | 1-3 | Session-Minuten ganzzahlig (0 bei Neustart, RAM-only) |
|
||||
| Modul 2-4 | 1-3 | Summe Session-Minuten ganzzahlig (0 bei Neustart, RAM-only) |
|
||||
| Modul 5 | 4 | MQTT-Fehler-Indikator (`E` = kein Broker, leer = OK) |
|
||||
| Modul 6-8 | 5-7 | Countdown (Gratiszeit) oder `--` (Idle/Netto) |
|
||||
|
||||
|
|
@ -211,7 +211,7 @@ Der Sketch durchlaeuft nacheinander:
|
|||
## Test 5.6 - LaserTracker (`test_laser_tracker.cpp`)
|
||||
|
||||
### Zweck
|
||||
Burst-Zustandsmaschine, Gratiszeit-Countdown, Session-Minuten und NVS-Gesamtzeit pruefen.
|
||||
Session-Zustandsmaschine, Gratiszeit-Countdown, Summe Session-Minuten und NVS-Gesamtzeit pruefen.
|
||||
|
||||
### Flash & Monitor
|
||||
```bash
|
||||
|
|
@ -224,12 +224,12 @@ GPIO 4: Push-Button gegen GND (simuliert Laser-AN/AUS, LOW_ACTIVE)
|
|||
|
||||
### Testablauf
|
||||
|
||||
**A) Gratis-Burst (Laser < 20 s):**
|
||||
**A) Gratis-Session (Laser < 20 s):**
|
||||
1. Schalter schliessen -> Countdown startet auf Modul 6-8
|
||||
2. Schalter vor Ablauf der 20 s oeffnen
|
||||
3. Erwartung: Session-Minuten unveraendert (0), NVS erhoehte sich um Burst-Dauer
|
||||
3. Erwartung: Summe Session-Minuten unveraendert (0), NVS erhoehte sich um Session-Dauer
|
||||
|
||||
**B) Netto-Burst (Laser > 20 s):**
|
||||
**B) Netto-Session (Laser > 20 s):**
|
||||
1. Schalter schliessen -> Countdown startet
|
||||
2. Nach 20 s -> Countdown erlischt, Module 6-8 zeigen `--`
|
||||
3. Schalter nach z.B. 80 Netto-Sekunden oeffnen
|
||||
|
|
@ -237,8 +237,8 @@ GPIO 4: Push-Button gegen GND (simuliert Laser-AN/AUS, LOW_ACTIVE)
|
|||
|
||||
**C) Neustart-Test:**
|
||||
1. ESP32 neu starten
|
||||
2. Erwartung: Session-Minuten = 0 auf Modul 2-4
|
||||
3. NVS-Gesamtzeit aus vorherigen Bursts bleibt erhalten (im Serial Monitor sichtbar)
|
||||
2. Erwartung: Summe Session-Minuten = 0 auf Modul 2-4
|
||||
3. NVS-Gesamtzeit aus vorherigen Sessions bleibt erhalten (im Serial Monitor sichtbar)
|
||||
|
||||
**D) Komplett-Reset:**
|
||||
1. BOOT-Taste (GPIO 0) 3 Sekunden halten
|
||||
|
|
@ -257,7 +257,8 @@ GPIO 4: Push-Button gegen GND (simuliert Laser-AN/AUS, LOW_ACTIVE)
|
|||
### Ergebnis
|
||||
- [x] GRATIS -> NET_COUNTING Uebergang nach 20 s
|
||||
- [x] Session-Minuten incrementieren hart bei 60 Netto-Sekunden
|
||||
- [x] Gratis-Bursts addieren keine Session-Zeit
|
||||
- [x] Gratis-Sessions addieren keine Session-Zeit
|
||||
- [x] Gratis-Sessions senden kein MQTT-Publish
|
||||
- [x] NVS zaehlt gesamte Laser-AN-Zeit (inkl. Gratiszeit)
|
||||
- [x] resetTotal() loescht NVS + Session
|
||||
|
||||
|
|
@ -290,19 +291,19 @@ pio device monitor -e test-mqtt
|
|||
3. Im MQTT Explorer: `lasercutter/status` erscheint mit `{"online":true,...}` (retained)
|
||||
4. Nach 60 s: erneuter Heartbeat sichtbar
|
||||
|
||||
**B) Session-Publish nach Burst:**
|
||||
**B) Session-Publish nach Session-Ende:**
|
||||
1. GPIO 4 Taste druecken (Laser AN) -> Countdown auf Modul 6-8
|
||||
2. Taste loslassen (Laser AUS)
|
||||
3. Serial: `BurstEnd erkannt -> publishSession`
|
||||
2. Taste loslassen (Laser AUS) **nach** Ablauf der Gratiszeit
|
||||
3. Serial: `SessionEnd -> publishSession`
|
||||
4. MQTT Explorer: `lasercutter/session` erscheint mit JSON:
|
||||
```json
|
||||
{"session_s": 5, "total_min": "0.08", "gratiszeit_s": 20, "ip": "192.168.x.x"}
|
||||
{"session_minuten": 1, "session_seconds": 5, "gratiszeit_s": 20, "ip": "192.168.x.x"}
|
||||
```
|
||||
|
||||
**C) Gratis-Burst (< 20 s):**
|
||||
**C) Gratis-Session (< 20 s):**
|
||||
1. Taste < 20 s druecken und loslassen
|
||||
2. `lasercutter/session` erscheint mit `"session_s": 0`
|
||||
3. `total_min` erhoehte sich trotzdem (Gratiszeit zaehlt in NVS)
|
||||
2. **Kein Publish** auf `lasercutter/session` (Netto-Zeit = 0s)
|
||||
3. `machine_running_time_min` im naechsten Heartbeat erhoehte sich trotzdem (Gratiszeit zaehlt in NVS)
|
||||
|
||||
**D) Reset-Kommando via MQTT:**
|
||||
1. Im MQTT Explorer auf Topic `lasercutter/reset` publishen
|
||||
|
|
@ -339,9 +340,9 @@ pio device monitor -e test-mqtt
|
|||
[MQTT] Abonniert: lasercutter/reset
|
||||
[MQTT] Heartbeat: {"online":true,...} -> OK
|
||||
...
|
||||
[LaserTracker] BurstEnd: gesamt=35s netto=15s sessionNetSec=15 total=0.58min
|
||||
[I][TEST-MQTT] BurstEnd erkannt -> publishSession (lastBurst=15s, total=0.58min)
|
||||
[MQTT] publishSession: {"session_s":15,...} -> OK
|
||||
[LaserTracker] SessionEnd: gesamt=35s netto=15s sessionNetSec=15 total=0.58min
|
||||
[I][TEST-MQTT] SessionEnd -> publishSession (lastSession=15s)
|
||||
[MQTT] publishSession: {"session_minuten":1,"session_seconds":15,"gratiszeit_s":20,"ip":"192.168.x.x"} -> OK
|
||||
```
|
||||
|
||||
### Checkliste
|
||||
|
|
@ -351,8 +352,8 @@ pio device monitor -e test-mqtt
|
|||
| Verbindung zu mqtt.majufilo.eu | `[MQTT] Verbunden!` im Serial | [x] |
|
||||
| Heartbeat beim Connect | `lasercutter/status` retained im MQTT Explorer | [x] |
|
||||
| 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 | [ ] |
|
||||
| Session-Publish nach Session-Ende | `lasercutter/session` mit `session_minuten`, `session_seconds` | [x] |
|
||||
| Gratis-Session publiziert NICHT | kein Topic-Update bei lastSession=0 | [ ] |
|
||||
| Reset via MQTT (`lasercutter/reset` = `{"reset":true}`) | `total_min` springt auf 0 | [x] |
|
||||
| LWT `{"online":false}` nach Verbindungsabbruch | Nach 60 s im MQTT Explorer sichtbar | [x] |
|
||||
| MQTT-Error Modul 5 bei Verbindungsverlust | `E` auf Display Modul 5 | - ungetestet - |
|
||||
|
|
@ -382,7 +383,7 @@ IP-Adresse aus dem Serial Monitor ablesen (erscheint nach WiFi-Connect):
|
|||
**A) Statusseite `GET /`:**
|
||||
1. Browser oeffnen: `http://<IP>/`
|
||||
2. Folgende Felder pruefen:
|
||||
- Session-Minuten, Gesamtzeit, letzter Burst
|
||||
- Summe Session-Minuten, Maschinenlaufzeit (gesamt), letzte Laserzeit
|
||||
- IP-Adresse und MQTT-Status (verbunden/getrennt)
|
||||
- Broker-Hostname und Gratiszeit
|
||||
3. Seite aktualisiert sich automatisch alle 10 s
|
||||
|
|
@ -432,5 +433,5 @@ IP-Adresse aus dem Serial Monitor ablesen (erscheint nach WiFi-Connect):
|
|||
| 2.2 | `test-nvs` | OK | Alle NVS-Felder, Roundtrip, Persistenz, Reset |
|
||||
| 3.3 | `test-wifi` | OK | Captive Portal, Credentials-Persistenz, Reconnect |
|
||||
| 4.3 | `test-display-mgr` | OK | Alle show*-Methoden, Modul-Mapping, Fehler-Indikatoren |
|
||||
| 5.6 | `test-laser-tracker` | OK | Burst-Logik, Gratiszeit, Session/NVS-Trennung, Reset |
|
||||
| 5.6 | `test-laser-tracker` | OK | Session-Logik, Gratiszeit, Summe Session/NVS-Trennung, Reset |
|
||||
| 6.5 | `test-mqtt` | OK | mqtt.majufilo.eu TLS:8883, publishSession, Heartbeat, Reset-Subscribe |
|
||||
Loading…
Reference in New Issue
Block a user