赞
踩
MQTT是应用层协议,基于TCP/IP。
是一种发布订阅系统,发布订阅系统原理类似于总线。将一条消息发布到一个主题(topic) 上,那么所有订阅了该主题的客户端都可以获得该消息的一份拷贝。
对于消息发送者而言,无需知道哪些人在订阅消息;只需将消息发布到一系列主题,并订阅一些你感兴趣的主题。就像参加了一场聚会,选取并加入感兴趣的对话。
+++++++++++++++++++++++++++++++++++++++++++
深入一点:
实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(服务器)(Broker)、订阅者(Subscribe)。
消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(payload) 两部分:
Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息payload;payload,可以理解为消息的内容,是指订阅者具体要使用的内容。
+++++++++++++++++++++++++++++++++++++++++++
在这里,我将演示发布者(Publish)往代理(Broker)发送MQTT消息。
这里的发布者采用MQTTfx模拟,代理即为阿里云物联网平台。
网址:https://iot.console.aliyun.com/product(直接在百度搜还不能直接找到,不是很方便)
进入后的界面如下图:
1.点击公共实例,进入如下界面:
3.点击设备管理,之后这里主要关注产品和设备。它们是一对多的关系,产品如智能门锁,设备就可以是张三家的智能门锁,李四家的智能门锁。
4.首先新建一个产品,这里以MQTT上传车辆速度为例。点击创建产品。进入如下界面,所属品类选择自定义品类。其他的保持默认即可,可完全参考下图。最后点击确认。
之后再点击左侧产品栏,就可以看到新建成功。
5.为产品添加功能。点击查看我们刚刚新建的speed产品。进入如下页面。
点击功能定义,来添加属性。这里需要启用编辑草稿,同时这里的物模型,大家可以自己理解一下。
点击编辑草稿后,这里以添加标准功能为例。
如图选择,我们在搜索框中输入速度,得到一个速度属性,点击将其选中后点击确认。
然后点击发布上线。这里要注意框起来的标识符,后续很重要。
6.新建设备。点击左侧设备,进入页面后点击添加设备。如下图。
所有的设备一定是属于某一个产品的,所以选择刚刚新建的speed产品。DeviceName自己取即可。
这时候我们就把阿里云物联网平台这里的工作做好了。接下来需要将MQTTfx与刚刚创建的这个stext设备做一个绑定。
自行下载,长右边这个样子。左边的工具我们待会也要用到。
1.打开MQTTfx,页面如下,点击齿轮进行设置,即和刚刚阿里云平台创建的设备stext做绑定。
2.绑定
点击齿轮后进入如下界面,需要填入5个东西。这5个东西都是从上面和MQTTfx图标放一起的左边的小工具:阿里云物联平台配置。
下载地址:https://pan.baidu.com/s/1YDebpLqCTjj8BPuA-yD8sg 提取码:3xzo
3.按上一步下载好阿里云物联平台配置,打开界面如下。也是需要填写5个内容,但是这些内容都是在阿里云物联网平台中获取的。
首先,RegionID,看阿里云物联网平台的这里。
接下来的ProductKey,DeviceName,DeviceSecret,点击下图的查看。
这里就是这3个内容啦。
阿里云物联平台配置中最后要填的一个ClientID,我一般写和DeviceName一致。
阿里云物联平台配置中的5个内容填好后,点击生成。结果如下图。
这里阿里云连接参数输出中只有4项,与刚刚我们说的MQTTfx中需要5个内容不一致是因为。在阿里云连接参数输出的连接域名,包括了MQTTfx中的下图2项。
即阿里云连接参数输出的连接域名:gmllqG1A4wX.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883,
分为MQTTfx中的两部分,Broker Address为:mllqG1A4wX.iot-as-mqtt.cn-shanghai.aliyuncs.com,Broker Port为:1883。
只所以要用阿里云物联平台配置这个工具,是因为其中涉及到了阿里云的一个加密算法。
之后将对应的内容填入MQTTfx中,点击OK。
4.MQTTfx与阿里云物联网平台连接。点击Connect,之后右边变为小绿灯。如下图。
这时候我们再回到阿里云物联网平台,刷新一下,就能看到我们的stext设备已经是在线状态了。
5.MQTTfx数据上传。
在发送数据前,需要指定发送上传的数据是哪一个topic,在下图位置。
而如何查看topic呢,在阿里云物联网平台中的产品项,如下图。因为我们一开始设置了速度属性,所以就在物模型通信Topic中的属性上报中查找Topic名。
这里是:/sys/gmllqG1A4wX/${deviceName}/thing/event/property/post,需要根据自己的deviceName修改一下,即改为了:/sys/gmllqG1A4wX/stext/thing/event/property/post。
将其填入MQTTfx中的topic框中,即上图。
之后编写我们需要上传的数据,采用的是JSON格式。我们定义了一个速度属性,需要一个标识符来明确,这个标识符就在我们创建这个属性时的标识符。见下图。
在MQTTfx中输入如下内容:
{
"params":{
"VehSpeed":60,}
}
其中的“params”是固定的,VehSpeed即为产品功能定义中的标识符。之后在MQTTfx中点击Publish。
(如果有很多的属性,参考下面的内容(主要是理解一下JSON格式):
{
"params":{
"LockState":0,
"can":{
"id":"11223344",
"data":"0102030405060700",
},
"GeoLocation":{
"latitude": 30.267763,
"longitude": 120.132707,
"altitude":1000,
}
}
}
6.在阿里云物联网平台中查看传上来的数据。
以上便完成了使用MQTTfx模拟客户端,往阿里云物联网平台发布数据的功能实现,认真记录每一步。
后续继续记录如何将阿里云物联网平台数据存到阿里云的数据库中。
研究生了才抓紧学习,努力努力
欢迎交流讨论
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。