新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“如何实现设备注册流程并通过MQTT连接云端发送消息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现设备注册流程并通过MQTT连接云端发送消息”吧!
杭锦网站建设公司创新互联,杭锦网站设计制作,有大型网站制作公司丰富经验。已为杭锦超过千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的杭锦做网站的公司定做!
前几天在研究物接入的时候突然想到,当我们拥有大量设备等待接入物联网时,比起一台一台的给设备烧录独一无二的用户名和密码,是否有更为快捷的处理方式呢?后来看了网上的一些教程和分享,发现其实可以最开始统一给所有设备烧录默认的用于初始化的连接信息(物模型),然后在设备首次联网时,上报设备标识借助云端服务(CFC函数)生成新的独一无二专属于此设备的设备影子(物影子)。而后断开初始化连接,连接这个刚生成的物影子,开始正常工作。大体示意图如下:
可惜我现在身边没有这么多设备,想了半天发现可以用微信小程序来模拟设备端;只要每次上报的设备标识不同,就可以被认定为不同设备啦。所以花了几天时间搞了一个微信小程序,今天就给大家分享一下!!主要是实现了以下几个功能:1. 小程序模拟设备端,https连接百度云天工里提前设置好的用于注册新设备的CFC函数计算(代码会分享)完成新设备的初始化流程,创建新设备物影子。 2. 通过MQTT连接创建好的新设备或已有设备,向设备发送信息。3. 建立了一个消息列表存储了用户过往在小程序上发送过的消息可以供用户查看。
【代码】
微信小程序源代码仓库github:https://github.com/Lizxxxx/Wechat-connect-BaiduIoT
CFC函数计算相关代码github:https://github.com/Lizxxxx/createDevice-CFC-BaiduIoT (直接下载里面的zip file就好)
【微信小程序开发】
我也是第一次接触微信小程序,开发的时候才发现,由于小程序的限制,仅允许备案域名通过加密协议(https或wss)连接,因此我们的MQTT连接云端是通过MQTT over wss的方式实现的。在小程序里使用MQTT可以直接借用开源库,这里我借助了如下开源库:https://github.com/mqttjs/MQTT.js,大家可以参考一下。
【CFC函数计算——新设备初始化】
使用小程序前,我们首先要在云端配置好函数计算的代码。
首先直接下载我上方github链接里的zip file即可。然后在百度云天工的控个人制台界面开通CFC函数计算,创建一个函数。这里我们的demo是python的,所以语言选择python然后直接上传zip包即可。记得一定要配置一下环境变量!!如下图,先添加自己百度云账户专属的AK和SK,点击查看如何获取AK/SK(https://cloud.baidu.com/doc/Reference/s/9jwvz2egb/);
然后再添加一下默认的设备描述和scheme ID。如何获得scheme ID:打开物接入项目中的物模型列表,选择你后面即将新建的设备物影子想要参考的物模型,打开其详情页,如下图所示,红圈部分就是schemaID啦。
注意!这里CFC函数代码里我设置了一个用于核对设备标识的白名单验证!这个大家可以按需修改。
设置好函数代码后,因为微信小程序是通过https来连接函数,我们需要配置http触发器。在触发器页面点击新增触发器,类型选择http触发器,url按喜好填写,http方法这里只需选择 (POST,PUT,GET) 就够用了,身份验证为了方便,这里先选择不验证。配置完成后,复制一下生成的URL路径!这个就是后续我们需要用到的能让我们通过https连接并使用函数的地址啦!
【Demo】
这里简单介绍一下这个微信小程序。UI比较简陋,请不要介意!
首页,如果是连接已有设备的话输入信息直接点连接就行;新建设备的话就直接点下方新建设备。
输入信息注册新设备。
新设备注册好后会返回注册信息,记得保存。
发送信息之前我们需要连接物影子。
这里注意下如果是首次向该主题发送消息,在发送消息之前,最好一定要先订阅该主题。以及自定义消息一定要按格式输入;消息的发送格式可以在代码里自己按需修改哈~
订阅主题很方便,订阅后点返回发送消息就好啦。
按格式输入消息然后发送,发送成功后可以看到消息被封装后的发送格式。
前往消息列表就可以看到刚刚发的消息啦。然后选择返回首页或者继续发送消息都可以。
到此,相信大家对“如何实现设备注册流程并通过MQTT连接云端发送消息”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!