Bỏ qua tới nội dung
Nhận bảng Notion miễn phí — miễn phí
MyAutoLife

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.

MyAutoLife TeamKiểm duyệt: Hung TranĐăng 23/06/2026
6 phút đọc
Kiến trúc AI tự host cho Home Assistant: giọng nói qua Whisper tới lớp LLM cục bộ hoặc cloud, qua Home Assistant và MQTT tới thiết bị

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 8GB

Trong 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: 300

Pattern 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âuThành phầnGhi chú
Từ đánh thứcopenWakeWordtừ khóa tùy chỉnh
Nói sang chữfaster-whispermodel small cho tiếng Việt
Hiểu ýOllama hoặc GPTtừ mục 1 và 2
Chữ sang nóiPipergiọ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.

AL

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 làm cầu nối giữa nhiều hệ thiết bị Zigbee, Wi-Fi, Matter về một nơi điều khiển chung
Automation Lab
Cẩm nang

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.

6 phút đọc

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.

Bạn quan tâm chủ đề nào?