Ir al contenido principal

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

5 de enero de 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.

Javier Santos

Especialista en IA & Machine Learning

📧¿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.

📬

¿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