uData 框架设计之初的思想是基于传统sensorhub概念基础之上的,结合IoT的业务场景和AliOS Things物联网操作系统的特点设计而成的一个面对IoT的感知设备处理框架。uData主要分kernel和framework两层,kernel层主要是负责传感器驱动和相关的静态校准,包括轴向校准等;framework层主要是负责应用服务管理、动态校准管理和对外模块接口等。
功能特性
- 数据上云
- 用户数据订阅
- 用户数据退订
udata架构图:

模块依赖
- device.sensor
- cjson (optional)
- uData为传感器管理架构,依赖于底层sensor模块;而uData的service初始化参数可采用数组或json格式来配置,后者依赖cjson模块。
使用指南
developerkit板上已集成了多款传感器,建议开发者采用该单板进行体验和调试。
包含头文件
#include "sensor/sensor.h"
#include "udata/udata.h"
API列表
udata_init | uData模块初始化(只需在APP中初始化一次即可) |
udata_subscribe | uData服务订阅 |
udata_unsubscribe | uData服务退订 |
udata_report_publish | 订阅的uData服务数据获取 |
API详情
int udata_init(void)
返回参数
0 | 执行成功 |
其他 | 执行错误 |
调用示例
int ret = 0;
ret = udata_init();
int udata_subscribe(udata_type_e type)
输入参数
udata_type_e type | 订阅的服务类型 |
返回参数
0 | 执行成功 |
其他 | 执行错误 |
调用示例
/* 订阅温度服务 */
int ret = 0;
ret = udata_subscribe(UDATA_SERVICE_TEMP);
int udata_unsubscribe(udata_type_e type)
输入参数
udata_type_e type | 退订的服务类型 |
返回参数
0 | 执行成功 |
其他 | 执行错误 |
调用示例
/* 退订温度服务 */
int ret = 0;
ret = udata_unsubscribe(UDATA_SERVICE_TEMP);
int udata_report_publish(udata_type_e type, void *pdata)
输入参数
udata_type_e type | 需要读取的服务类型 |
void *pdata | 服务类型数据需要存放的地址 |
返回参数
0 | 执行成功 |
其他 | 执行错误 |
调用示例
temperature_data_t temp;
int ret = 0;
ret = int udata_report_publish(UDATA_SERVICE_TEMP, &temp);
配置文件
uData支持json格式的参数配置,可参考以下配置(udata_config.json):
"udata_config_desc": [
{
"service_config": [
{
"type": "UDATA_SERVICE_ACC", # service类型
"task": "shared", # service任务配置, 简单算法可采用共享任务--'shared';复杂算法可独立创建任务--'exclusive';
"devices": [ # service依赖的物理传感器
{
"tag": "TAG_DEV_ACC", # 传感器tag
"index": 0, # 传感器索引
"interval": 1000 # 传感器数据采样周期, 单位:ms
}
]
}
],
"data_to_cloud": [
{
"dtc_enable": "off", # 数据上云默认关闭
"data_type": "UDATA_FLOAT", # 上传的数据类型,UDATA_UINT32, UDATA_INT32, UDATA_FLOAT三种类型
"coefficient": 1000, # 上传数据缩小的比例系数
"dtc_interval": 4000, # 传感器数据周期, 单位:ms,建议与数据采样周期成比例关系
"name": "Accelerometer", # 上传数据名称;对于结构体类型数据,该处为结构体名称
"sub_para": [
{
"name": "x" # 对于结构体类型数据,该处为数据元素子名称
},
{
"name": "y"
},
{
"name": "z"
}
]
}
]
}
]
或使用C语言格式的配置(udata_config.c):
/*sensor tag -- sensor index -- sampling period(ms) */
udata_tag_para_st g_dev_acc[] = {
{TAG_DEV_ACC, 0, 1000},
};
/*service type -- 是否独立任务运行 -- 依赖的sensor个数 -- sensor配置数组 */
udata_service_para_t g_service_para[] = {
{UDATA_SERVICE_ACC, false, UDATA_ARRAY_NUM_CALC(g_dev_acc),&g_dev_acc[0]},
};
配置方式选择如下所示:
上云配置
对于想通过该单板连接阿里云的用户,可在link develop平台上创建设备,设备属性如下所示:


在文件




app\example\udataapp\mqtt\mqtt_example.c
中修改上述设备的三元组。
编译运行
本地调试
通过以下命令编译工程,可进行本地调试:
aos create project -b developerit -t udataapp udataapp
cd udataapp
aos make
运行成功后,可在本地串口看到以下打印输出:

数据上云
通过以下命令编译工程,可进行本地调试:
aos make dtc=mqtt
配网命令: 
netmgr connect ssid passwd
通过以下命令可以开启加速度传感器上云功能:
加速度:acc=1
磁力计:mag=1
陀螺仪:gyro=1
环境光:als=1
接近光:ps=1
温度计:temp=1
湿度计:humi=1
气压计:baro=1
运行成功后,可在云端可以看到以下数据上传:

在文档使用中是否遇到以下问题
更多建议
匿名提交