Todavía nos queda una sorpresa…
Y para terminar, vamos a guardar una pequeña sorpresa que probablemente sea una de las partes más interesantes de todo este experimento.
Como ya hemos comentado, Kodi dispone de un ecosistema de complementos enorme y también existen integraciones que permiten relacionarlo con Home Assistant. Pero aquí queríamos hacer algo un poco diferente: no se trataba simplemente de que Home Assistant pudiera saber qué estamos reproduciendo en Kodi o controlar el reproductor desde HA. Eso ya existe desde hace tiempo.
La idea que nos rondaba la cabeza era justamente la contraria: llevar Home Assistant hasta Kodi y convertir el televisor en otra interfaz desde la que pudiéramos consultar información de nuestra instalación domótica y, eventualmente, actuar sobre ella sin abandonar Kodi.
El problema es que la integración que encontramos como punto de partida era bastante antigua y ya no funcionaba correctamente con la versión actual de Kodi. Así que, siguiendo nuestra habitual filosofía de «si no funciona, vamos a ver por qué», decidimos escribirla de nuevo y adaptarla a nuestro entorno.

El resultado es un pequeño add-on de Kodi que se comunica directamente con la API de Home Assistant. El mecanismo es bastante sencillo: desde Kodi obtenemos los estados de las entidades de Home Assistant mediante peticiones HTTP autenticadas con un token y después presentamos esa información utilizando las propias ventanas y diálogos de Kodi.

Por ejemplo, una de las funciones consulta todas las entidades disponibles en Home Assistant mediante /api/states, construye un mapa con sus entity_id y permite seleccionar aquellas que nos interesan. En nuestro caso hemos preparado además una pequeña matriz para mostrar de una forma mucho más cómoda algunos de los elementos que nos interesan especialmente, como la temperatura exterior o el estado de los equipos de aire acondicionado.
El núcleo del add-on es este:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import xbmc import xbmcaddon import xbmcgui import requests ADDON = xbmcaddon.Addon() HA_URL = ADDON.getSetting("ha_url") HA_TOKEN = ADDON.getSetting("ha_token") def ha_get(path): headers = { "Authorization": f"Bearer {HA_TOKEN}", "Content-Type": "application/json", } try: r = requests.get( f"{HA_URL}/api/{path}", headers=headers, timeout=5 ) return r.json() except Exception as e: xbmc.log( f"<span class="text-token-text-primary cursor-text rounded-sm" data-placeholder-token="true">[HAKA21]</span> Error connecting to HA: {e}", xbmc.LOGERROR ) return None |
A partir de ahí, el resto resulta bastante fácil de entender. ha_get() es la pequeña pieza que hace de puente entre Kodi y Home Assistant: obtiene la URL de HA y el token de acceso de larga duración configurados en el add-on, realiza la petición a la API de HA y devuelve los datos recibidos.
75

Como no podía ser de otra manera, se nos han quedado muchas cosas en el tintero, pero tampoco era cuestión de haceros esperar más. Por ejemplo, todavía no hemos hablado de dos de las «formas» que estamos utilizando para controlar cómodamente el UGREEN desde el sofá…