feat: Coordinator, Geraet und Licht-Entitaet

This commit is contained in:
Michael Sauer
2026-09-16 15:32:07 +02:00
parent 75dc2b7dd6
commit 40186d95d1
13 changed files with 1137 additions and 0 deletions
@@ -0,0 +1,106 @@
{
"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" }
},
"select": {
"power_on_behaviour": {
"name": "Einschaltverhalten",
"state": { "last": "Letzter Zustand", "on": "Ein", "off": "Aus" }
}
},
"switch": {
"wake_on_change": { "name": "Bei Änderung einschalten" }
},
"sensor": {
"ip_address": { "name": "IP-Adresse" },
"free_heap": { "name": "Freier Speicher" },
"last_ota_error": { "name": "Letzter Update-Fehler" },
"boot_time": { "name": "Letzter Start" }
}
},
"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 Vorgabe-Token kann jeder in deinem Netz diese Lampe steuern und neu flashen. Setze ein eigenes Token auf der Lampe und trage es über „Neu konfigurieren“ ein."
},
"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."
}
}
}
@@ -0,0 +1,106 @@
{
"config": {
"flow_title": "{name}",
"step": {
"user": {
"title": "Set up ninlight lamp",
"description": "Enter the address of the lamp. The token is prefilled with the public default token – anyone on your network who knows it can control and reflash the lamp.",
"data": { "host": "Host", "token": "Token" },
"data_description": {
"host": "IP address or ninlight-xxxx.local name of the lamp.",
"token": "Authorization token of the lamp."
}
},
"zeroconf_confirm": {
"title": "Set up {name}",
"description": "Found the ninlight lamp {name} at {host}. The token is prefilled with the public default token – anyone on your network who knows it can control and reflash the lamp.",
"data": { "token": "Token" }
},
"reauth_confirm": {
"title": "Re-authenticate {name}",
"description": "The lamp rejected the stored token. Enter its current token.",
"data": { "token": "Token" }
},
"reconfigure": {
"title": "Reconfigure lamp",
"data": { "host": "Host", "token": "Token" }
}
},
"error": {
"cannot_connect": "Cannot reach the lamp.",
"invalid_auth": "The lamp rejected the token.",
"not_ninlight": "The device did not answer like a ninlight lamp.",
"unknown": "Unexpected error."
},
"abort": {
"already_configured": "This lamp is already set up.",
"not_ninlight": "The device did not announce itself like a ninlight lamp.",
"wrong_device": "This address belongs to a different lamp.",
"reauth_successful": "Re-authentication was successful.",
"reconfigure_successful": "Reconfiguration was successful."
}
},
"options": {
"step": {
"init": {
"title": "ninlight options",
"data": {
"scan_interval": "Polling interval (seconds)",
"lamp_base_url": "Address lamps use to reach Home Assistant"
},
"data_description": {
"lamp_base_url": "Only needed for firmware updates if lamps cannot reach Home Assistant's internal URL over plain http, e.g. http://192.168.1.50:8123"
}
}
},
"error": {
"invalid_base_url": "Must be a plain http:// address with host and optional port, without path.",
"base_url_too_long": "Address too long – the lamp accepts at most 255 characters for the whole firmware URL."
}
},
"entity": {
"number": {
"fade_in": { "name": "Fade-in" },
"fade_out": { "name": "Fade-out" },
"transition_default": { "name": "Default transition" }
},
"select": {
"power_on_behaviour": {
"name": "Power-on behaviour",
"state": { "last": "Last state", "on": "On", "off": "Off" }
}
},
"switch": {
"wake_on_change": { "name": "Turn on when changed" }
},
"sensor": {
"ip_address": { "name": "IP address" },
"free_heap": { "name": "Free memory" },
"last_ota_error": { "name": "Last update error" },
"boot_time": { "name": "Last start" }
}
},
"exceptions": {
"cannot_connect": { "message": "Cannot reach the lamp." },
"auth_failed": { "message": "The lamp rejected the token." },
"request_failed": { "message": "The lamp rejected the request: {message}" },
"update_busy": { "message": "An update is already running on the lamp." },
"no_update": { "message": "No firmware update is available." },
"no_http_url": { "message": "Lamps can only reach Home Assistant over plain http. Set the address in the integration options." },
"lamp_url_too_long": { "message": "The firmware URL is longer than the 255 characters the lamp accepts." },
"image_invalid": { "message": "The firmware file changed or is no longer valid." },
"wifi_guard": { "message": "This firmware does not contain the Wi-Fi credentials for {ssid}; the lamp would lose its network connection." },
"update_failed": { "message": "The update failed: {reason}" },
"update_timeout": { "message": "The lamp did not report the new firmware within 12 minutes." }
},
"issues": {
"default_token": {
"title": "{name} uses the public default token",
"description": "Anyone on your network can control and reflash this lamp with the default token. Set your own token on the lamp and enter it via reconfigure."
},
"wifi_guard": {
"title": "Firmware for {name} not offered",
"description": "The firmware folder contains {version} for {device_type}, but without Wi-Fi credentials for {ssid}. The lamp only knows its Wi-Fi from its firmware and would lose its network connection after this update, so the update is not offered."
}
}
}