文档首页/ 设备接入 IoTDA/ 最佳实践/ 设备接入/ 路灯通过微信小程序接入到平台
更新时间:2024-08-21 GMT+08:00
分享

路灯通过微信小程序接入到平台

场景说明

平台支持基于WebSocket的MQTT协议,使基于浏览器的应用程序或者小程序可以快速接入到物联网平台。本文以“智慧路灯”为示例,通过微信小程序模拟设备,带您体验设备通过MQTT over WebSocket协议连接到物联网平台、上报数据和接收命令的全过程。

假设:

路灯设备上报一条包含光照强度(luminance)的消息;路灯支持远程控制开关状态的命令(switch),路灯上报的数据格式为JSON格式。

前提条件

  • 已注册华为云官方账号。未注册可单击注册页面完成注册。
  • 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则无法使用设备接入功能。
  • 已开通设备接入服务。未开通则访问设备接入服务,单击“立即使用”后开通该服务。

业务流程

具体步骤如下:

步骤1:创建产品。创建一个MQTT协议的产品。

步骤2:开发产品模型。通过定义产品模型,在物联网平台构建一款路灯设备,支持上报光照强度、下发路灯开关状态命令。

步骤3:注册设备。注册一个MQTT协议的设备,体验数据上报业务。

步骤4:使用微信小程序接入。使用微信小程序将设备连接到物联网平台。

创建产品

产品是设备的合集,您可以将相同能力或特征的设备归属在同一个产品下。

  1. 登录管理控制台,单击左侧导航栏“产品”,单击页面左侧的“创建产品”
  2. 根据页面提示填写参数,然后单击“立即创建”。

    基本信息

    所属资源空间

    平台自动将新创建的产品归属在默认资源空间下。如需归属在其他资源空间下,下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间

    产品名称

    自定义,如Streetlight。支持字母、数字、下划线(_)、连字符(-)的字符组合。

    协议类型

    选择MQTT。

    数据格式

    选择JSON。

    设备类型选择

    选择自定义类型

    设备类型

    Streetlight

开发产品模型

  1. 找到创建产品章节新增的产品,单击产品进入产品界面。
  2. 在产品详情“基本信息”页面,单击“自定义模型”,配置产品的服务。
  3. 添加服务“BasicData”

    1. 在“添加服务”页面,填写“服务ID”“服务类型”“服务描述”,单击“确定”。
      • “服务ID”:BasicData
      • “服务类型”:建议和服务ID保持一致
      • “服务描述”:上报路灯数据
    2. 在“BasicData”的下拉菜单下单击“添加属性”,填写相关信息后,单击“确定”。
      • “属性名称”:luminance
      • “数据类型”:int(整型)
      • “访问权限”:可读、可写
      • “取值范围”:0~65535
      • “步长”:0
      • “单位”:不填写

  4. 添加服务类型“LightControl”

    1. 在“基本信息”下单击“添加服务”,填写“服务ID”“服务类型”“服务描述”,单击“确定”。
      • “服务ID”:LightControl
      • “服务类型”:建议和服务ID保持一致
      • “服务描述”:路灯开关控制
    2. 在“LightControl”的下拉菜单下单击“添加命令”,输入命令名称“Switch”。
    3. 在“新增命令”页面,单击“新增输入参数”,填写相关信息后,单击“确定”。
      图1 新增命令参数-value

注册设备

  1. 在管理控制台页面,选择左侧导航栏“设备 > 所有设备”,单击“注册设备”
  2. 根据页面提示信息填写参数,然后单击“确定”

    参数名称

    说明

    所属资源空间

    确保和创建的产品归属在同一个资源空间。

    所属产品

    选择步骤2创建的产品。

    设备标识码

    即nodeID,设备唯一物理标识。可自定义,由英文字母和数字组成。

    设备名称

    即device_name,可自定义,如streetlight。

    设备认证类型

    选择“密钥”

    密钥

    此处不填写,物联网平台会自动生成。

    成功注册设备后,平台会自动生成设备ID和密钥,请妥善保管好设备ID(deviceId)和密钥(deviceSecret),用于设备接入。

    图2 设备-注册设备成功

使用微信小程序接入

  1. 下载微信小程序示例工程
  2. 下载并安装微信开发者工具,使用微信开发者工具打开微信小程序示例工程,如下图所示。

    图3 微信小程序示例工程
    小程序提供了界面显示,填写Server地址、设备ID、设备密钥。请根据实际创建的设备信息填写。
    • Server地址:即服务器域名,参考平台对接信息获取“MQTT over WebSocket”协议对应的域名;

      基础版实例“MQTT over WebSocket”协议对应的域名为:iot-mqtts.cn-north-4.myhuaweicloud.com

    • 设备ID和设备密钥:在这里获取。

  3. 微信小程序连接到物联网平台

    开发者通过传入设备信息,将设备连接到物联网平台。

    真机调测时请在微信开发者工具-详情-本地设置-不校验合法域名,将其取消勾选,再在微信公众平台-小程序管理员界面-开发管理-服务器域名中添加socket合法域名('wss://'+MQTT接入地址)。

    图4 连接到平台

    单击连接到平台按钮,在域名、设备ID和密钥正确的情况下,可以看到日志设备连接成功,可在平台查看设备状态,如下图:

    图5 设备列表-设备在线

  4. 发布Topic

    发布Topic是指设备主动向平台上报自己的属性或消息,详细见设备属性上报接口文档。

    在微信小程序中实现了上报属性数据的功能。

    发布Topic后,Demo界面显示如下:

    图6 上报数据

    设备上报属性成功后可在设备详情页面查看到上报的属性:

    图7 查看上报数据-MQTT

  5. 订阅Topic

    订阅某topic的设备才能接收平台发布的关于该topic的消息,关于平台预置topic可参考Topic定义

    建链后,如果成功订阅Topic,主界面日志栏显示如下信息:

    图8 订阅topic界面

  6. 接收下发命令

    小程序支持接收平台下发命令的功能,在MQTT建链完成并成功订阅Topic后,可以在控制台设备详情中对该设备进行同步命令下发。下发成功后,在MQTT的回调函数中接收到平台下发给设备的命令。

    例如下发参数名为LightControl: Switch,参数值为ON的命令。

    图9 命令下发-MQTT

    同步命令下发成功后,Demo界面显示如下

    图10 接收命令界面

相关文档