Ir al contenido principal

Cómo Integrar OpenAI en Home Assistant: Control por Voz con GPT-4 [Guía 2026]

10 min

Integración gratuita que conecta OpenAI GPT-4 con Home Assistant. Controla tu casa con voz natural y crea automatizaciones conversando sin escribir YAML.

📧¿Te gusta este contenido?

Únete a 547+ profesionales que reciben tips de IA cada semana. Sin spam, cancela cuando quieras.

Potenciando la automatización conversacional en Home Assistant con LLMs: arquitectura y aprendizaje tras desarrollar llm-homeassistant

TL;DR - Resumen Rápido

  • Integración gratuita que conecta OpenAI GPT-4 con Home Assistant
  • Controla tu casa con voz natural: "Enciende las luces del salón cuando llegue a casa"
  • Crea automatizaciones conversando - Sin escribir YAML manualmente
  • Function calling para acciones seguras y controladas
  • Código disponible: GitHub


La domótica ha avanzado a pasos agigantados en los últimos años, pero la experiencia de usuario sigue estando limitada muchas veces por interfaces rígidas o por la necesidad de conocer comandos específicos. Como entusiasta de la inteligencia artificial aplicada y usuario intensivo de Home Assistant, me propuse un reto: llevar las capacidades conversacionales de los modelos LLM (Large Language Models) al siguiente nivel dentro del ecosistema domótico, permitiendo ejecutar acciones complejas y personalizadas usando lenguaje natural.

Así nació llm-homeassistant, una integración personalizada para Home Assistant que empodera cualquier interacción conversacional con modelos de OpenAI como GPT-4, permitiendo desde ejecutar servicios, crear automatizaciones, consultar APIs externas y acceder al historial de estados… todo en español (o cualquier otro idioma soportado por el LLM) y sin scripts predefinidos.

En este post, desgloso el proceso de diseño, las decisiones técnicas clave y los desafíos enfrentados durante el desarrollo de este proyecto, compartiendo aprendizajes y posibles mejoras para el futuro.


¿Por qué hacía falta una integración así?

Aunque Home Assistant ya contaba con la integración OpenAI Conversation, su alcance era limitado:

  • La interacción estaba restringida a respuestas básicas y comandos predefinidos.
  • No era posible ejecutar servicios complejos, crear automatizaciones desde la conversación, o consultar datos históricos con flexibilidad.
  • La integración con APIs externas u orígenes de datos web era nula.

La visión era clara: permitir a los usuarios controlar su hogar inteligente con órdenes naturales, sin preocuparse por la sintaxis ni las limitaciones del sistema.


Arquitectura: cómo conectar Home Assistant, LLMs y acciones avanzadas

Visión general

La arquitectura de llm-homeassistant se apoya en varios pilares:

  1. Integración nativa con Home Assistant como custom component.
  2. Interfaz conversacional impulsada por LLMs (OpenAI GPT-4, GPT-4o, y compatibles).
  3. Uso de function calling de OpenAI para traducir intenciones en acciones concretas de Home Assistant.
  4. Extensión de capacidades: llamar servicios, crear automatizaciones, consultar APIs/webs externas y acceder a histórico de entidades.

El diagrama conceptual sería:

code
1Usuario → Home Assistant Conversation → LLM (OpenAI API) ↔ LLM-HomeAssistant Integration ↔ Home Assistant Core (servicios, automatizaciones, etc.)
2
3 APIs externas / web scraping

Componentes principales

  • Custom Component Python para Home Assistant

Permite registrar la integración, gestionar la configuración (API Key, entidades expuestas, etc.) y actuar como puente entre el diálogo y el core de Home Assistant.

  • Function calling de OpenAI

Se aprovecha la capacidad de los modelos OpenAI para llamar funciones declaradas dinámicamente por el developer (en este caso, servicios y acciones de Home Assistant). Más detalles aquí.

  • Manejo de contexto y usuarios

Cada mensaje puede incluir información contextual, como el nombre del usuario, para personalizar respuestas o ejecutar acciones según permisos.

  • Módulos de extensión

- Llamada a servicios: ejecutar cualquier servicio expuesto por Home Assistant.

- Creación de automatizaciones: generar triggers y acciones conversacionalmente.

- Consulta de APIs o scraping web: obtener información externa bajo demanda.

- Histórico de entidades: recuperar y resumir datos pasados.


Decisiones técnicas clave

¿Por qué Python?

Home Assistant está construido en Python, por lo que la integración debía ser natural y aprovechar las APIs y eventos del core. Además, Python facilita la manipulación de datos y la integración con APIs externas.

Function Calling vs. Prompt Engineering clásico

En lugar de depender únicamente de prompts extensos y lógica compleja del lado del LLM (lo que puede ser costoso, menos predecible y menos seguro), opté por el enfoque de function calling:

  • Declarar “funciones” disponibles (ej. call_service, create_automation, get_external_data), sus parámetros, y dejar que el LLM decida cuál invocar, rellenando los argumentos a partir del mensaje del usuario.
  • Esto permite controlar mejor la seguridad, la validación de entradas y dar feedback específico en caso de errores.

Seguridad y permisos

Un reto importante era evitar que cualquier usuario pudiera ejecutar acciones críticas (ej. abrir una puerta, resetear sistemas) solo con un mensaje. Por eso, la integración está pensada para:

  • Respetar los permisos de usuario de Home Assistant.
  • Permitir definir qué servicios y entidades son “expuestos” al LLM, minimizando riesgos.


Ejemplo de flow conversacional

Para ilustrar cómo funciona la integración, veamos un ejemplo:

  1. Usuario:

> “Enciende la luz del salón y baja la persiana si la temperatura pasa de 28°C.”

  1. LLM-HomeAssistant:

- El mensaje es enviado al LLM con información contextual sobre entidades disponibles.

- El LLM responde invocando la función create_automation con los parámetros adecuados (trigger, acciones).

- El componente valida la petición y crea la automatización vía la API de Home Assistant.

- Respuesta al usuario confirmando la creación.

Snippet de función expuesta al LLM:

python
1def create_automation(trigger: dict, actions: list, name: str = None):
2 """Crea una automatización en Home Assistant según los parámetros recibidos."""
3 # Validación de entradas
4 # Llamada a la API interna para crear la automatización
5 # Logging y respuesta conversacional


Principales desafíos y cómo los resolví

1. Mapeo entre lenguaje natural y entidades reales

El LLM puede inferir nombres genéricos (“luz del salón”), pero Home Assistant usa identificadores (light.salon). Para resolverlo:

  • Se expone al LLM la lista de entidades disponibles y un mapeo de nombres amigables.
  • En el prompt inicial se incluye un contexto JSON con las entidades expuestas.

2. Validación y robustez ante errores

Las respuestas del LLM no siempre son perfectas: pueden faltar argumentos, referirse a entidades inexistentes o intentar acciones no permitidas.

  • Implementé validaciones exhaustivas antes de ejecutar cualquier acción.
  • Si hay errores o ambigüedad, se responde al usuario pidiendo aclaración o informando del fallo.

3. Consulta de APIs externas y scraping

Permitir que el LLM sugiera la consulta de una API externa o página web implica riesgos de seguridad y performance.

  • Solo se permite el acceso a APIs/webs predefinidas o bajo confirmación del usuario.
  • Se limita el tiempo de ejecución y el tamaño de las respuestas.

4. Persistencia y resumen de histórico

Al consultar el histórico de estados de una entidad (ej. “¿Cuántas veces se abrió la puerta esta semana?”), se deben hacer queries eficientes y resumir los resultados de forma comprensible.

  • Uso de las APIs internas de Home Assistant para obtener históricos.
  • Procesamiento y resumen de datos antes de enviarlos al LLM para generar una respuesta “natural”.


Resultados y métricas

Aunque la integración es relativamente joven, ya hemos visto resultados muy positivos:

  • Tiempo de configuración reducido: cualquier usuario puede conectar su LLM en menos de 5 minutos.
  • Conversaciones naturales y poderosas: usuarios sin conocimientos técnicos pueden crear automatizaciones complejas solo hablando.
  • Extensibilidad: la arquitectura permite añadir nuevas “funciones” fácilmente (¡ya hay contribuciones externas!).
  • Feedback positivo: la comunidad Home Assistant ha mostrado interés y ha sugerido mejoras y nuevas features.


Aprendizajes y mejoras futuras

Lo aprendido

  • El “function calling” es un game-changer para integrar LLMs con sistemas de automatización: más seguro, flexible y fácil de mantener que el prompt engineering puro.
  • La seguridad nunca es suficiente: hay que validar todo, limitar el alcance y registrar acciones.
  • La experiencia de usuario conversacional es adictiva cuando el sistema responde de verdad a lo que pides, no solo con respuestas “de asistente”.

Mejoras en el roadmap

  • Soporte para otros LLMs (ej. modelos open source como Llama, Mistral, etc.).
  • Mejor UI para exponer/ocultar entidades y definir permisos por usuario.
  • Logs más detallados y métricas de uso.
  • Soporte multilingüe nativo y prompts contextuales según idioma.
  • Integración con otros sistemas domóticos y APIs de terceros.


Conclusión

llm-homeassistant es un paso hacia una domótica verdaderamente inteligente y accesible, donde la barrera del lenguaje desaparece y el usuario puede controlar todo su entorno solo hablando. El viaje apenas empieza, y las posibilidades que abre la integración de LLMs con el hogar conectado son inmensas.

Si quieres probarlo, contribuir o simplemente curiosear el código, pásate por el repo:

👉 https://github.com/ESJavadex/llm-homeassistant

¿Tienes ideas de mejoras, dudas técnicas o quieres compartir tu experiencia? ¡Déjame un comentario o abre un issue! 🚀


Preguntas Frecuentes (FAQ)

¿Cuánto cuesta usar OpenAI con Home Assistant?

Costes típicos por modelo:

ModeloCoste por 1K tokensCoste típico mensual
GPT-4o$0.005$1-5
GPT-4$0.03$5-15
GPT-4o Turbo$0.0005$0.10-0.50

Uso doméstico normal: 5-10 comandos/día = ~$1-3/mes con GPT-4o

¿Qué comandos de voz puedo usar?

Ejemplos que funcionan:

Control básico:

  • "Enciende todas las luces del piso de arriba"
  • "Baja la persiana del dormitorio al 50%"
  • "¿Está encendida la calefacción?"

Automatizaciones:

  • "Si no hay nadie en casa después de las 22:00, apaga todo"
  • "Cuando abra la puerta del garaje, enciende la luz exterior"
  • "Crea un modo cine que baje las persianas y atenúe las luces"

Consultas:

  • "¿Cuánto consumió la lavadora esta semana?"
  • "¿Cuántas veces se abrió la puerta principal hoy?"

¿Es seguro dar acceso a OpenAI a mi casa?

La integración incluye múltiples capas de seguridad:

  • Permisos granulares - Define qué entidades exponer al LLM
  • Validación de acciones - Todas las peticiones se validan antes de ejecutar
  • Logs de auditoría - Registro de todas las acciones ejecutadas
  • Sin acceso a datos sensibles - Las credenciales nunca se envían a OpenAI

¿Puedo usar otros modelos además de OpenAI?

Actualmente la integración está optimizada para OpenAI, pero hay planes de soporte para:

  • Modelos locales: Llama 3, Mistral (via Ollama)
  • Claude de Anthropic
  • Gemini de Google

¿Cómo se compara con el asistente nativo de Home Assistant?

CaracterísticaAsistente Nativollm-homeassistant
Comandos predefinidos
Lenguaje natural flexible
Crear automatizaciones por voz
Consultar histórico
APIs externas
Offline

¿Funciona en español?

Sí, funciona perfectamente en español y en cualquier idioma soportado por GPT-4. Puedes:

  • Dar comandos en español
  • Recibir respuestas en español
  • Mezclar idiomas si lo prefieres

¿Qué pasa si el LLM entiende mal mi comando?

El sistema incluye protecciones:

  1. Confirmación para acciones críticas (cerraduras, alarmas)
  2. Preview de automatizaciones antes de activarlas
  3. Undo/rollback para revertir cambios recientes
  4. Clarificación - El LLM pregunta si hay ambigüedad


Recursos Adicionales

Posts Relacionados sobre Home Assistant


¿Has creado automatizaciones interesantes con LLM en Home Assistant? Comparte tu experiencia en los comentarios o contribuye al proyecto en GitHub.

¿Crees que estás sacando partido a la IA en tu empresa?

Si la respuesta no es un sí rotundo, te estás dejando horas, dinero y ventaja competitiva cada día que pasa. Mientras tú lo valoras, tu competencia ya lo está usando para moverse el doble de rápido.

Te implemento un sistema de IA que ahorra tiempo, reduce costes y aumenta ingresos: 100% adaptado a tu stack, tus datos y tus procesos. En 4-8 semanas tienes una primera versión funcionando, no dentro de seis meses.

📬

¿Te ha gustado? Hay más cada semana

Únete a "IA Sin Humo" — la newsletter donde comparto lo que realmente funciona en inteligencia artificial. Sin teoría innecesaria, sin postureo.

📚

1 Tutorial

Paso a paso, práctico

🛠️

3 Herramientas

Probadas y útiles

💡

0 Bullshit

Solo lo que importa

+547 suscriptores • Cada martes • Cancela cuando quieras

Javier Santos - Especialista en IA & Machine Learning

Javier Santos

Consultor de IA para empresas. Comparto contenido sobre inteligencia artificial, automatización y desarrollo cada semana.