路灯通过微信小程序接入到平台
场景说明
平台支持基于WebSocket的MQTT协议,使基于浏览器的应用程序或者小程序可以快速接入到物联网平台。本文以“智慧路灯”为示例,通过微信小程序模拟设备,带您体验设备通过MQTT over WebSocket协议连接到物联网平台、上报数据和接收命令的全过程。
假设:
路灯设备上报一条包含光照强度(luminance)的消息;路灯支持远程控制开关状态的命令(switch),路灯上报的数据格式为JSON格式。
前提条件
业务流程
具体步骤如下:
步骤1:创建产品。创建一个MQTT协议的产品。
步骤2:开发产品模型。通过定义产品模型,在物联网平台构建一款路灯设备,支持上报光照强度、下发路灯开关状态命令。
步骤3:注册设备。注册一个MQTT协议的设备,体验数据上报业务。
步骤4:使用微信小程序接入。使用微信小程序将设备连接到物联网平台。
开发产品模型
- 找到创建产品章节新增的产品,单击产品进入产品界面。
- 在产品详情“基本信息”页面,单击“自定义模型”,配置产品的服务。
- 添加服务“BasicData”。
- 在“添加服务”页面,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。
- “服务ID”:BasicData
- “服务类型”:建议和服务ID保持一致
- “服务描述”:上报路灯数据
- 在“BasicData”的下拉菜单下单击“添加属性”,填写相关信息后,单击“确定”。
- “属性名称”:luminance
- “数据类型”:int(整型)
- “访问权限”:可读、可写
- “取值范围”:0~65535
- “步长”:0
- “单位”:不填写
- 在“添加服务”页面,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。
- 添加服务类型“LightControl”。
- 在“基本信息”下单击“添加服务”,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。
- “服务ID”:LightControl
- “服务类型”:建议和服务ID保持一致
- “服务描述”:路灯开关控制
- 在“LightControl”的下拉菜单下单击“添加命令”,输入命令名称“Switch”。
- 在“新增命令”页面,单击“新增输入参数”,填写相关信息后,单击“确定”。
图1 新增命令参数-value
- 在“基本信息”下单击“添加服务”,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。
注册设备
- 在管理控制台页面,选择左侧导航栏“设备 > 所有设备”,单击“注册设备”。
- 根据页面提示信息填写参数,然后单击“确定”。
参数名称
说明
所属资源空间
确保和创建的产品归属在同一个资源空间。
所属产品
选择步骤2创建的产品。
设备标识码
即nodeID,设备唯一物理标识。可自定义,由英文字母和数字组成。
设备名称
即device_name,可自定义,如streetlight。
设备认证类型
选择“密钥”。
密钥
此处不填写,物联网平台会自动生成。
成功注册设备后,平台会自动生成设备ID和密钥,请妥善保管好设备ID(deviceId)和密钥(deviceSecret),用于设备接入。
图2 设备-注册设备成功
使用微信小程序接入
- 下载微信小程序示例工程。
- 下载并安装微信开发者工具,使用微信开发者工具打开微信小程序示例工程,如下图所示。
图3 微信小程序示例工程
- 微信小程序连接到物联网平台
开发者通过传入设备信息,将设备连接到物联网平台。
真机调测时请在微信开发者工具-详情-本地设置-不校验合法域名,将其取消勾选,再在微信公众平台-小程序管理员界面-开发管理-服务器域名中添加socket合法域名('wss://'+MQTT接入地址)。
图4 连接到平台
单击连接到平台按钮,在域名、设备ID和密钥正确的情况下,可以看到日志设备连接成功,可在平台查看设备状态,如下图:
图5 设备列表-设备在线
- 发布Topic
发布Topic是指设备主动向平台上报自己的属性或消息,详细见设备属性上报接口文档。
在微信小程序中实现了上报属性数据的功能。
发布Topic后,Demo界面显示如下:
图6 上报数据
设备上报属性成功后可在设备详情页面查看到上报的属性:
图7 查看上报数据-MQTT
- 订阅Topic
订阅某topic的设备才能接收平台发布的关于该topic的消息,关于平台预置topic可参考Topic定义。
建链后,如果成功订阅Topic,主界面日志栏显示如下信息:
图8 订阅topic界面
- 接收下发命令
小程序支持接收平台下发命令的功能,在MQTT建链完成并成功订阅Topic后,可以在控制台设备详情中对该设备进行同步命令下发。下发成功后,在MQTT的回调函数中接收到平台下发给设备的命令。
例如下发参数名为LightControl: Switch,参数值为ON的命令。
图9 命令下发-MQTT
同步命令下发成功后,Demo界面显示如下
图10 接收命令界面