Home Assistant

Home Assistant: kết nối thiết bị Zigbee qua zigbee2mqtt

Zigbee

Kết nối các thiết bị Zigbee vào Hass qua Zigbee2mqtt và module CC2531, thử với Xiaomi Aqara Door Sensor

25 phút để đọc hết nội dung

Mặc dù thường có giá cao hơn, các thiết bị Zigbee, đặc biệt là cảm biến, ngày càng phổ biến do những ưu thế riêng của Zigbee. Các thiết bị này rất phong phú về chủng loại như cảm biến, công tắc, đèn thông minh với rất nhiều nhà sản xuất như Xiaomi, Tuya, Philips. Để tích hợp các thiết bị Zigbee vào Home Assistant, thông thường có 2 cách: tích hợp thông qua Hub của hãng (như Aqara hoặc IKEA TRÅDFRI hub) và tích hợp trực tiếp thông qua các universal hub như deCONZ hoặc Zigbee2mqtt.

Conbee II – Hub Zigbee tích hợp vào Hass qua component deCONZ

Ưu điểm khi tích hợp trực tiếp qua zigbee2mqtt

Trong bài viết này, ta sẽ sử dụng Zigbee2mqtt trên phần cứng là module CC2531. Ưu điểm của phương pháp này bao gồm:

  • Kết nối trực tiếp đến máy chủ Hass và tích hợp sâu trong Hass
  • Giá rẻ và hoạt động ổn định
  • Hỗ trợ nhiều thiết bị Zigbee, dễ dàng hỗ trợ thêm các thiết bị mới
  • Vùng phủ sóng tương đương với một WiFi AP thông thường và có thể mở rộng gần như không giới hạn
CC2531 3D Printed Enclosure
Module CC2531 với anten rời
! Yêu cầu tối thiểu/khuyến nghị
  1. Máy chủ Hass hoạt động bình thường, có Hassio Supervisor. Nếu bạn đang sử dụng duy nhất Home Assistant Core, bạn sẽ phải chạy Zigbee2mqtt độc lập và cài đặt trong Hass phức tạp hơn một chút. Chúng tôi sẽ có bài viết riêng với trường hợp này.
  2. MQTT broker và Home Assistant được cấu hình kết nối thành công qua giao thức mqtt. Thông thường với Hass, ta sử dụng addon chính thức Mosquitto broker để vận hành và quản lý MQTT.
    Bạn có thể xem thêm về Home Assistant: MQTT.
  3. Module CC2531 đã được flash firmware Zigbee2mqtt coordinator. Bạn có thể tìm hiểu về các thiết bị phần cứng CC253X hỗ trợ Zigbee2mqtt và cách flash firmware tại đây.
  4. Thiết bị Zigbee như cảm biến, công tắc v.v… được hỗ trợ bởi Zigbee2mqtt. Trong bài này chúng ta sẽ thử với cảm biến cửa Xiaomi Aqara Mijia mã MCCGQ01LM.
Cảm biến Zigbee Xiaomi Aqara Door MCCGQ01LM
Cảm biến Zigbee Xiaomi Aqara Door MCCGQ01LM

Ta sẽ có 3 bước để cài đặt, cấu hình và kết nối thiết bị Zigbee vào Home Assistant. 2 bước đầu chỉ cần thực hiện 1 lần duy nhất, bước thứ 3 cần thực hiện lại mỗi khi thêm thiết bị mới.

  1. Cài đặt và cấu hình addon Zigbee2mqtt
  2. Cấu hình Zigbee2mqtt trong Hass
  3. Thêm thiết bị Zigbee vào mạng và Hass

Cài đặt và cấu hình addon Zigbee2mqtt

Cài đặt Zigbee2mqtt

Để cài đặt Zigbee2mqtt, trên giao diện web của Hass, bạn vào mục Supervisor trên thanh bên – sidebar. Mở mục ADD-ON STORE rồi thêm địa chỉ sau vào ô Add new repository by URL.
https://github.com/danielwelch/hassio-zigbee2mqtt

https://github.com/zigbee2mqtt/hassio-zigbee2mqtt

Thêm repo của addon Zigbee2mqtt vào Hass
Thêm repo của addon Zigbee2mqtt vào Hass
update Retina Cập nhật ngày 24/05/2020
Thay đổi giao diện Supervisor

Supervisor trong phiên bản Hass 0.110 có sự thay đổi trong giao diện. Để thêm địa chỉ repository mới, bạn thực hiện như ảnh dưới.

Hass Supervisor Thêm Repo
Thêm repo trong Supervisor

Sau khi bấm nút ADD để thêm, hãy gõ Zigbee vào ô tìm kiếm ngay bên dưới để tìm addon Zigbee2mqtt. Bấm vào addon vừa tìm được rồi ấn INSTALL để cài đặt. Sẽ phải mất vài phút để addon cài đặt xong tuỳ vào tốc độ mạng và tốc độ của máy chủ Hass.
Ngoài addon Zigbee2mqtt chính, còn một addon thứ hai có tên Zigbee2mqtt-edge là phiên bản đang được phát triển, có thể chứa lỗi và cả sửa lỗi mới. Bạn cũng có thể cài đặt phiên bản này nếu cần các tính năng hoặc sửa lỗi đang phát triển.

Cài đặt addon Zigbee2mqtt trên Hass Supervisor
Bấm vào INSTALL để cài đặt addon

Cấu hình Zigbee2mqtt

Một khi Zigbee2mqtt addon đã cài đặt xong, bạn hãy truy cập vào trang quản lý của addon này để tiến hành cấu hình nó trước khi chạy. Quay lại mục DASHBOARD, bấm vào addon Zigbee2mqtt rồi kéo xuống gần dưới cùng đến mục Cấu hình.

Hass Zigbee2mqtt addon 1.5 config

Cấu hình Zigbee2mqtt, bạn cần lưu ý mấy điểm chính sau:

– groups: groups.yaml là tên file chứa cấu hình cho group Zigbee. Zigbee2mqtt có hỗ trợ group và bạn có thể chỉnh sửa thủ công file này (trong /share/zigbee2mqtt) để tuỳ chỉnh các group.
– mqtt: nhập các mục tương ứng với cấu hình MQTT trong Hasscủa bạn. Cấu hình mặc định sử dụng cho addon chính thức Mosquitto broker với username và password đã được khai báo trong cấu hình addon Mosquito broker. Tuy nhiên bất cứ mqtt broker nào khác cũng có thể hoạt động được.
– disable_led: nhập true nếu bạn muốn tắt đèn led trên module CC2531, xoá dòng này hoặc để false nếu muốn mở lại (mặc định mở).
– network_key: danh sách gồm 16 số, mỗi số từ 0 – 15 tạo thành khoá mã hoá – encrypt key cho toàn bộ mạng Zigbee tạo bởi module CC2531. Bạn cố gắng thay đổi ít nhất là một vài số trong cấu hình mặc định để tăng tính bảo mật cho mạng Zigbee của mình.

! Lưu ý
  1. Thay đổi các cài đặt channelnetwork_key sẽ buộc bạn phải reset và pair – kết nối lại toàn bộ thiết bị zigbee hiện tại trong mạng.
    Xem thêm về Zigbee channel và can nhiễu sóng.
  2. Có thể bạn sẽ phải thay đổi cài đặt serial: port: cho phù hợp. Tìm port chính xác của module CC2531 trong máy chủ Hass bằng cách cắm module vào cổng USB của máy chủ Hass, chờ vài giây rồi vào mục Supervisor > System > Hardware rồi tìm ở mục serial:. Mặc định là /dev/ttyACM0.
CC2531 bên trong máy chủ Hass
CC2531 nhận diện bởi máy chủ Hass

Sau khi hoàn tất cấu hình, nhớ bấm SAVE để lưu cấu hình này. Sau đó bạn có thể kéo lên trên và bấm START để khởi động addon Zigbee2mqtt với cấu hình vừa tạo. Sau đó kéo đến cuối cùng để tìm mục Log, bấm REFRESH để xem log của addon này. Nếu ổn cả, bạn sẽ thấy tương tự như ảnh dưới.

Zigbee2mqtt Log
Zigbee2mqtt Log

Cấu hình Zigbee2mqtt trong Hass

Sau khi cài đặt và cấu hình thành công addon Zigbee2mqtt, ta sẽ cấu hình Hass để:

  • Tự nhận các thiết bị Zigbee được thêm vào thông qua tính năng MQTT Discovery
  • Xem tình trạng và quản lý module CC2531 trên Hass
  • Cài đặt và cấu hình component zigbee2mqtt Networkmap để hiện thị bản đồ các thiết bị trong mạng

MQTT Discovery

Thêm discovery: true vào cấu hình mqtt: hiện tại của bạn (nằm trong /config/configuration.yaml hoặc file riêng). Thay đổi usernamepassword nếu cần thiết.
Thêm cả các dòng dưới cùng, bắt đầu bằng birth_message: nếu bạn muốn Zigbee2mqtt trả lại trạng thái tạm lưu của các thiết bị khi Hass khởi động lại. Nếu không, trạng thái các thiết bị sẽ là unknown.

update red icon Cập nhật trên Home Assistant 0.115

Từ Home Assistant 0.115, tất cả các cấu hình bên dưới đều có thể được cấu hình sử dụng giao diện cấu hình khi thêm mới/cấu hình lại tích hợp MQTT. Để cấu hình lại tích hợp MQTT, chọn Cấu hình > Các bộ tích hợp > tìm MQTT > Cấu hình > Cấu hình lại.

mqtt:
  broker: core-mosquitto
  username: mqtt-username
  password: mqtt-password
  discovery: true
  discovery_prefix: homeassistant
  birth_message:
    topic: 'homeassistant/status'
    payload: 'online'
  will_message:
    topic: 'homeassistant/status'
    payload: 'offline'

Lưu ý giữ nguyên các lựa chọn khác hiện có nếu không phát sinh lỗi. Nếu bạn đang để tuỳ chọn discovery_prefix: khác, cần chuyển về homeassistant hoặc cấu hình lại addon Zigbee2mqtt sang giá trị mới.

Bạn cũng có thể thêm thủ công các thiết bị bằng cách cấu hình theo platform mqtt. Bạn có thể xem trang này để lấy cấu hình mẫu tương ứng với từng model thiết bị: Zigbee2mqtt supported devices.

Thêm cấu hình quản lý Zigbee2mqtt

Bước này sẽ giúp bạn thêm vào giao diện Lovelace một card giúp quản lý Zigbee2mqtt coordinator trên Home Assistant. Bạn cũng có thể bỏ qua bước này, khi đó bạn sẽ tự quản lý trạng thái cho phép tham gia mạng – join của Zigbee2mqtt bằng cách thay đổi cấu hình rồi restart addon.

Card quản lý Zigbee2mqtt coordinator trên Lovelace
Card quản lý Zigbee2mqtt coordinator

Thêm các component cần thiết

update red icon Cập nhật tính năng quản lý mới sẵn có trên add-on Zigbee2mqtt

Từ ngày 27/09/2020, add-on Zigbee2mqtt phiên bản thử nghiệm – edge version đã tích hợp tính năng quản lý, bao gồm cả bản đồ thiết bị Zigbee. Bạn có thể không cần các bước dưới đây để quản lý cho phép kết nối thiết bị mới và xem bản đồ (tuy nhiên vẫn thêm cũng không sao cả). Một khi hoàn thiện, tính năng quản lý này sẽ sớm được bổ sung vào phiên bản Zigbee2mqtt chính thức.

Zigbee2mqtt edge tính năng quản lý mới
Giao diện quản lý mới của Zigbee2mqtt (thử nghiệm)

Ở đây ta thêm toàn bộ vào file configuration.yaml tuy nhiên nếu bạn chia cấu hình thành nhiều file riêng rẽ, bạn chuyển phần cấu hình tương ứng về file thích hợp. Ta có 3 entity cần khai báo thuộc về 3 domain: input_boolean, timersensor.

input_boolean:
  zigbee_permit_join:
    name: Zigbee cho phép kết nối thiết bị mới
    initial: off
    icon: mdi:cellphone-wireless
timer:
  zigbee_permit_join:
    name: Zigbee thời gian còn lại
    duration: 600 # Updated this to the number of seconds you wish
sensor:
  - platform: mqtt
    name: Zigbee bridge state
    state_topic: "zigbee2mqtt/bridge/state"
    icon: mdi:router-wireless

Thêm automation quản lý

Thêm vào các automation hỗ trợ chức năng cho phép kết nối – join vào mạng Zigbee tạo bởi Zigbee2mqtt:

#Zigbee2mqtt BEGIN<--
- id: enable_zigbee_join
  alias: Enable Zigbee joining
  description: Zigbee2mqtt cho phép thiết bị mới kết nối
  trigger:
    platform: state
    entity_id: input_boolean.zigbee_permit_join
    to: 'on'
  action:
    - service: mqtt.publish
      data:
        topic: zigbee2mqtt/bridge/config/permit_join
        payload: 'true'
    - service: timer.start
      data:
        entity_id: timer.zigbee_permit_join
- id: disable_zigbee_join
  alias: Disable Zigbee joining
  description: Zigbee2mqtt ngừng cho phép thiết bị mới kết nối
  trigger:
    - entity_id: input_boolean.zigbee_permit_join
      platform: state
      to: 'off'
  action:
    - data:
        payload: 'false'
        topic: zigbee2mqtt/bridge/config/permit_join
      service: mqtt.publish
    - data:
        entity_id: timer.zigbee_permit_join
      service: timer.cancel
- id: disable_zigbee_join_timer
  alias: Disable Zigbee joining by timer
  description: Zigbee2mqtt hết hạn cho phép thiết bị mới kết nối
  trigger:
    - platform: event
      event_type: timer.finished
      event_data:
        entity_id: timer.zigbee_permit_join
  action:
    - service: mqtt.publish
      data:
        topic: zigbee2mqtt/bridge/config/permit_join
        payload: 'false'
    - service: input_boolean.turn_off
      data:
        entity_id: input_boolean.zigbee_permit_join
#-->END Zigbee2mqtt

Thêm vào Lovelace

Sau khi thêm vào, bạn khởi động lại Hass để khởi tạo các thành phần đã thêm. Sau đó trên giao diện Lovelace, chọn chỉnh sửa giao diện rồi thêm vào một card mới dạng Manual rồi copy và paste đoạn cấu hình bên dưới.

entities:
  - entity: input_boolean.zigbee_permit_join
  - entity: timer.zigbee_permit_join
  - entity: sensor.zigbee_bridge_state
show_header_toggle: false
title: Zigbee
type: entities

Bạn nên đặt card này trong một Dashboard hay View riêng chỉ dành cho tài khoản quản trị – Admin.

Cài đặt custom_component zigbee2mqtt Networkmap

zigbee2mqtt Networkmap giúp tạo một bản đồ – map trực quan thể hiện toàn bộ thiết bị trong mạng lưới Zigbee của bạn bao gồm coordinator, các router cũng như thiết bị và kết nối giữa chúng (như thiết bị nào kết nối đến router nào). Như dưới đây:

Zigbee map including coordinator, routers and clients.
Photos: Hans Oischinger
Zigbee map, màu đỏ là coordinator, màu xanh là router, còn lại là thiết bị

Đây là bước tuỳ chọn, bạn có thể bỏ qua nếu không có nhu cầu xem bản đồ này.

Zigbee2mqtt Networkmap integrations

Để thêm zigbee2mqtt Networkmap, bạn có thể cài đặt thủ công theo hướng dẫn tại github của tác giả rgruebel tại đây hoặc cài đặt qua HACS bằng cách tìm zigbee trong mục INTEGRATIONS.

Sau khi cài đặt, bạn cần khởi động lại Hass trước rồi thêm cấu hình sau vào configuration.yaml và khởi động lại lần nữa để khởi tạo zigbee2mqtt Networkmap.

zigbee2mqtt_networkmap:
  #topic: your topic (optional, default zigbee2mqtt)
panel_iframe:
  networkmap:
    title: 'Zigbee Map'
    url: '/local/community/zigbee2mqtt_networkmap/map.html'
    icon: 'mdi:graphql'

Thêm thiết bị Zigbee vào Hass

Sau khi hoàn tất các bước trên, ta có thể thử thêm một thiết bị Zigbee được hỗ trợ bởi Zigbee2mqtt vào Hass. Ở đây ta sẽ thêm cảm biến cửa Zigbee Xiaomi Mijia MCCGQ01LM. Cảm biến này gồm 2 phần, sẽ có trạng thái ‘off’ khi hai phần ở gần nhau và ‘on’ khi 2 phần bị tách rời (cửa mở), khoảng cách tương đối khoảng 2cm.

Zigbee Xiaomi Aqara MCCGQ01LM Door Sensor Reset Hole
Zigbee Xiaomi Aqara MCCGQ01LM Door Sensor

Trước tiên ta cần kiểm tra pin của cảm biến đã được lắp vào vị trí chưa bằng cách tách nắp sau từ phía dưới. Sau đó tháo niêm phong pin rồi lắp lại. Trước khi kết nối vào mạng Zigbee tạo bởi Zigbee2mqtt, ta cần reset bằng cách dùng que chọc sim hoặc bất cứ dụng cụ nào đủ cứng và nhỏ để chọc vừa lỗ reset.

Zigbee Xiaomi Aqara MCCGQ01LM Door Sensor Reset Hole

Lỗ Reset và khe mở nắp sau. Bạn lưu ý đừng dùng các dụng cụ quá mềm và có khả năng gãy hay mắc kẹt ở lỗ. Cũng đừng nhầm lẫn với vị trí đèn thông báo. Thông thường người viết dùng tăm (rất) cứng.

Trước khi reset, bạn hãy truy cập giao diện của Hass, tìm thẻ quản lý Zigbee2mqtt đã tạo ở bước 2 rồi ấn nút Allow devices to join để kích hoạt chế độ cho phép thiết bị mới tham gia mạng lưới. Chế độ này sẽ tự động vô hiệu hoá sau 600 giây – 10 phút, đếm ngược bởi timer tạo ở bước 2.

Zigbee2mqtt Lovelace Allow Joining
Cho phép thiết bị tham gia mạng Zigbee
! Lưu ý về bảo mật mạng Zigbee

Đừng bao giờ để mạng Zigbee ở chế độ cho phép thiết bị mới tham gia mọi lúc. Khi đó bất cứ ai cũng có thể thêm thiết bị vào để điều khiển hoặc tệ hơn là lấy khoá mã hoá – network transport encrypt key của bạn.

Đừng sử dụng khoá mã hoá – network transport encrypted key mặc định trong cấu hình, luôn thay đổi nó.

Bây giờ bạn hãy Reset cảm biến Mijia bằng cách chọc vào lỗ Reset và giữ yên trong vài giây đến khi đèn báo hiệu chớp xanh vài lần. Sau đó hãy vào mục Configuration (Cấu hình) > Integrations (Các tích hợp) của Hass. Chọn tích hợp MQTT: Mosquitto Broker để xem cảm biến mới có tham gia mạng thành công và được tự động nhận biết bởi Hass hay không.

Hass Zigbee2mqtt Successfully Add New Device
Thêm thành công cảm biến Xiaomi

Bạn có thể thấy cảm biến được tự động phát hiện và thêm vào Hass. Từ trái sang:
friendly_name/ Nhà sản xuất/ Mẫu – model/ Khu vực/ Tích hợp/ Mức Pin

Bây giờ bạn có thể ấn vào thiết bị được phát hiện để thay đổi tênentity_id. Việc thay đổi entity_id sẽ giúp giảm phiền hà khi sử dụng entity của cảm biến vào automation hay thể hiện ra giao diện, cũng như khi thay đổi thiết bị cảm biến mới.

Hass MQTT Integration Device Management
Giao diện quản lý thiết bị – device của Hass
Hass Device Name and Entity Change
Sửa lại cả tên – name và entity_id cho dễ quản lý hơn

Sau khi hoàn tất, bạn có thể bấm ADD TO LOVELACE để thêm tất cả entity của cảm biến này vào giao diện Lovelace.

Hass Lovelace Door Sensor
Tất cả thông tin liên quan đến cảm biến thể hiện trên Lovelace
Door Sensor on Zigbee Map
Thiết bị mới cũng xuất hiện trong Zigbee map tạo bởi zigbee2mqtt Networkmap

Giờ thì bạn có thể dán cảm biến này lên cửa ra vào, cửa sổ (hoặc cửa gió máy lạnh 😉 – lưu ý là sẽ rất tốn pin ở các vị trí xảy ra đóng mở liên tục) và bắt đầu thêm các automation dựa trên cảm biến này như báo động, thông báo qua điện thoại, mở và tắt hệ thống điều hoà không khí, đèn v.v..

Lưu ý là bạn có thể làm gọn giao diện Lovelace bằng cách chỉ hiển thị trạng thái của cảm biến mà không cần hiển thị mức pin hay độ mạnh sóng, sau đó có thể tạo một card riêng để hiển thị chỉ các cảm biến sắp hết pin, sóng quá yếu hoặc hoàn toàn mất kết nối.
Bạn hãy tham khảo bài viết sau: Home Assistant – auto-entities card.

Về Bài viết

Bài viết chưa đầy đủ hoặc bạn còn có ý kiến khác? Bạn có thắc mắc và cần thêm thông tin. Vui lòng đăng ý kiến vào mục bình luận để tác giả và Team có thêm thông tin cải thiện chất lượng bài viết. Chúng tôi sẽ giải đáp các thắc mắc ngay trong mục bình luận để giúp được nhiều đọc giả với cùng vấn đề hơn hoặc chúng tôi sẽ trả lời trong một bài viết riêng. Trân trọng cảm ơn bạn!

Cảm ơn bạn đã xem bài viết này!

konnectED Team.

Lên Đầu
  • Đăng ký
Bạn quên mất mật khẩu? Vui lòng nhập tên đăng nhập và địa chỉ email đã đăng ký. Bạn sẽ nhận được liên kết tạo mật khẩu mới qua email (bạn nhớ kiểm tra hộp spam trong trường hợp email đi lạc).