Commit Graph

12 Commits

Author SHA1 Message Date
MaPaLo76
1ef0464be9 fix(mqtt): FR-011 Heap-Korruption bei TLS-Verbindungsabbruch
- _rebuildClient(): WiFiClientSecure + PubSubClient vor jedem
  Reconnect-Versuch sauber delete + new auf Core 0
- mbedTLS startet damit immer mit sauberem Heap-Kontext
- Verhindert CORRUPT HEAP / PANIC wenn Broker die TLS-Session
  unerwartet abbricht (MBEDTLS_ERR_NET_CONN_RESET)
- _broker/_port als Members gecacht fuer _rebuildClient()
2026-03-01 17:50:18 +01:00
MaPaLo76
7935dfbba4 feat(mqtt): reset_reason im Heartbeat-JSON hinzugefuegt
- esp_reset_reason() einmalig in begin() gespeichert (_resetReason[32])
- reset_reason-Feld in publishHeartbeat() JSON-Payload
- Moegliche Werte: POWERON, SOFTWARE, PANIC, TASK_WDT, INT_WDT, WDT, BROWNOUT, EXT_PIN, DEEPSLEEP, SDIO, UNKNOWN
- README.md: Status-JSON-Beispiel und Werteliste dokumentiert
2026-03-01 12:10:07 +01:00
MaPaLo76
c40668f216 feat(FR-007): session_id in MQTT Session-Payload; Reset bei reset/reset_session; Version 1.2.0 2026-03-01 00:04:17 +01:00
MaPaLo76
aae34fe84a fix(FR-009): startTime in SessionPayload speichern – session_start_time bei Queue-Nachlieferung korrekt 2026-02-28 23:56:11 +01:00
MaPaLo76
96508910b0 fix(FR-006): MQTT Session-Queue (128 Slots) statt volatile Einzelslot; Dequeue erst nach erfolgreichem Publish 2026-02-28 23:49:29 +01:00
MaPaLo76
b91b3ca96f fix(mqtt): Netzwerk-Objekte per new auf Core 0 anlegen - Heap-Korruption behoben
- WiFiClient, WiFiClientSecure, PubSubClient als Pointer deklariert (nullptr init)
- Objekte werden erst in _taskLoop() auf Core 0 per 'new' erstellt
- mbedtls bindet Heap-Allokationen an den erstellenden Core/Task
  -> Anlegen auf Core 1 (globaler Konstruktor) + Nutzung auf Core 0 = Heap-Korruption
  -> Fix: Anlegen UND Nutzung ausschliesslich auf Core 0
- isConnected(), printToSerial(): Null-Checks ergaenzt
2026-02-28 19:05:09 +01:00
MaPaLo76
a7c6edb458 fix(mqtt): MQTT-Task auf Core 0 auslagern - TLS-Blocking behebt WDT-Crash und Display-Freeze
- WiFiClientSecure/mbedtls ausschliesslich auf Core 0 initialisiert und verwendet
  (Cross-Core-Heap-Korruption durch mbedtls vermieden)
- xTaskCreatePinnedToCore('mqtt_task', Core 0, 16 KB Stack)
- begin() startet nur Task, kein Netzwerk-Zugriff auf Core 1
- mqttClient.loop() in main.cpp ist No-Op
- publishSession() von Core 1 via volatile-Flags an Core-0-Task uebergeben
- Version: 1.1.0 -> 1.1.1
2026-02-28 18:07:27 +01:00
MaPaLo76
99b5c25e37 feat(tracker): resetSessionSum + MQTT reset_session + UI-Verbesserungen
- resetSession() umbenannt in resetSessionSum() (klarere Semantik)
- Bug fix: resetSessionSum() setzt laufende Session-Timer korrekt zurueck
  (vorher: getAllSessionsSumMinutes() blieb > 0 nach Reset)
- consumeSessionReset() nach consumeSessionEnd()-Muster (consume-Semantik)
- Vor Reset: akkumulierte Netto-Sekunden sichern -> publishSession() wie Session-Ende
- MQTT: payload {reset_session:true} via lasercutter/reset loest resetSessionSum() aus
- MQTT: Session-Reset publiziert identisches JSON wie normales Session-Ende
- Web: Button-Layout ueberarbeitet (alle 3 Buttons blau, uebereinander, gleich breit)
- Docs: README.md + Implementation-Plan.md aktualisiert
2026-02-23 22:49:30 +01:00
MaPaLo76
d644ff4986 refactor(laser): Burst-Begriff durch Session ersetzt (BurstState->SessionState, getLastBurstSeconds->getLastSessionSeconds, consumeBurstEnd->consumeSessionEnd) 2026-02-23 19:33:40 +01:00
MaPaLo76
d0d4666cf7 refactor(mqtt,web): Terminologie Session/Maschinenlaufzeit, JSON-Felder aktualisiert 2026-02-23 19:17:29 +01:00
MaPaLo76
0dbfa07744 feat(mqtt): TLS-Unterstuetzung (WiFiClientSecure, Port 8883), Secrets-Datei gitignoriert 2026-02-22 20:06:53 +01:00
MaPaLo76
71ef2c7ad0 feat(mqtt): Phase 6 - MqttClient implementiert (PubSubClient, publishSession, Heartbeat, Reset-Subscribe) 2026-02-22 19:36:29 +01:00