Integrar Home Assistant con Ollama
Qué cubre este artículo
- Cómo configurar Ollama como backend de IA para Home Assistant.
- Cómo usar el asistente de voz local con Ollama.
- Cómo estructurar automatizaciones con decisiones basadas en IA.
- Ejemplos prácticos de comandos en lenguaje natural y control inteligente.
- Mejores prácticas para rendimiento y privacidad.
Introducción: Home Assistant con Ollama
Home Assistant incluye un asistente de voz llamado Assist. Por defecto, depende de servicios en la nube. Con Ollama como backend, todo permanece local: hablas, Whisper transcribe, Ollama interpreta y decide, Home Assistant ejecuta. Ningún dato abandona tu red.
Este artículo está orientado a usuarios que desean conectar Home Assistant con IA local. Encontrarás conceptos fundamentales en Home Assistant y Ollama.
¿Por qué necesito Home Assistant con Ollama?
Los asistentes de voz estándar (Alexa, Google) envían tus comandos de voz a la nube. Home Assistant con Ollama procesa todo localmente: “enciende la luz de la sala” se transcribe con Whisper, se interpreta con Ollama y se ejecuta en Home Assistant, sin que un byte salga de tu casa.
Home Assistant con Ollama: conceptos clave
Ollama se integra en Home Assistant como agente de conversación. Assist (el asistente de voz) utiliza entonces Ollama en lugar de servicios en la nube. Además, puedes usar Ollama en automatizaciones y scripts para tomar decisiones inteligentes.
La idea central es simple: IA local como cerebro para tu hogar inteligente.
Para quién está pensado este artículo
- Usuarios de Home Assistant que quieren IA local.
- Personas conscientes de privacidad que rechazan asistentes de voz en la nube.
- Autohospedadores que ejecutan Ollama en su hogar inteligente.
- Entusiastas que construyen control por voz natural.
Resulta útil tener experiencia previa con Home Assistant y Ollama.
Términos importantes
- Home Assistant - Plataforma de hogar inteligente. Utilidad: la base del sistema.
- Assist - Asistente de voz de HA. Utilidad: control por voz.
- Ollama - Servidor de modelos local. Utilidad: el backend de IA.
- Whisper - Conversión de voz a texto. Utilidad: entrada de voz.
- Piper - Conversión de texto a voz. Utilidad: salida de voz.
- Conversation Agent - Backend de IA para Assist. Utilidad: la conexión.
- Wyoming - Protocolo para servicios de voz. Utilidad: para Whisper/Piper.
Configuración: Ollama como agente de conversación
1. Ollama en ejecución
# Ollama se ejecuta en http://ollama:11434
# Descargar modelo:
ollama pull llama3.1
2. Integración de Ollama en HA
# configuration.yaml
ollama:
url: http://ollama:11434
O a través de la interfaz:
- Settings → Devices & Services → Add Integration
- Busca “Ollama”
- Ingresa la URL:
http://ollama:11434 - Selecciona el modelo:
llama3.1
3. Configurar Assist
# configuration.yaml
conversation:
intents:
# Custom Intents aquí
En la interfaz:
- Settings → Voice Assistants → Assist
- Conversation Agent: Ollama
- STT: Whisper (local)
- TTS: Piper (local)
Asistente de voz completamente local
Entrada de voz
│
▼
Whisper (STT) ──► Texto
│
▼
Ollama (LLM) ──► Interpreta comando
│
▼
Home Assistant ──► Ejecuta
│
▼
Piper (TTS) ──► Salida de voz
Contenedores Wyoming para Whisper y Piper
version: "3.8"
services:
whisper:
image: rhasspy/wyoming-whisper:latest
container_name: whisper
restart: unless-stopped
ports:
- "10300:10300"
volumes:
- whisper_data:/data
command: --model small --language de
networks:
- smarthome
piper:
image: rhasspy/wyoming-piper:latest
container_name: piper
restart: unless-stopped
ports:
- "10200:10200"
volumes:
- piper_data:/data
command: --voice de_DE-thorsten-high
networks:
- smarthome
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
networks:
- smarthome
homeassistant:
image: homeassistant/home-assistant:latest
container_name: homeassistant
restart: unless-stopped
ports:
- "8123:8123"
volumes:
- ha_config:/config
networks:
- smarthome
volumes:
whisper_data:
piper_data:
ollama_data:
ha_config:
networks:
smarthome:
driver: bridge
Ejemplo práctico 1: Comandos en lenguaje natural
# Automatización de Home Assistant
automation:
- alias: "Control de luz con IA"
trigger:
- platform: conversation
command:
- "Enciende la luz [en] {room}"
- "Apaga la luz [en] {room}"
action:
- service: light.toggle
target:
area_id: "{{ trigger.slots.room }}"
O de forma más compleja con Ollama:
automation:
- alias: "Interpretar comando de IA"
trigger:
- platform: event
event_type: voice_command
action:
- service: ollama.generate
data:
prompt: "Interpreta: '{{ trigger.event.data.command }}'
Acciones disponibles: licht_an, licht_aus, temperatur,
musik_an, musik_aus, rollo_hoch, rollo_runter
Responde como JSON: {action, entity, params}"
response_variable: ki_response
- choose:
- conditions: "{{ 'licht' in ki_response.text }}"
sequence:
- service: light.toggle
data:
entity_id: "{{ ki_response.entity }}"
Ejemplo práctico 2: Control inteligente de temperatura
automation:
- alias: "Clima con IA"
trigger:
- platform: time_pattern
minutes: "/15"
action:
- service: ollama.generate
data:
prompt: |
Datos actuales:
- Temperatura exterior: {{ states('sensor.aussentemperatur') }}°C
- Temperatura interior: {{ states('sensor.innentemperatur') }}°C
- Humedad: {{ states('sensor.luftfeuchtigkeit') }}%
- Presente: {{ states('person.max') }}
- Hora: {{ now().strftime('%H:%M') }}
- Día: {{ now().strftime('%A') }}
¿Qué debería hacer la calefacción/aire acondicionado?
Responde: calentar, enfriar, apagar, o ventilar
+ una breve justificación
response_variable: ki_decision
- choose:
- conditions: "{{ 'calentar' in ki_decision.text }}"
sequence:
- service: climate.set_hvac_mode
data:
hvac_mode: heat
- conditions: "{{ 'enfriar' in ki_decision.text }}"
sequence:
- service: climate.set_hvac_mode
data:
hvac_mode: cool
Ejemplo práctico 3: Informe matutino
automation:
- alias: "Informe de la mañana"
trigger:
- platform: time
at: "07:30:00"
action:
- service: ollama.generate
data:
prompt: |
Crea un informe matutino breve:
- Clima: {{ states('weather.home') }}
- Temperatura exterior: {{ states('sensor.aussentemperatur') }}°C
- Hoy: {{ now().strftime('%A, %d.%m.%Y') }}
- Calendario: {{ states('calendar.personal') }}
- Precio de electricidad: {{ states('sensor.strompreis') }} centavos/kWh
Resume todo en 3 oraciones.
response_variable: briefing
- service: notify.notify
data:
title: "Informe matutino"
message: "{{ briefing.text }}"
- service: tts.speak
data:
message: "{{ briefing.text }}"
media_player_entity_id: media_player.kueche
Caso práctico 4: Análisis de seguridad
automation:
- alias: "KI-Sicherheitsanalyse"
trigger:
- platform: state
entity_id: binary_sensor.bewegung
to: "on"
condition:
- condition: time
after: "23:00"
before: "06:00"
action:
- service: ollama.generate
data:
prompt: |
Nächtliche Bewegung erkannt:
- Sensor: {{ trigger.entity_id }}
- Zeit: {{ now().strftime('%H:%M') }}
- Personen zu Hause: {{ states('group.personen') }}
- Letzte Alarme: {{ states('sensor.letzte_alarme') }}
Ist das verdächtig? Antworte: normal/verdaechtig + Grund
response_variable: analyse
- choose:
- conditions: "{{ 'verdaechtig' in analyse.text }}"
sequence:
- service: notify.notify
data:
title: "Sicherheitsalarm"
message: "{{ analyse.text }}"
- service: camera.snapshot
data:
entity_id: camera.flur
Notas de seguridad
- Todo en local: Ollama, Whisper, Piper, todo funciona localmente. No necesitas la nube.
- Tokens: Mantén el token de Home Assistant para la integración con Ollama al mínimo.
- Validación: Las decisiones de IA en acciones críticas (abrir puertas, activar alarmas) requieren confirmación humana. Consulta Aprobación manual.
- Registro: Documenta las decisiones de IA. Consulta Protocolo.
Obstáculos comunes
- Modelo demasiado lento: Los modelos grandes (>13B) son lentos para procesamiento de voz en tiempo real. Usa llama3.1:8b o phi3.
- Modelo Whisper:
smalles un buen equilibrio.largees más preciso, pero más lento. - Voz en alemán: Para Piper usa
de_DE-thorsten-highpara una buena calidad. - Contexto demasiado largo: Demasiadas entidades en el prompt sobrecargan el modelo. Filtra las relevantes.
- IA interpreta mal: “Luz encendida” puede afectar múltiples entidades. Usa prompts precisos con lista de entidades.
Enlaces de interés
- Node-RED Home Assistant - Node-RED con Home Assistant.
- Automatización del hogar - Casa inteligente con IA.
- Ollama - Servidor de modelos.
- Whisper - Conversión de voz a texto.
- Asistentes de voz - Asistentes locales.
- Integraciones Ollama - Otras herramientas.
Puntos clave:
- Home Assistant + Ollama = asistente de voz completamente local.
- Whisper para STT, Ollama para comprensión, Piper para TTS.
- IA en automatizaciones para tomar decisiones inteligentes.
- Todo local, sin nube, sin salida de datos.
- Modelos pequeños (8B) para tiempo real, grandes para análisis.
Preguntas frecuentes
¿Cómo conecto Ollama con Home Assistant?
¿Puedo ejecutar el asistente de voz completamente en local?
¿Qué modelo de Ollama usar para casa inteligente?
¿Qué modelo de Whisper debo usar?
¿Cuál es la velocidad del control por voz?
¿Mis datos se mantienen privados?
¿Qué hardware necesito?
¿Qué pasa si la IA entiende mal?
Fuentes y referencias
- Home Assistant Ollama Integration - Integración oficial.
- Home Assistant Assist - Asistente de voz.
- Wyoming - Protocolo de servicios de voz.
- Ollama - Servidor de modelos local.


