物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——创建新版OneNET的MQTT协议产品

本文详细指导如何在物联网项目中使用ESP8266-01s与微信小程序配合,通过OneNETMQTT服务创建设备,实现单片机的远程控制。包括设备注册、AT指令配置、数据双向传输等内容。

1. 前言

欢迎大家加入本教程!我们将一步步引导大家构建一个完整的物联网系统,主要目标是通过WiFi实现手机与单片机之间的远程通信。
本教程选用中国移动OneNET作为云平台服务。OneNET是一个面向物联网应用的专业PaaS平台,提供设备连接、数据收集和分析处理等服务,适合个人开发者使用,且有免费额度和详细的官方文档。
技术上,我们将使用OneNET的“物模型”来定义设备行为和属性,并采用JSON格式(OneJSON)进行数据交换。为了使单片机接入互联网,需要配备额外的WiFi模块硬件。
通过本教程,你不仅能学会搭建这个物联网应用场景,还能深入了解物联网的基本原理和技术细节。希望大家都能从中获益,开启智能生活之旅!

2. 获取资料

(s–b csdn一直说我过度宣传不给通过审核也不告诉我哪里过度了,看评论)

3. 注册账号

打开官方网站通过手机号注册一个账号:

OneNET - 中国移动物联网开放平台

4. 创建产品

4.1.创建产品

注册好账号后,点击右上方的开发者中心,如图标签①处。
在这里插入图片描述

进入到开发者中心后,我们需要在产品开发目录下,创建一个新的产品,

点击①,再点击②。

4.2.选择产品品类

点击创建产品选项后,会弹出一个产品的信息选择窗,这里我们就以一个温湿度计为例来创建产品,

这个地方的产品品类选择,只会影响创建后的物模型默认的属性。

例如这里选择的温湿度检测,那么创建后就会默认带温度,湿度的属性值,

如果选择的是水质检测终端,那么可能就会带水质,酸碱值的属性,

不会有其他功能性的不同,并且创建成功后可以自己增加或者删除属性,所以这里不用纠结选什么品类。

点击①选择行业,②选择场景,③选择品类,④点击保存

4.3. 选择设备信息

①选择智能化方式,选择设备接入,产品名称按照自己的需求写,这个名称不会涉及到使用步骤,只是最为一个名字显示。

所属地区按照需求填写,会在OneNET的地图上显示设备位置,没有其他的影响。

②节点类型选择直连设备,例如通过esp8266或者其他wifi,4g模块连接。

③接入协议选择mqtt,后文附带对比表格。

④数据协议使用OneJson,后文附带对比表格。

⑤联网方式选择WiFi,最终使用ESP8266或者其他wifi模块实现数据传输。

⑥点击下发的确定

4.3.1.接入协议特性表格

特性MQTTCoAPLwM2MHTTP
传输层TCPUDPUDP (CoAP)TCP
消息模型发布/订阅请求/响应对象/资源请求/响应
QoS支持3个级别确认/非确认依赖CoAP无(应用层处理)
安全机制TLS/SSLDTLSDTLS(强制)TLS/SSL
功耗极低
实时性(长连接)
双向通信✅ 原生支持⚠️ 观察模式✅ 支持❌ 不支持
设备管理⚠️ 需应用层实现❌ 不支持内置❌ 不支持

4.3.2. 接入协议使用场景表格

协议类型典型应用场景关键优势不适用场景
MQTT智能家居、充电桩、设备远程控制双向实时通信、QoS可靠传输、生态完善超低功耗设备、非IP网络
CoAPNB-IoT水表、烟感报警、农业监测功耗极低、UDP穿透性强、头部开销最小需要高频下发、对丢包敏感
LwM2M大规模设备管理、OTA升级、运营商平台内置管理功能、标准化对象模型、安全性强制应用层灵活性差、开发门槛高
HTTP一次性数据上报、快速原型验证开发最简单、通用性强、调试方便实时控制、高频率上报、双向通信

4.3.3.数据协议特性表格

特性OneJson数据流自定义透传
数据格式标准JSONKey-Value任意格式(Hex/字符串)
物模型✅ 支持❌ 不支持⚠️ 需脚本转换
Topic数量多(按功能点)少(单一Topic)
开发难度低(标准化)高(需写解析脚本)
平台功能完整支持基础支持有限支持
带宽消耗较高最低
灵活性最高

4.3.4.数据协议类型使用场景表格

协议类型典型应用场景关键优势不适用场景
OneJson智能家电、工业网关、共享设备平台功能完整、物模型标准化、规则联动强存量设备改造、超低带宽环境
数据流环境监测传感器、电表抄表、GPS定位配置简单快速、时序数据存储高效需要下发控制、复杂业务逻辑
自定义透传旧设备上云、特殊协议模组(如ModBus)硬件改动最小化、传输效率最高开发资源不足、需要快速迭代

5.新建设备

5.1.设备管理

创建好了产品之后,需要新建设备,一个产品,例如温湿度计,对应了有很多个设备。

这里的一个产品可以创建多个设备。

①:点击设备管理。

5.2.创建设备

①:添加设备。

②:选择刚刚创建的产品。

③:选择名称,这里的名称后续会在生成token中使用到。

④:点击确定

5.3.查看设备信息

创建设备成功后,会显示刚刚创建的设备

①:这里显示未激活是正常情况,后续第一次通过前面选择的连接方式,例如MQTT,连接到这个设备后,就会变成在线或者离线。

②:点击详情,查看有哪些属性。

5.4.进入详情页后:

①:设备名称,注意不要和前面的产品名称搞混了。

②:设备密钥,后续生成token时需要用到。

③:产品ID,后续生成token时需要用到。

后续生成token的时候需要使用到这三个参数。

5.5.查看属性内容

①:回到产品开发。

②:进入产品开发页面。

进入后,可以看到前面选择的产品品类,会自动帮我们创建对应的物模型属性,同时我们也可以点击右边的设置物模型选项来新增或者删减属性,或者修改已有属性的参数。

这里还需要解释一下下图的各个参数作用。
在这里插入图片描述

①:属性,就是通用的一个数据类型。

②:功能名称,用户可以自己定义,不影响数据交互。

③:标识符,用户可以自己定义,数据交互时,需要使用到对应的标识符,否则数据会交互失败。

④:数据类型,决定此参数的数据类型。

⑤:取值范围,决定此参数的数值范围。

⑥:步长,数据变化的最小分辨率,0.1则代表数据最多一位小数点。

⑦:单位,用户可以自己定义,不影响数据交互。

⑧:只读,读写,只写,分别对应着只可以上报属性,可以上报和属性设置,只可以属性设置功能,像是温湿度属性,只读就可以,因为只用上报数据,但是如果有个开关灯属性,需要去进行属性设置的操作,那么需要改成读写或者只写属性。

6.获取token

我们连接OneNET的设备需要进行设备安全认证,也就是:设备登录时需要使用通过key计算出的访问token 来进行访问安全认证。

如官方文档描述:文档中心

所以我们需要一个鉴权信息Token。

前面创建了产品,和对应的设备,之后就可以去生成Token,使用mqttx软件,实现连接服务器,进行属性上报和属性设置的操作,来为后续的单片机与云平台通信铺垫。

到这里,先整理一下需要用到的数据。

产品ID设备名称设备密钥
8W3Sk9inj6dev-001T2tQWTM5TVc0QjhYNHI2SG5kTjZIMjQxN1RrbHVlNkE=

找到OneNET的Token生成工具:

Token生成工具

下载之后打开。

  • 产品级鉴权时,res字段为products/{产品id},key为产品级key
  • 设备级鉴权时,res字段为products/{产品id}/devices/{设备名},key为设备级key

我们这里是设备级鉴权,所以以我的产品设备为例填入:products/8W3Sk9inj6/devices/dev-001

②:et,鉴权失效时间戳,不能大于10年,选择一个一年后秒级别的时间戳填入,例如:1796806010

网页搜一个时间戳转换工具:时间戳(Unix timestamp)转换工具

③:key,设备密钥,填入:T2tQWTM5TVc0QjhYNHI2SG5kTjZIMjQxN1RrbHVlNkE=

④:加密算法,默认即可。

⑤:点击生成。

将上面信息输入后:

复制生成框的内容,注意蓝色的选择区域,不要额外选择到换行回车符,只用选中到最后一个字符即可。

例如:

version=2018-10-31&res=products%2F8W3Sk9inj6%2Fdevices%2Fdev-001&et=1796806010&method=md5&sign=5MTXZNoeVlW1pQCHFB28Vg%3D%3D

7.总结

通过上面的内容,我们已经拿到了需要的信息,并且为接下来的实践做好了准备。下一步,我们将使用mqttx工具和OneNet平台进行通信。具体来说,我们会用mqttx作为客户端工具,连接到OneNet的MQTT服务,实现数据的发送和接收。我们需要确保MQTT服务器地址、端口号、用户名和密码等信息都正确无误,同时要注意数据格式和主题的设置,这样才能保证通信顺利进行。下一节会详细介绍如何利用这些信息完成MQTT通信的配置和操作。

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

串口茶谈社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值