使用 TLSR8258 Zigbee SDK 3.12.0 进行二次开发,连接涂鸦双模网关能正常上报与下发,但连接HA(使用标准Zigbee 3.0 Dongle作为网关)时,report attribute时,callback不产生,同时也没有发出数据来。
麻烦帮忙看看是什么原因导致发不出包来。
Code: Select all
static void report_single_zg_cluster_attr_value(uint16_t cluster_id, uint16_t attr_id, uint8_t type, uint8_t size)
{
TAL_ZG_SEND_DATA_T send_data;
uint8_t zcl_id;
switch (cluster_id) {
case CLUSTER_ON_OFF_CLUSTER_ID:
zcl_id = USER_ZCL_ID_ON_OFF; // 0x65
break;
case CLUSTER_POWER_CONFIG_CLUSTER_ID:
zcl_id = USER_ZCL_ID_BATTER_PERCENT; // 0x66
break;
default:
break;
}
tal_system_memset(&send_data, 0, sizeof(TAL_ZG_SEND_DATA_T));
send_data.addr.mode = SEND_MODE_DEV;
send_data.addr.type.dev.src_ep = DEV_ENDPOINT; // 0x01
send_data.addr.type.dev.dst_ep = 0x01;
send_data.addr.type.dev.dst_addr = TUYA_GATEWAY_ADDRESS; // 0x00
send_data.addr.type.dev.cluster_id = cluster_id;
send_data.zcl_id = zcl_id;
send_data.qos = QOS_1;
send_data.frame_type = ZG_ZCL_FRAME_TYPE_GLOBAL;
send_data.direction = ZG_ZCL_DATA_SERVER_TO_CLIENT;
send_data.command_id = CMD_REPORT_ATTRIBUTES_COMMAND_ID;
send_data.data.zg.attr_sum = 1;
send_data.data.zg.attr[0].attr_id = attr_id;
send_data.data.zg.attr[0].type = type;
send_data.data.zg.attr[0].size = size;
tal_zg_read_attribute(DEV_ENDPOINT, cluster_id, attr_id,
&send_data.data.zg.attr[0].value[0], size);
TAL_PR_DEBUG("cluster_id = %d, attr_id = %d, type = %d, size = %d\n", cluster_id, attr_id, type, size);
tal_zg_clear_send_data(ZG_CLEAR_ALL_ZCL_ID, &send_data.zcl_id);
tal_zg_send_data(&send_data, dp_send_result_cb, SPROP_SEND_TIMEOUT);
}