更新时间:2024-07-18 07:54:36下载pdf
TuyaOS 支持批量数据点(Data Point,DP)上报功能,该功能将多个子设备的 DP 数据一次性地上报到云平台,以便满足大规模设备状态同步的需求。
本文介绍 TuyaOS 批量 DP 上报的 API 接口,并且提供了示例代码片段,以便展示如何正确地使用该功能。
/**
* @brief 异步发送数据到云平台
*
* @param[in] pro 协议标识符,对于批量 DP 上报,应设置为 30。
* @param[in] data JSON 格式的数据字符串,批量 DP 上报的示例格式:[{"cid": "aaaa", "dps": {"1": true}}, ...]。
* @param[in] qos MQTT 质量服务等级,推荐使用 1,以确保数据传输的可靠性。
* @param[in] to_lmt 超时时间(秒),如果超过此时间未收到确认,则视为超时。
* @param[in] cb 完成异步操作后调用的回调函数。
* @param[in] prv_data 回调函数的上下文数据,可用于存储额外的信息。
*
* @return OPRT_OK 表示成功,其他值表示错误。错误码定义请参考 tuya_error_code.h
*/
OPERATE_RET mqc_prot_data_rept_seq(IN CONST UINT_T pro, IN CONST CHAR_T *data,
IN CONST BYTE_T qos, IN CONST UINT_T to_lmt,
IN CONST MQ_PUB_ASYNC_IFM_CB cb, IN VOID *prv_data);
STATIC VOID __mqc_pub_cb(IN CONST OPERATE_RET op_ret,IN CONST VOID *prv_data)
{
PR_DEBUG("mqtt publish result: %d", op_ret);
if (op_ret == OPRT_OK) { // success
// TODO
} else { // timeout
// TODO
}
}
STATIC VOID __dp_report_batch_example(VOID)
{
OPERATE_RET op_ret = OPRT_OK;
CONST CHAR_T *data = "[ \
{\"cid\": \"aaaa\", \"dps\": {\"1\": true, \"2\": true}}, \
{\"cid\": \"bbbb\", \"dps\": {\"1\": true, \"2\": true}} \
]";
op_ret = mqc_prot_data_rept_seq(30, data, 1, 10, __mqc_pub_cb, NULL);
if (op_ret != OPRT_OK) {
PR_ERR("mqc_prot_data_rept_seq err: %d", op_ret);
return;
}
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈