feat: erste Fassung der ninstrip-Integration fuer Home Assistant

Auf dem Geruest von ha-ninlight aufgebaut und bewusst parallel gehalten:
gleiche Fehlerklassen in api.py, gleicher Coordinator mit Sperre und
Fehlertoleranz, gleicher Einrichtungsablauf samt Zeroconf und Reauth.

Eigenes Repo statt Erweiterung von ha-ninlight: die Geraete melden sich unter
verschiedenen mDNS-Diensten, das Datenmodell unterscheidet sich deutlich
(Segmente und Szenen gegen ein einzelnes Licht), und ha-ninlight laeuft
produktiv mit vier Lampen - Verzweigungen dort haetten beide Produkte
gefaehrdet.

Entitaeten: light (Hauptschalter und Helligkeit), select (Szene), button
(Neustart), vier Diagnosesensoren.

In ha-dev eingebunden und am echten Geraet geprueft: Aus- und Einschalten,
Helligkeit 40 Prozent, Szenenwechsel auf Regenbogen - das Geraet meldet
jeweils genau das zurueck.
This commit is contained in:
ninharp
2026-09-20 03:42:42 +02:00
commit adec66a6a2
16 changed files with 1140 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
"""Konstanten der ninstrip-Integration. Bewusst frei von Home-Assistant-Importen."""
from __future__ import annotations
from typing import Final
DOMAIN: Final = "ninstrip"
CONF_SCAN_INTERVAL: Final = "scan_interval"
DEFAULT_PORT: Final = 3333
DEFAULT_SCAN_INTERVAL: Final = 30
MIN_SCAN_INTERVAL: Final = 10
MAX_SCAN_INTERVAL: Final = 300
# So viele aufeinanderfolgende Fehlversuche werden geschluckt, bevor das
# Geraet als nicht verfuegbar gilt. Ein kurzer Aussetzer im WLAN soll nicht
# sofort alle Entitaeten ausgrauen.
MAX_POLL_FAILURES: Final = 3
# Die Firmware erlaubt hoechstens 16 Segmente (nl_segments.h) und 512 Pixel.
MAX_SEGMENTS: Final = 16
MAX_PIXELS: Final = 512
# Acht Szenenplaetze (nl_presets.h).
MAX_PRESETS: Final = 8