本篇主要基于RT-Thread组件基于ESP8266模块实现温度传感器数据上传至云端。
一、软件框架
二、Onenet组件配置
OneNET 平台是中国移动基于物联网产业打造的生态平台具有高并发可用、多协议接入、丰富 API 支持、数据安全存储、快速应用孵化等特点同时OneNET 平台还提供全方位支撑加速用户产品的开发速度。
OneNET 软件包是 RT-Thread 针对 OneNET 平台连接做的的适配通过这个软件包可以让设备在 RT-Thread 上非常方便的连接 OneNet 平台完成数据的发送、接收、设备的注册和控制等功能。
软件包具有以下优点
- 断线重连
- 自动注册
- 自定义响应函数
- 自定义 topic 和 topic 对应的回调函数
- 上传二进制数据
在RT-Studio工程中打开IoT软件包选择OneNet SDK输入各种key
device id 配置云端创建设备时获取的 设备ID
auth info 配置云端创建产品时 用户自定义的鉴权信息
(每个产品的每个设备唯一)
api key 配置云端创建设备时获取的 APIkey
product id 配置云端创建产品时获取的 产品ID
master/product apikey 配置云端创建产品时获取的 产品APIKey
数据源自于Onenet创建的物联网设备至于怎么创建设备网上很多教程。
最后配置好的工程如下。
三、代码实现
读取DS18B20的代码和wifi连接的设置前面已经讲过不在敷述只贴onenet_upload_X的代码基于onenet SDK需要的写的功能不多主要是什么时候以什么频率上报数据即可。
static void onenet_upload_entry(void *parameter)
{
float value = 0;
while (1)
{
value = get_temp();
if (onenet_mqtt_upload_digit("temperature", value) < 0)
{
LOG_E("upload has an error, stop uploading");
break;
}
else
{
}
rt_thread_delay(rt_tick_from_millisecond(10 * 1000));
}
}
int onenet_upload_X(void)
{
rt_thread_t tid;
tid = rt_thread_create("onenet_send",
onenet_upload_entry,
RT_NULL,
2 * 1024,
RT_THREAD_PRIORITY_MAX / 3 - 1,
5);
if (tid)
{
rt_thread_startup(tid);
}
return 0;
}
代码加进去编译好。
下载通过ST-LINK挺快的。
四、运行
运行挺简单的先来个启动日志。
\ | /
- RT - Thread Operating System
/ | \ 4.1.0 build May 17 2023 20:44:53
2006 - 2022 Copyright by RT-Thread team
lwIP-2.0.3 initialized!
[32m[I/sal.skt] Socket Abstraction Layer initialize success.[0m
[32m[I/sensor] rt_sensor[temp_ds18b20] init success[0m
[32m[I/at.clnt] AT client(V1.3.1) on device uart3 initialize success.[0m
msh />[32m[I/at.dev.esp] esp0 device wifi is connected.[0m
[32m[I/at.dev.esp] esp0 device network initialize successfully.[0m
[32m[I/onenet.mqtt] RT-Thread OneNET package(V1.0.0) initialize success.[0m
[0m[D/onenet.mqtt] Enter mqtt_connect_callback![0m
[0m[D/mqtt] ipv4 address port: 6002[0m
[0m[D/mqtt] HOST = '183.230.40.39'[0m
[32m[I/mqtt] MQTT server connect success.[0m
[0m[D/onenet.mqtt] Enter mqtt_online_callback![0m
日志看得出LWIPSAL传感器AT 还有WIFI都启动了后面的是本文章的ONENET SDK启动和业务注册到cloud并且注册callback。
回到onenet平台可以看到此时设备已经接入cloud。
再看看数据流。
最后来张本尊正点原子STM32探索者V3开发板。