Commit Graph
14 Commits
Author SHA1 Message Date
Michael Sauer 5781e723ab docs: Werksreset beim Token-Schutz nennen 2026-09-16 19:44:36 +02:00
Michael Sauer ad165e18b3 docs: Token-Schutz richtig beschreiben, Verfügbarkeit dokumentieren 2026-09-16 19:37:11 +02:00
Michael Sauer 1026f427ca fix(coordinator): kurze Aussetzer machen die Lampe nicht unbedienbar 2026-09-16 18:38:45 +02:00
Michael Sauer fc29b0befe fix: Katalog-SSID-Cache threadsicher, Sicherheitshinweis zu mDNS/MAC
scan() konnte den SSID-Cache filtern, während contains_ssid() aus einem
anderen Executor-Thread gleichzeitig hineinschrieb ("dictionary changed
size during iteration"). Ein Lock schützt jetzt beide Zugriffe.

README ergänzt: mDNS-Updates auf eine bekannte MAC laufen ungeprüft: Ein
Gerät, das dieselbe MAC ankündigt, übernimmt den Host-Eintrag und könnte
so an Anfragen mit Token gelangen (nur in einem bereits kompromittierten
Netz relevant).
2026-09-16 17:40:21 +02:00
Michael Sauer b8f3c94278 fix(update): Lampe bekommt genau die geprüften Bytes
Die Registry für Einmal-URLs speicherte bisher nur einen Pfad; View und
verify() lasen die Datei getrennt und zu unterschiedlichen Zeitpunkten
erneut ein. Wurde die Datei zwischen Prüfung und Abruf ersetzt (z. B.
gleicher Dateiname in build/ und build-nocreds/), erreichte ein nie
geprüftes Image die Lampe und hebelte damit die WLAN-Sicherung aus.

Jetzt werden die Bytes einmal im Install-Pfad gelesen, Gerätetyp/Version
und WLAN-SSID auf genau diesen Bytes geprüft (FirmwareCatalog.verify_and_read,
firmware.contains_ssid) und exakt diese Bytes in der Registry hinterlegt;
die View serviert nur noch das, was tatsächlich geprüft wurde.

Außerdem: Bewertungen (Katalog-Rescan-Signal) werden nicht mehr angestoßen,
während ein Update läuft - das würde eine gerade flashende Lampe zusätzlich
anfragen und Angebot/Issue unter dem laufenden Update verändern; nach jedem
Update wird stattdessen genau einmal neu bewertet. Kommentar zum Install-Lock
korrigiert (der eigentliche Lücke liegt vor dem Setzen der Flags, nicht in
HAs eigener "bereits läuft"-Prüfung). Testlücke geschlossen: die View liefert
jetzt nachweislich nur die zu ihrem Schlüssel gehörenden Bytes. Timeout in
einem WLAN-Regressionstest verkürzt, damit er bei einem Rückfall nicht
12 Minuten hängt.
2026-09-16 17:40:10 +02:00
Michael Sauer 06dd04e8fe docs: README, Abnahmeprotokoll, Brand-Bilder; Gitea statt GitHub/HACS 2026-09-16 17:13:31 +02:00
Michael Sauer 8ab03012f9 fix(update): kein Downgrade und keine parallelen Installs pro Lampe 2026-09-16 17:07:04 +02:00
Michael Sauer ccc31d3286 feat(update): Firmware-Update aus dem Ordner mit Einmal-URLs und WLAN-Sicherung 2026-09-16 16:45:24 +02:00
Michael Sauer cc318c9d25 feat: Einstellungen, Neustart, Diagnose-Sensoren und Diagnose-Download 2026-09-16 16:08:47 +02:00
Michael Sauer be0a8e21b6 feat(config_flow): Einrichtung per IP und mDNS, Neuanmeldung, Neukonfiguration, Optionen 2026-09-16 15:52:44 +02:00
Michael Sauer 40186d95d1 feat: Coordinator, Geraet und Licht-Entitaet 2026-09-16 15:32:07 +02:00
Michael Sauer 75dc2b7dd6 feat(firmware): Trailer, Versionsordnung, WLAN-Pruefung und Firmware-Katalog 2026-09-16 15:11:28 +02:00
Michael Sauer d3688b5a2e feat(api): HTTP-Client fuer die ninlight-Lampen 2026-09-16 15:01:06 +02:00
Michael Sauer 18583c6593 chore: Projektgeruest, Manifest, Konstanten und CI 2026-09-16 14:50:01 +02:00