Contexto
Hoy en día, una integración puede exponer:
- valores numéricos (
binary,temperature,volume, …) - valores de texto (
category: text,type: text)
Sin embargo, actualmente no existe ningún medio para exponer una lista dinámica de valores seleccionables.
El mecanismo supported_options responde a otra necesidad: está diseñado para enumeraciones conocidas del núcleo de Gladys (modos de climatización, velocidades de ventilación, etc.). Los valores son fijos y definidos por la taxonomía de Gladys.
Problema
Algunas integraciones necesitan exponer listas que:
- se descubren dinámicamente;
- son propias de cada dispositivo;
- utilizan identificadores en forma de cadenas de caracteres;
- pueden evolucionar con el tiempo.
Ejemplo con una TV LG webOS
Las aplicaciones instaladas son diferentes de una TV a otra y pueden evolucionar:
- Netflix
- Disney+
- Prime Video
- YouTube
- Plex
- …
Cada aplicación tiene su propio identificador:
netflix
com.disney.disneyplus-prod
amazon
youtube.leanback.v4
cdp-30
Lo mismo ocurre con las fuentes:
- HDMI 1
- HDMI 2
- PlayStation 5
- Nintendo Switch
- …
con identificadores como:
HDMI_1
HDMI_2
com.webos.app.hdmi3
…
Mapear estos valores a enteros sería peligroso: después de instalar o eliminar una aplicación, el orden puede cambiar y una escena podría lanzar una aplicación diferente a la esperada.
Propuesta
Permitir a las integraciones publicar una lista de opciones dinámicas basada en cadenas de caracteres.
Por ejemplo:
{
« category »: « text »,
« type »: « select »,
« options »: [
{ "value": "netflix", "label": "Netflix" }, { "value": "youtube.leanback.v4", "label": "YouTube" }, { "value": "amazon", "label": "Prime Video" }]
}
La interfaz mostraría simplemente:
▼ Netflix
▼ YouTube
▼ Prime Video
y la integración recibiría directamente `Netflix` en lugar de un índice numérico.
Casos de uso
Esta funcionalidad no se limita a los televisores. Podría ser útil para muchas integraciones:
- Aplicaciones de TV
- Fuentes HDMI
- Piezas de un robot aspirador
- Listas de reproducción o favoritos
- Escenas nativas de un equipo (Roborock, por ejemplo)
- Modos de carga de un vehículo eléctrico
- etc.
En mi caso, esto permitiría, por ejemplo, ofrecer directamente un selector para iniciar una aplicación (Netflix, Plex, YouTube…) o cambiar de fuente (HDMI 1, HDMI 2, PlayStation 5…) en lugar de pedir al usuario que ingrese un identificador técnico como
netflixoHDMI_1.
En mi opinión, esta necesidad es genérica y podría ser utilizada por muchas integraciones siempre que un dispositivo exponga una lista dinámica de elementos (aplicaciones, fuentes, piezas, listas de reproducción, favoritos, escenas nativas, rutinas, etc.).