Umsetzungsstand MQTT/FMM003 nachtragen: Zertifikate erzeugt, DuckDNS/Dual-Stack bestätigt, Cloudflare-Frage geklärt
- Eigene CA + Server-/Client-Zertifikate erzeugt und Mosquitto konfiguriert - Dateinamen-Endungs-Stolperstein am FMM003-Configurator dokumentiert (.pem/.pem.crt/.pem.key) - Dual-Stack am Router bestaetigt, Portfreigabe-Risiko damit ausgeraeumt - Klargestellt: Cloudflare ersetzt DuckDNS+Portfreigabe+Mosquitto nicht, sondern ergaenzt sie fuer einen anderen Zweck (App-Erreichbarkeit statt Fahrzeug-MQTT) - AGENTS.md Open-Items-Liste entsprechend abgehakt
This commit is contained in:
@@ -198,10 +198,16 @@ capacitor/iframe/browser (`umgebung.ts`), types + entity table (`types.ts`), fac
|
|||||||
against the existing HA API
|
against the existing HA API
|
||||||
- [ ] Define the reverse-proxy path allowlist (depends on final entity/service names)
|
- [ ] Define the reverse-proxy path allowlist (depends on final entity/service names)
|
||||||
- [ ] Install/wire the FMM003; record firmware version (Codec JSON is firmware-dependent)
|
- [ ] Install/wire the FMM003; record firmware version (Codec JSON is firmware-dependent)
|
||||||
- [ ] Generate TLS certificates for Mosquitto + device (small private CA); FMM003 refuses MQTT
|
- [x] Generate TLS certificates for Mosquitto + device (small private CA) — done 2026-08-11, 10-year
|
||||||
without them
|
validity; Mosquitto configured (`certfile`/`keyfile`/`cafile`/`require_certificate: true`).
|
||||||
- [ ] Decide broker reachability for the vehicle: port-forward 8883 vs. VPS broker with
|
Remaining: upload root/client cert/key to the FMM003 Security tab — filenames must end in
|
||||||
Mosquitto bridge over Tailscale
|
`.pem`/`.pem.crt`/`.pem.key` (Configurator rejects plain `.crt`/`.key`, content-agnostic check)
|
||||||
|
- [x] Decide broker reachability for the vehicle — port-forward 8883 (not VPS bridge), decided
|
||||||
|
2026-08-11; DuckDNS hostname `datametric360.duckdns.org` set up, Dual-Stack confirmed on the
|
||||||
|
router (no DS-Lite blocker). Remaining: the port-forward itself on the Speedport Smart 4 Plus
|
||||||
|
- [ ] MQTT Client Type on the FMM003: "Custom server" (value 3, seen in Configurator help text) was
|
||||||
|
not selectable in practice — use **"AWS IoT Custom"** pointed at the own broker instead
|
||||||
|
(confirmed working by two independent community reports); verify once the device is live
|
||||||
- [ ] Capture the first real Codec JSON message (`mosquitto_sub`/MQTT Explorer) and build the
|
- [ ] Capture the first real Codec JSON message (`mosquitto_sub`/MQTT Explorer) and build the
|
||||||
field mapping from it — **do not guess beforehand** (explicit decision)
|
field mapping from it — **do not guess beforehand** (explicit decision)
|
||||||
- [ ] Move trip detection to FMM003 ignition (reuse the `fahrterkennung.py` pattern, keep pause
|
- [ ] Move trip detection to FMM003 ignition (reuse the `fahrterkennung.py` pattern, keep pause
|
||||||
|
|||||||
@@ -165,6 +165,11 @@ Entschlüsseln des binären Codec8-Protokolls. Das Gerät liefert die Daten dann
|
|||||||
Exakte eigene Werte erst bei der Inbetriebnahme festlegen.
|
Exakte eigene Werte erst bei der Inbetriebnahme festlegen.
|
||||||
- **TLS ist Pflicht, nicht optional:** ohne hochgeladene Zertifikate arbeitet MQTT nicht. Zertifikat,
|
- **TLS ist Pflicht, nicht optional:** ohne hochgeladene Zertifikate arbeitet MQTT nicht. Zertifikat,
|
||||||
privater Schlüssel und Wurzelzertifikat werden im Configurator unter *Security* hinterlegt.
|
privater Schlüssel und Wurzelzertifikat werden im Configurator unter *Security* hinterlegt.
|
||||||
|
- **Dateinamen-Endung ist strikt geprüft (2026-08-11, live am Configurator beobachtet):** hochgeladene
|
||||||
|
Dateien müssen auf `.pem`, `.pem.crt` oder `.pem.key` enden, sonst Fehler „File format is not valid
|
||||||
|
or not supported". Reiner Inhalt (PEM-Format) reicht nicht, die Endung muss stimmen. Schema folgt
|
||||||
|
offenbar der AWS-IoT-Download-Konvention: Root-Zertifikat `*.pem`, Geräte-Zertifikat `*.pem.crt`,
|
||||||
|
privater Schlüssel `*.pem.key`. Eigene CA-Dateien entsprechend umbenennen, nicht nur `.crt`/`.key`.
|
||||||
- **Firmware-Abhängigkeit:** Codec JSON ist nicht in jeder Firmware enthalten (bei mehreren
|
- **Firmware-Abhängigkeit:** Codec JSON ist nicht in jeder Firmware enthalten (bei mehreren
|
||||||
Modellen erst ab 03.28.00 dokumentiert). Der Besitzer bestätigt, dass es auf diesem Gerät
|
Modellen erst ab 03.28.00 dokumentiert). Der Besitzer bestätigt, dass es auf diesem Gerät
|
||||||
verfügbar ist — vor der Inbetriebnahme trotzdem die Firmware-Version notieren.
|
verfügbar ist — vor der Inbetriebnahme trotzdem die Firmware-Version notieren.
|
||||||
@@ -341,10 +346,23 @@ else in this document:
|
|||||||
Privatfahrzeug. Betrifft nur den Weg Fahrzeug→Zuhause und ist unabhängig von der Anbindung der
|
Privatfahrzeug. Betrifft nur den Weg Fahrzeug→Zuhause und ist unabhängig von der Anbindung der
|
||||||
App (§4, dort bleibt es bei Cloudflare Tunnel — kein Widerspruch, siehe dort die Begründung, warum
|
App (§4, dort bleibt es bei Cloudflare Tunnel — kein Widerspruch, siehe dort die Begründung, warum
|
||||||
ein eng begrenzter, zertifikatsgesicherter Port etwas anderes ist als HA selbst offenzulegen).
|
ein eng begrenzter, zertifikatsgesicherter Port etwas anderes ist als HA selbst offenzulegen).
|
||||||
**Noch zu erledigen:** stabile öffentliche Adresse fürs Zuhause (feste IP oder DynDNS-Hostname)
|
**Umsetzungsstand (2026-08-11):** DuckDNS-Hostname `datametric360.duckdns.org` angelegt und als
|
||||||
und die Portfreigabe am Router selbst — beides erst bei der Inbetriebnahme.
|
Add-on in HA eingerichtet (inkl. eigenständigem Let's-Encrypt-Zertifikat für die HA-Oberfläche
|
||||||
2b. **TLS-Zertifikate für Mosquitto und das Gerät** — bei der Inbetriebnahme zu erzeugen; ohne sie
|
selbst — unabhängig von den MQTT-Zertifikaten unten, siehe dortige Anmerkung). Router bestätigt
|
||||||
verweigert der FMM003 die MQTT-Verbindung.
|
**Dual-Stack** (kein DS-Lite) — die Portfreigabe funktioniert damit grundsätzlich. **Noch offen:**
|
||||||
|
die Portfreigabe selbst am Speedport Smart 4 Plus.
|
||||||
|
|
||||||
|
Nebenbei geklärt: ein Vorschlag, stattdessen komplett auf Cloudflare zu setzen, wurde geprüft und
|
||||||
|
**ist keine Alternative** — Cloudflare Tunnel kann kein rohes MQTT/TCP transportieren (nur HTTP),
|
||||||
|
der FMM003 kennt außerdem kein Tunnel-Konzept, nur IP/Domain+Port. Bleibt bei der klaren Trennung:
|
||||||
|
Cloudflare Tunnel für die App (§4), Portfreigabe+DuckDNS nur für die Fahrzeug-MQTT-Verbindung.
|
||||||
|
2b. **TLS-Zertifikate für Mosquitto und das Gerät** — ✅ **ERLEDIGT (2026-08-11):** eigene private CA
|
||||||
|
(10 Jahre gültig) erzeugt, Server-Zertifikat (CN `datametric360.duckdns.org`) und Client-Zertifikat
|
||||||
|
für das Gerät signiert, beide gegen die CA verifiziert. Mosquitto ist mit `certfile`/`keyfile`/
|
||||||
|
`cafile`/`require_certificate: true` konfiguriert. **Noch offen:** die drei Geräte-Dateien (Root,
|
||||||
|
Client-Zertifikat, privater Schlüssel) müssen noch in den FMM003-Configurator hochgeladen werden —
|
||||||
|
dabei auf die Dateinamen-Endung achten (siehe Anmerkung oben bei „Dateinamen-Endung ist strikt
|
||||||
|
geprüft").
|
||||||
3. **Reverse-proxy add-on: Nginx Proxy Manager vs. Traefik** — both viable (§4), pick deferred to the
|
3. **Reverse-proxy add-on: Nginx Proxy Manager vs. Traefik** — both viable (§4), pick deferred to the
|
||||||
next audit pass. Doesn't depend on the FMM003 — could be set up and tested against HA's existing API
|
next audit pass. Doesn't depend on the FMM003 — could be set up and tested against HA's existing API
|
||||||
before the hardware arrives, if worth doing ahead of time.
|
before the hardware arrives, if worth doing ahead of time.
|
||||||
|
|||||||
Reference in New Issue
Block a user