MQTT之OneNet物联网通信

2019-04-264.9万
AI 快速预览详细 收起
本教程介绍了如何使用掌控板和OneNet平台实现MQTT通信。首先在OneNet平台上创建产品并添加设备,然后编写程序实现灯光控制。通过具体的步骤,用户可以实现多设备的互联。适用于STEM教育和编程启蒙。


之前介绍了掌控MQTT与Easy IoT平台的联合使用,这里介绍下MQTT与OneNet物联网的简单通信。OneNet平台和Easy IoT之间最大的不同在于它可以支持多个设备同时订阅。也就是说,可以用一个掌控板来控制其他的掌控板。我这里仅用了两块掌控板来进行通信。

用前须知
OneNet平台新增了新版的物联网接入协议,以下教程仅支持旧版协议。因此,如果要使用Mind+和OneNet连接,用户必须使用旧版协议创建产品。


mqtt在onenet平台的实现:OneNet灯光控制

进入OneNet云平台注册登录自己的账号,登录之后进入开发者中心,在左上角的“全部产品-基础服务”中选择“多协议接入”。

MQTT之OneNet物联网通信图16MQTT之OneNet物联网通信图17

进入页面后,切换到“HTTP”协议页面下,点击“添加产品”
MQTT之OneNet物联网通信图18

MQTT之OneNet物联网通信图15
填写完产品信息,点击“确定”之后,可以看到我们的产品创建完成。
MQTT之OneNet物联网通信图3
接下来,我们进入Test这个产品里,可看到一些产品信息。
MQTT之OneNet物联网通信图4

我们再给这个产品添加设备

进入添加设备界面
MQTT之OneNet物联网通信图5

我们给这个产品添加一个pub和sub设备
MQTT之OneNet物联网通信图6
我们进入设备查看,给设备添加APIKey。
MQTT之OneNet物联网通信图7

到这,云平台创建设备就完成了。

接着,我们把设备联网后与云平台的设备连接上。使用两个掌控板,一个用来发送消息给topic0,一个用来接收topic0的消息。
初始化MQTT参数(ONENET的设备的TOPIC是用户自己定义的
MQTT之OneNet物联网通信图1
各个参数:
产品ID
MQTT之OneNet物联网通信图8
APIKEY和设备ID
MQTT之OneNet物联网通信图9

编写程序
[size=12.0000pt](1)发送端:掌控1连接pub设备
使用pub的参数
MQTT之OneNet物联网通信图2 MQTT之OneNet物联网通信图10
[size=12.0000pt](2)接收端:掌控2连接sub设备,这里的Topic_0必须定义成和发送端相同的topic——t0,并且使用扩展板,在P1引脚连接一个LED。
使用sub的参数
MQTT之OneNet物联网通信图11MQTT之OneNet物联网通信图12
(3)开始通信:将发送端的程序上传的掌控1,接收端的程序上传到掌控2。上传成功后,按下掌控1的A键,掌控2连接的LED点亮;按下掌控1的B键,掌控2连接的LED熄灭。

同时,在OneNet平台可以看到设备处于在线的状态
MQTT之OneNet物联网通信图13MQTT之OneNet物联网通信图14

在此通信基础上进行改动,甚至可以实现多块掌控板互联,这一部分就要各位看官自行探索了。

截图201904291720257496.png (182.04 KB, 下载次数: 8753)

掌控板 · MQTT与OneNet物联网通信教程_image_3.webp

截图201904291728597658.png (141.89 KB, 下载次数: 8894)

掌控板 · MQTT与OneNet物联网通信教程_image_6.webp

201910302124..png (100.67 KB, 下载次数: 8895)

掌控板 · MQTT与OneNet物联网通信教程_image_9.webp

201910303616..png (90.84 KB, 下载次数: 8779)

掌控板 · MQTT与OneNet物联网通信教程_image_12.webp

OneNet发送.rar

45.21 KB, 下载次数: 11578

OneNet接收.rar

45.12 KB, 下载次数: 11337

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(9)
Joye1123
Joye1123
之前用的版本删掉了,新用的Mind+V1.7.3RC1.0版本的MQTT初始化平台找不到OneNET了?!我去年用的时候都还有,请问是版本问题吗?求分享!
glwz007
glwz007
请问新版还支持掌控板吗?
旺
您好,可以将掌控板的光强值传到onenet平台,形成折线图吗?不知道差在哪里,我的没成功。
春风拂槛露华浓
春风拂槛露华浓
服务器的URL怎么知道的啊
求解释
ZeroQin
ZeroQin
作者
回复春风拂槛露华浓
Mind+里给出了的,在block上选择了OneNet平台,服务器地址会自动显示
tangjie
tangjie
onenet在地图定位是不能采用mqtt协议,根据我最近的学习,只能采用他的HTTP格式发送定位信息。
ZeroQin
ZeroQin
作者
回复tangjie
这里其实用的就是HTTP协议
云天
云天
图和图都不一样呀,协议一会儿是HTTP,一会是MQTT,怎么回事?
云天
云天回复ZeroQin
明白了,OK
ZeroQin
ZeroQin
作者
回复云天
这篇帖子第一次发布的时候OneNet平台还没有升级,使用的是MQTT协议;后来平台升级了,Mind+使用的协议被OneNet平台移到了“多协议接入--HTTP”协议中,因此我第二次发布的时候,对新版修改部分重新截图了,后面的图没有改完。只要明确一点,目前都是“多协议接入--HTTP”协议就行。
Forgotten
Forgotten
只能实现板和板的通信吗?可以实现网页或者手机控制板子吗?
ZeroQin
ZeroQin
作者
回复ZeroQin
研究了一下,OneNet平台提供了设备上传数据流的API,但是Mind+中并不支持。因此使用Mind+的话,只能够实现板与板的互联,因为物理设备没有办法上传数据到OneNet的数据流节点上。
ZeroQin
ZeroQin
作者
回复Forgotten
应该可以通过网页控制,平台提供了一个应用管理,我后面研究下
共4条回复,已加载2条,点击查看更多共4条回复,已加载全部
Forgotten
Forgotten
另外设备添加apiKey是两个设备都要添加吗?都是填sub还是一个填sub一个填pub呢?
ZeroQin
ZeroQin
作者
回复Forgotten
两个设备都要添加。项目是两个掌控板通过OneNet平台通信,OneNet平台相当于一个中转站,掌控1把信息发送给OneNet,OneNet处理后又发送给掌控2。因此必须保证两个掌控板必须和OneNet平台都连接上,而连接的方式就是一个掌控板连接一个OneNet设备,而Mind+里要连接OneNet设备,是必须要APIKey的。
Forgotten
Forgotten
请问楼主添加设备的时候,设备名称和鉴权信息填写原则是什么?为什么要用sub和pub呢?
添加apiKey的原则又是什么?一定要用sub吗?
ZeroQin
ZeroQin
作者
回复ZeroQin
现在OneNet升级了,需要自己输入APIKey,按照平台规则来就行,不影响使用
ZeroQin
ZeroQin
作者
回复Forgotten
设备名称和设备编号都是自定义的,我使用sub和pub只是为了表示这两个设备分别作为发布端和订阅端(publish subscribe),便于自己理解。
OneNet在升级之前,添加APIKey都是平台自动生成的默认Master-APIKey,拥有对所有设备的访问控制权限,我文章中使用的也是这种APIKey。现在升级后的OneNet,添加APIKey会让用户自己设置,按照平台要求的格式设置就好,会默认关联当前设备,提交添加的APIKey后,平台回对数据进行处理,并不是显示设定的APIKey的原格式,但是应该不影响使用,这种新方式我最近几天找个时间研究一下,更新到文章中。
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
- 没有更多了 -