在线开发MQTT协议的智慧路灯

场景说明

本文以“智慧路灯”为示例,通过MQTT.fx的设备模拟器替代真实的设备,带您快速体验设备上报数据到物联网平台和远程下发控制命令到设备的全过程。

假设:

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

前提条件

  • 已注册华为云官方账号。未注册可单击注册页面完成注册。

  • 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则无法使用设备接入功能。

  • 已开通设备接入服务。未开通则访问设备接入服务,单击“立即使用”后开通该服务。

业务流程

基于MQTT.fx体验平台功能是指以在MQTT.fx模拟器为例,介绍数据上报、命令下发等业务。

  1. 创建产品。创建一个MQTT协议的产品。

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

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

  4. 连接鉴权。使用MQTT.fx激活在物联网平台上注册的设备。

  5. 数据上报。使用MQTT.fx向物联网平台上报数据。

  6. 命令下发。在管理控制台下发命令,远程控制设备。

创建产品

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

  1. 登录管理控制台,单击左侧导航栏“产品”,单击页面右上角的“创建产品”。

  2. 根据页面提示填写参数,然后单击“立即创建”。

    基本信息

    所属资源空间

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

    产品名称

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

    协议类型

    选择MQTT。

    数据格式

    选择JSON。

    厂商名称

    自定义。支持中英文字符、数字、下划线(_)、连字符(-)的字符组合。

    所属行业

    请根据产品模型的所属行业填写。

    设备类型

    使用平台预置的产品模型,会自动关联设备类型,不需要再输入设备类型。

    高级配置

    产品ID

    定制ProductID,用于唯一标识一个产品。如果携带此参数,平台将产品ID设置为该参数值;如果不携带此参数,产品ID在物联网平台创建产品后由平台分配获得。

    产品描述

    产品描述。请根据实际情况填写。

开发产品模型

  1. 找到创建产品章节新增的产品,单击产品进入产品界面。

  2. 在产品详情“模型定义”页面,单击“自定义模型”,配置产品的服务。

  3. 新增服务类型“BasicData”。

    • “属性名称”:luminance

    • “必选”:勾选

    • “数据类型”:int(整型)

    • “访问权限”:可读、可写

    • “取值范围”:0~65535

    • “步长”:0

    • “单位”:不填写

    • “服务ID”:BasicData

    • “服务类型”:建议和服务ID保持一致

    • “服务描述”:上报路灯数据

    1. 在“新增服务”页面,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。

    2. 在“BasicData”的下拉菜单下单击“添加属性”,填写相关信息后,单击“确定”。

  4. 新增服务类型“LightControl”。

    • “服务ID”:LightControl

    • “服务类型”:建议和服务ID保持一致

    • “服务描述”:路灯开关控制

    1. 在“模型定义”下单击“添加服务”,填写“服务ID”、“服务类型”和“服务描述”,单击“确定”。

    2. 在“LightControl”的下拉菜单下单击“添加命令”,输入命令名称“Switch”。

    3. 在“新增命令”页面,单击“新增输入参数”,填写相关信息后,单击“确定”。

      图1 新增输入参数value

注册设备

  1. 在管理控制台页面,选择左侧导航栏“设备 > 所有设备”,单击页面右上角的“注册设备”。

  2. 根据页面提示信息填写参数,然后单击“确定”。

    参数名称

    说明

    所属资源空间

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

    所属产品

    选择步骤2创建的产品。

    设备标识码

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

    设备名称

    即device_name,可自定义,如streetlight。

    设备认证类型

    选择“密钥”。

    密钥

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

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

连接鉴权

使用MQTT.fx工具激活在物联网平台上注册的设备。

  1. 下载MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载MQTT.fx),安装MQTT.fx工具。

  2. 访问这里,填写注册设备后生成的设备ID(DeviceId)和密钥(DeviceSecret),生成连接信息(ClientId、Username、Password)。

    参数

    必选/可选

    类型

    参数描述

    ClientId

    必选

    String(256)

    一机一密的设备clientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳,通过下划线“_”分隔。

    Username

    必选

    String(256)

    设备ID。

    Password

    必选

    String(256)

    加密后的设备密钥。Password的值为使用“HMACSHA256”算法以时间戳为密钥,对secret进行加密后的值。

    secret为注册设备时平台返回的secret。

    设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。

    使用生成工具生成的clientId格式,默认不校验时间戳:设备ID_0_0_时间戳。

    connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。

    • 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。

    • 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。

    • “0”代表HMACSHA256不校验时间戳。

    • “1”代表HMACSHA256校验时间戳。

    • 设备ID:指设备在平台成功注册后生成的唯一设备标识,通常由设备的产品ID和设备的NodeId通过分隔符“_”拼装而来。

    • 设备身份标识类型:固定值为0,表示设备ID。

    • 密码签名类型:长度1字节,当前支持2种类型:

    • 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。

  3. 打开MQTT.fx软件,单击设置图标。

  4. 参考下表配置鉴权参数,然后单击“Apply”。

    参数名称

    说明

    Broker Address

    填写从设备接入服务控制台获取的设备对接地址,此地址为域名信息。不能通过域名接入的设备,通过在cmd命令框中执行“ping 域名”获取IP地址,用IP地址接入平台。由于IP地址不固定,您需要将IP地址做成可配置项。

    Broker Port

    默认为1883。

    Cliend ID

    设备cliendID,请参考2中获取。

    User Name

    即设备ID,请参考2中获取。

    Password

    加密后的设备密钥,请参考2中获取。

  5. 单击“Connect”,设备鉴权成功后,在物联网平台可以看到设备处于在线状态。

上报数据

使用MQTT.fx工具向物联网平台上报数据。

设备若通过MQTT通道上报数据,需要发给指定的topic,上报消息的topic格式为:“$oc/devices/{device_id}/sys/properties/report”,其中“deviceId”的值,对一机一密设备,使用deviceId接入时填写为设备注册成功后返回的“deviceId”值。

  1. 填写接口地址,此处以“$oc/devices/{device_id}/sys/properties/report”为例,如“$oc/devices/5e4e2e92ac-164aefa8fouquan1/sys/properties/report”。

  2. 在工具中间的空白处填写上报的数据。

    请求参数

    字段名

    必选/可选

    类型

    参数描述

    services

    必选

    List<ServiceProperty>

    设备服务数据列表(具体结构参考下表ServiceProperty定义表)

    ServiceProperty定义表:

    字段名

    必选/可选

    类型

    参数描述

    service_id

    必选

    String

    设备服务的ID。

    properties

    必选

    Object

    设备服务的属性列表,具体字段在设备关联的产品模型中定义。

    eventTime

    可选

    String

    设备采集数据UTC时间(格式:yyyyMMddTHHmmssZ),如:20161219T114920Z。

    设备上报数据不带该参数或参数格式错误时,则数据上报时间以平台时间为准。

    请求示例

    { 'services': [{ 'service_id': 'BasicData', 'properties': { 'luminance': 30 } } ] }
  3. 单击“Publish”,可以在物联网平台上查看设备是否成功上报数据。

命令下发

在管理控制台下发命令,远程控制设备。

  1. 选择“设备 > 所有设备”,找到注册设备章节新建的设备,单击“查看”进入设备详情页面。

  2. 单击“命令”页签,下发同步命令。

    说明:

    MQTT协议设备仅支持同步命令下发,NB-IoT设备仅支持异步命令下发。

  3. 您可以在MQTT.fx模拟器端查看到下发的命令。

    说明:

    • 由于MQTT.fx模拟器不支持查看下发的命令参数。具体下发内容,请参考平台命令下发

    • 界面提示命令下发失败,是因为下发的同步命令需要设备侧及时回响应,响应内容请参考平台命令下发

进阶体验

按照本页面的指导,使用MQTT.fx模拟MQTT设备接入物联网平台后,您应该已经基本了解MQTT设备调用物联网平台开放的接口与平台交互。

若您想要进一步体验设备接入服务,可参考开发指南开发真实应用和真实设备,并接入物联网平台,体验更多功能。

(0)

相关推荐

  • STM32移植MQTT连接阿里云物联网平台

    前言前段时间尝试了一下阿里云物联网平台,功能还挺强大的,有些经验在此分享一下. 硬件 l单片机:STM32F103C8T6 l网络连接:ESP8266 WIFI模块 l传感器:PM2.5传感器.温湿度 ...

  • 【精品资料】想做远程控制却没有云服务器怎么办?这里教你“白嫖”一个

    文/Edward 服务器和公网IP 跳出局域网之后的远程控制,如果没有中间服务器,那么以太网基本就没有用武之地了,所以选用一个可以接入公网的服务器就非常有必要了,可以帮助两个远程设备之间建立通讯转发. ...

  • MQTT智能物联网关BL100

    MQTT智能物联网关BL100 是一款基于4G全网通的MODBUS转MQTT网关设备,支持 MODBUS RTU.MODBUS TCP.MQTT.阿里云.华为云.金鸽云和自定义平台以及透明传输功能.方 ...

  • 威纶通触摸屏通过MQTT和阿里云平台连接的方法

    [导读]MQTT协议在物联网中应用广泛,自动化产品也和物联网.互联网.大数据等结合越来越广广泛,本文详细介绍威纶通触摸屏利用EasyBuilder Pro的MQTT元件与阿里云平台连接,并通过Iot- ...

  • 从产品设计角度,解读物联网四层架构 | 人人都是产品经理

    编辑导语:2020年,"新基建"得到了进一步的发展,5G基站.工业互联网.数据中心等领域加快建设.而物联网作为新型基础设施的重要组成部分,同样得到快速发展.本文作者从产品设计的角度 ...

  • 全国首个新型城市照明基础设施集中区在天津建成,智慧路灯助力意风区秀风情

    五一假期,全国首个新型城市照明基础设施集中区在天津建成,这也是目前全国规模最大的新型城市照明基础设施集中区. 据了解,走在具有意大利风格的大型建筑群之间,184基智慧路灯环保周围,它们串点成线,实现路 ...

  • go-admin在线开发平台学习-2[程序结构分析]

    紧接着上一篇,本文我们对go-admin下载后的源码进行分析. 首先对项目所使用的第三方库进行分析,了解作者使用的库是否是通用的官方库可以有助于我们更快地阅读程序.接着对项目的main()方法进行分析 ...

  • 投资3700万!兰州​城关区6条道路将建成“智慧路灯”

    近日,笔者从兰州更新城市建设发展有限公司了解到,城关区酒泉路.庆阳路.中山路.南昌路.天水路.广场南路"智慧路灯"项目进入可研阶段.项目计划今年5月份开工建设. 兰州市城关区酒泉路 ...

  • 智慧路灯助力智慧城市建设

    一.智慧路灯建设的必要性 路灯是城市中随处可见的设施,看起来可能毫不起眼,但路灯是城市中重要的基础设施,同时也代表着城市形象.随着社会的不断发展,我国城市路灯照明系统也随着城市的发展而不断扩大.由于路 ...

  • 智慧路灯网关该如何运输保管?使用时需要注意哪些事项?

    智慧路灯是智慧城市的重要组成部分,而智慧路灯网关是智慧灯杆的核心设备,它能够实现数据采集.通信传输.以及联动控制,专用于智慧灯杆云平台实现数据展现及管理.那么智慧路灯网关在使用过程中需要注意哪些事项呢 ...

  • 智慧路灯显示屏,灯杆广告屏厂家未来发展方向

    今年,随着5G基站的建设推进和各地30多项政策的推出,北京.广东.上海.浙江等多地的智慧路灯杆如雨后春笋般出现在街道路口.智慧路灯是具有智能照明.视频监控.环境监测.无线WIFI.汽车充电.广告视频播 ...

  • 灯杆显示屏借助5G,真正的成为智慧路灯显示屏

    在夫子庙景区大石坝街,一盏盏古色古香的路灯,与周围环境融为一体.除了照明功能,这里的路灯还集结了视频.显示屏.互动屏.广播.一键求助.便民充电等功能,更重要的是,这里的路灯还是5G基站的安装载体.夫子 ...

  • 智慧路灯价格是多少?

    智慧路灯价格是多少?咱们去询问智慧路灯厂家价格的时候,往往不能得到一个直接回复,这是因为智慧路灯没有一个固定的价格.那智慧路灯价格受哪些因素影响呢? [你可以是大型工程总承包商.可以是智慧路灯相关贸易 ...

  • 智慧路灯什么最重要?网络安全是重点之一

    由于新一代信息技术的应用普及,如智慧路灯这样的新基础设施未来会越来越多,世界的联系每天都在变得越来越紧密.随着智慧路灯的普及,在人们每天路过多功能路灯杆旁边时不禁会想:"这样的网络安全可靠吗 ...