Tự host AI cho Home Assistant: Ollama, Docker, MQTT
Dựng stack AI tự host cho Home Assistant nâng cao: Ollama cục bộ, GPT dự phòng, giọng nói riêng tư, MQTT, Docker, Node-RED và bảo mật phân tầng quyền.
Bài tích hợp AI vào Home Assistant đi qua cách thêm một lớp AI cơ bản. Bài này dành cho người đã vững và muốn tự host toàn bộ stack: model chạy trong nhà, giọng nói cục bộ, điều phối qua MQTT và Node-RED, tất cả trong Docker. Mục tiêu là một hệ riêng tư, rẻ về vận hành và toàn quyền kiểm soát.
1. Ollama: chạy LLM cục bộ
Home Assistant có tích hợp Ollama chính thức, nên model chạy ngay trong nhà, không gửi gì ra ngoài.
# Trên máy chủ
ollama serve
ollama pull qwen2.5:3b # tiếng Việt khá, nhẹ, hợp Pi 5 8GBTrong HA: Settings, Devices, Add Integration, chọn Ollama, trỏ URL http://<host>:11434 và chọn model. Gán nó làm conversation agent trong pipeline ở mục 3, bật Assist để nó điều khiển entity. Pi 5 8GB hợp model cỡ 3B cho lệnh đơn giản; muốn model lớn và nhanh thì cần mini PC hoặc GPU.
Mẹo chọn model: ưu tiên bản nhỏ chạy nhanh cho tác vụ điều khiển, vì câu lệnh trong nhà ngắn và lặp lại, không cần khả năng suy luận sâu. Để temperature thấp giúp model trả lời nhất quán, ít chệch hướng khi gọi service. Khi thấy model hay chọn sai entity, thêm vài câu ví dụ vào prompt hệ thống để nó quen cách bạn gọi tên thiết bị.
2. GPT: cloud cho câu phức tạp
Khi cần độ chính xác và tiếng Việt tự nhiên ở câu đa bước, dùng API cloud qua tích hợp OpenAI Conversation, hoặc custom component hỗ trợ function-calling để model gọi service trực tiếp.
openai_conversation:
api_key: !secret openai_key
model: gpt-4o-mini
temperature: 0.3
max_tokens: 300Pattern hợp lý là hybrid: local xử lý lệnh thường ngày và giữ riêng tư, cloud làm dự phòng khi local hiểu sai. Việc định tuyến giữa hai bên làm ở Node-RED, mục 6.
3. Voice Assistant cục bộ
Bốn mắt xích, mỗi cái một add-on Wyoming:
| Khâu | Thành phần | Ghi chú |
|---|---|---|
| Từ đánh thức | openWakeWord | từ khóa tùy chỉnh |
| Nói sang chữ | faster-whisper | model small cho tiếng Việt |
| Hiểu ý | Ollama hoặc GPT | từ mục 1 và 2 |
| Chữ sang nói | Piper | giọng vi có sẵn |
Phần cứng nói dùng Home Assistant Voice PE hoặc satellite ESP32-S3. Tiếng Việt chạy được nhưng giọng Piper còn máy móc và từ đánh thức tiếng Việt thường phải tự train. Nền tảng lớp giọng nói được nói kỹ trong bài Home Assistant Voice.
4. MQTT Architecture
MQTT là xương sống khi AI và Node-RED cần phát, nhận sự kiện độc lập với Home Assistant.
Mosquitto broker (cục bộ)
├─ home/+/cmd ← AI/Node-RED gửi lệnh
├─ home/+/state ← thiết bị báo trạng thái
└─ home/ai/intent ← lớp AI phát ý định đã phân tích
Dùng MQTT Discovery để thiết bị tự xuất hiện trong HA. Đặt retain cho state và QoS 1 cho lệnh điều khiển để đảm bảo lệnh đến nơi. Tách broker khỏi HA giúp các thành phần nói chuyện mà không phụ thuộc vòng đời của Home Assistant.
Một lợi ích khác của MQTT là dễ gỡ lỗi. Bạn mở một công cụ như MQTT Explorer, theo dõi topic home/ai/intent để xem chính xác lớp AI hiểu lệnh thành gì trước khi nó chạm tới thiết bị. Khi automation chạy sai, nhìn vào luồng message thường tìm ra nguyên nhân nhanh hơn đọc log rời rạc.
5. Docker Deployment
Cả stack trong một file compose.yaml:
services:
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
volumes: ["./ha:/config"]
network_mode: host
restart: unless-stopped
ollama:
image: ollama/ollama
volumes: ["./ollama:/root/.ollama"]
ports: ["11434:11434"]
whisper:
image: rhasspy/wyoming-whisper
command: --model small --language vi
ports: ["10300:10300"]
piper:
image: rhasspy/wyoming-piper
command: --voice vi_VN-vais1000-medium
ports: ["10200:10200"]
mosquitto:
image: eclipse-mosquitto
volumes: ["./mosquitto:/mosquitto/config"]
ports: ["1883:1883"]
nodered:
image: nodered/node-red
volumes: ["./nodered:/data"]
ports: ["1880:1880"]Volumes giữ cấu hình qua mỗi lần restart. Nếu máy có GPU, khai báo passthrough cho ollama và whisper để tăng tốc rõ rệt. Toàn bộ host trên một máy nhỏ như Raspberry Pi 5 cho stack nhẹ, hoặc một mini PC khi cần model lớn.
6. Node-RED Flow định tuyến AI
Khi logic nhiều nhánh, Node-RED trực quan hơn YAML:
[mqtt in: home/ai/intent]
→ [function: dựng prompt]
→ [http request: Ollama] (thử cục bộ trước)
→ [switch: độ tin cậy?]
→ cao → [call service: HA]
→ thấp → [http request: OpenAI] (dự phòng cloud)
→ [call service: HA]
→ [mqtt out: home/+/cmd]
Đây là cách hiện thực pattern local-first, cloud-fallback dễ nhìn và dễ thêm log. Cách cài và nối Node-RED với Home Assistant nằm trong bài Node-RED cơ bản.
7. Security
Phân tầng quyền là bắt buộc
Một LLM thỉnh thoảng hiểu sai. Chỉ expose nhóm entity an toàn cho AI điều khiển. Khóa cửa, bếp, thiết bị nhiệt phải giữ ngoài tầm hoặc yêu cầu xác nhận thủ công.
- Local-first cho bề mặt tấn công nhỏ nhất; ưu tiên Ollama, Whisper, Piper cục bộ.
- Mạng: tách thiết bị IoT sang VLAN riêng; broker MQTT bật auth bằng
password_file, không mở cổng 1883 ra internet. - Truy cập từ xa: dùng reverse proxy kèm TLS hoặc VPN thay vì mở cổng. Bật xác thực hai lớp cho Home Assistant.
- Secrets: mọi API key để trong
secrets.yaml, không commit. Ghi log lệnh AI thực thi thời gian đầu để soát lại các câu hay hiểu sai.
8. Future Expansion
- Đa phòng: nhiều voice satellite, định tuyến theo phòng phát lệnh.
- RAG: cho LLM đọc tài liệu trong nhà như lịch hay hướng dẫn thiết bị để trả lời theo ngữ cảnh.
- Vision: model đa thể thức đọc camera để trả lời câu hỏi về hình ảnh.
- Agentic: automation tự lập kế hoạch nhiều bước thay vì chỉ chạy một lệnh.
- Matter và fine-tune: chuẩn chung cho thiết bị, cộng model tinh chỉnh cho cách nói riêng của gia đình.
Stack này không cần dựng hết một lần. Bắt đầu từ Ollama cộng Assist cục bộ, thêm MQTT và Node-RED khi cần điều phối, rồi mở rộng dần. Nếu bạn mới làm quen lớp AI, hãy đọc bài tích hợp AI vào Home Assistant trước. Còn nhiều hướng kết hợp khác trong chuyên mục bridge của MyAutoLife.
Câu hỏi thường gặp
Phần cứng nào đủ để chạy LLM cục bộ?
Raspberry Pi 5 8GB chạy được model nhỏ cỡ 3B, đủ cho lệnh đơn giản. Muốn model lớn và phản hồi nhanh thì cần một mini PC hoặc máy có GPU. Whisper và Piper cũng nhẹ hơn nhiều so với LLM.
Nên dùng Ollama cục bộ hay GPT cloud?
Cục bộ cho riêng tư và không phí API, hợp lệnh thường ngày. Cloud cho độ chính xác và tiếng Việt tự nhiên hơn ở câu phức tạp. Pattern tốt là local trước, cloud làm dự phòng khi local hiểu sai, định tuyến bằng Node-RED.
Giọng nói tiếng Việt tự host tốt đến đâu?
Whisper nhận tiếng Việt khá tốt ở model small trở lên. Giọng đọc Piper tiếng Việt chạy được nhưng còn máy móc. Từ đánh thức tiếng Việt thường phải tự train, nhiều người dùng tạm từ khóa tiếng Anh.
Có cần Docker không hay cài thẳng cũng được?
Không bắt buộc, nhưng Docker compose giúp gom Home Assistant, Ollama, Whisper, Piper, MQTT và Node-RED vào một nơi, dễ sao lưu và nâng cấp. Với stack nhiều thành phần như thế này, Docker tiết kiệm rất nhiều công bảo trì.
Tự host AI có an toàn hơn dùng dịch vụ sẵn không?
Có, nếu làm đúng. Local-first giảm dữ liệu gửi ra ngoài. Nhưng vẫn cần phân tầng quyền cho LLM, tách mạng IoT, bật auth cho MQTT và không mở cổng ra internet trực tiếp.
MyAutoLife Team
Đội ngũ MyAutoLife tự kiểm chứng mọi sản phẩm trước khi đánh giá. Dữ liệu, giá và quan điểm dựa trên trải nghiệm thực tế tại Việt Nam.
Kiểm duyệt chuyên môn: Hung Tran
Bài viết liên quan
Cổng kết nối smart home: hub, gateway và cách chọn
Cổng kết nối smart home là gì, vì sao cần hub hay gateway, các loại phổ biến và cách chọn để nối nhiều hệ thiết bị khác hãng về một nơi điều khiển chung.
Điều khiển Home Assistant bằng ChatGPT: cài đặt từng bước 2026
Hướng dẫn dùng tích hợp OpenAI Conversation để điều khiển Home Assistant bằng ChatGPT và giọng nói tiếng Việt: lấy API key, cấu hình, mở quyền, chi phí.
Home Assistant Voice: điều khiển nhà bằng giọng nói tiếng Việt
Home Assistant Voice là gì, luồng giọng nói gồm những phần nào, chạy cục bộ hay đám mây, tiếng Việt tới đâu, cần phần cứng gì và so với loa hãng ra sao.
Nhận bản tin MyAutoLife
Mỗi tuần 1 email: AI tools đáng dùng + mẹo smart home. Không spam, hủy bất kỳ lúc nào.