云社区 博客 博客详情
云社区 博客 博客详情

玩转华为物联网IoTDA服务系列二-智慧路灯场景示例

eleven1111 发表于 2020-05-28 19:50:31 05-28 19:50
eleven1111 发表于 2020-05-28 19:50:31 2020/05/28
0
1

【摘要】 场景简介 路灯管理系统通过接入IoTDA,监控路灯状态,控制路灯开关(集成了NB模组的智慧路灯)。 该场景主要描述的是设备可以通过LWM2M协议与物联网平台进行交互,应用侧可以到物联网平台订阅设备侧变化的通知,也可以给设备侧下发命令。 核心知识点:产品模型、编辑码插件、订阅推送、属性上报、命令下发。场景流程流程解释: 1、创建路灯产品:...

场景简介

        路灯管理系统通过接入IoTDA,监控路灯状态,控制路灯开关(集成了NB模组的智慧路灯)。

        该场景主要描述的是设备可以通过LWM2M协议与物联网平台进行交互,应用侧可以到物联网平台订阅设备侧变化的通知,也可以给设备侧下发命令。

        核心知识点:产品模型、编辑码插件、订阅推送、属性上报、命令下发。

场景流程


流程解释:

        1、创建路灯产品:物联网平台以产品为粒度管理批量设备。用户可以通过平台提供的API接口控制台创建产品。

        2、上传产品模型和编解码插件:产品模型定义了设备的基本属性和命令。您可以通过控制台在线开发产品模型,通过模板离线开发产品模型再上传到控制台,也可以导入公共产品库的模型。

因为NB-IoT设备使用LWM2M协议通信,而平台采用JSON格式的数据。因此需要编解码插件转换数据格式,平台和设备才能互相通信。您可以选择在控制台上在线开发编解码插件,也可以通过离线开发编解码插件再上传到控制台。

        3、批量注册路灯设备:平台提供了应用侧API接口可以注册设备,也可以通过控制台批量注册。注册时获取的设备ID,是设备侧与平台交互的唯一标识。

        4、创建路灯状态变化的订阅:路灯管理系统可以在平台创建设备变化的通知订阅,需要把callback url即应用回调地址传给平台,平台后续会推送通知到该url。

        5、路灯上报亮度:NB-IoT设备是指集成了NB-IoT通信模组的设备,模组集成了华为IoT Tiny SDK,把路灯亮度的消息用二进制码流传输给平台。平台会用编解码插件将二进制码流解码成平台能理解的JAON格式数据。

        6、推送路灯亮度变化通知:平台会根据之前应用订阅的回调地址,把订阅的通知类型通过HTTP/HTTPS推送回路灯管理系统(应用侧)。

        7、下发关灯命令:路灯管理系统可以根据路灯的状态,给指定或批量设备下发关灯的命令。此处的NB-IoT设备命令下发是异步的,NB-IoT设备不支持同步命令下发,因为NB设备一般低功耗,不是长连接在线,所以一般可以采用缓存命令下发。

        8、命令下发给路灯关灯:平台会调用编解码插件进行编码,将命令以二进制码流形式传输给设备。

        9、查询命令执行结果:路灯管理系统(应用侧)可以通过平台提供的应用侧API接口,查询指定命令的执行状态,判断命令执行是否成功。这里需要注意的是:平台V5新接口命令下发是同步的,所以不支持(也无需)查询命令状态。只有老接口的V3接口命令下发是异步的,支持查询命令状态。


最佳实践

场景说明

智慧路灯是城市智能化道路上重要一环,智慧路灯的实施具有节约公共照明能耗、减少因照明引起的交通事故等多种社会意义。路灯也是大家在日常生活中可以强烈感知到的公共设施,更易理解其智能化的场景。

在该章节中,我们基于华为一站式开发工具平台,从设备、平台、应用端到端构建一款智慧路灯解决方案样例,带您体验十分钟快速上云。

前期准备

  • 开发板:小熊派开发板(含NB卡、NB模组、智慧路灯功能模块等)

  • 配件:数据线

  • 已安装IoT Link Studio插件。若未安装,请参考IoT Link Studio进行安装。

  • 平台:已开通设备接入服务

硬件连接

插卡的时候卡的缺口朝外插入,并将串口选择开关拨到MCU模式。

创建产品

某一类具有相同能力或特征的设备的集合称为一款产品。除了设备实体,产品还包含该类设备在物联网能力建设中产生的产品信息、产品模型(Profile)、插件等资源。

  1. 登录华为云官方网站,访问设备接入服务

  2. 单击“立即使用”进入设备接入控制台。

  3. 单击左侧导航栏的产品,单击右上角下拉框,选择新建产品所属的资源空间。

4. 单击右上角的“创建产品”,创建一个基于CoAP协议的产品,填写参数后,单击“立即创建”

基本信息

所属资源空间

选择您需要归属到的资源空间

产品名称

自定义,如“BearPi_StreetLight”

协议类型

选择“CoAP”

数据格式

选择“二进制码流”

厂商名称

自定义,如“BearPi”

能定义

选择模型

物联网平台提供了三种创建模型的方法,此处使用自定义产品模型的方法

所属行业

智慧城市

设备类型

StreetLight

5.产品创建成功后,单击“详情”进入产品详情页面,进行后面操作。

定义产品模型

在产品详情,“功能定义”页面,单击“自定义功能”,配置产品的服务。


产品模型设计思路:

表1 设备服务列表

服务描述

服务名称(ServiceID)

实时按键检测

Button

LED灯控制

LED

实时检测光照强度

Sensor

实时检测信号质量

Connectivity

服务能力如下表所示。

表2 Button

能力描述

属性名称

数据类型

数据范围

属性列表

toggle

int

0 ~ 65535

表3 LED命令列表

能力描述

命令名称

命令字段

字段名称

类型

数据长度

枚举

命令列表

Set_Led

下发命令

led

string

3

ON,OFF

响应命令

light_state

string

3

ON,OFF

表4 Sensor

能力描述

属性名称

数据类型

数据范围

属性列表

luminance

int

0 ~ 65535

表5 Connectivity

能力描述

属性名称

数据类型

数据范围

属性列表

SignalPower

int

-140 ~ -44

ECL

int

0 ~ 2

SNR

int

-20 ~ 30

CellID

int

0 ~ 65535

  • 新增服务名称Button

1.进入“新增服务”页面,填写服务名称:Button,服务描述后,单击“确认”。

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

  • 新增服务名称LED

  1. 在“功能定义”下点击“添加服务”,填写服务名称:LED,服务描述后,单击“确认”。

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

3.在“新增命令”弹框,分别单击“新增输入参数”“新增输出参数”,填写相关信息后,单击“确认”。

图1 新增输入参数led

图2 新增输出参数light_state

  • 新增服务名称Sensor

  1. 在“功能定义”下点击“添加服务”,填写服务名称:Sensor,服务描述后,单击“确认”。

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

  • 新增服务名称Connectivity

  1. 在“功能定义”下点击“添加服务”,填写服务名称:Connectivity,服务描述后,单击“确认”。

  2. 在“Connectivity”的下拉菜单下依次点击“添加属性”,分别添加SignalPower,ECL,SNR,CellID属性,填写相关信息,单击“确认”。

    图3 新增SignalPower属性


图4 新增ECL属性

图5 新增SNR属性

图6 新增CellID属性

插件开发

1.在产品详情插件开发页面,选择“图形化开发”,单击“图形化开发”。

2.在“在线开发插件”区域,单击“新增消息”。

说明:请按照本文档提供的操作开发编解码插件,确保添加字段的顺序和本文档提供的顺序保持一致。

3.新增消息Report_Connectivity,配置示例如下:

  • 消息名:Report_Connectivity

  • 消息类型:数据上报

  • 添加响应字段:是

  • 响应数据:AAAA0000(默认)

a.在“新增消息”页面,单击“添加字段”,勾选“标记为地址域”,添加地址域字段messageId,然后单击“确认”。

b.单击“添加字段”,添加SignalPower字段,填写相关信息后,单击“确认”。

  • 名字:SignalPower

  • 数据类型:int16s(16位有符号整型)

c.单击“添加字段”,添加ECL字段,填写相关信息后,单击“确认”。

  • 名字:ECL

  • 数据类型:int16s(16位有符号整型)

d.单击“添加字段”,添加SNR字段,填写相关信息后,单击“确认”。

  • 名字:SNR

  • 数据类型:int16s(16位有符号整型)

e.单击“添加字段”,添加CellID字段,填写相关信息后,单击“确认”。

  • 名字:CellID

  • 数据类型:int32s(32位有符号整型)

完成消息Report_Connectivity的配置后,单击“确认”。

4.新增消息Report_Toggle,配置示例如下:

  • 消息名:Report_Toggle

  • 消息类型:数据上报

  • 添加响应字段:是

  • 响应数据:AAAA0000(默认)


a.在“新增消息”页面,单击“添加字段”,勾选“标记为地址域”,添加地址域字段messageId,然后单击“确认”。

b.单击“添加字段”,添加toggle字段,填写相关信息后,单击“确认”。

  • 名字:toggle

  • 数据类型:int16u(16位无符号整型)

完成消息Report_Toggle的配置后,单击“确认”。

5.新增消息Report_Sensor,配置示例如下:

  • 消息名:Report_Sensor

  • 消息类型:数据上报


a.在“新增消息”页面,单击“添加字段”,勾选“标记为地址域”,添加地址域字段messageId,然后单击“确认”。

b.单击“添加字段”,添加data字段,填写相关信息后,单击“确认”。

  • 名字:data

  • 数据类型:int16u(16位无符号整型)

完成消息Report_Sensor的配置后,单击“确认”。

6.新增消息Set_Led,配置示例如下:

  • 消息名:Set_Led

  • 消息类型:命令下发

  • 添加响应字段:是


a.在“新增消息”页面,单击“添加字段”,勾选“标记为地址域”,添加地址域字段messageId,然后单击“确认”。

b.单击“添加字段”,在“添加字段”界面,勾选“标记为响应标识字段”,添加响应标识字段 mid,然后单击“确认”。

c.单击“添加字段”,添加“led”字段,然后单击“确认”。

  • 名字:led

  • 数据类型:string

  • 长度:3

d.在“新增消息”页面,单击“添加响应字段”,添加地址域字段 messageId。在“添加字段”界面,勾选“标记为地址域”,然后单击“确认”。

e.添加响应标识字段mid。在“添加字段”界面,勾选“标记为响应标识字段”,然后单击“确认”。

f.单击“添加响应字段”,添加命令执行状态字段 errcode。在“添加字段”界面,勾选“标记为命令执行状态字段”,然后单击“确认”。

g.单击“添加响应字段”,添加light_state响应字段,填写相关信息,单击“确认”。

  • 名字:light_state

  • 数据类型:string

  • 长度:3

完成消息 Set_Led 的配置后,单击“确认”。

7.拖动右侧“设备模型”区域的属性字段、命令字段和响应字段,与数据上报消息、命令下发消息和命令响应消息的相应字段建立映射关系。

8.单击“保存”,并在插件保存成功后单击“部署”,将编解码插件部署到物联网平台.

注册设备

本章节介绍集成NB模组设备的注册方法。

  1. 在产品详情页面,选择“在线调试”,单击“新增测试设备”,此处新增的是非安全的NB-IoT设备。

  2. 在新增测试设备页面,选择“真实设备”,并填写设备名称,设备标识码。

  • 设备名称:Test(自定义即可)

  • 设备标识码:设备的IMEI号,用于设备在接入物联网平台时携带该标识信息完成接入鉴权,可在设备上查看。您也可以将串口开关拨到PC模式,选择STM的端口,波特率设置为9600,输入指令“AT+CGSN=1”获取IMEI号。

  • 设备注册方式:选择不加密。

安装IoT Link Studio插件

IoT Link Studio是针对IoT物联网端侧开发的IDE环境,提供了编译、烧录、调试等一站式开发体验,支持 C、 C++、汇编等多种开发语言,让您快速、高效地进行物联网开发。

  1. 访问 https://code.visualstudio.com/ 下载并安装Visual Studio Code。

  2. 安装成功后,打开VSCode 插件应用商店,搜索 iotlink 找到IoT Link Studio,然后点击安装。

3.首次启动配置。

IoT Link Studio 首次启动时会自动从网络下载最新的SDK包以及gcc依赖环境,请确保您的网络可用。安装过程中请不要关闭窗口,耐心等待。安装完成后重启VSCode使插件生效。

配置IoT link Studio工程

1.点击VSCode底部工具栏的“Home”。

2.在弹出界面中点击“创建 IoT 工程”,输入工程名称,工程目录,并选择开发板的硬件平台和示例工程模板。

  • 工程名称:QuickStart。

  • 工程目录:D:\。

  • 硬件平台:选择STM32L431_BearPI。

  • 示例工程:选择OC_streetlight_template。


3.点击“确定”,导入完成。

编译并烧录代码

1.点击VSCode底部工具栏的“Build”,等待系统编译完成。编译成功后,界面显示“编译成功”

2.点击VSCode底部工具栏的“Download”,等待系统烧录完成。烧录成功后,界面显示“烧录成功”

数据上报

平台和开发板建立连接后,上报光照传感器数据。您也可以改变光照强度,查看设备上报给平台的数据变化。

  1. 登录设备接入服务控制台,选择 设备 > 所有设备

  2. 选择前面“注册设备”中添加的设备,单击“查看”进入设备详情,查看上报到平台的数据。

命令下发

  1. 登录设备接入服务控制台,选择 设备 > 所有设备

  2. 选择前面“注册设备”中添加的设备,单击“查看”,进入设备详情页面。

  3. 选择“命令”页签,单击“命令下发”,选择命令,设置命令参数后,单击“确定”。

4.查看小熊派板子灯被点亮,下发OFF命令后,灯熄灭。


至此,通过该文档的学习,您应该对智慧路灯场景有了一定的了解。接下来,可以在系列后续文章中,可以学习到更多的物联网业务场景。

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 1
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消