Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
onenet
星火1号_spark_星火一号_开发板
新版OneNet的星火1号开发板例程适配(上)
发布于 2025-05-19 17:22:19 浏览:590
订阅该版
[tocm] OneNet平台更新后,许多操作都发生了变化,导致星火1号的开发板例程也需要变化,今天我们基于原有例程做少量修改,来适配新版OneNet平台。 # 创建例程  根据图上顺序依次点击后进入项目创建窗口。  按照图中依次选择,点击完成即可创建基于星火1号开发板的OneNet例程。 # 创建云平台设备  来到OneNet物联网平台完成登录后,点击右上角“开发者中心”。  点击左上角的“产品开发”,再点击右上角的“创建产品”。  进入“创建产品”界面后,产品品类随意填写,智能化方式选择“设备接入”。  除了“产品名称”和“所属城市”,其他都需要按照图上选择。  创建完成后,点击右边的“产品开发”操作。  点击“设置物模型”进入配置。  点击“添加自定义功能点”。  参考上图来创建,注意:“标识符”与“数据类型”必须与设备端保持一致。  随后添加控制板载LED功能点。  完成后点击保存即可发布到产品。  回到“产品开发”页面,点击右侧“设备管理”。  点击右侧“添加设备”。  填入名称后点击确定即可完成创建。  点击右侧“详情”进入设备详细页面。  来到gitee页面下载token工具,链接地址如下: https://gitee.com/RT-Thread-Mirror/onenet/blob/1.2.0/tools/token.exe  打开token工具,依照图上来填入信息,随后点击“Generate”进行生成。 注意:et要填写一个大一点的时间戳来防止失效。 # 例程文件修改  回到RT-Thread Studio,双击例程的RT-Thread Settings,随后选择OneNet软件版的配置项。  下滑到此处,将框中信息更新,“身份验证信息”留空,按下Ctrl+S保存到工程中。 注意:版本务必切换成latest来下载最新版软件包。  双击左侧工程中的rtconfig.h,可以看到信息都已经更新完毕,手动将生成的token复制到文件中。  在右侧项目资源管理器中依次点开packages/onenet-latest/src文件夹,双击onenet_mqtt.c文件,找到mqtt_usr_callback函数进行编辑。 具体代码如下: ```c static void mqtt_usr_callback(MQTTClient *c, MessageData *msg_data) { LOG_D("Enter mqtt_usr_callback!"); // 打印接收到的主题和消息 LOG_D("topic %.*s receive a message", msg_data->topicName->lenstring.len, msg_data->topicName->lenstring.data); LOG_D("message: %.*s", msg_data->message->payloadlen, (char*)msg_data->message->payload); // 检查是否是属性设置命令 if (strstr((const char*)msg_data->topicName->lenstring.data, "/thing/property/set")) { // 解析JSON cJSON *root = cJSON_Parse((const char *)msg_data->message->payload); if (!root) { LOG_E("Invalid JSON"); return; } // 获取params中的LED命令 cJSON *params = cJSON_GetObjectItem(root, "params"); if (!params) { LOG_E("No params field"); cJSON_Delete(root); return; } cJSON *led = cJSON_GetObjectItem(params, "LED"); if (!led || !cJSON_IsString(led)) { LOG_E("No valid LED field in params"); cJSON_Delete(root); return; } // 获取LED命令字符串 - 例如"00 01" char *led_value = led->valuestring; LOG_D("LED command: %s", led_value); uint8_t recv_data[2] = {0}; // 手动解析字符串 if (strlen(led_value) >= 4 && led_value[2] == ' ') { // 解析第一个字节 (例如 "00") char byte1[3] = {led_value[0], led_value[1], '\0'}; // 解析第二个字节 (例如 "01") char byte2[3] = {led_value[3], led_value[4], '\0'}; recv_data[0] = strtol(byte1, NULL, 16); recv_data[1] = strtol(byte2, NULL, 16); LOG_D("Parsed LED command: %02x %02x", recv_data[0], recv_data[1]); // 准备响应数据的指针 uint8_t *resp_data = NULL; size_t resp_size = 0; // 调用现有回调函数处理命令 if (onenet_mqtt.cmd_rsp_cb) { onenet_mqtt.cmd_rsp_cb(recv_data, 2, &resp_data, &resp_size); } // 释放资源 if (resp_data) { ONENET_FREE(resp_data); } } else { LOG_E("Invalid LED command format"); } cJSON_Delete(root); } } ```  完成后编译并烧录到星火1号开发板中。 # 功能调试  点击工具栏的窗口并打开终端。  下方已经打开终端,点击右侧图标打开串口。  确认端口与波特率无误后点击确认即可打开。  信息都已在终端窗口中打印,单击Enter键调出msh,如图输入命令“wifi join (WiFi名称) (WiFi密码)”。  再输入命令“mqtt_online_callback”,打印出的信息显示连接成功。  回到OneNet平台,此时设备已经显示在线。  输入命令“onenet_set_cmd_rsp”,终端没有打印返回信息,但是星火1号开发板上的LED已经被点亮。  回到OneNet平台设备界面,按照上图依次点击。  在LED控制功能处输入“01 01”,然后点击下方属性设置,将命令从云平台发送到设备终端。  可以看到星火1号开发板上的LED从橙色变成了黄色,说明红色LED已经成功关闭。  再次发送“00 01”,黄色LED也被关闭。  发送“01 00”,红色LED被打开。  回到RT-Thread Studio的终端窗口,输入命令“onenet_upload_cycle”,温度数据已经开始上传。  在OneNet云平台设备界面点击“属性”,可以看到温度数据已经获取到,再点击属性栏右上角的“历史数据”。  历史数据已经图表化显示。 至此,例程中的基本功能都已经调试完毕。  但是,新版OneNet要求设备每次收到指令都要返回消息,不然就会像上图这样,每次发送命令都报返回信息错误,而且在等在设备回复期间无法进行连续指令下达。 下一篇,我们就来着手解决这个问题,并且接入星火1号开发板上的AHT10外设,来传输实时温湿度数据。 后续已更新:https://club.rt-thread.org/ask/article/4f0e54302d0d614e.html
4
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Rick98
这家伙很懒,什么也没写!
文章
3
回答
0
被采纳
0
关注TA
发私信
相关文章
1
studio中onenet包使能自动注册设备功能,编译缺少代码
2
rt-thread如何上传GPS的经纬度到onenet?
3
MQTT 在“ read 0:1, break “后断开重连
4
ONENET+esp8266连接报错
5
有哪位实现了ONENET包获取onenet数据源数据吗
6
请问一下使用BC26对接ONENET的步骤是什么呀
7
AT Client receive failed???
8
onenet示例程序运行异常
9
如何使用OneNet软件包上传2个以上数据流
10
OneNET 浮点数据上传,但小数部分却被截掉
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
五分钟玩转RT-Thread新社区
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
ART-Pi
FinSH
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
UART
cubemx
ESP8266
BSP
ota在线升级
WIZnet_W5500
PWM
packages_软件包
flash
freemodbus
潘多拉开发板_Pandora
GD32
ADC
keil_MDK
定时器
flashDB
编译报错
ulog
socket
rt_mq_消息队列_msg_queue
msh
中断
Debug
SFUD
C++_cpp
at_device
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
821
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部