Tuya Zigbee Thermostat

Zigbee device Development


Post Reply
firmware@nuos.in
Posts: 19

Hi,

Can you please tell me what Tuya is using value of zigbee type_id for 10 bytes of frame of cluster 0xEF00.

shiliang
Posts: 41

Re: Tuya Zigbee Thermostat

Please refer to the following:
DP Type

https://developer.tuya.com/cn/docs/mcu- ... 4%EF%BC%89

firmware@nuos.in
Posts: 19

Re: Tuya Zigbee Thermostat

Thanks for the link, but this is tuya serial communciation protocol.
But I am asking for Zigbee standard custom 10 bytes frame send directly to tuya gateway.

shiliang
Posts: 41

Re: Tuya Zigbee Thermostat

Can you provide more detailed information, such as what functions are implemented?
After the module receives the dp message sent by the gateway, it reports it to the gateway and pushes it to the app, and the status changes synchronously?

firmware@nuos.in
Posts: 19

Re: Tuya Zigbee Thermostat

Ok sure

I have to send 10 bytes frame to set set zigbee thermostat temperature.

zb_zcl_custom_cluster_cmd_req_t cmd_req = {
.address_mode = ZB_APS_ADDR_MODE_16_ENDP_PRESENT,
.cluster_id = 0xEF00,
.custom_cmd_id = 1, //Is this correct
.data.value = message->data, //10 bytes data
.data.size = message->size,
.direction = ZB_ZCL_CMD_DIRECTION_TO_CLI,
.data.type = ??, //<---------ARRAY, STRUCT, and more are not working
.profile_id = 0x0104,
.zcl_basic_cmd.dst_addr_u.addr_short = 0,
.zcl_basic_cmd.dst_endpoint = 1,
.zcl_basic_cmd.src_endpoint = 1,
.dis_defalut_resp = 0,
};
To set temperature on Tuya app from my zigbee device, what will be the value of .data.type.
What should be data type for 10 bytes of frame. I used array, struct , etc. all types, but failed to make it working.
Can you please help me.

same code works for me for .data.type = zigbee_uint56_t (This is for zigbee 7 bytes of frame to set state on-off).

shiliang
Posts: 41

Re: Tuya Zigbee Thermostat

OK, The following answers may help you.

If you want to report DP data, please use 0x02 command id, ZG_ZCL_FRAME_TYPE_SPEC_TO_CLUSTER (0x01) data type and the payload uses the received data.

Code: Select all

send_data->delay_time = 0;
send_data->random_time = 0;

send_data->manu_code = 0x0000;
send_data->manu_spec = 0;

send_data->command_id = 0x02; //report
send_data->frame_type = ZG_ZCL_FRAME_TYPE_SPEC_TO_CLUSTER; //(0x01)
send_data->direction = ZG_ZCL_DATA_SERVER_TO_CLIENT; //(0x01)
send_data->qos = QOS_1;

send_data->addr.mode = SEND_MODE_DEV;
send_data->addr.type.dev.src_ep = 0x01;
send_data->addr.type.dev.dst_ep = 0x01;
send_data->addr.type.dev.cluster_id = CLUSTER_PRIVATE_TUYA_CLUSTER_ID; //(0xEF00)
send_data->addr.type.dev.dst_addr = 0x0000;
firmware@nuos.in
Posts: 19

Re: Tuya Zigbee Thermostat

Ok,

Now i used your suggestion, and its still not working in my case.

There is send_data->frame_type = ZG_ZCL_FRAME_TYPE_SPEC_TO_CLUSTER; as per your suggestion.

But in my zigbee library, there is no frame_type, i have data.type means zigbee type_id.

Code: Select all

        zb_zcl_custom_cluster_cmd_req_t cmd_req = {
            .address_mode = ZB_APS_ADDR_MODE_16_ENDP_PRESENT,
            .cluster_id = 0xEF00,
            .custom_cmd_id = 2,  
            .data.value = message->data,
            .data.size = message->size,
            .direction = ZB_ZCL_CMD_DIRECTION_TO_CLI,
           [b] .data.type = ZB_ZCL_ATTR_TYPE_U8,[/b]  //<-- I need this type to find out, that tuya is using which is non-standard zigbee data type
            .profile_id = 0x0104,
            .zcl_basic_cmd.dst_addr_u.addr_short = 0,
            .zcl_basic_cmd.dst_endpoint = 1,
            .zcl_basic_cmd.src_endpoint = 1,   
            .dis_defalut_resp = 1,
            .manuf_code = 0,
            .manuf_specific = 0,           
        };
shiliang
Posts: 41

Re: Tuya Zigbee Thermostat

Please refer to the packet capture data:

Image

Post Reply