正点原子学习小组
直播中

大菠萝Alpha

2年用户 655经验值
擅长:嵌入式技术
私信 关注
[经验]

【正点原子STM32探索者V3开发板免费试用】家庭智慧网关之Onenet对接

本篇主要基于RT-Thread组件基于ESP8266模块实现温度传感器数据上传至云端。

一、软件框架

ONE1.png

二、Onenet组件配置

OneNET 平台是中国移动基于物联网产业打造的生态平台具有高并发可用、多协议接入、丰富 API 支持、数据安全存储、快速应用孵化等特点同时OneNET 平台还提供全方位支撑加速用户产品的开发速度。

OneNET 软件包是 RT-Thread 针对 OneNET 平台连接做的的适配通过这个软件包可以让设备在 RT-Thread 上非常方便的连接 OneNet 平台完成数据的发送、接收、设备的注册和控制等功能。

软件包具有以下优点

  • 断线重连
  • 自动注册
  • 自定义响应函数
  • 自定义 topic 和 topic 对应的回调函数
  • 上传二进制数据

ONE.png

在RT-Studio工程中打开IoT软件包选择OneNet SDK输入各种key

device id 配置云端创建设备时获取的 设备ID

auth info 配置云端创建产品时 用户自定义的鉴权信息 (每个产品的每个设备唯一)

api key 配置云端创建设备时获取的 APIkey

product id 配置云端创建产品时获取的 产品ID

master/product apikey 配置云端创建产品时获取的 产品APIKey
数据源自于Onenet创建的物联网设备至于怎么创建设备网上很多教程。

ONE2.png

最后配置好的工程如下。
ONE3.png

三、代码实现

读取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
        {
            //LOG_D("buffer : {\"temperature\":%d}", value);
        }

        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;
}

代码加进去编译好。
ONE4.png

下载通过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。
ONE5.png

再看看数据流。
ONE6.png

最后来张本尊正点原子STM32探索者V3开发板。
ESP4.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分