【已解决】zigbee 电池电量上报问题

Zigbee 子设备开发


Post Reply
wqvbdcb123
Posts: 31

能否帮我看看下面电量上报函数是否有问题?我测试app收不到上报的电量值。不知道是哪有问题?谢谢!

tuya-zigbee-sdk-tlsr8258 ->app->switch->

#define EP_BV 1


zig_report_battery_voltage(EP_BV);(主动上报)

/**

  • @description: report battery voltage

  • @param {in} ep: endpoind

  • @return: none
    */
    void zig_report_battery_voltage(uint8_t ep)
    {
    uint8_t battery_percent;

    dev_zigbee_read_attribute(
    ep,
    CLUSTER_POWER_CONFIG_CLUSTER_ID,
    ATTR_BATTERY_PERCENTAGE_REMAINING_ATTRIBUTE_ID,
    &battery_percent,
    sizeof(battery_percent)
    );
    dev_send_data_t ret_data;
    attr_key_value_t *ret_attr = ret_data.data.zg.attr;

    memset(&ret_data, 0, sizeof(ret_data));
    /* Don't care
    ret_data.delay_time
    ret_data.random_time
    ret_data.zcl_id
    ret_data.command_type
    ret_data.addr.mode
    */
    ret_data.command_id = CMD_REPORT_ATTRIBUTES_COMMAND_ID;
    ret_data.direction = ZCL_DATA_DIRECTION_SERVER_TO_CLIENT;
    ret_data.qos = QOS_0;

    ret_data.addr.type.gw.src_ep = ep;
    ret_data.addr.type.gw.cluster_id = CLUSTER_POWER_CONFIG_CLUSTER_ID;
    ret_attr[0].attr_id = ATTR_BATTERY_PERCENTAGE_REMAINING_ATTRIBUTE_ID;
    ret_attr[0].type = ATTR_INT8U_ATTRIBUTE_TYPE;
    ret_attr[0].value_size = 1;
    ret_attr[0].value[0] = battery_percent;
    ret_data.data.zg.attr_sum++;
    dev_zigbee_send_data(&ret_data, NULL, 2000);

    app_print("battery_percent= %d", battery_percent);
    }

白芷冉然
Posts: 39

Re: zigbee 电池电量上报问题

设备虚拟id发一下,通过app子设备面板,右上角编辑按键设备信息查看

wqvbdcb123
Posts: 31

Re: zigbee 电池电量上报问题

6c97bf917eecaf666432pu

shiliang
Posts: 29

Re: zigbee 电池电量上报问题

可以按照如下操作步骤:
1.电量发送从QOS_0改为QOS_1,dev_zigbee_send_data(&ret_data, NULL, 2000);的NULL注册回调确认数据是否有到达网关;
2.看你电量的DP是105,麻烦看一下config里的PID_ID_PFEFIX能力值是多少,走的透传还是标准;

wqvbdcb123
Posts: 31

Re: zigbee 电池电量上报问题

#define PRODUCTOR_ID_PFEFIX "TZ3210"

shiliang
Posts: 29

Re: zigbee 电池电量上报问题

查到这个设备对应的产品ID dse8ogfy,绑定的方案为开关,开关下的标准DP没有电池电量,和网关沟通,方案下不支持的标准DP只能走私有透传协议

shiliang
Posts: 29

Re: zigbee 电池电量上报问题

可以通过私有透传命令发送电量值并且设备 PRODUCTOR_ID_PFEFIX需要支持透传能力

Post Reply