前言
本文使用中国移动OneNET 开发板-NB版 CM1719_V2.1
模组为M5310-A 通过LwM2M协议接入OneNet
使用官方提供的例程运行流程进行梳理。
对官方例程进行粗略解析
- 声明需要传递的变量的结构体
nbiot_value_t temp; /* 温度 */
nbiot_value_t humi; /* 湿度 */
nbiot_value_t illumi; //光照
nbiot_value_t press; //压力
nbiot_value_t altitude; //海拔
nbiot_value_t acceleX; //三轴加速x
nbiot_value_t acceleY; //三轴加速y
nbiot_value_t acceleZ; //三轴加速z
nbiot_value_t LED;
- 通过跳转可以看到结构体为:
typedef struct _nbiot_value_t
{
union
{
bool as_bool; //上传值为bool类型(1/0)
int64_t as_int; //上传值为int类型
double as_float; //上传值为float类型
struct
{
char *val; //所需上传的字符串
size_t len; //字符串长度
} as_buf; //上传类型为字符串
} value; //建立一个名为value的联合体
uint8_t type; //该资源的数据类型
uint8_t flag; //该资源的可操作性(可否读写)
} nbiot_value_t; //建立结构体
- 声明相应变量
extern float result_lx; //光照
extern _bmp180 bmp180; //压力/海拔
extern ADXL345_INFO adxlInfo; //三轴加速
//设置一个宏定义变量将所需上传的数据保存到变量中,方便上传资源
- 定义相关参数
char uri[] = "coap://183.230.40.40:5683"; //连接平台地址 IP+端口
nbiot_device_t *dev = NULL; //赋值NULL
time_t last_time = 0; //上一次更新时间
time_t cur_time = 0; //当前时间
- 系统初始化
static bool _nbiot_init_state = false; //系统是否初始化
void nbiot_init_environment( int argc, char *argv[] )
{
if ( !_nbiot_init_state )
{
nbiot_time_init();
M5310_Power_Init();
USART1_Init();
USART3_Init();
Peripheral_Init(); //对硬件进行初始化(LED,蜂鸣器、按键、I2C、BH1750、ADX345)
TIM3_Int_Init(1000-1,720-1);//定时器3定时10ms
mDelay(5000);
netdev_init(); //模组初始化,联网过程
_nbiot_init_state = true; //初始化成功
}
}
- netdev_init()
void netdev_init(void)
{
//SendCmd参数:发送指令,返回指令,延时时间,重试时间,等待时间
//char SendCmd(char* cmd, uint8_t *result,uint16_t timeout,uint8_t retry,uint16_t waittime)
SendCmd("AT+NRB\r\n", "OK", 5000