2021-08-22学习笔记:BL604 传感器数据上传华为云02
BL604 传感器数据上传华为云02今日总结函数调用过程二、使用步骤1.引入库2.读入数据总结今日总结今天在大致理解了demo中数据上传函数的基础上,成功实现了将温度传感器的数据上传至华为云,但结果仍不完美,目前只能实现整形数据的上传,未能实现浮点型数据上传。函数调用过程/*数据上报处理函数*/static voidoc_report_normal(void){//static int times
·
今日总结
今天在大致理解了demo中数据上传函数的基础上,成功实现了将温度传感器的数据上传至华为云,但结果仍不完美,目前只能实现整形数据的上传,未能实现浮点型数据上传。
函数调用过程
/*数据上报处理函数*/
static void oc_report_normal(void)
{
//static int times = 1;
int ret;
/*if(times == EN_OC_MQTT_PROFILE_MSG_TYPE_UP_MSGUP)
{
oc_mqtt_profile_msgup_t msgup;
msgup.device_id = CN_EP_DEVICEID;
msgup.id = "12345";
msgup.name = "MSGUP";
msgup.msg = "Hello,Message Up";
msgup.msg_len = strlen(msgup.msg);
oc_mqtt_profile_msgup(NULL,&msgup);
}
else if(times == EN_OC_MQTT_PROFILE_MSG_TYPE_UP_PROPERTYREPORT)*/
{
// 用于拼装JSON数据的变量
oc_mqtt_profile_kv_t Temperature_List;
// 添加初始化服务代码
///< initialize the service
s_device_service.event_time = NULL;
s_device_service.service_id = "bls_01";//第一处关键替换,填入对应的产品名称
s_device_service.service_property = &Temperature_List;
s_device_service.nxt = NULL;
// 添加数据所需要的变量
int Temperature = 66;
//移植DS18B20程序开始
BL602_Delay_MS(180);
//bl_uart_init(0, 16, 7, 255, 255, 2 * 1000 * 1000);
while(DS18B20_Init())
{
printf("DS18B20 checked failed!!!\r\n");
BL602_Delay_MS(500);
}
printf("DS18B20 checked success!!!\r\n");
//移植DS18B20程序结束
while(1)
{
osal_task_sleep(10000);
if(1)//默认有效 //
{
/*组装JSON数据*/
Temperature = DS18B20_Get_Temp()/10;
Temperature_List.key = "Temperature";//第二处关键替换:填入对应属性名称
Temperature_List.value = (char *)&Temperature;
Temperature_List.type = EN_OC_MQTT_PROFILE_VALUE_INT;
Temperature_List.nxt = NULL;
// 添加数据上报代码
ret = oc_mqtt_profile_propertyreport(NULL,&s_device_service);
if(!ret)
{
printf("%s\r\n","max.su -> My report success");
}
else
{
printf("max.su -> error code %d\r\n", ret);
}
}
}
}
return;
}
剩下的替换自行比对博客中的代码和demo中的代码即可,替换完后编译加下载,复位后即可观测到数据
一些问题
- 目前只能传输整形数据,如果改为浮点型数据的话在华为云端检测的值就会非常奇怪
- 有时候数据会有异常波动,不过一般持续时间较短,应该不是传感器的问题
总结
- 套用demo,关键是理解里面参数的含义。
- 善用官方教程,今天之所以能够加深对demo中函数的理解,是因为发现了华为云的官方教程
设备属性上报
更多推荐
所有评论(0)