feat: nachgezogen, was ha-ninlight laengst hat

Michaels Befund: die Integration ist nicht dasselbe wie die von ninlight.
Verglichen und die Luecken geschlossen - alle Felder gibt es in der
Firmware schon, sie waren nur nicht bedienbar:

* number: fade_in, fade_out, transition_default in Millisekunden, mit den
  Grenzen der Firmware (10 s, 10 s, 60 s).
* select: Einschaltverhalten (last, on, off).
* switch: bei Aenderung einschalten.
* light: Uebergangszeit beim Ein- und Ausschalten. HA rechnet in Sekunden,
  das Geraet in Millisekunden; laengeres als 60 s wird gekappt, sonst
  wiese das Geraet die ganze Anfrage mit 400 ab. Ohne Angabe wird kein
  Feld geschickt, sonst ueberschriebe jeder Schaltbefehl die Vorgabe.
* sensor: letzter Update-Fehler und Startzeit (Zeitstempel statt einer
  Laufzeit, die jede Abfrage weiterlaeuft), beide ab Werk aus.
* diagnostics.py: Diagnosedaten zum Herunterladen, ohne Token, Adressen,
  MAC und SSID.
* config_flow: Neu-Konfigurieren von Adresse und Token, mit Gegenprobe der
  MAC - ein Tippfehler in der Adresse soll nicht still den falschen
  Eintrag umbiegen.
* Hinweis in den Reparaturen, wenn ein Geraet noch auf dem oeffentlichen
  Werks-Token steht.

Nicht uebernommen: die Auswahl sacn_layout. ninstrip ist immer rgb, ein
Strip hat keinen Masterkanal - eine Auswahl mit einer Option waere nur
Zierde.

241 Tests, 97 %. Die Kappung der Uebergangszeit per Mutation gegengeprueft.
This commit is contained in:
Michael Sauer
2026-09-23 00:35:12 +02:00
parent c40c68b537
commit 9eb7adcdd7
18 changed files with 737 additions and 20 deletions
+24 -2
View File
@@ -46,10 +46,13 @@ Ohne mDNS geht es auch von Hand über Adresse und Token.
| Entität | |
|---|---|
| `light` | Hauptschalter, Helligkeit, Farbe und Farbtemperatur des ganzen Strips |
| `light` | Hauptschalter, Helligkeit, Farbe, Farbtemperatur, Übergangszeit |
| `select` | aufgeschaltete Szene (acht Plätze in der Firmware) |
| `select` | Einschaltverhalten (`last` / `on` / `off`) |
| `number` | Einblend-, Ausblend- und Übergangszeit in ms |
| `switch` | bei Änderung einschalten |
| `button` | Neustart |
| `sensor` | IP-Adresse, WLAN-Signal, Laufzeit, freier Speicher, Leistungsbegrenzung |
| `sensor` | IP-Adresse, WLAN-Signal, Laufzeit, freier Speicher, Leistungsbegrenzung, letzter Update-Fehler, Startzeit |
| `switch` | sACN-Empfang an/aus |
| `number` | sACN-Universe und -Startslot |
| `select` | Verhalten nach Stromende (`release` / `hold`) |
@@ -77,9 +80,28 @@ Weißkanäle bekommen dieselbe Spanne als RGB-Näherung.
Für einzelne Segmente gibt es noch keine Entitäten.
## Unterschiede zu ha-ninlight
Gleich sind: Einrichtung samt Neu-Konfigurieren und erneuter Anmeldung,
Diagnosedaten, Firmware-Aktualisierung, sACN, die Zeiten, das
Einschaltverhalten, „bei Änderung einschalten" und der Hinweis, wenn ein Gerät
noch auf dem Werks-Token steht.
Verschieden ist, was die Geräte verschieden macht:
- **Kein `sacn_layout`.** ninlight kann `dimmer` (Masterkanal plus Farben) und
`rgb`; ein Strip hat keinen Masterkanal, ninstrip ist immer `rgb`. Die
Firmware meldet das Feld trotzdem, damit dieselben Werkzeuge beide bedienen.
- **Farbe kommt aus den Segmenten**, bei ninlight aus `device/state`.
- **Szenen statt Farbmodi je Lampe**: acht Plätze in der Firmware, als
Auswahl.
- **Leistungsbegrenzung als Sensor** — bei einer Lampe gibt es nichts zu
begrenzen.
## Noch nicht drin
- Einzelne Segmente als eigene Entitäten
- Effekte (die Firmware kann sie je Segment, `device/effects` listet sie)
## Firmware-Aktualisierung