feat: sACN-Einstellungen und -Status als Entitaeten

Die Firmware kann sACN/E1.31 - jetzt auch in Home Assistant, aufgebaut wie in
ha-ninlight: Schalter fuer den Empfang, Zahlen fuer Universe und Startslot,
Auswahl fuer das Verhalten nach Stromende, zwei Diagnose-Binaersensoren.

Die Einstellungen liegen hinter system/settings, der Koordinator liest sie
deshalb mit - eine vierte Anfrage je Zyklus. Nach dem Schreiben wird
zurueckgelesen statt angenommen, wie in ha-ninlight.

Zwei Unterschiede zu ninlight:
- Kein Layout-Feld: ninstrip nutzt fest drei Kanaele je Pixel.
- Der Startslot gilt in JEDEM belegten Universe. Die Obergrenze ist deshalb
  513 minus Kanaele je Pixel, also 510 - ein festes 512 boete Werte an, bei
  denen kein einziges Pixel mehr ins Universe passt.

Aeltere Firmware ohne sacn-Block: die Entitaeten entstehen trotzdem und
melden sich nicht verfuegbar, bis ein Update kommt.

In ha-dev an der Stehlampe geprueft: Universe, Startslot, on_timeout und der
Schalter kommen jeweils auf dem Geraet an; der Aktiv-Sensor steht waehrend
eines Stroms auf an, danach auf aus. 511 als Startslot weist Home Assistant
selbst ab ("outside valid range 1 - 510"). Einstellungen der Lampe danach
zurueckgestellt.
This commit is contained in:
ninharp
2026-09-22 18:09:40 +02:00
parent 8c9a9210d9
commit d0a9487805
12 changed files with 418 additions and 5 deletions
+28 -1
View File
@@ -50,6 +50,10 @@ Ohne mDNS geht es auch von Hand über Adresse und Token.
| `select` | aufgeschaltete Szene (acht Plätze in der Firmware) |
| `button` | Neustart |
| `sensor` | WLAN-Signal, Laufzeit, freier Speicher, Leistungsbegrenzung |
| `switch` | sACN-Empfang an/aus |
| `number` | sACN-Universe und -Startslot |
| `select` | Verhalten nach Stromende (`release` / `hold`) |
| `binary_sensor` | sACN aktiv, Multicast beigetreten (letzterer standardmäßig aus) |
Die Diagnose-Sensoren sind standardmäßig abgeschaltet; die
Leistungsbegrenzung ist an, weil sie verrät, ob die Strombegrenzung gerade
@@ -64,7 +68,30 @@ eine Farbe, die stimmen würde. Die Segmente stellt man über Szenen.
- Einzelne Segmente als eigene Entitäten
- Firmware-Aktualisierung über eine `update`-Entität (die Firmware kann OTA
mit Rückfallebene, die Integration nutzt es noch nicht)
- sACN/E1.31 — in der Firmware geplant, siehe ninstrip-Repo
## sACN / E1.31
Aufbau wie ha-ninlight: die Einstellungen kommen aus `system/settings`, der
Zustand aus `system/info`, und nach jedem Schreiben wird **zurückgelesen**
statt angenommen — das Gerät prüft selbst, und eine Entität, die das
Gewünschte statt des Gespeicherten zeigt, lügt genau dann, wenn beides
auseinanderläuft.
Zwei Unterschiede zu ninlight:
- **Kein Layout-Feld.** ninstrip nutzt fest drei Kanäle je Pixel (R, G, B), so
wie LedFx, xLights und Resolume senden.
- **Der Startslot gilt in jedem Universe**, nicht nur im ersten — ein Strip
verteilt sich über mehrere. Die Obergrenze ist deshalb `513 − 3 = 510`:
dahinter passt kein ganzes Pixel mehr hinein.
Jede Änderung über Home Assistant holt einem laufenden oder gehaltenen Strom
die Kontrolle ab — das erledigt die Firmware.
**Multicast über VLAN-Grenzen:** „beigetreten" heißt nur, dass das Gerät der
Gruppe beigetreten ist. Ob das Netz sie weiterreicht, steht auf einem anderen
Blatt; ohne Multicast-Router kommt sie über eine VLAN-Grenze nie an. Unicast
geht dann trotzdem.
## Entwicklung