Cài Home Assistant trên Raspberry Pi: thẻ nhớ hay SSD, các bước cài HA OS, đưa ESP32 vào qua MQTT

Cài Home Assistant trên Raspberry Pi 4, 5: chọn Home Assistant OS hay Container, thẻ nhớ hay SSD và vì sao thẻ nhớ hay hỏng, bốn bước cài, giảm ghi bằng recorder, đưa ESP32 vào qua MQTT, ESPHome.

Home Assistant là phần mềm nhà thông minh mã nguồn mở chạy ngay trong nhà, gom đèn, công tắc, cảm biến của nhiều hãng và các mạch ESP32 tự làm vào một giao diện, có tự động hóa, lịch sử, ứng dụng điện thoại. Raspberry Pi 4 hoặc 5 là máy chủ hay dùng nhất cho Home Assistant. Bài này hướng dẫn chọn cách cài, chọn lưu trữ (thẻ nhớ hay SSD, vì sao thẻ nhớ hay hỏng), bốn bước cài Home Assistant OS, giảm số lần ghi để thẻ nhớ bền hơn, và đưa ESP32 vào Home Assistant qua MQTT hoặc ESPHome.

1. Chọn cách cài

Bảng ba cách cài Home Assistant: Home Assistant OS có add-on Mosquitto ESPHome và tự sao lưu, Container Docker phải tự chạy thêm dịch vụ, Core cho người phát triển
Home Assistant OS là cách gọn nhất.

Home Assistant OS là cả hệ điều hành dành riêng: cài add-on (Mosquitto, ESPHome, trình sửa file) bằng vài cú bấm, cập nhật và sao lưu trong giao diện. Đổi lại, Pi chỉ làm việc này. Cần Pi làm thêm việc khác (máy chủ file, chạy chương trình Python) thì dùng bản Container trên Raspberry Pi OS, và tự cài Mosquitto như bài cùng cụm về Mosquitto trên Raspberry Pi.

Phần cứng: Raspberry Pi 4 (từ 2 GB RAM) hoặc Pi 5 (từ 4 GB), nguồn đúng chuẩn của Pi (Pi 5 dùng nguồn 5 V 5 A), nên có vỏ tản nhiệt.

2. Thẻ nhớ hay SSD

Bảng so sánh lưu trữ cho Home Assistant: thẻ nhớ microSD chậm nhất dễ hỏng khi ghi liên tục, SSD qua USB nhanh bền khởi động từ USB 3, SSD NVMe trên Pi 5 qua mạch HAT M.2 nhanh nhất
Dùng lâu dài nên chọn SSD.

Home Assistant ghi lịch sử trạng thái của mọi thiết bị vào cơ sở dữ liệu, mặc định gần như mỗi giây. Thẻ nhớ chịu được số lần ghi có hạn và không có cơ chế chống mòn tốt như SSD, nên "Home Assistant tự nhiên không lên nữa" sau vài tháng tới vài năm thường là do thẻ nhớ hỏng. Lựa chọn:

  • SSD qua USB 3: Pi 4 và Pi 5 khởi động thẳng từ USB; dùng hộp SSD USB 3 loại tốt.
  • SSD NVMe trên Pi 5: cắm qua mạch HAT M.2 vào khe PCIe, nhanh nhất.
  • Thẻ nhớ: được, nếu là thẻ loại A1/A2 của hãng rõ ràng, giảm số lần ghi như bên dưới, và bật sao lưu tự động ra máy khác.

3. Bốn bước cài Home Assistant OS

Bốn bước cài Home Assistant OS: Raspberry Pi Imager chọn Home Assistant OS, ghi vào thẻ nhớ hoặc SSD, cắm dây mạng và nguồn chờ 5 tới 20 phút, mở homeassistant.local:8123 tạo tài khoản
Lần đầu nên cắm dây mạng LAN.
  1. Trên máy tính mở Raspberry Pi Imager, chọn đời Pi, mục hệ điều hành chọn Other specific-purpose OS → Home assistants and home automation → Home Assistant, chọn bản Home Assistant OS cho đúng đời Pi.
  2. Chọn thẻ nhớ hoặc SSD (qua đầu đọc USB), ghi.
  3. Cắm thẻ hoặc SSD vào Pi, cắm dây mạng, cấp nguồn. Lần đầu Home Assistant tự tải phần còn lại, mất 5–20 phút.
  4. Trên máy tính cùng mạng mở http://homeassistant.local:8123, tạo tài khoản, đặt vị trí nhà.

Cài Raspberry Pi lần đầu, cách xem IP của Pi trên router có ở bài cùng cụm về cài đặt Raspberry Pi 5.

4. Đưa ESP32 vào Home Assistant

Sơ đồ Home Assistant làm trung tâm trên Raspberry Pi với add-on Mosquitto và ESPHome: ESP32 tự viết code gửi MQTT, ESP32 nạp ESPHome tự hiện, Sonoff nạp Tasmota; điện thoại và trình duyệt điều khiển
Hai đường: MQTT hoặc ESPHome.
  • ESPHome: viết cấu hình YAML thay cho code, Home Assistant tự nhận thiết bị. Xem bài ESPHome cho ESP32 và relay 4 kênh.
  • MQTT: cài add-on Mosquitto broker, thêm tích hợp MQTT. ESP32 tự viết code gửi dữ liệu; có thể dùng MQTT discovery để thiết bị tự hiện (bài ESP32 vào Home Assistant bằng MQTT discovery), hoặc khai báo bằng tay trong configuration.yaml như dưới đây.

Đoạn cấu hình dưới đây đọc đúng các chủ đề của chương trình ESP32 trong bài Mosquitto trên Raspberry Pi (cùng cụm): cường độ sóng, điện áp ADC, công tắc đèn có trạng thái online/offline; đồng thời giảm số lần ghi lên thẻ nhớ. Sửa file bằng add-on File editor:

# PYWORLD.VN - Thêm vào configuration.yaml của Home Assistant: nhận dữ liệu ESP32 qua MQTT và giảm số lần ghi lên thẻ nhớ
# PYWORLD.VN - Chủ đề MQTT giống bài Raspberry Pi làm broker Mosquitto: nha/esp32_1/du_lieu, den, den/dat, trang_thai
# PYWORLD.VN - Sửa xong: Developer Tools > YAML > Check configuration, rồi Restart

recorder:
  commit_interval: 30          # gom dữ liệu 30 giây mới ghi một lần (mặc định 1 giây): đỡ mòn thẻ nhớ
  purge_keep_days: 7           # giữ lịch sử chi tiết 7 ngày
  exclude:
    entity_globs:
      - sensor.*_rssi          # số đo thay đổi liên tục mà ít khi cần xem lại

mqtt:
  sensor:
    - name: "ESP32 1 cuong do song"
      unique_id: esp32_1_rssi
      state_topic: "nha/esp32_1/du_lieu"
      value_template: "{{ value_json.rssi }}"
      unit_of_measurement: "dBm"
      device_class: signal_strength
      availability_topic: "nha/esp32_1/trang_thai"
      payload_available: "online"
      payload_not_available: "offline"
    - name: "ESP32 1 dien ap ADC"
      unique_id: esp32_1_adc
      state_topic: "nha/esp32_1/du_lieu"
      value_template: "{{ (value_json.adc_mv / 1000) | round(2) }}"
      unit_of_measurement: "V"
      device_class: voltage
  switch:
    - name: "Den ESP32 1"
      unique_id: esp32_1_den
      command_topic: "nha/esp32_1/den/dat"
      state_topic: "nha/esp32_1/den"
      payload_on: "ON"
      payload_off: "OFF"
      availability_topic: "nha/esp32_1/trang_thai"
      payload_available: "online"
      payload_not_available: "offline"
  • commit_interval: 30: gom dữ liệu 30 giây ghi một lần thay vì mỗi giây, số lần ghi giảm khoảng 30 lần.
  • exclude: bỏ khỏi lịch sử những số đo đổi liên tục mà ít khi cần xem lại.
  • Kiểm tra cấu hình (Developer Tools → YAML → Check configuration) trước khi khởi động lại.

5. Sao lưu và truy cập từ xa

  • Settings → System → Backups: bật sao lưu tự động hằng ngày, chép bản sao lưu ra máy khác hoặc dịch vụ lưu trữ; thẻ nhớ, SSD hỏng thì cài lại và khôi phục trong vài phút.
  • Truy cập từ xa: dùng dịch vụ Nabu Casa (trả phí, ủng hộ dự án) hoặc VPN về mạng nhà. Không mở cổng 8123 ra Internet khi chưa có HTTPS và mật khẩu mạnh.

6. Lỗi hay gặp

Hiện tượngNguyên nhânCách xử lý
Không mở được homeassistant.localMáy tính không phân giải tên .local, Pi chưa xong lần khởi động đầuChờ thêm; tìm IP trên router, mở http://IP:8123
Home Assistant chậm dần, có lúc treoThẻ nhớ chậm, sắp hỏng; cơ sở dữ liệu quá lớnChuyển sang SSD; giảm purge_keep_days
Pi khởi động lại ngẫu nhiênNguồn yếu (Pi 5 cần 5 A), SSD ăn nhiều dòng qua USBNguồn đúng chuẩn; hộp SSD có nguồn riêng nếu cần
Thiết bị MQTT hiện "unavailable"Sai chủ đề trạng thái, ESP32 mất kết nối brokerTheo dõi bằng mosquitto_sub hoặc MQTT Explorer
Check configuration báo lỗi YAMLThụt lề sai, trộn tab với dấu cáchChỉ dùng dấu cách, mỗi cấp 2 dấu

Sản phẩm dùng trong bài: ESP32 DevKit V1 30 chân.

Bài cùng cụm chủ đề: cài đặt Raspberry Pi 5; Raspberry Pi làm MQTT broker Mosquitto; Sonoff Basic nạp Tasmota; so sánh nền tảng IoT.


Tin tức liên quan

CAN bus (phần 2): bộ lọc nhận, tốc độ bit và xử lý lỗi bus-off trên ESP32
CAN bus (phần 2): bộ lọc nhận, tốc độ bit và xử lý lỗi bus-off trên ESP32

Phần 2 về CAN bus với ESP32: đặt bộ lọc nhận theo mã lọc và mặt nạ, chọn tốc độ bit theo chiều dài dây, hiểu ba trạng thái lỗi của nút và viết chương trình theo dõi bộ đếm lỗi, tự hồi phục sau bus-off.

Điều khiển biến tần qua Modbus RTU bằng ESP32: nối RS-485, cài tham số, thanh ghi lệnh và tần số
Điều khiển biến tần qua Modbus RTU bằng ESP32: nối RS-485, cài tham số, thanh ghi lệnh và tần số

Điều khiển biến tần qua Modbus RTU từ ESP32 và MAX485: nối dây RS-485, cài nguồn lệnh và tần số, bảng thanh ghi Delta VFD-E, khung tin có CRC, chạy, dừng, đặt tần số, đọc dòng và mã lỗi.

Xúc xắc điện tử với ESP32 và OLED: thí nghiệm xác suất cho học sinh
Xúc xắc điện tử với ESP32 và OLED: thí nghiệm xác suất cho học sinh

Làm xúc xắc điện tử bằng ESP32 và màn hình OLED kèm 4 nút: tung một lần, tung nhanh 60 lần, vẽ biểu đồ; xác suất lý thuyết, thực nghiệm và luật số lớn cho học sinh.

Đàn piano trái cây với ESP32: 6 phím cảm ứng, còi phát nốt nhạc cho học sinh
Đàn piano trái cây với ESP32: 6 phím cảm ứng, còi phát nốt nhạc cho học sinh

Dự án STEM âm nhạc: nối sáu quả vào chân cảm ứng ESP32, chạm quả nào còi phát nốt đó; tần số Đô Rê Mi Fa Son La, giai điệu viết bằng hai mảng nốt và phách.

Đặt gia công mạch in: hiểu tệp Gerber, chọn thông số, kiểm tra trước khi nộp và khi nhận mạch
Đặt gia công mạch in: hiểu tệp Gerber, chọn thông số, kiểm tra trước khi nộp và khi nhận mạch

Bộ tệp Gerber và tệp khoan gồm những gì, chọn số lớp, bề dày, lớp phủ HASL hay ENIG, đồng 1 oz khi đặt mạch in, danh sách kiểm tra trước khi nộp và các bước kiểm tra khi nhận mạch.

Độ phân giải ADC, ENOB và nhiễu: ADC 12 bit của ESP32 dùng được bao nhiêu bit, khi nào đủ
Độ phân giải ADC, ENOB và nhiễu: ADC 12 bit của ESP32 dùng được bao nhiêu bit, khi nào đủ

Độ phân giải ADC và LSB, nhiễu, số bit hiệu dụng ENOB và bit không nhiễu, ADC 12 bit ESP32 thực tế dùng được bao nhiêu bit, lấy trung bình tăng bit, khi nào cần ADS1115, HX711; có code đo nhiễu.

Arduino IDE 2: tự gợi ý code, quản lý board và thư viện, gỡ lỗi từng bước, log khi không có JTAG
Arduino IDE 2: tự gợi ý code, quản lý board và thư viện, gỡ lỗi từng bước, log khi không có JTAG

Dùng Arduino IDE 2 hiệu quả: tự gợi ý code, nhảy tới định nghĩa, quản lý board và thư viện, thư mục của IDE, gỡ lỗi từng bước, macro log có mức cho ESP32.

Cảm biến lực (load cell): cấu tạo, nguyên lý, cách chế tạo và tự đọc HX711 bằng ESP32
Cảm biến lực (load cell): cấu tạo, nguyên lý, cách chế tạo và tự đọc HX711 bằng ESP32

Load cell hoạt động thế nào: các dạng thân, bốn strain gauge nối cầu Wheatstone, quy trình chế tạo, FSR và cảm biến áp điện, giao thức HX711 và cách tự đọc HX711 bằng ESP32.


Bình luận
Đã thêm vào giỏ hàng