Kontext
Heute kann eine Integration Folgendes exponieren:
- numerische Werte (
binary,temperature,volume, …) - Textwerte (
category: text,type: text)
Andererseits gibt es derzeit keine Möglichkeit, eine dynamische Liste auswählbarer Werte zu exponieren.
Der Mechanismus supported_options dient einem anderen Zweck: Er ist für bekannte Aufzählungen aus dem Kern von Gladys (Klimaanlagenmodi, Lüftungsgeschwindigkeiten usw.) konzipiert. Die Werte sind fest und durch die Taxonomie von Gladys definiert.
Problem
Einige Integrationen benötigen Listen, die:
- dynamisch entdeckt werden;
- für jedes Gerät spezifisch sind;
- Identifikatoren in Form von Zeichenfolgen verwenden;
- sich im Laufe der Zeit ändern können.
Beispiel mit einem LG webOS TV
Die installierten Anwendungen sind von TV zu TV unterschiedlich und können sich ändern:
- Netflix
- Disney+
- Prime Video
- YouTube
- Plex
- …
Jede Anwendung hat einen eigenen Identifikator:
netflix
com.disney.disneyplus-prod
amazon
youtube.leanback.v4
cdp-30
Das Gleiche gilt für die Quellen:
- HDMI 1
- HDMI 2
- PlayStation 5
- Nintendo Switch
- …
mit Identifikatoren wie:
HDMI_1
HDMI_2
com.webos.app.hdmi3
…
Diese Werte auf ganze Zahlen abzubilden, wäre gefährlich: Nach der Installation oder dem Entfernen einer Anwendung kann sich die Reihenfolge ändern und eine Szene könnte eine andere Anwendung starten als erwartet.
Vorschlag
Es sollte Integrationen ermöglichen, eine dynamische Liste von Optionen basierend auf Zeichenfolgen zu veröffentlichen.
Zum Beispiel:
{
« category »: « text »,
« type »: « select »,
« options »: [
{ "value": "netflix", "label": "Netflix" }, { "value": "youtube.leanback.v4", "label": "YouTube" }, { "value": "amazon", "label": "Prime Video" }]
}
Die Benutzeroberfläche würde einfach Folgendes anzeigen:
▼ Netflix
▼ YouTube
▼ Prime Video
und die Integration würde direkt Netflix erhalten, anstatt einen numerischen Index.
Anwendungsfälle
Diese Funktion betrifft nicht nur Fernseher. Sie könnte für zahlreiche Integrationen nützlich sein:
- TV-Anwendungen
- HDMI-Quellen
- Teile eines Robotervakuums
- Playlists oder Favoriten
- Native Szenen eines Geräts (z. B. Roborock)
- Lademodi eines Elektrofahrzeugs
- usw.
In meinem Fall würde dies beispielsweise ermöglichen, direkt einen Selektor zum Starten einer Anwendung (Netflix, Plex, YouTube…) oder Wechseln der Quelle (HDMI 1, HDMI 2, PlayStation 5…) anzubieten, anstatt den Benutzer aufzufordern, einen technischen Identifikator wie
netflixoderHDMI_1einzugeben.
Meiner Meinung nach ist dieser Bedarf generisch und könnte von zahlreichen Integrationen genutzt werden, sobald ein Gerät eine dynamische Liste von Elementen exponiert (Anwendungen, Quellen, Teile, Playlists, Favoriten, native Szenen, Routinen usw.).