Data payload for ZigBee thermostat to change the system mode of the thermostat in API mode

0
Can anyone tell me what is the data payload to change the system mode of the ZigBee based thermostat?

I have found the cluster ID and attribute ID for the system mode i.e 0x0201 (cluster ID) & 0x001C (attribute ID) but unable to frame the data payload.

Zigbee walker output

Digi International -- ZDO/ZCL Walker v1.03
Started at Mon Nov 11 10:14:28 2019
Performing discovery on 00-0d-6f-00-0a-93-e5-40.
Endpoint 0x01  Profile 0x0104  Device 0x0301  Ver 0x00
   input/server cluster 0x0000
      attr 0x0000, type 0x20 (UNSIGNED_8BIT) 0x01 = 1
      attr 0x0002, type 0x20 (UNSIGNED_8BIT) 0x02 = 2
      attr 0x0003, type 0x20 (UNSIGNED_8BIT) 0x03 = 3
      attr 0x0004, type 0x42 (STRING_CHAR) "Centralite"
      attr 0x0005, type 0x42 (STRING_CHAR) "3157100-E"
      attr 0x0007, type 0x30 (ENUM_8BIT) 0x81 = 129
   input/server cluster 0x0001
      attr 0x0020, type 0x20 (UNSIGNED_8BIT) 0x1C = 28
      attr 0x0036, type 0x20 (UNSIGNED_8BIT) 0x00 = 0
      attr 0x0037, type 0x20 (UNSIGNED_8BIT) 0x00 = 0
      attr 0x0038, type 0x20 (UNSIGNED_8BIT) 0x00 = 0
      attr 0x0039, type 0x20 (UNSIGNED_8BIT) 0x00 = 0
      attr 0x003E, type 0x1B (BITMAP_32BIT) 0x00000000
   input/server cluster 0x0003
      attr 0x0000, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
   input/server cluster 0x0020
      attr 0x0000, type 0x23 (UNSIGNED_32BIT) 0x00000000 = 0
      attr 0x0001, type 0x23 (UNSIGNED_32BIT) 0x0000001C = 28
      attr 0x0002, type 0x21 (UNSIGNED_16BIT) 0x0001 = 1
      attr 0x0003, type 0x21 (UNSIGNED_16BIT) 0x0014 = 20
      attr 0x0004, type 0x23 (UNSIGNED_32BIT) 0x000000F0 = 240
      attr 0x0005, type 0x23 (UNSIGNED_32BIT) 0x0000001C = 28
      attr 0x0006, type 0x21 (UNSIGNED_16BIT) 0x0078 = 120
   input/server cluster 0x0201
      attr 0x0000, type 0x29 (SIGNED_16BIT) 0x0B39 = 2873
      attr 0x0003, type 0x29 (SIGNED_16BIT) 0x02BC = 700
      attr 0x0004, type 0x29 (SIGNED_16BIT) 0x0BB8 = 3000
      attr 0x0005, type 0x29 (SIGNED_16BIT) 0x02BC = 700
      attr 0x0006, type 0x29 (SIGNED_16BIT) 0x0C80 = 3200
      attr 0x0009, type 0x18 (BITMAP_8BIT) 0xFF
      attr 0x0010, type 0x28 (SIGNED_8BIT) 0x00 = 0
      attr 0x0011, type 0x29 (SIGNED_16BIT) 0x029A = 666
      attr 0x0012, type 0x29 (SIGNED_16BIT) 0x029A = 666
      attr 0x0015, type 0x29 (SIGNED_16BIT) 0x02BC = 700
      attr 0x0016, type 0x29 (SIGNED_16BIT) 0x0BB8 = 3000
      attr 0x0017, type 0x29 (SIGNED_16BIT) 0x02BC = 700
      attr 0x0018, type 0x29 (SIGNED_16BIT) 0x0BB8 = 3000
      attr 0x0019, type 0x28 (SIGNED_8BIT) 0x0A = 10
      attr 0x001B, type 0x30 (ENUM_8BIT) 0x05 = 5
      attr 0x001C, type 0x30 (ENUM_8BIT) 0x00 = 0
      attr 0x001E, type 0x30 (ENUM_8BIT) 0x00 = 0
      attr 0x0023, type 0x30 (ENUM_8BIT) 0x00 = 0
      attr 0x0024, type 0x21 (UNSIGNED_16BIT) 0xFFFF = 65535
      attr 0x0025, type 0x18 (BITMAP_8BIT) 0x00
      attr 0x0029, type 0x19 (BITMAP_16BIT) 0x0000
      attr 0x0030, type 0x30 (ENUM_8BIT) 0x00 = 0
      attr 0x0031, type 0x29 (SIGNED_16BIT) 0x8000 = 32768
   input/server cluster 0x0202
      attr 0x0000, type 0x30 (ENUM_8BIT) 0x05 = 5
      attr 0x0001, type 0x30 (ENUM_8BIT) 0x04 = 4
   input/server cluster 0x0204
      attr 0x0000, type 0x30 (ENUM_8BIT) 0x00 = 0
      attr 0x0001, type 0x30 (ENUM_8BIT) 0x00 = 0
   input/server cluster 0x0B05
      attr 0x0100, type 0x23 (UNSIGNED_32BIT) 0x08000000 = 134217728
      attr 0x0101, type 0x23 (UNSIGNED_32BIT) 0x08000001 = 134217729
      attr 0x0102, type 0x23 (UNSIGNED_32BIT) 0x08000157 = 134218071
      attr 0x0103, type 0x23 (UNSIGNED_32BIT) 0x08006CA7 = 134245543
      attr 0x0104, type 0x21 (UNSIGNED_16BIT) 0x01ED = 493
      attr 0x0105, type 0x21 (UNSIGNED_16BIT) 0x01EF = 495
      attr 0x0106, type 0x21 (UNSIGNED_16BIT) 0x023E = 574
      attr 0x0107, type 0x21 (UNSIGNED_16BIT) 0x0218 = 536
      attr 0x0108, type 0x21 (UNSIGNED_16BIT) 0x0050 = 80
      attr 0x0109, type 0x21 (UNSIGNED_16BIT) 0x0048 = 72
      attr 0x010A, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x010B, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x010C, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x010D, type 0x21 (UNSIGNED_16BIT) 0x0003 = 3
      attr 0x010E, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x010F, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x0110, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x0111, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x0112, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x0113, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x0114, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x0115, type 0x21 (UNSIGNED_16BIT) 0x0001 = 1
      attr 0x0116, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x0117, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x0118, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x0119, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x011A, type 0x21 (UNSIGNED_16BIT) 0x0000 = 0
      attr 0x011B, type 0x21 (UNSIGNED_16BIT) 0x2401 = 9217
      attr 0x011C, type 0x20 (UNSIGNED_8BIT) 0xFF = 255
      attr 0x011D, type 0x28 (SIGNED_8BIT) 0xDA = 218
  output/client cluster 0x000A
    no attributes
  output/client cluster 0x0019
      attr 0x0000, type 0xF0 (IEEE_ADDR) ff-ff-ff-ff-ff-ff-ff-ff
      attr 0x0001, type 0x23 (UNSIGNED_32BIT) 0xFFFFFFFF = 4294967295
      attr 0x0002, type 0x23 (UNSIGNED_32BIT) 0x04045010 = 67391504
      attr 0x0004, type 0x23 (UNSIGNED_32BIT) 0xFFFFFFFF = 4294967295
      attr 0x0006, type 0x30 (ENUM_8BIT) 0x00 = 0
      attr 0x0007, type 0x21 (UNSIGNED_16BIT) 0xC2DF = 49887
      attr 0x0008, type 0x21 (UNSIGNED_16BIT) 0x0023 = 35
      attr 0x0009, type 0x21 (UNSIGNED_16BIT) 0x1388 = 5000
      attr 0x000A, type 0x23 (UNSIGNED_32BIT) 0x5BAF4865 = 1538213989
Completed at Mon Nov 11 10:15:02 2019
(34 seconds elapsed)

I am constructing the frame as per this - [Send Zigbee cluster library (ZCL) commands with the API][1]

Following is my constructed frame to change the system mode of the thermostat still the below frame is not changing the system mode(OFF,HEAT,Cool).

7E 00 19 11 01 00 0D 6F 00 0A 93 E5 40 FF FE 01 01 02 01 01 04 00 00 00 01 00 00 1C 8B

Can someone help me with the correct frame especially with data payload part to change the system mode of the thermostat?

xbee
zigbee
nest-thermostat
asked on Stack Overflow Oct 10, 2019 by kaviarasan • edited Nov 11, 2019 by kaviarasan

1 Answer

1

Have you confirmed you can join the Nest thermostat's network? You'll need to manually assemble the ZCL (Zigbee Cluster Library) frame to read or write that attribute ID.

If you have an 802.15.4 sniffer, you might be able to monitor communications between the thermostat and another device to determine what's happening, and potentially figure out how to reproduce those frames from the XBee. It's been a while since I've worked with Zigbee networks, so I don't know what the standards are for Home Automation right now, and how difficult it is to join an existing HA network.

You didn't specify a language, but Digi provides an Open Source XBee Host C Library to interface with its XBee modules (which you specified in a tag) and it includes a ZCL and ZDO/ZDP (Zigbee Data Objects/Profile) layer. One of the samples (Zigbee Walker) uses ZDO and ZCL discovery to dump a list of endpoints, clusters and attributes on a device.

answered on Stack Overflow Oct 10, 2019 by tomlogic

User contributions licensed under CC BY-SA 3.0