Home Assistant con Cerebro Local: Cómo Conectar tu Hogar a un LLM sin la Nube
Cada vez que le preguntas a Alexa o Google Assistant cuál es la receta de una tortilla, tu voz viaja miles de kilómetros, se transcribe en un datacenter ajeno, y la respuesta vuelve por el mismo camino. Esto no es solo un problema de privacidad: es una dependencia técnica innecesaria para algo que tu hardware local puede resolver perfectamente. Home Assistant, combinado con un LLM que corre en tu propia red, permite construir un asistente doméstico que entiende el contexto de tu hogar, ejecuta acciones complejas y mantiene cada conversación dentro de tus cuatro paredes.
Por qué un LLM local en lugar de servicios en la nube
Los asistentes de voz tradicionales funcionan bien para tareas simples, pero fallan en cuanto necesitas algo ligeramente fuera del guion. Quieres que apague las luces de la cocina, pero solo si detectó movimiento hace más de diez minutos. Quieres que baje la persiana del salón si la temperatura supera los 28 grados y el sol incide directamente. Estas reglas no caben en un 'si esto, entonces aquello' simple: requieren razonamiento sobre el estado actual de múltiples entidades, algo en lo que un LLM es naturalmente bueno.
La ventaja clave no es solo la privacidad, aunque esa es considerable. Es la flexibilidad semántica: puedes decir 'hace calor' y el sistema entiende que debe revisar el termostato, las persianas y la hora del día, en lugar de exigirte una frase predefinida. Con un LLM local, esta capacidad de interpretación reside en tu hardware, no en un contrato de terceros con cláusulas que cambian cada trimestre.
Arquitectura del sistema
No se trata de reemplazar Home Assistant por un LLM, sino de dotarlo de una capa de inteligencia que interpreta intenciones y genera respuestas. La arquitectura tiene tres componentes bien definidos:
- Home Assistant: la plataforma central que orquesta dispositivos, sensores y automatizaciones. Es el sistema de registro de la verdad sobre el estado de tu hogar.
- Ollama: el servidor de modelos de lenguaje que corre en tu red local. Puede estar en el mismo equipo que Home Assistant o en una máquina dedicada.
- Conversational Agent de Home Assistant: la integración nativa (o custom, vía HACS) que conecta ambos mundos. Toma el estado de las entidades, lo empaqueta como contexto, y lo envía al LLM junto con la petición del usuario.
El flujo funciona así: el usuario habla (o escribe) una petición. Home Assistant recopila el estado relevante de las entidades mencionadas —temperaturas, estados de luces, presencia, etc.— y lo inyecta en un prompt de sistema. Ese prompt, junto con la petición del usuario, se envía a Ollama. El LLM devuelve una respuesta en lenguaje natural y, opcionalmente, una llamada a una herramienta (por ejemplo, 'encender la luz del salón'). Home Assistant ejecuta la acción y presenta la respuesta.
Configuración paso a paso
Supongo que ya tienes Home Assistant funcionando. Si no es así, el método más fiable es Home Assistant Operating System en un Raspberry Pi 4/5, un Mini PC o una VM. El resto de la pila se añade por capas.
Paso 1: Ollama accesible desde la red local
Si Ollama corre en la misma máquina que Home Assistant, el acceso es trivial. Si está en otro equipo de la red —lo recomiendo si vas a usar modelos de más de 7B parámetros— asegúrate de que escucha en la interfaz de red correcta. Por defecto Ollama solo acepta conexiones locales. Para exponerlo a la red, define la variable de entorno OLLAMA_HOST como 0.0.0.0:11434 y reinicia el servicio.
Verifica el acceso desde Home Assistant con un simple curl al endpoint /api/tags. Si ves la lista de modelos descargados, la conectividad está resuelta.
Paso 2: Instalar la integración de Ollama en Home Assistant
Home Assistant tiene una integración oficial para Ollama desde la versión 2024.5. Ve a Configuración > Dispositivos y Servicios > Añadir Integración y busca Ollama. Introduce la URL del servidor —por ejemplo, http://192.168.1.100:11434— y selecciona el modelo que quieres usar como agente conversacional.
Si la integración oficial no te ofrece suficiente control sobre el prompt de sistema, la comunidad ha desarrollado alternativas vía HACS como Ollama Conversation o Extended OpenAI Conversation adaptada a la API de Ollama. Estas permiten personalizar el prompt de sistema con el contexto de tus entidades de forma más granular.
Paso 3: Exponer entidades al agente conversacional
Por defecto, Home Assistant no expone todas tus entidades al LLM. Ve a Configuración > Voz y Asistentes > Ollama Conversation > Configurar y selecciona qué dominios quieres que el agente conozca. Mi recomendación: incluye luces, sensores de temperatura, persianas, cerraduras, presencia y climatización. Evita exponer cámaras o sensores de seguridad directamente al agente conversacional, no por limitación técnica sino por principio de mínimo privilegio.
Elegir el modelo adecuado
No cualquier modelo sirve para controlar un hogar. Necesitas uno que entienda español con fluidez, siga instrucciones de sistema con disciplina, y sea lo suficientemente ligero para responder en menos de cinco segundos en hardware doméstico. Estas son las opciones que he probado en producción real:
- qwen2.5:7b: Mi elección por defecto. Entiende español nativo, sigue instrucciones de sistema con precisión, y en un Mac Mini M2 responde en 2-3 segundos. Consume unos 4-5GB de RAM.
- llama3.1:8b: Más robusto para razonamiento complejo, aunque ligeramente más lento. Especialmente bueno cuando necesitas que el modelo tome decisiones multi-paso (por ejemplo: 'si hace frío y no hay nadie en casa, baja la calefacción y enciende la lámpara del porche al 30%').
- gemma2:9b: Buen rendimiento general, aunque en mi experiencia se desvía más del prompt de sistema que qwen o llama. Útil si tu hardware tiene algo más de RAM disponible.
- phi4:14b: Si tienes un equipo con 16GB+ de RAM, este modelo ofrece la mejor calidad de razonamiento para tareas complejas. La latencia sube a 5-8 segundos, pero la precisión es notablemente superior.
Todos se descargan con 'ollama pull nombre:tag'. No necesitas configuración adicional.
El prompt de sistema: la diferencia entre útil e inútil
El prompt de sistema es donde ganas o pierdes. Un mal prompt produce respuestas genéricas o intentos de ejecutar acciones sobre entidades que no existen. Un buen prompt convierte al LLM en un mayordomo competente. Este es el patrón que uso:
'Eres un asistente doméstico que controla dispositivos conectados a Home Assistant. Solo puedes interactuar con las entidades que se te proporcionan en el contexto. Si el usuario pide algo que no está en el contexto, di que no tienes acceso a ese dispositivo. Sé conciso: responde en una o dos frases. Si ejecutas una acción, confirma brevemente qué has hecho. Si la acción falla, indica el error sin inventar soluciones que no puedas ejecutar.'
El truco está en ser explícito sobre las limitaciones. Los LLMs tienden a alucinar capacidades cuando no les marcas los límites. Si le dices 'solo interactúa con estas entidades', el modelo se ceñirá a ellas en más del 90% de las interacciones.
Casos de uso que funcionan sorprendentemente bien
He estado usando esta configuración durante varias semanas en mi propio hogar. Estos son los casos donde el LLM aporta valor real sobre una automatización tradicional:
- Control contextual: 'Apaga las luces de abajo' funciona sin que hayas definido un grupo explícito, porque el LLM infiere que 'abajo' se refiere a las luces de la planta baja basándose en sus nombres.
- Consultas de estado natural: '¿Hace frío en el salón?' traduce a consultar el sensor de temperatura del salón y comparar con un umbral razonable, devolviendo 'Está a 19 grados, un poco fresco' en lugar de simplemente '19.2°C'.
- Automatizaciones ad-hoc: 'Dentro de media hora, si sigue sin haber movimiento en la cocina, apaga todo' genera una automatización temporal que Home Assistant ejecuta sin que tengas que abrir el editor de YAML.
- Resumen matutino: 'Cuéntame cómo está la casa' produce un resumen que integra temperaturas, puertas abiertas, próximos eventos del calendario y estado de la lavadora, algo imposible de lograr con una única plantilla de notificación.
Límites reales y cómo mitigarlos
Un LLM local no es magia. Tiene límites concretos que es mejor conocer de antemano:
- Latencia: Un modelo de 7B en una Raspberry Pi 5 tarda 10-15 segundos en responder. Para uso conversacional real, necesitas hardware más potente o modelos más pequeños. Un Mac Mini M2 o un Intel N100 son el punto de partida razonable.
- Alucinaciones de entidades: Ocasionalmente el modelo inventa el nombre de una entidad o confunde dos dispositivos similares. Esto se reduce drásticamente con un buen prompt de sistema, pero nunca desaparece completamente. Usa nombres de entidad claros y únicos.
- Memoria de conversación: A menos que configures memoria persistente, cada interacción es independiente. El modelo no recuerda que hace cinco minutos le pediste encender la luz del salón. Algunas integraciones permiten mantener un historial de contexto, pero consume tokens y ralentiza las respuestas.
- Conocimiento externo: El modelo no sabe si va a llover mañana a menos que le conectes una herramienta de weather o le proporciones el dato en el contexto. Todo lo que sabe sobre tu hogar debe venir de Home Assistant.
Consumo y coste real
Si ya tienes Home Assistant corriendo, el coste adicional es el hardware para Ollama. Una Raspberry Pi 5 con 8GB puede sostener un modelo de 3B parámetros, pero para una experiencia fluida con modelos de 7B-8B necesitas algo más potente. Estas son las opciones que he evaluado:
- Raspberry Pi 5 (8GB): ~90€. Funcional para modelos pequeños (3B) o como punto de entrada. Para 7B es lenta pero usable si la latencia no es crítica.
- Intel N100 + 16GB RAM: ~200€. Mejor relación coste-rendimiento para modelos de 7B-8B. Consume poco y corre Ollama sin problemas.
- Mac Mini M2 (16GB): ~600€. La opción premium. La memoria unificada de Apple permite cargar modelos de 14B parámetros con fluidez. Es silencioso, consume poco, y si ya tienes uno en casa, el coste adicional es cero.
El consumo eléctrico de un N100 corriendo Ollama es de unos 6-10W. Un Mac Mini M2 ronda los 7W en carga sostenida. Comparado con el coste de un asistente de voz comercial, que implica hardware, suscripción y pérdida de privacidad, la inversión inicial se amortiza rápido.
Conclusión
Conectar Home Assistant a un LLM local transforma una plataforma de automatización doméstica en un asistente que entiende contexto, interpreta intenciones ambiguas y responde en lenguaje natural. No es perfecto: la latencia es mayor que con servicios en la nube, y ocasionalmente alucina. Pero ganas algo que ninguna suscripción puede comprarte: soberanía sobre los datos de tu hogar.
Si ya tienes Ollama corriendo en tu homelab, añadir la integración con Home Assistant es cuestión de diez minutos. El verdadero trabajo está en ajustar el prompt de sistema y seleccionar qué entidades exponer. Empezar con luces y sensores de temperatura es suficiente para darte cuenta del potencial. El resto se construye iteración a iteración, como todo sistema que merece la pena.