Stack IA Local pour Home Assistant : Déploiement et Optimisation
Déployer des agents IA pour Home Assistant sans services cloud est réalisé en combinant Ollama, Whisper, OpenClaw et n8n. Cette stack traite les commandes vocales en 3 à 6 secondes sur un GPU : transcription, analyse d'intention et appels de services HA. La solution clé pour contourner les limitations de Llama 3.1 8B est d'injecter le contexte HA dans le prompt au lieu d'utiliser l'appel d'outils.
Ollama exécute les modèles localement : phi3:mini (4 Go VRAM), llama3.1:8b (6–8 Go). Sur CPU, les délais peuvent atteindre 30 secondes ; avec CUDA, les réponses prennent 2 à 5 secondes. Pour un accès externe : définir OLLAMA_HOST=0.0.0.0:11434 dans un override systemd et OLLAMA_API_KEY=ollama-local dans .env.
Whisper base gère la langue russe. Sur une P106-100 (6 Go VRAM, CUDA) — 10 secondes d'audio en 0,5 seconde (19× temps réel). Sur CPU — 25–30 secondes (0,4× temps réel). Cette différence détermine la réactivité de l'assistant.
Protocole MCP et Intégration OpenClaw
Le Model Context Protocol (MCP) fournit un accès IA aux entités HA via /api/mcp. OpenClaw est un agent avec support MCP, se connectant à Ollama et HA.
La configuration MCP est requise avant l'intégration d'OpenClaw : Token à Long Terme dans HA, activer le Serveur MCP dans les intégrations, config dans openclaw.json. Options de déploiement :
- Addon dans HA pour la simplicité.
- Docker sur un hôte séparé (NUC) si le matériel HA est faible (RPi/Odroid).
Vérifications réseau : docker compose exec openclaw ping -c 1 <HA_IP>. Interface web à partir de la version 2026.2.21 — HTTPS uniquement (port 8443 en cas de conflit : 8443:443). Appairage : devices list → devices approve <requestId>.
Configuration OpenClaw pour la stabilité :
gateway.bind: "lan"ou"auto".tools.profile: "full",deny: ["message", "sessions_send"].contextWindow: 16384,maxTokens: 163840.tools.deny: ["web_search", "web_fetch"]pour éviter les erreurs 402.
Orchestration via n8n et Contournement de l'Appel d'Outils
n8n relie Telegram → Whisper → Ollama → HA. Deux workflows :
- Principal : Déclencheur Telegram → Whisper → Ollama → API HA → réponse.
- Sous-workflow comme outil d'agent pour les appels HA.
Llama 3.1 8B a un support médiocre de l'appel d'outils : hallucinations, échoue à appeler les vrais outils. Solution — script update-ha-context.sh :
- Récupère les données HA via mcporter (thermostats, température).
- Écrit dans
TOOLS.md. - Cron :
/5 * /chemin/vers/update-ha-context.sh.
Le modèle voit le contexte actuel dans le prompt : "La température dans la chambre est de 19,5°C (cible 25°C)." Désactiver mcp-hass pour les modèles 8B.
Scripts d'Automatisation et Déploiement
Automatisation pour le déploiement et les mises à jour :
| Script | Objectif |
|--------|---------|
| update-server.sh | Copie .env, docker-compose, openclaw.json, mcporter.json, TOOLS.md. Exécute docker compose pull && up -d. |
| update-ha-context.sh | Met à jour TOOLS.md avec les données HA (cron toutes les 5 min). |
| test-openclaw.sh | Teste l'API Ollama (timeout 90 secondes). |
| approve-device.sh | Appairage d'appareil. |
| pre-commit | Bloque les commits de secrets (.env, tokens). |
Déploiement : SSHPASS=motdepasse ./scripts/update-server.sh vers [email protected].
mcporter nécessite mcporter.json dans data/workspace/config/ (copié par le script). Compétence : npx clawhub install mcp-hass.
Architecture sur Trois Hôtes
Distribution optimale de la charge :
- VM Proxmox (GPU GTX 1060) : Ollama (llama3.1:8b), Whisper base, n8n. Tient dans 6 Go VRAM.
- NUC : Docker OpenClaw (CPU uniquement).
- Odroid : Home Assistant.
Flux de requête : Telegram/UI → OpenClaw → Ollama (TOOLS.md avec données HA) → réponse. Pas d'appel d'outils, pas de cloud.
Points Clés
- Le GPU est essentiel pour Whisper : accélération 50× (0,5 sec vs 30 sec).
- MCP avant intégration : sinon OpenClaw ne verra pas HA.
- Contexte dans le prompt pour Llama 8B :
update-ha-context.shau lieu de l'appel d'outils. - HTTPS et appairage pour l'UI de Contrôle OpenClaw.
- Deux workflows dans n8n : principal + outil d'agent.
— Editorial Team
Aucun commentaire pour le moment.