本帖最后由 yrg2022 于 2022-9-26 01:31 编辑
OneNET Studio云平台STM32物联网开发(1)- MQTT协议设备接入数据上报测试
功能效果视频
如图1手上有一个STM32F103CBT6的单片机控制板以及一个4G的DTU模块(合宙Cat1 4G模块Air724UG),
图1
如图2免费注册了OneNET Studio平台,如何将我们需要的数据上发上去展示呢?本系列文档将从以下2个方面进行讲解分析:
OneNET Studio云平台STM32物联网开发(1)- MQTT协议设备接入数据上报测试
(文章在CSND网站的发表地址:
https://blog.csdn.net/weixin_44862509/article/details/127015383)
OneNET Studio云平台STM32物联网开发(2)- STM32+Air724UG(4G模组)数据采集显示上报
(文章在CSND网站的发表地址:
https://blog.csdn.net/weixin_44862509/article/details/127023743)
图2
本文主要讲解第一部分MQTT协议设备接入数据上报测试,主要讲解如何通过MQTTX软件将需要上报的数据上发到平台展示其中分为以下八个步骤,大家认真看完以下八个步骤结合图片以及文字介绍并且自己动手在OneNET免费平台上创建自己的OneNET Studio的产品和设备就可以快速体验数据上报及展示的功能。并且通过第二篇文档可以顺利的实现STM32单片机和Cat1 4G Air724UG ,通过MQTT协议将需要的数据轻松上发到OneNET Studio。
第一步 创建产品:先在OneNET Studio 建立一个产品,如图3的步骤1,2,3的位置顺序进入点击“创建产品”的页面,
图3
如图4根据自己需要创建的产品填写信息,
图4
如图5,填写自己的相关信息(如果第一次创建没有把握一次成功,可以按照我的选项来填写信息,这样的话到最后一步,如果没有完成功能后可以更好的查找问题)并点击“确认”后,可以看到如图6产品创建成功的页面。
图5
图6
第二步 创建设备:在第一步创建的产品里,创建第一台设备,如图7的箭头1,2,3顺序的步骤点击“添加设备”页面。
图7
填写信息如图8,点击“确认”,进入如图9。
图8
图9
点击图9的1位置“详情”可以进入如图10。如图10的几个箭头的位置的信息非常关键,以上信息是实现OneNET云平台与硬件设备连接的关键信息,一定要记录,同时以上信息也要保密。
图10
第三步 MQTTX基本设置:用MQTT X 客户端软件与平台连接并上发数据,这一步非常关键,这一步能否走通直接决定终端硬件是否能将数据上报到平台,其实单片机编程难度不大,但是如果不能确保服务器是否可以上报数据那是非常糟糕的,所以我们采用MQTT X 客户端软件(免费下载)在电脑端运行并填写联网信息测试数据是否可以上报来提高最终硬件终端的开发效率。如图11为MQTTx 的界面,按照图11的步骤填写联网信息。如图11的1,2,3,4,5,6位置全部正确填写后点击位置7可以实现MQTTX与OneNET链接。
图11
第四步 填写服务器连接信息:如何填写信息呢,这是本文的关键,也是所有后续开发的关键。
Client ID:设备名称(如图10的1号箭头位置)
Host:服务器地址 studio-mqtt.heclouds.com (查看文档中心可以获得 https://open.iot.10086.cn/doc/v5/develop/detail/638)
Port:端口号 1883 (查看文档中心可以获得)
Username:所属产品ID (如图10的1号箭头位置)
Password:密码 (查看文档中心可以获得 https://open.iot.10086.cn/doc/v5/develop/detail/624)
第五步 计算服务器密码:如何获得链接密码,需要下载一个工具 Token生成工具,如图12,
图12
图12位置1为第四步所用到的“产品属所ID”,位置2为“设备名称”,位置4为图10的3号位置的“设备秘钥”,位置3为一个时间戳,这不是很好理解我简单用我自己理解的话术说下希望可以帮助大家理解(简单理解就是 将当前的日期和时间减去过去某一个日期和时间计算的秒数,我们这里需要填写设备账号到期的密码,所以需要将以后的某个时间比如当前是2022年9月23日,我想设备账号有效期为一年那么就是将2023年9月23日 15点30分,减掉过去的一个时间点(即时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数 )。只有这样计算出来的时间戳放进去计算出来的密码才可以使用一年),具体的时间戳换算公式可以使用在线工具。如图13的步骤可以计算出有效期为1年的时间戳“1695452640”,
图13
这个需要根据具体的使用时间填写,不过这个时间戳非常关键,因为在后面上发数据的时候要求带时间戳,在程序里带的时间戳一定不能超过这个时间点。
图14
点击如图14的1号位置的“Generate”可以获得密码,如图14的2号位置为计算出来的密码,填写到MQTTX 的密码位置。
第五步 连接服务器:如图15 填写好MQTTX 链接平台的基本账号信息,图15位置1选择3.1.1,点击图15位置2 链接服务器,
图15
服务器链接成功后如图16,如图出现英文提示说明没有链接成功,则是密码计算有问题或者是相关信息没有填写正确(登入信息一定要用自己创建产品和设备产生的信息,不能直接用我图片的信息,要不然你们的数据就发到我的平台上来了)。
图16
MQTTX与云平台服务器链接成功后,如图17,在平台上的设备管理页面可以看到图17位置2显示设备状态为“在线”,这里也非常关键一定要出现和图16一样的页面才算前面的准备工作是做成功的,如果有一点不一样那就要回到前面的步骤继续检查,细心发现问题。或者请教他人,如果需要请教作者本人则一定要告知你是在哪一步骤的哪个图片上出差错。
图17
第六步 上报数据格式整理:发自己的数据到自己创建的设备平台展示需要填写发布属性上报topic,上报topic就理解为是你需要发布数据的位置,这里需要设置和你的产品或设备相关的信息,这个根据文档中心(https://open.iot.10086.cn/doc/v5/develop/detail/639)可以获得格式为:$sys/{pid}/{device-name}/thing/property/post,只需要将{pid}修改为你自己的“所属产品ID ”,{device-name}修为为你自己的“设备名称”以及按平台要求的数据格式整理数据:
{
"id": "0001",
"version": "1.0",
"params": {
"LightLux": {
"value": 5.23,
"time": 1663918830000
},
"CurrentTemperature": {
"value": 23.6,
"time": 1663918830000
}
}
}
上发数据的属性名称在如图18可以查看,如图18的1号位置和2号位置进入详情页面可以选择需要的属性的标识符,也可以创建自己的属性及相关的标识符。
图18
如图19位属性标识符的获取,如图19的1位置和2位置查看光照值和温度的属性标识符并填写到自己的数据格式里。以上数据time字段后的时间戳一定要在生成密码的时间戳之前,在换算的时候选择ms为单位,我以上的时间是2022-09-23 15:40:30的时间。
图19
第七步 上报数据到平台:上发数据以及数据展示,如图20 将自己整理的上报topic和数据格式填写在图20的 1和2位置,并且点击图20的位置3发送数据,
图20
可以看到OneNET云平台Studio上有你上报的数据,在相应的属性里,如图21的1和2位置有我们上发的数据。
图21
第八步 读取数据上报状态:订阅属性上报结果通知topic,就是获取设备上报数据后服务器返回的数据,这一步和第六步一样将 $sys/{pid}/{device-name}/thing/property/post/reply 按自己的设备名称及产品ID,如图22,从图22的1位置点击进入,在图22的2位置填写信息,点击点击图22的3号位置,
图22
再次发送数据时可以看到图23的3号位置有数据上报成功后服务器回复的信息,大家也可以通过这个回复来判断数据是否发送成功。
图23
第九步 回顾总结:结合如图23的4个位置我们再进行回顾下,1位置为与服务链接成功的标志,2位置为服务器回复发送状态的topic的位置,3位置为服务器回复的数据,4位置为我们上发的数据,5位置为我们上发的topic。
需要用到的工具及网址:
OneNET 云平台地址:https://open.iot.10086.cn/
时间戳在线计算网址:https://tool.lu/timestamp/
MQTTX 客户端软件
token计算软件
需要用到的账号参数:
所属产品ID:i7ybqx3ZNk
设备密钥:KJ/ll/7hfOpjsUlz------9a1SyjvH40/X3kVRF8UU=
设备名称 P0001
属性标识符 LightLux CurrentTemperature
|