Zigbee Home เป็นโปรเจคเฟิร์มแวร์ที่มีฟังก์ชันการทำงานคล้ายกับ ESPHome เฟิร์มแวร์โอเพ่นซอร์ส แต่สำหรับอุปกรณ์ Zigbee ที่ใช้ไมโครคอนโทรลเลอร์ไร้สาย Nordic Semi nRF52 และในอนาคตจะรองรับ ไมโครคอนโทรลเลอร์ nRF53 ด้วย
ซอฟต์แวร์นี้ใช้งานกับ Nordic Semi ZBOSS สำหรับ Zigbee 3.0 stack และคาดว่าจะสามารถแฟลชเฟิร์มแวร์โอเพ่นซอร์ส ลงบนอุปกรณ์ Zigbee หลายชนิดและรองรับการใช้งานร่วมกับ Home Assistant สำหรับ Home Automation แบบโอเพ่นซอร์ส ผ่านการผสานรวกับมระบบ ZHA และยังมีการพัฒนาให้รองรับ Zigbee2MQTT ด้วย
โปรเจคประกอบด้วยเฟิร์มแวร์ “base” ที่เขียนด้วยภาษา C และแอปพลิเคชัน CLI ที่เขียนด้วยภาษา Go ซึ่งจะมีตัวเลือกที่จำเป็นในการสร้างและอัปโหลดเฟิร์มแวร์ตามการกำหนดค่าที่ให้มา โดยไฟล์ zigbee.yml จะอธิบายฮาร์ดแวร์ใน YAML ดูตัวอย่าง:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# Format for this file is not stable, and can change at any time. general: # Defines how much time a loop will sleep after each iteration. runevery: 1m board: nrf52840dongle_nrf52840 # Flasher tells which flashing method to use. # Currently `nrfutil`, `mcuboot` and `west` # are defined(but not equally tested). Nrfutil works though. flasher: nrfutil # Flasheroptions are flasher-specific options flasheroptions: port: /dev/ttyACM1 # This section is for defining peripherals # on the board. I.e. uart, spi, i2c, etc. # NOTE: Only changes should be defined here. # See https://github.com/zephyrproject-rtos/zephyr/tree/main/boards/<arch>/<board_name>/<board_name>.dts # for existing definitions for the board. # For example nRF52840 Dongle would have board devicetree at # https://github.com/zephyrproject-rtos/zephyr/tree/main/boards/arm/nrf52840dongle_nrf52840/nrf52840dongle_nrf52840.dts board: # This option will add USB UART loging functionality. # Quite limited for now, but can be easily extended debuglog: false # I2C is optional, only to provide different pins for i2c instance(s) i2c: # ID of instance is the same as defined in the SoC definition. # Generally they are in form of `i2c[0-9]`. # Number of i2c instances is also limited, and this allows only to # re-define pins for specified i2c instance. - id: i2c0 port: 0 sda: 29 scl: 31 sensors: - type: bme680 i2c: id: i2c0 addr: '0x76' - type: scd4x i2c: id: i2c0 # - type: device_temperature # on_off is a sensor that will respond to on/off state of the pin. # For now verifyied to be controlled by the client only, # so not by actually changing the state of the pin manually. # - type: on_off # pin: # # This is Green LED(LD1) on nrf52840 Dongle # port: 0 # pin: 6 # inverted: true |
คำสั่งให้แฟลชเฟิร์มแวร์ไปที่บอร์ด ดังนี้:
1 |
go run ./cli/cmd/zigbee firmware --workdir <path_to_project> flash |
ขณะนี้โปรเจคกำลังพัฒนาโดยใช้ nRF52840 Dongle อย่างเป็นทางการ และยังอยู่ในช่วงเริ่มต้นยังไม่พร้อมสำหรับผู้ใช้ทั่วไป โปรเจคนี้ไม่ใช่โปรเจคแรกที่นำฮาร์ดแวร์ nRF52 ทำงานได้กับ Home Assistant ยังมีไลบรารี zigpy-zboss ที่สามารถทำได้
คุณจะพบซอร์สโค้ด Zigbee Home และคำแนะนำพื้นฐานบน GitHub
ที่มา : Hedda
แปลจากบทความภาษาอังกฤษ : Zigbee Home is an ESPHome-like firmware project for Zigbee devices
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT