diff --git a/Zigbee.md b/Zigbee.md index f775ba63..2d199fad 100644 --- a/Zigbee.md +++ b/Zigbee.md @@ -333,217 +333,7 @@ ZIG: zigbee device ready, listening... ``` ## Using Z2T - -### Z2T Commands - -Here are the additional commands available when Zigbee is activated. Note: Zigbee will automatically boot the CC2530 device, configure it and wait for Zigbee messages. - - -|Command|Paramaters| -|---|---| -|ZigbeePermitJoin|Enables or disables pairing of new devices, see below.

`ZigbeePermitjoin 1` enables pairing for 60 seconds
`ZigbeePermitJoin 99` enables pairing until next boot
`ZigbeePermitJoin 0` disables pairing| -|ZigbeeReset|Does a full reset and reconfiguration of the CC2530. Warning: you will need to re-pair all Zigbee devices

Ex: `ZigbeeReset 1`| -|ZigbeeStatus|Shows data collected from connected Zigbee devices, see examples below.

`ZigbeeStatus` shows the list of all Zigbee devices seen on the network until last boot, with their short address and friendly name.
`ZigbeeStatus 1` adds Manufacturer ID and Model ID of each devices
`ZigbeeStatus 2` adds list of endpoints of each device and the clusterIds supported in each endpoint.| -|ZigbeeZCLSend|Send a raw ZCL message to a Zigbee device. This is a low-level command, and requires to manually build the ZCL parameters. Most common usage will be provided as high-level functions.| - -### Z2T Status -You can inspect the log output to determine whether Z2T started correctly. Z2T sends several `ZigbeeStatus` messages to inform the MQTT host about initialization: -Ex: ```{"ZigbeeStatus":{"Status":1,"Message":"CC2530 booted","RestartReason":"Watchdog","MajorRel":2,"MinorRel":6}}``` -- `Status` contains a numeric code about the status message - - `0`: initialization complete, **Z2T is running normally** - - `1`: booting - - `2`: resetting CC2530 configuration - - `3`: starting Zigbee coordinator - - `20`: disabling Permit Join - - `21`: allowing Permit Join for 60 seconds - - `22`: allowing Permit Join until next boot - - `30`: Zigbee device connects or reconnects - - `31`: Received Node Descriptor information for a Zigbee device - - `32`: Received the list of active endpoints for a Zigbee device - - `33`: Received the simple Descriptor with active ZCL clusters for a Zigbee device - - `50`: reporting CC2530 firmware version - - `51`: reporting CC2530 device information and associated devices - - `98`: error, unsupported CC2530 firmware - - `99`: general error, **Z2T was unable to start** -- `Message` (optional) a human-readable message -- other fields depending on the message (Status=50 or Status=51) - -### Permit Join -By default, and for security reasons, the Zigbee coordinator does not automatically accept new devices. To pair new devices, use one of the following commands: -- `ZigbeePermitJoin 1`: enables pairing for 60 seconds -- `ZigbeePermitJoin 99`: enables pairing until next boot - -Then put your Zigbee device into pairing mode. This is usually accomplished by pressing the button on the device for 5 seconds or more. - -To stop pairing, use: -- `ZigbeePermitJoin 0` - -### Reading sensors -Sensor messages are published via MQTT when they are received from the Zigbee device. Unlike Zigbee2MQTT, there is currently no debouncing nor caching. - -Example: [Xiaomi Aqara Sensor](https://www.aliexpress.com/item/32876734250.html) - - -This sensor monitors humidity, temperature, and air pressure. Its Zigbee model ID is `lumi.weather`. - -1. Put Z2T into pairing mode using the `ZigbeePermitJoin` command as described above -2. Press the Xiaomi Aqara sensor's button for 5 seconds to pair the devices. You will see a message as follows: - ``` - MQT: tele//RESULT = {"ZigbeeStatus":{"Status":30,"IEEEAddr":"00158D00036B50AE","ShortAddr":"0x8F20","PowerSource":false,"ReceiveWhenIdle":false,"Security":false}} - ``` - - |Field name|Value| - |---|---| - |`Status`|`30` indicates a device connect or reconnect. This is the opportunity to match IEEEAddress and short address| - |`IEEEAddr`|Long unique address (64 bits) of the device - factory set| - |`ShortAddr`|Short address (16 bits) randomly assigned to the device on this Zigbee network| - |`PowerSource`|`true` = the device is connected to a power source
`false` = the device runs on battery| - |`ReceiveWhenIdle`|`true` = the device can receive commands when idle
`false` = the device is not listening. Commands should be sent when the device reconnects and is idle| - |`Security`|Security capability (meaning unknown, to be determined)| - -This device publishes sensor values roughly every hour or when a change occurs. You can also force an update pressing the device's button. It sends two kinds of messages, either 3x standard Zigbee messages, or a single proprietary message containing all sensor values. - -Examples: -``` -MQT: tele//RESULT = {"0x8F20":{"Humidity":23.47}} -MQT: tele//RESULT = {"0x8F20":{"Temperature":59.85}} -MQT: tele//RESULT = {"0x8F20":{"Pressure":1005,"PressureUnit":"hPa"}} -MQT: tele//RESULT = {"0x8F20":{"Temperature":23.47,"Humidity":58.97,"Pressure":1005.8,"PressureUnit":"hPa","Voltage":3.005,"Battery":100}} -MQT: tele//RESULT = {"0x8F20":{"ModelId":"lumi.weather"}} -``` -`0x8F20` is the ShortAddress of the sensor. - -Supported values: - -|Field name|Value| -|---|---| -|`Humidity`|Humidity in percentage (float)| -|`Pressure` and `PressureUnit`|Atmospheric pressure (float) and unit (string)
Currently only `hPa` (A.K.A. mbar) is supported| -|`Temperature`|Temperature in Celsius (float)| -|`Voltage`|Battery voltage (float)| -|`Battery`|Battery charge in percentage (integer)| -|`ModelId`|Model name of the Zigbee device (string)
Ex: `lumi.weather`| - -### Other commands -You can dump the internal information gathered about connected Zigbee devices with the command `ZigbeeStatus`. - -List all connected devices with `ZigbeeStatus` -```yaml -{"ZigbeeStatus-99":[{"ShortAddr":"0x6B58"},{"ShortAddr":"0xE9C3"},{"ShortAddr":"0x3D82"}]} -``` - -_(JSON pretty-printed for readability)_ -```yaml -{ - "ZigbeeStatus-99": [ - { - "ShortAddr":"0x6B58" - }, - { - "ShortAddr":"0xE9C3" - }, - { - "ShortAddr":"0x3D82" - } - ] -} -``` - -Get detailed information for each device, including long address, model and manufacturer with `ZigbeeStatus 1`: -```yaml -{"ZigbeeStatus1":[{"ShortAddr":"0x6B58","IEEEAddr":"7CB03EAA0A0292DD","ModelId":"Plug 01","Manufacturer":"OSRAM"},{"ShortAddr":"0xE9C3","IEEEAddr":"00158D00036B50AE","ModelId":"lumi.weather","Manufacturer":"LUMI"},{"ShortAddr":"0x3D82","IEEEAddr":"0017880102FE1DBD","ModelId":"LWB010","Manufacturer":"Philips"}]} -``` - -_(JSON pretty-printed for readability)_ -```yaml -{ - "ZigbeeStatus1": [ - { - "ShortAddr": "0x6B58", - "IEEEAddr": "7CB03EAA0A0292DD", - "ModelId": "Plug 01", - "Manufacturer": "OSRAM" - }, - { - "ShortAddr": "0xE9C3", - "IEEEAddr": "00158D00036B50AE", - "ModelId": "lumi.weather", - "Manufacturer": "LUMI" - }, - { - "ShortAddr": "0x3D82", - "IEEEAddr": "0017880102FE1DBD", - "ModelId": "LWB010", - "Manufacturer": "Philips" - } - ] -} -``` - -Get information about endpoints and ZCL clusters supported with `ZigbeeStatus 2`: -```yaml -{"ZigbeeStatus2":[{"ShortAddr":"0x6B58","Endpoints":{"0x03":{"ProfileId":"0xC05E","ProfileIdName":"ZigBee Light Link","ClustersIn":["0x1000","0x0000","0x0003","0x0004","0x0005","0x0006","0x0B04","0xFC0F"],"ClustersOut":["0x0019"]}}},{"ShortAddr":"0xE9C3","Endpoints":{"0x01":{"ProfileId":"0x0104","ClustersIn":["0x0000","0x0003","0xFFFF","0x0402","0x0403","0x0405"],"ClustersOut":["0x0000","0x0004","0xFFFF"]}}},{"ShortAddr":"0x3D82","Endpoints":{"0x0B":{"ProfileId":"0xC05E"," ... -``` - -_(JSON pretty-printed for readability)_ -```yaml -{ - "ZigbeeStatus2": [ - { - "ShortAddr": "0x6B58", - "Endpoints": { - "0x03": { - "ProfileId": "0xC05E", - "ProfileIdName": "ZigBee Light Link", - "ClustersIn": [ - "0x1000", - "0x0000", - "0x0003", - "0x0004", - "0x0005", - "0x0006", - "0x0B04", - "0xFC0F" - ], - "ClustersOut": [ - "0x0019" - ] - } - } - }, - { - "ShortAddr": "0xE9C3", - "Endpoints": { - "0x01": { - "ProfileId": "0x0104", - "ClustersIn": [ - "0x0000", - "0x0003", - "0xFFFF", - "0x0402", - "0x0403", - "0x0405" - ], - "ClustersOut": [ - "0x0000", - "0x0004", - "0xFFFF" - ] - } - } - }, - { - "ShortAddr": "0x3D82", - "Endpoints": { - "0x0B": { - "ProfileId": "0xC05E", - " ... - } - } - } - ] -} -``` +[Zigbee to Tasmota Configuration and Setup](Zigbee-Commands) ## Why another Zigbee project? There are several excellent open-source Zigbee to MQTT solutions like the widely used [Zigbee2mqtt](https://www.zigbee2mqtt.io/) or [Aqara Hub](https://github.com/Frans-Willem/AqaraHub). Zigbee2mqtt is a comprehensive solution but requires at least a Raspberry Pi to run it. Z2T is a lightweight solution running on an ESP82xx Wi-Fi chip. Hence it is easier to deploy in your living room or around your home.