Files
Michael Sauer ac60428fdb feat: sACN-Einstellungen und -Status als Entitaeten
Die Firmware kann seit dieser Woche sACN/E1.31. Einstellen liess sich das nur
per REST - jetzt steht es in Home Assistant: Schalter fuer den Empfang, Zahlen
fuer Universe und Startslot, Auswahlen fuer das Verhalten nach dem Timeout und
die Slotbelegung, dazu zwei Diagnose-Binaersensoren.

Die sACN-Einstellungen liegen hinter system/settings, nicht in device/state -
der Koordinator liest sie deshalb jetzt mit, eine dritte Anfrage je Zyklus. Der
Schreibweg liest die Einstellungen danach frisch zurueck statt den gesetzten
Wert anzunehmen: die Lampe validiert selbst (die Startslot-Grenze haengt an der
Slotbelegung), und eine Entitaet, die das Gewuenschte statt des Gespeicherten
zeigt, luegt in genau dem Moment, in dem es darauf ankommt.

Aeltere Firmware antwortet ohne den sacn-Block. Die Entitaeten entstehen
trotzdem und melden sich als nicht verfuegbar - so werden sie nach einem Update
der Lampe beim naechsten Poll von selbst lebendig, ohne Neuladen.

Die Obergrenze des Startslots kommt aus dem "slots"-Feld der Lampe, nicht aus
einer festen 512: sie haengt an Board UND Slotbelegung, und eine feste Grenze
wuerde Werte anbieten, die die Lampe dann ablehnt.

Der Multicast-Sensor ist ab Werk deaktiviert wie die uebrigen Diagnosewerte. Er
meldet im Normalbetrieb schlicht "beigetreten" - aber eine falsche
Gruppenadresse hat zwei Abende gekostet, und genau dort waere sie aufgefallen.

test_update.py misst seine Zusage jetzt um den Rescan herum statt nach dem
Install: dort pollt der Koordinator ohnehin wieder und liest seitdem auch die
Einstellungen mit.
2026-09-21 23:35:54 +02:00

190 lines
6.2 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"config": {
"flow_title": "{name}",
"step": {
"user": {
"title": "ninlight-Lampe einrichten",
"description": "Adresse der Lampe eingeben. Das Token ist mit dem öffentlichen Vorgabe-Token vorbelegt – wer es kennt, kann die Lampe in deinem Netz steuern und neu flashen.",
"data": {
"host": "Host",
"token": "Token"
},
"data_description": {
"host": "IP-Adresse oder ninlight-xxxx.local-Name der Lampe.",
"token": "Autorisierungs-Token der Lampe."
}
},
"zeroconf_confirm": {
"title": "{name} einrichten",
"description": "ninlight-Lampe {name} unter {host} gefunden. Das Token ist mit dem öffentlichen Vorgabe-Token vorbelegt – wer es kennt, kann die Lampe in deinem Netz steuern und neu flashen.",
"data": {
"token": "Token"
}
},
"reauth_confirm": {
"title": "{name} neu anmelden",
"description": "Die Lampe hat das gespeicherte Token abgelehnt. Gib ihr aktuelles Token ein.",
"data": {
"token": "Token"
}
},
"reconfigure": {
"title": "Lampe neu konfigurieren",
"data": {
"host": "Host",
"token": "Token"
}
}
},
"error": {
"cannot_connect": "Die Lampe ist nicht erreichbar.",
"invalid_auth": "Die Lampe hat das Token abgelehnt.",
"not_ninlight": "Das Gerät antwortet nicht wie eine ninlight-Lampe.",
"unknown": "Unerwarteter Fehler."
},
"abort": {
"already_configured": "Diese Lampe ist bereits eingerichtet.",
"not_ninlight": "Das Gerät meldet sich nicht wie eine ninlight-Lampe.",
"wrong_device": "Unter dieser Adresse antwortet eine andere Lampe.",
"reauth_successful": "Neuanmeldung erfolgreich.",
"reconfigure_successful": "Neukonfiguration erfolgreich."
}
},
"options": {
"step": {
"init": {
"title": "ninlight-Optionen",
"data": {
"scan_interval": "Abfrageintervall (Sekunden)",
"lamp_base_url": "Adresse, unter der Lampen Home Assistant erreichen"
},
"data_description": {
"lamp_base_url": "Nur für Firmware-Updates nötig, wenn die Lampen die interne URL von Home Assistant nicht über reines http erreichen, z. B. http://192.168.1.50:8123"
}
}
},
"error": {
"invalid_base_url": "Muss eine reine http://-Adresse mit Host und optionalem Port sein, ohne Pfad.",
"base_url_too_long": "Adresse zu lang – die Lampe akzeptiert höchstens 255 Zeichen für die gesamte Firmware-URL."
}
},
"entity": {
"number": {
"fade_in": {
"name": "Einblenden"
},
"fade_out": {
"name": "Ausblenden"
},
"transition_default": {
"name": "Standardübergang"
},
"sacn_universe": {
"name": "sACN-Universe"
},
"sacn_start_slot": {
"name": "sACN-Startslot"
}
},
"select": {
"power_on_behaviour": {
"name": "Einschaltverhalten",
"state": {
"last": "Letzter Zustand",
"on": "Ein",
"off": "Aus"
}
},
"sacn_on_timeout": {
"name": "sACN nach Timeout",
"state": {
"release": "Zurück zu Home Assistant",
"hold": "Letzte Werte halten"
}
},
"sacn_layout": {
"name": "sACN-Slotbelegung",
"state": {
"dimmer": "Dimmer voran",
"rgb": "Nur RGB"
}
}
},
"switch": {
"wake_on_change": {
"name": "Bei Änderung einschalten"
},
"sacn_enabled": {
"name": "sACN-Empfang"
}
},
"sensor": {
"ip_address": {
"name": "IP-Adresse"
},
"free_heap": {
"name": "Freier Speicher"
},
"last_ota_error": {
"name": "Letzter Update-Fehler"
},
"boot_time": {
"name": "Letzter Start"
}
},
"binary_sensor": {
"sacn_active": {
"name": "Ferngesteuert"
},
"sacn_multicast": {
"name": "Multicast-Gruppe"
}
}
},
"exceptions": {
"cannot_connect": {
"message": "Die Lampe ist nicht erreichbar."
},
"auth_failed": {
"message": "Die Lampe hat das Token abgelehnt."
},
"request_failed": {
"message": "Die Lampe hat die Anfrage abgelehnt: {message}"
},
"update_busy": {
"message": "Auf der Lampe läuft bereits ein Update."
},
"no_update": {
"message": "Kein Firmware-Update verfügbar."
},
"no_http_url": {
"message": "Lampen erreichen Home Assistant nur über reines http. Setze die Adresse in den Optionen der Integration."
},
"lamp_url_too_long": {
"message": "Die Firmware-URL ist länger als die 255 Zeichen, die die Lampe akzeptiert."
},
"image_invalid": {
"message": "Die Firmware-Datei hat sich geändert oder ist nicht mehr gültig."
},
"wifi_guard": {
"message": "Diese Firmware enthält keine WLAN-Zugangsdaten für {ssid}; die Lampe wäre danach nicht mehr im Netz."
},
"update_failed": {
"message": "Das Update ist fehlgeschlagen: {reason}"
},
"update_timeout": {
"message": "Die Lampe hat die neue Firmware nicht innerhalb von 12 Minuten gemeldet."
}
},
"issues": {
"default_token": {
"title": "{name} nutzt das öffentliche Vorgabe-Token",
"description": "Mit dem öffentlichen Vorgabe-Token kann jeder in deinem Netz diese Lampe neu konfigurieren, neu starten, neu flashen oder auf Werkseinstellungen zurücksetzen (sie verliert dabei ihr WLAN und fällt zurück in den Onboarding-Zugangspunkt). Schalten und Dimmen sind ohne „auth_all“ ohnehin für jeden im Netz möglich. Setze ein eigenes Token auf der Lampe und trage es über „Neu konfigurieren“ ein; willst du auch das Schalten schützen, aktiviere zusätzlich auth_all."
},
"wifi_guard": {
"title": "Firmware für {name} nicht angeboten",
"description": "Im Firmware-Ordner liegt {version} für {device_type}, aber ohne WLAN-Zugangsdaten für {ssid}. Die Lampe kennt ihr WLAN nur aus ihrer Firmware und wäre nach diesem Update nicht mehr im Netz – das Update wird deshalb nicht angeboten."
}
}
}