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.
56 lines
1.9 KiB
JSON
56 lines
1.9 KiB
JSON
{
|
|
"config": {
|
|
"step": {
|
|
"user": {
|
|
"title": "ninstrip hinzufügen",
|
|
"description": "Adresse und API-Token des Geräts. Das Token wird beim ersten Start einmalig auf der seriellen Konsole ausgegeben; ein Werksreset erzeugt ein neues.",
|
|
"data": { "host": "Adresse", "token": "API-Token" }
|
|
},
|
|
"discovery_confirm": {
|
|
"title": "ninstrip gefunden",
|
|
"description": "{name} unter {host}. Bitte das API-Token eingeben.",
|
|
"data": { "token": "API-Token" }
|
|
},
|
|
"reauth_confirm": {
|
|
"title": "Token erneuern",
|
|
"description": "Das Gerät unter {host} weist das gespeicherte Token ab. Nach einem Werksreset hat es ein neues.",
|
|
"data": { "token": "API-Token" }
|
|
}
|
|
},
|
|
"error": {
|
|
"cannot_connect": "Gerät nicht erreichbar",
|
|
"invalid_auth": "Token abgelehnt",
|
|
"not_ninstrip": "Dort antwortet kein ninstrip",
|
|
"unknown": "Unerwarteter Fehler"
|
|
},
|
|
"abort": {
|
|
"already_configured": "Dieses Gerät ist bereits eingerichtet",
|
|
"reauth_successful": "Token erneuert"
|
|
}
|
|
},
|
|
"options": {
|
|
"step": {
|
|
"init": {
|
|
"title": "Einstellungen",
|
|
"data": { "scan_interval": "Abfrageabstand (Sekunden)" }
|
|
}
|
|
}
|
|
},
|
|
"entity": {
|
|
"select": { "preset": { "name": "Szene" } },
|
|
"button": { "restart": { "name": "Neu starten" } },
|
|
"sensor": {
|
|
"rssi": { "name": "WLAN-Signal" },
|
|
"uptime": { "name": "Laufzeit" },
|
|
"free_heap": { "name": "Freier Speicher" },
|
|
"power_scale": { "name": "Leistungsbegrenzung" }
|
|
}
|
|
},
|
|
"exceptions": {
|
|
"auth_failed": { "message": "Das Gerät hat das Token abgelehnt." },
|
|
"device_busy": { "message": "Das Gerät ist beschäftigt - vermutlich läuft eine Aktualisierung." },
|
|
"request_failed": { "message": "Das Gerät hat die Anfrage abgewiesen: {message}" },
|
|
"cannot_connect": { "message": "Das Gerät ist nicht erreichbar." }
|
|
}
|
|
}
|