Files
pnoker 769d1cb977 style: apply repository-wide formatting
- expand single-line Javadocs to multi-line blocks, rewrap Markdown prose, and reflow POM, YAML, and TypeScript formatting
- formatting only: no Java code lines changed, no build-file semantics changed
- verified: backend compile and check_documentation.py pass, pnpm check and pnpm lint:check pass, and the dc3 YAML files parse
2026-08-25 13:35:00 +08:00

4.1 KiB

DC3 Driver Zigbee

Overview

dc3-driver-zigbee is the Zigbee driver of the IoT DC3 platform. It is intended to manage a Zigbee network through a serial coordinator dongle (using the ZSmartSystems Zigbee library), read point values from Zigbee devices via ZCL attributes addressed by node IEEE address / endpoint / cluster / attribute, and write values to ZCL attributes.

⚠️ Work in progress. This driver is currently a skeleton — protocol-level I/O is not yet fully implemented. The implementation (ZigbeeDriverCustomServiceImpl) carries an explicit "work-in-progress skeleton" warning and multiple TODO markers: initial() hardcodes the serial port (/dev/ttyUSB0) and baud rate (115200) instead of reading them from the driver configuration; the device-level health() returns online unconditionally; and the write path (writeAttribute) only logs and never actually writes the ZCL attribute. Treat it as a starting template, not a production-ready driver.

Module Information

  • Group ID: io.github.pnoker
  • Artifact ID: dc3-driver-zigbee
  • Driver Name: Zigbee Driver

Driver Attributes (Device-level)

Attribute Code Type Default Description
Serial Port serialPort STRING /dev/ttyUSB0 Zigbee coordinator serial port
Baud Rate baudRate INT 115200 Serial port baud rate
Dongle Type dongleType STRING TELEGESIS Coordinator dongle type (TELEGESIS, EMBER, CONBEE)
PAN ID panId INT 0 PAN ID (0=auto)
Channel channel INT 0 Channel (0=auto, 11-26)

Point Attributes

Attribute Code Type Default Description
Node IEEE Address nodeIeeeAddress STRING Zigbee node IEEE address (e.g. 00158D0001234567)
Endpoint ID endpointId INT 1 Endpoint ID
Cluster ID clusterId INT 0 Cluster ID (e.g. 1026=Temperature Measurement)
Attribute ID attributeId INT 0 Attribute ID (e.g. 0=Measured Value)

Command Attributes (write)

Attribute Code Type Default Description
Node IEEE Address nodeIeeeAddress STRING Zigbee node IEEE address
Endpoint ID endpointId INT 1 Endpoint ID
Cluster ID clusterId INT 0 Cluster ID for writing
Attribute ID attributeId INT 0 Attribute ID for writing

The module application.yml is authoritative for attribute codes, types, default values, scheduling, health, and local buffering. Keep this README aligned when those user-facing settings change.

Prerequisites

A Zigbee coordinator dongle connected to a serial port on the host running the driver. The dependencies bundle the Telegesis dongle adapter; note that initial() currently hardcodes the serial port and baud rate rather than reading the driver attributes above (see the work-in-progress warning).

Running Locally

1. Start Infrastructure and Center Services

make up-db
make up-dev GROUP=core

2. Build and Run

mvn -s .mvn/settings.xml -pl dc3-driver/dc3-driver-zigbee -am package
java -jar dc3-driver/dc3-driver-zigbee/target/dc3-driver-zigbee.jar

Testing

Run the module tests from the repository root:

mvn -s .mvn/settings.xml -pl dc3-driver/dc3-driver-zigbee -am test
  • dc3-common-driver — Driver SDK for registration, scheduling, and RabbitMQ integration