查看: 2809|回复: 18

[教程] MQTT之OneNet物联网通信

[复制链接]
本帖最后由 ZeroQin 于 2019-10-30 16:46 编辑

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

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


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

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

201910308322..png 201910301250..png

进入页面后,切换到“HTTP”协议页面下,点击“添加产品”
201910304727..png

截图201904291729344041.png
填写完产品信息,点击“确定”之后,可以看到我们的产品创建完成。
截图201904291719055445.png
接下来,我们进入Test这个产品里,可看到一些产品信息。
截图201904291720022355.png

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

进入添加设备界面
截图201904291720401149.png

我们给这个产品添加一个pub和sub设备
截图201904291721223714.png
我们进入设备查看,给设备添加APIKey。
截图201904291721508114.png

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

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

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

同时,在OneNet平台可以看到设备处于在线的状态
截图201904291726235412.png 截图201904291726376129.png

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

截图201904291720257496.png
截图201904291728597658.png
201910302124..png
201910303616..png

OneNet发送.rar

45.21 KB, 下载次数: 84

OneNet接收.rar

45.12 KB, 下载次数: 69

Forgotten  版主

发表于 2019-11-1 16:12:36

请问楼主添加设备的时候,设备名称和鉴权信息填写原则是什么?为什么要用sub和pub呢?
添加apiKey的原则又是什么?一定要用sub吗?
回复

使用道具 举报

ZeroQin  初级技师
 楼主|

发表于 2019-11-1 16:16:38

Forgotten 发表于 2019-11-1 16:12
请问楼主添加设备的时候,设备名称和鉴权信息填写原则是什么?为什么要用sub和pub呢?
添加apiKey的原则又 ...

设备名称和设备编号都是自定义的,随便写什么都可以。
sub和pub只是我定义的名称而已。
apiKey是平台生成的,我们只需要点击添加按钮即可。
回复

使用道具 举报

Forgotten  版主

发表于 2019-11-1 16:16:48

另外设备添加apiKey是两个设备都要添加吗?都是填sub还是一个填sub一个填pub呢?


回复

使用道具 举报

Forgotten  版主

发表于 2019-11-1 16:17:29

只能实现板和板的通信吗?可以实现网页或者手机控制板子吗?
回复

使用道具 举报

ZeroQin  初级技师
 楼主|

发表于 2019-11-1 16:22:58

Forgotten 发表于 2019-11-1 16:17
只能实现板和板的通信吗?可以实现网页或者手机控制板子吗?

OneNet官方有个“应用管理”,看样子是可以自己定义组件,然后监控信息流的,但是好像也没法直接控制板子。你可以研究下。
回复

使用道具 举报

Forgotten  版主

发表于 2019-11-1 16:37:53

ZeroQin 发表于 2019-11-1 16:22
OneNet官方有个“应用管理”,看样子是可以自己定义组件,然后监控信息流的,但是好像也没法直接控制板子 ...

我测试下来通过“设备列表”里面的“下发命令”是不能用的

回复

使用道具 举报

云天  初级技匠

发表于 2019-11-5 15:49:17

图和图都不一样呀,协议一会儿是HTTP,一会是MQTT,怎么回事?
回复

使用道具 举报

tangjie  见习技师

发表于 2020-4-18 14:18:53

onenet在地图定位是不能采用mqtt协议,根据我最近的学习,只能采用他的HTTP格式发送定位信息。
回复

使用道具 举报

春风拂槛露华浓  学徒

发表于 2020-6-9 09:28:51

服务器的URL怎么知道的啊
求解释
回复

使用道具 举报

ZeroQin  初级技师
 楼主|

发表于 2020-7-7 16:31:50

Forgotten 发表于 2019-11-1 16:12
请问楼主添加设备的时候,设备名称和鉴权信息填写原则是什么?为什么要用sub和pub呢?
添加apiKey的原则又 ...

设备名称和设备编号都是自定义的,我使用sub和pub只是为了表示这两个设备分别作为发布端和订阅端(publish subscribe),便于自己理解。
OneNet在升级之前,添加APIKey都是平台自动生成的默认Master-APIKey,拥有对所有设备的访问控制权限,我文章中使用的也是这种APIKey。现在升级后的OneNet,添加APIKey会让用户自己设置,按照平台要求的格式设置就好,会默认关联当前设备,提交添加的APIKey后,平台回对数据进行处理,并不是显示设定的APIKey的原格式,但是应该不影响使用,这种新方式我最近几天找个时间研究一下,更新到文章中。
回复

使用道具 举报

ZeroQin  初级技师
 楼主|

发表于 2020-7-7 16:41:36

Forgotten 发表于 2019-11-1 16:16
另外设备添加apiKey是两个设备都要添加吗?都是填sub还是一个填sub一个填pub呢?

两个设备都要添加。项目是两个掌控板通过OneNet平台通信,OneNet平台相当于一个中转站,掌控1把信息发送给OneNet,OneNet处理后又发送给掌控2。因此必须保证两个掌控板必须和OneNet平台都连接上,而连接的方式就是一个掌控板连接一个OneNet设备,而Mind+里要连接OneNet设备,是必须要APIKey的。
回复

使用道具 举报

ZeroQin  初级技师
 楼主|

发表于 2020-7-7 16:45:25

Forgotten 发表于 2019-11-1 16:17
只能实现板和板的通信吗?可以实现网页或者手机控制板子吗?

应该可以通过网页控制,平台提供了一个应用管理,我后面研究下
回复

使用道具 举报

ZeroQin  初级技师
 楼主|

发表于 2020-7-7 16:48:51

ZeroQin 发表于 2019-11-1 16:16
设备名称和设备编号都是自定义的,随便写什么都可以。
sub和pub只是我定义的名称而已。
apiKey是平台生成 ...

现在OneNet升级了,需要自己输入APIKey,按照平台规则来就行,不影响使用
回复

使用道具 举报

ZeroQin  初级技师
 楼主|

发表于 2020-7-7 16:52:42

云天 发表于 2019-11-5 15:49
图和图都不一样呀,协议一会儿是HTTP,一会是MQTT,怎么回事?

这篇帖子第一次发布的时候OneNet平台还没有升级,使用的是MQTT协议;后来平台升级了,Mind+使用的协议被OneNet平台移到了“多协议接入--HTTP”协议中,因此我第二次发布的时候,对新版修改部分重新截图了,后面的图没有改完。只要明确一点,目前都是“多协议接入--HTTP”协议就行。
回复

使用道具 举报

云天  初级技匠

发表于 2020-7-7 20:36:34

ZeroQin 发表于 2020-7-7 16:52
这篇帖子第一次发布的时候OneNet平台还没有升级,使用的是MQTT协议;后来平台升级了,Mind+使用的协议被O ...

明白了,OK
回复

使用道具 举报

ZeroQin  初级技师
 楼主|

发表于 2020-7-8 08:49:39

tangjie 发表于 2020-4-18 14:18
onenet在地图定位是不能采用mqtt协议,根据我最近的学习,只能采用他的HTTP格式发送定位信息。 ...

这里其实用的就是HTTP协议
回复

使用道具 举报

ZeroQin  初级技师
 楼主|

发表于 2020-7-8 08:52:51

春风拂槛露华浓 发表于 2020-6-9 09:28
服务器的URL怎么知道的啊
求解释

Mind+里给出了的,在block上选择了OneNet平台,服务器地址会自动显示
回复

使用道具 举报

ZeroQin  初级技师
 楼主|

发表于 2020-7-9 08:49:57

ZeroQin 发表于 2020-7-7 16:45
应该可以通过网页控制,平台提供了一个应用管理,我后面研究下

研究了一下,OneNet平台提供了设备上传数据流的API,但是Mind+中并不支持。因此使用Mind+的话,只能够实现板与板的互联,因为物理设备没有办法上传数据到OneNet的数据流节点上。
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail