aliyun物联网平台搭建MQTT环境

在阿里云上创建一个简单的产品和其下设备,并能使用mqtt.fx工具来测试对于此设备的topic的订阅和发布。
进入到aliyun官网,并注册一个账号。

在产品服务栏,进入到物联网平台。
在这里插入图片描述
创建一个产品,先有产品后有设备。
在这里插入图片描述
产品名称和分类可自定义。
在这里插入图片描述
点击产品可以看到其详细信息和可执行功能
在这里插入图片描述
接下来定义产品的功能:
在这里插入图片描述
进入到功能定义,并添加功能:
在这里插入图片描述
此时产品”温度获取服务”下添加了一个功能:“当前温度”
在这里插入图片描述
我们可以对其编辑:
比如我在这里将华氏温度改为了摄氏温度:
在这里插入图片描述
接下来在产品下创建一个设备
在这里插入图片描述
在这里插入图片描述
在这里我们选择刚才创建的产品,并在其下创建一个设备,因为我后面将进行的DS18B20的温度操作,这里创建了DS18B20设备,可随意设置。
创建完成后,会弹出提示框:
在这里插入图片描述
这些信息会在后面用到,可以先复制到文本中,当然也可以在设备信息里查看。
在这里插入图片描述
在这里插入图片描述
现在产品“温度获取服务下”有设备”DS18B20“,并对产品进行了一个功能的定义。此时我们就要测试该产品下的设备DS18B20的mqtt订阅和发布服务。
记下设备DS18B20下Topic列表下的发布和订阅栏。

在这里插入图片描述
此时我们记下的信息就有这些:

{
  "ProductKey": "a17i4DkIYtW",
  "DeviceName": "DS18B20",
  "DeviceSecret": "uug19VsZveTVnQhpWAwoulzeQBXhz8TR"
}


订阅:/sys/a17i4DkIYtW/DS18B20/thing/service/property/set
发布:/sys/a17i4DkIYtW/DS18B20/thing/event/property/post

此时服务器端的配置已经完成,接下来就是使用mqtt工具来测试服务器端的功能。
下载mqtt.fx工具进行测试:
下载地址:http://mqttfx.jensd.de/index.php/download
打开mqtt.fx软件:
在这里插入图片描述
profile Name可以随意设置,
域名的设置可以查看阿里云物联网平台文档:
在这里插入图片描述
查看地域的Region ID:
在这里插入图片描述
并在阿里云官网查看可用区:
在这里插入图片描述
这里只有上海可以使用。
再参考之前保存的一些信息。
所以域名的设置为:

域名(Broker Address): a17i4DkIYtW.iot-as-mqtt.cn-shanghai.aliyuncs.com
端口:1883

接下来设置client id,username和password:
参考阿里云物联网平台文档:
在这里插入图片描述
在这里,clientId,timestamp,signmethod都是我们自己设置的,而deviceName和deviceSecret是我们之前保存的信息。
所以这里的设置为:

clientid: 12345|securemode=3,signmethod=hmacsha1,timestamp=789|

用户名:

username: DS18B20&a17i4DkIYtW

密码:
在文档里clientid指明了signmethod为hmacsha1,即哈希sha1算法,productKey
此处使用的是mqtt.fx工具,并不能直接带入hmacsha1("…","…")
所以密码需要我们手动去算:
算法地址:https://1024tools.com/hmac
在这里插入图片描述
消息为:clientId12345deviceNameDS18B20productKeya17i4DkIYtWtimestamp789
密钥为:uug19VsZveTVnQhpWAwoulzeQBXhz8TR(这是之前保存的第三个信息)
在这里插入图片描述
计算结果即password:

password:  01dfcb6ae1f52db5bf37c7acd0875a8bcb0b36df

接下来在mqtt.fx设置中添加我们刚才推出的信息:
在这里插入图片描述
点击Ok,再点击connect:
在这里插入图片描述
灯变为绿色表示成功连接到阿里云服务器
我们在subscribe栏中订阅我们之前保存的话题(一定要点订阅):
在这里插入图片描述
我们在阿里云服务器端进入到产品的在线调试,也可以由设备进入。
在这里插入图片描述
选择设备DS18B20
在这里插入图片描述
在这里插入图片描述
等一下,尴尬发现我们之前选择的“当前温度”选项只能自动获取温度,由于我们并没有获取温度到服务器上,所以每次发送的数据都为“{}”即空…
现在在产品“温度获取服务”下再创建一个功能–颜色状态:
在这里插入图片描述
我们再测试一下:
在这里插入图片描述
发送成功后,我们在接收端可以收到消息:
在这里插入图片描述
服务器实时日志显示消息发送成功

再进行发布测试,这里也要用JSON格式发送数据到服务器:
可以直接copy之前收到的数据,添加温度信息,记得逗号结尾:
在这里插入图片描述
在这里插入图片描述
点击publish,打开服务器产品下设备的运行状态,服务器接收到我们刚才发送的消息。
在这里插入图片描述
至此,测试完毕。接下来会研究aliyun的mqtt c-sdk提供的库函数编程实现消息到服务器产品设备的订阅和发布。
PS:
产品
在这里插入图片描述
设备:
在这里插入图片描述
两者有相同的producekey,不同的secert,设备的ip地址为我们创建该设备时所在网络的公有ip,当有客户端连接到该设备时,设备才会在线,否则会一直处于离线状态。我们订阅和发布的消息的标识符可在产品的功能定义中找到。订阅和发布的主题的topic可在设备的topic列表找到,可以发布同一topic的一个或多个标识符数据,前提是该标识符存在,否则会出错。发布和订阅必须使用JSON格式,否则也会出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值