4. Codelabs-应用配置化开发
一个新注册用户,第一次创建应用,可以完全follow本文的步骤。
4.1 复用基础组件
4.1.1 启用消防烟感类设备及绑定设备属性
设备BO的配置主要用于描述接入设备的基本信息,如设备规格、设备属性、设备触发器等。
4.1.1.1 配置设备类属性
新增设备属性"关联设备"用于关联其他设备,比如烟感设备会关联相应的摄像头用于实时的监控处理
步骤 1 点击平台“管理”->"应用管理"->BO配置,选择“Device”
步骤 2 点击“设备属性配置”->“属性定义”->“新增”
图1-15 新增设备属性
![image20]()
步骤 3 依照下图新增设备属性定义“关联设备”,点击属性名称的…,出现属性名称定义框,点击保存。
表1-1 属性定义
属性编码 |
属性名称 |
属性类型 |
枚举选项 |
备注 |
relatedDevice |
名称:relatedDevice 中文:关联设备 |
String |
|
关联设备 |
图1-16 属性名称定义框
![image21]()
图1-17 保存属性定义
![image22]()
4.1.1.2 启用消防烟感类设备
资产中已对接设备库信息,只需要从设备BO中导入相关的规格模板即可
步骤 1 点击平台“管理”->"应用管理"->BO配置,选择“Device”
图1-18 Device BO
![image16]()
步骤 2 点击“设备规格定义”,选择“导入规格模板”
图1-19 导入规格模板
![image17]()
步骤 3 在设备模板->公共安全子系统->消防类系统中选择“消防烟感”,点击“应用设备模板”,如已导入,这里显示为“更新设备模板”
图1-20 应用/更新设备模板
![image18]()
步骤 4 点击“设备规格定义”,查看导入的设备规格信息
图1-21 设备规格SmokeDetector
![image19]()
----结束
4.1.1.3 绑定烟感设备类的属性
在启用的设备“SmokeDetector”中,配置应用需要的设备属性,用于烟感上报数据字段的映射
步骤 1 点击“设备规格定义”,编辑启用的设备类“SmokeDetector”
图1-22 编辑SmokeDetector设备
![image23]()
步骤 2 点击“新建”,按表1-2中的信息新增3个设备属性
图1-23 配置设备类属性
![image24]()
注意:名称、外部编码的大小写,及属性类型的取值
表1-2 设备类要关联的属性
名称 |
属性类型 |
属性定义 |
外部编码 |
备注 |
RelatedDevice |
INSTANCE |
relatedDevice |
RelatedDevice |
关联设备 |
AlarmStatus |
DYNAMIC |
AlarmStatus |
AlarmStatus |
设备告警状态 |
Smoke_Value |
DYNAMIC |
OverCurrent |
Smoke_Value |
烟雾值 |
步骤 3 点击“保存”按钮
图1-24 保存设备规格定义
![image25]()
----结束
4.1.2 新增实例设备
在应用端开发物联设备侧的交互控制前,需要在设施管理中创建烟感与摄像头设备实例以及告警触发规则
4.1.2.1 新增烟感、摄像头设备
在已复用的基础组件设备管理应用中,新增烟感设备、监控摄像头设备
步骤 1 在平台首页->库中,点击“Facility Management”
图1-25 设施管理
![image26]()
步骤 2 点击左下角查看按钮
,在“设施信息管理”中点击“创建”新增设备实例
图1-26 应用查看按钮
![image30]()
图1-27 新增设备
![image31]()
步骤 3 按表中的信息新建设备信息
表1-1
设备编码 |
设备名称 |
状态 |
设备规格 |
设备来源 |
位置 |
经纬度(直接写下边值) |
属性(静态或动态) |
CameraDevice001 |
我的摄像头 |
已启用 |
摄像头 |
VideoCloud HUAWEI |
坂田基地区 |
经度:114.08042542384054 纬度:22.538485490748407 |
视频流地址:如:http://hls01open.ys7.com/openlive/682bf088c3bf436399d836daa841200b.m3u8 |
SmokeDevice001 |
我的烟雾传感器 |
已启用 |
消防烟感 |
basepoint.connectionmax.iot |
坂田基地区 |
经度:114.0804217282 纬度:22.5408551761 |
关联设备:CameraDevice001 |
图1-28 摄像头设备基本信息
![image32]()
图1-29 摄像头设备配置![image33]()
图1-30 烟雾传感器设备基本信息
注意:请配置位置信息、来源basepoint.connectionmax.iot,要跟模拟发送信息platformId取值一致
![image34]()
图1-31 烟雾传感器设备配置![image35]()
----结束
4.1.2.2 配置实例设备的阈值报警触发器
设备触发器是指设备配置的触发规则,用来监听设备属性值的变化,满足条件时会触发指定事件,常用的触发器类型包括阈值报警、状态报警、原始报警。
步骤 1 在平台首页->库中,点击“Facility Management”
步骤 2 点击左下角查看按钮
,在“设施告警配置”中点击“新增触发器”
图1-32 新增触发器
![image36]()
步骤 3 按表1-1中的信息填写触发器的基本信息后,点击“保存”
表1-1 触发器基本信息
基本字段 |
字段值 |
描述 |
触发器名称 |
SmokeAlarmTrigger |
触发器名称,可自定义命名 |
触发器规格 |
阈值报警触发器 |
三种触发器:状态报警触发器、原始报警触发器、阈值报警触发器 |
触发器状态 |
启用中 |
启用中、禁用中 |
关联设备 |
我的烟雾传感器 |
选择“设施信息管理”中创建的“我的烟雾传感器” |
关联设备规格 |
-- |
触发器关联的设备规格 |
动态属性 |
OverCurrent |
选择设备规格属性中自定义的动态属性 |
告警规格 |
SmokeDetectorAlarm |
选择在告警BO中配置的烟感告警 |
告警级别 |
重要 |
四种级别:提示、普通、重要、严重 |
生效时间 |
当前时间 |
触发器生效时间,最好选前一天 |
失效时间 |
将来时间 |
触发器失效时间,最好选下一年的今天,以防配完就失效 |
高阈值 |
200 |
烟雾浓度高值,上报大于此值将会触发告警 |
告警状态设备属性编码 |
AlarmStatus |
填写设备属性,用于解除告警 |
图1-33 触发器基本信息
![image37]()
----结束
4.2 创建应用
复用的基础组件配置完成后,进行应用的开发,主要是完成应用创建、数据接入以及高级页面的开发。
4.2.1 创建项目
创建项目是在App Engine平台开发环境的第一步,也是端到端构建软件应用的入口。
步骤 1 在平台首页->项目,点击“创建App”,创建项目时,会提示创建命名空间(命名空间一旦创建, 不可修改,后续所有新建对象,都会使用此命名空间作为前缀,建议使用姓名首字母缩写)
图1-34 创建项目
![image38]()
图1-35 项目命名
标签 |
名称 |
描述 |
SmokeAlarmApp |
SmokeAlarmApp |
智慧烟雾告警应用 |
![image39]()
步骤 2 自定义新建/修改开发目录名称,可以通过
新增目录,
删除目录,此处在logic下建Flow与Data Access目录,方便后续使用。
图1-36 开发目录
![image42]()
----结束
4.2.2 配置数据接入-OC
平台提供了华为IOT平台Ocean Connector的对接能力,通过创建数据接入配置对接信息
步骤 1 创建数据接入,点击“数据接入”-->“新建”
图1-37 数据接入
![image43]()
步骤 2 将右侧输入源OceanConnector拖入中间画布,配置相关对接信息
图1-38 拖拽OC
![image44]()
图1-39 配置OC基本信息
标签 |
名称 |
协议 |
数据格式 |
APP ID |
OC |
OC |
http |
json |
Postman测试可自行写入,如:SmokeAlarmAppID, 如真实对接,需要与OceanConnector平台的应用ID保持一致 |
认证:默认为打勾,请取消打勾,关闭AK/SK的强制校验![image45]()
图1-40 元数据定义
![image46]()
注意:以下元数据为Postman或者OC推送数据,这里的消息定义要与Postman或者OC消息体保持一致
Copied!
{
"notifyType":"STRING",
"requestId":"STRING",
"deviceId":"STRING",
"gatewayId":"STRING",
"platformId":"STRING",
"service":
{ "data": "OBJECT"}
}
步骤 3 将右侧通道中的内存通道拖入中间画布,如图配置相关信息,点击“保存”
图1-41 内存通道
![image47]()
步骤 4 将右侧输出源中的Kafka拖入中间画布,如图配置相关信息,点击“保存”
标签 |
名称 |
事件 |
属性 |
值 |
Kafka |
Kafka |
Device_DeviceMessageEvent__e |
messageType |
notifyType |
|
|
|
messageId |
requestId |
|
|
|
deviceCode |
deviceId |
|
|
|
gatewayId |
gatewayId |
|
|
|
platformId |
platformId |
|
|
|
body |
service_data |
注意:事件选择设备BO暴露出的事件服务Device_DeviceMessageEvent__e,属性映射取自于OC元数据
图1-42 Kafka
![image48]()
步骤 5 依次点击左上方
保存,
激活,
运行改数据接入,并保存提示中的数据推送地址,供OC对接时使用
图1-43 保存![image52]()
图1-44 设置数据接入的名称
注意:保存时标签和名称设置为SmokeAlarmDataAccess,也可以自己定义,名称将用在数据接入的数据接收URL中
![image53]()
图1-45 提示
![image54]()
注意:请复制保存此数据推送地址,它将用在4.3.1功能测试章节,粗体部分每个开发者,因数据接入的名称与租户ID不同,将不同:https://studio.e.huawei.com/access/v1.0/runtime/lgj__SmokeAlarmDataAccess?tenant_id=0000000000VZImwnfniD
----结束
4.2.3 配置发送短信
在告警上报后可以在监控页面查看告警,确定是否需要发送短信,本实践中使用填入短信接收方的手机号码进行告警消息的发送,在短信发送功能实现过程中可以使用平台提供的流(Flow)来调用平台预集成的华为SMS短信服务。(目前使用的是基础组件服务中预置的连接器;如需修改请使用华为云消息&短信服务,在华为云官网企业认证后在平台创建相应connector使用)
4.2.3.1 开发发送SMS Flow
步骤 1 点击“集成”->“连接器”->“华为SMS短信服务”,查看预置的Connector
图1-46 华为SMS短信服务
![image55]()
步骤 2 鼠标放在“Logic中的Flow”上,单击界面上出现的“+”,在弹出菜单中选择“流”。
图1-47 创建流
![image56]()
步骤 3 选中“创建一个新的流”,在“标签”和“名称”文本框中输入“SendAlarmSMS”,并设置类型为“Autolaunched Flow”,单击“添加”。
系统实际创建的名称会增加租户命名空间前缀,例如“lgj__SendAlarmSMS”
图1-48 SendAlarmSMS
![image57]()
步骤 4 定义Flow的私有结构体及上下文变量
a. 单击右侧
图标,单击“新增”按钮。
图1-49 新增私有结构体类型result
![image59]()
图1-50 编辑私有结构体名称为result,无需结构体成员,单击“保存”。
![image60]()
b. 单击
图标,再单击“全局上下文”,单击“变量”后的“+”,添加如下表所示的变量
名称 |
数据类型 |
phoneNumber |
文本 |
message |
文本 |
c. 单击“对象变量”后的“+”,选择“私有结构体”,填写名称result,并指定关联的私有结构体,单击“保存”
图1-51 对象变量关联私有结构体result,单击“保存”。
![image62]()
d. 保存整体流,单击下图“保存”,忽略错误提示
图1-52 可忽略错误
![imagenew_1.png]()
图1-53 保存整体流
![image63]()
步骤 5 点击左侧“连接器”-->Huawei Cloud, 拖拽HuaweiCloud目录下的SMS至右侧画布中,在“标签”和“名称”文本框中输入“SendAlarmSMS”,连接器处,下拉框选择“GasStation_HWSMN”
图1-54 点击“连接器”-->“Huawei Cloud”
![image64]()
图1-55 拖拽SMS到画布
![image65]()
图1-56 请按图填写基本信息
![image66]()
步骤 6 单击
配置SMS图元的动作、单击输入参数与输出参数下面的单元格后,从“全局上下文”中拖拽变量到单元格来设置脚本的入参和出参。
图1-57 选择动作,拖入输入输出参数
![image68]()
步骤 7 连接“开始”图元和“SMS”图元,鼠标放在开始图元,出现+号后,鼠标拖拽到SMS图元。
图1-58 连接开始图元与SMS图元
![image69]()
步骤 8 点击开始图元,配置Flow的输入参数输出参数
图1-59 Flow输入输出参数配置
![image70]()
步骤 9 点击保存
,点击激活![image50]()
----结束
4.2.3.2 定义短信发送公共API
步骤 1 新建自定义API,点击“服务”->“新建”
图1-60 新建公共接口SendAlarmSMS
![image71]()
步骤 2 输入如下公共接口基本信息,点击保存
操作名称 |
版本 |
URL |
流 |
方法 |
SendAlarmSMS |
0.0.1 |
/SendAlarmSMS |
实际就是你上一步开发的流名称 例如:Lgj__ SendAlarmSMS |
Post |
图1-61 新建公共接口
![image72]()
图1-62 新建后的效果
![image73]()
注意: 请保存URL:/XXX__SmokeAlarmApp/0.0.1/SendAlarmSMS,用于4.2.4.4配置SmokeAlarmWidget组件发送短信,URL为上图部分,去掉/service.
步骤 3 上述操作都成功,已经成功三分之二,加油!!!
----结束
4.2.4 页面组装
应用端页面主要完成告警实例实时展示、告警/设备位置地图呈现等,在本实践中提供全部代码。
所需要的组件烟感告警列表组件SmokeAlarmWidget、地图组件、视频播放组件Camera、时间组件、文本框组件Text,其中烟感告警列表组件、地图桥接器需是自定义开发,其他组件和库平台默认提供.
4.2.4.1 上传组装页面的组件
步骤 1 鼠标放在“Page”上,单击界面上出现的“+”,在弹出菜单中选择“高级页面”。
步骤 2 页面模板选择“空白页”,设置“页面标题”和“页面路径”为“SmokeMonitor”,并选择“绝对布局”,单击“添加”。
图1-63 创建高级页面
![image74]()
图1-64 基本信息
![image75]()
步骤 3 将下列的烟感告警列表组件上传至组件库中,点击“资产”->“组件”->“提交新组件”
SmokeAlarmWidget.zip
图1-65 提交新组件
![image76]()
图1-66 上传提交界面![image77]()
步骤 4 将下列的自定义地图桥接器上传至桥接器库中,点击“资产”->“桥接器”->“提交新桥接器”
IotMonitorOverlaysConnector.zip
图1-67 上传新桥接器
![image78]()
----结束
4.2.4.2 拖拽拼装页面
步骤 1 点击“页面设置”, 点击“常用”页签,如果锁定,请先解锁,将"流域"改为“studio.e.huawei.com”, 保存
,<img src="/media/image83.png" alt="image83" style="zoom: 50%;" />发布 ,再锁定。
图1-68 烟感告警组件,可按截图数字顺序操作
![image0303]()
步骤 2 在Page文件夹下,点击 ”SmokeMonitor”高级页面,点击图标区域最左边“组件列表” 图标
-->“全部”-->“自定义”,搜索烟感告警列表组件SmokeAlarmWidget、拖拽至画布。
图1-69 烟感告警组件,可按截图数字顺序操作
![image85]()
步骤 3 点击“地图”,搜索地图组件“地图”,拖拽至画布
图1-70 地图组件
![image84]()
步骤 4 点击“时间”,搜索时间组件“时间”,拖拽至画布
图1-71 时间组件
![image86]()
步骤 5 点击“文本”,搜索文本组件Text,拖拽至画布
图1-72 文本组件
![image87]()
步骤 6 点击“媒体”,搜索文本组件“视频播放”,拖拽至画布
图1-73 视频组件
![image88]()
----结束
4.2.4.3 配置组件
步骤 1 点击地图组件设置按钮,设置**“高德地图密钥”**与“自定义地图样式”,点击“确定”
图1-74 组件列表![image89]()
图1-75 高德密钥
注意:21b7703643438a868cf7074cd06fe38e 仅供测试使用,拷贝复制注意准确, 不能多复制空格
![image90]()
图1-76 自定义地图样式:amap://styles/bd0193a628f255105fd1079c3267a234
![image91]()
图1-77 编辑地图组件,最后记得点击按钮区域的“保存”
![image91]()
图1-78 地图组件“属性-->位置”设置,请按截图设置,先设置画布大小,然后设置地图为满屏
![image92]()
图1-79 地图组件“数据”设置,配置iotMonitorOverlaysConnector,URL:/service/Device/0.1.0/Device/query(复用DeviceBO中的基础服务url)
![image93]()
步骤 2 点击组件属性设置
返回组件列表,点击Camera Player组件“编辑”按钮,设置“位置”,距离左端顶端,宽度与高度只是为了整个页面整洁美观,可自行设置,堆叠顺序必须大于1(越大越在上层)
图1-80 编辑摄像头组件位置
![image95]()
步骤 3 点击组件列表SmokeAlarmWidget组件“编辑”按钮,设置 “属性-->位置”、 “属性-->Parameters”、 “数据”、“事件”
图1-81 编辑位置,最好按图设置,会显示完整
![image98]()
图1-82 配置发送短信服务
注意:短信服务按照在4.2.3.2的公共API定义,填写相对路径;如 /XXX__SmokeAlarmApp/0.0.1/SendAlarmSMS,红色部分每个人不一样 ![image97]()
图1-83 配置APIConnector,只配置Post/Get方法
![image99]()
图1-84 设置视频播放事件、动作
![image100]()
图1-85 设置地图打点事件、动作
![image102]()
![image102_1]()
图1-86 设置地图清理覆盖物事件、动作
![image103]()
图1-87 broadCameraConnetor事件设置页面
步骤 4 点击时间组件的“编辑”按钮,设置“属性—>位置”,点击“保存”
图1-88 设置时间组件,请按图设置,会显示完整
![image104]()
图1-89 鼠标放到时间组件,右键高级设置时间组件显示样式
![imagenew_5.png]()
步骤 5 点击Text组件“编辑”按钮,设置“属性—>位置”、点击“保存”
图1-90 设置位置
![image105]()
图1-91 设置文本内容 “IOT Smoke Detect & Monitor System”
![image106]()
步骤 6 点击页面保存
,
发布,
进行页面预览
图1-92 保存发布
![image108]()
图1-93 预览
![image109]()
----结束
4.3 应用功能测试
当没有真实设备对接IOT平台(OceanConnector),可以通过Postman(未安装,请安装)模拟OC平台的设备数据变化通知接口,直接测试智慧烟雾告警应用是否正常工作。
遇到问题可以优先通过查询《4步玩转智慧消防告警应用开发FAQ.chm》解决
步骤 1 复制4.2.2章节“配置数据接入-OC”中配置的数据接入的推送地址,例如:
https://studio.e.huawei.com/access/v1.0/runtime/xxx__SmokeAlarmDataAccess?tenant_id==xxxxx
注意:域名、数据接入名称、租户ID根据租户真实情况设置
类似格式:https://studio.e.huawei.com/access/v1.0/runtime/lgj__SmokeAlarmDataAccess?tenant_id=0000000000VZImwnfniD
4.3.1测试告警产生
步骤 1 Postman实现测试模拟数据变化时上报消息至APP Engine应用平台(仅用于测试)
图1-94 Postman测试推送数据变化消息到应用端
![image110]()
字段名 |
值 |
说明 |
notifyType |
deviceDataChange |
字段名必须要数据接入元数据一致,设备自身信息变化的接口标识;值不能改 |
requestId |
a57f3a1a-fbe8-4511-acc5-1333297e9d18 |
字段名必须要数据接入元数据一致,标识此次请求;值可修改 |
deviceId |
SmokeDevice001 |
字段名必须要数据接入元数据一致,标识是哪个设备;值为设备新增时,我的烟雾传感器的外部编码的值 |
gatewayId |
dfgdfgftesteste |
字段名必须要数据接入元数据一致,实际对接时,需要的字段;值postman模拟,可修改 |
platformId |
basepoint.connectionmax.iot |
字段名必须要数据接入元数据一致,标识自身是什么设备;值必须要新增设备时,设备来源的值一致 |
Smoke_Value |
201 |
字段名必须与设备规格属性一致,标识设备的烟雾值;值必须大于设备阈值的大小 |
Copied!
**{
"notifyType":"deviceDataChanged",
"requestId":"a57f3a1a-fbe8-4511-acc5-1333297e9d18",
"deviceId":"SmokeDevice001",
"gatewayId":"dfgdfgftesteste",
"platformId":"basepoint.connectionmax.iot",
"service": {
"data": { "Smoke_Value":201 }
}
}**
注意:data中的数据,请填200以上,因为新增触发器阈值配置的200。
步骤 2 查看预览页面有告警警报显示:
图1-95 告警警报显示页面
![image111]()
4.3.2测试发送告警短信
步骤 1 当点击左侧告警列表时,可以打开短信开关,发送短信:
图1-96 短信下发页面
![image112]()
图1-97 接受者可收到如下类似短信:
![image113]()
4.3.3测试告警时烟感与摄像头关联
步骤 1 当点击左侧告警列表时,可以看到烟感设备关联的摄像头:
图1-98 烟感设备与摄像头关联
![image114]()
4.3.4测试高警时关联视频流
步骤 1 当点击左侧告警列表时,可以看到烟感设备关联摄像头的视频流(请事先启动Chrome的Flash:设置-->高级-->网站设置-->Flash):
图1-99 视频监控
![image115]()
4.3.5测试告警清除
步骤 1 将Postman 模拟发送body中的数据 Smoke_value改成<200, SmokeDevice001设备上的告警都将消失。
Copied!
**{
"notifyType":"deviceDataChanged",
"requestId":"a57f3a1a-fbe8-4511-acc5-1333297e9d18",
"deviceId":"SmokeDevice001",
"gatewayId":"dfgdfgftesteste",
"platformId":"IOT",
"service": {
"data": { "Smoke_Value":100 }
}
}**
图1-100 告警清除页面
![image116]()
基于沃土数字平台--4步玩转智慧消防告警应用
1. 什么是沃土数字平台?
“自己设计的“降落伞”自己跳”是华为各产品线的名言,“沃土数字平台”就是源于华为自身的数字化转型实践,以及行业的实际需求,打造的以云为基础,集成云计算、物联网、大数据、视频、人工智能、5G等多种新技术的平台。在这个平台上,开发者可:
1)组件化集成上述新技术,为开发者数据的接入与融合,降低了门槛和集成难度;
2)使用易用的开发环境和丰富的开发组件,服务于开发者数据的加工治理,方便高效创新;
3)持续运营演进此平台,平台的基本特性就是开放,是与行业最强伙伴深度合作共建共享的平台;
所以沃土数字平台是融合共享的平台:统筹资源、融合数据、使能应用。沃土数字平台的高阶架构和核心价值主张如下图:
备注:详细落地方案可参阅智慧园区、城市数字平台、数字城轨等场景化解决方案,也可访问数字平台官网了解详细技术能力。目标是所有能力都可以在线访问、在线订阅、在线试用,将开放与体验进行到底。
图1-1 沃土数字平台的高阶架构和核心价值主张
2. 什么是开发使能?
App Engine是一个可安装行业服务/套件:
1)行业应用—引用即可部署使用;
2)基础业务BO服务—引用即可复用与扩展开发;
3)行业解决方案包—引用即可部署使用与二次开发;
4)第三方连接器与适配器—引用即可直接集成;
和自身拥有丰富可视化在线工具集:
1)UI Studio—前端站点编排工具,支持PC/Pad/Phone三屏页面的在线编排;
2)Flow Builder—业务流程编排工具,支持拖拽图元和服务的方式快速编排;
3)Business Object构建工具,业务人员就可以定义Object;
的一体云开发、云测试、云部署、云运维application PaaS平台,支撑不同专业化程度的开发者开发:
No-Code 模式: Business人员可参与,可视化托拉拽式的业务开发
Low-Code**模式: 初级code能力的人员,80%编排配置+20%代码,快速编排和集成
Full-Code**模式:核心code人员,结合自身微服务及平台能能力,极致优化构建与沉淀能力
促进开发者高效应用开发和商业变现, 为开发者提升效率,降低门槛。
PS: Business Object*(BO)是封装了完整业务模型、业务规则、业务行为、页面展现碎片的软件单元。*
3. Codelabs-开发目标及准备
一个新注册用户,第一次创建应用,可以完全follow本文的步骤。
3.1 您将建立的场景
模拟在火灾重点防范区域,使用烟感设备连接IOT平台,上报烟雾浓度数据进行烟雾告警监控并进行处理的场景。本次Codelabs中创建一个烟雾告警应用,使用Postman(模拟烟感设备)上报数据,在应用上查看告警警报并短信通知告警处理人。您的应用程序将包含:
l 具备告警数据接入功能。
l 具备设备管理的功能。
l 具备地图显示的功能。
l 具备短信下发的功能。
图1-2 最终效果图
3.2 您将学到什么
l 如何复用平台的基础组件服务。
l 如何使用平台的数据接入能力。
l 如何配置化快速组装页面。
3.3 开发环境及技能要求
l 您需要注册一个沃土数字平台账户。
l 您需要认证,然后订购安装要复用的平台基础组件,本Codelabs,请订购《数字平台HDC基础组件》,包含设备管理App、告警业务对象、设备业务对象、GIS等。
l 了解 java 或者JavaScript或者type Script 与json及有基本的工程能力。
3.4 运行终端要求:
l Laptop 上 Chrome浏览器。
3.5 整体开发流程图
图1-3 整体流程图
3.6 登录注册/认证/订购安装
步骤 1: 请使用Chrome浏览器,登录https://developer.e.huawei.com/ 进行免费注册(已有账户,请直接登录),
注意: 请注意用户名与密码的设置规则。
图1-4 注册页面
步骤2:认证 (只有认证用户才可以订阅,正常流程1~3个工作日,如有特殊需求,请发送邮件至edev@huawei.com加快审核)
图1-5 认证页面
图1-6 认证后待审核页面
点击菜单”行业公共服务-->查看更多服务”找到《数字平台HDC基础组件》,然后点击,进行订阅购买
图1-7 要订阅安装组件
图1-8 HDC基础组件页面的详情
图1-9 同意并订阅
图1-10 订阅成功的标识
步骤4: 点击”查看订单”,如果未出现订阅内容,请等待1分钟,然后依次点击菜单”已订购服务-->点击页面安装按钮-->点击已安装服务”,查看安装是否完成(预计3分钟左右)。
图1-11 订阅组件列表
图1-12 待安装组件列表
图1-13 已安装组件列表
步骤5:点击“开发者中心-->应用开发”进入开发环境,然后点击“库”,默认会看到应用Facility Management与安装好的BO
图1-14 进入开发中心首页,点击“库”
步骤6: 上述操作都成功,已经成功三分之一,加油!!!
4. Codelabs-应用配置化开发
一个新注册用户,第一次创建应用,可以完全follow本文的步骤。
4.1 复用基础组件
4.1.1 启用消防烟感类设备及绑定设备属性
设备BO的配置主要用于描述接入设备的基本信息,如设备规格、设备属性、设备触发器等。
4.1.1.1 配置设备类属性
新增设备属性"关联设备"用于关联其他设备,比如烟感设备会关联相应的摄像头用于实时的监控处理
步骤 1 点击平台“管理”->"应用管理"->BO配置,选择“Device”
步骤 2 点击“设备属性配置”->“属性定义”->“新增”
图1-15 新增设备属性
步骤 3 依照下图新增设备属性定义“关联设备”,点击属性名称的…,出现属性名称定义框,点击保存。
表1-1 属性定义
图1-16 属性名称定义框
图1-17 保存属性定义
4.1.1.2 启用消防烟感类设备
资产中已对接设备库信息,只需要从设备BO中导入相关的规格模板即可
步骤 1 点击平台“管理”->"应用管理"->BO配置,选择“Device”
图1-18 Device BO
步骤 2 点击“设备规格定义”,选择“导入规格模板”
图1-19 导入规格模板
步骤 3 在设备模板->公共安全子系统->消防类系统中选择“消防烟感”,点击“应用设备模板”,如已导入,这里显示为“更新设备模板”
图1-20 应用/更新设备模板
步骤 4 点击“设备规格定义”,查看导入的设备规格信息
图1-21 设备规格SmokeDetector
----结束
4.1.1.3 绑定烟感设备类的属性
在启用的设备“SmokeDetector”中,配置应用需要的设备属性,用于烟感上报数据字段的映射
步骤 1 点击“设备规格定义”,编辑启用的设备类“SmokeDetector”
图1-22 编辑SmokeDetector设备
步骤 2 点击“新建”,按表1-2中的信息新增3个设备属性
图1-23 配置设备类属性
注意:名称、外部编码的大小写,及属性类型的取值
表1-2 设备类要关联的属性
步骤 3 点击“保存”按钮
图1-24 保存设备规格定义
----结束
4.1.2 新增实例设备
在应用端开发物联设备侧的交互控制前,需要在设施管理中创建烟感与摄像头设备实例以及告警触发规则
4.1.2.1 新增烟感、摄像头设备
在已复用的基础组件设备管理应用中,新增烟感设备、监控摄像头设备
步骤 1 在平台首页->库中,点击“Facility Management”
图1-25 设施管理
步骤 2 点击左下角查看按钮
,在“设施信息管理”中点击“创建”新增设备实例
图1-26 应用查看按钮
图1-27 新增设备
步骤 3 按表中的信息新建设备信息
表1-1
图1-28 摄像头设备基本信息
图1-29 摄像头设备配置![image33]()
图1-30 烟雾传感器设备基本信息
注意:请配置位置信息、来源basepoint.connectionmax.iot,要跟模拟发送信息platformId取值一致
图1-31 烟雾传感器设备配置![image35]()
----结束
4.1.2.2 配置实例设备的阈值报警触发器
设备触发器是指设备配置的触发规则,用来监听设备属性值的变化,满足条件时会触发指定事件,常用的触发器类型包括阈值报警、状态报警、原始报警。
步骤 1 在平台首页->库中,点击“Facility Management”
步骤 2 点击左下角查看按钮
,在“设施告警配置”中点击“新增触发器”
图1-32 新增触发器
步骤 3 按表1-1中的信息填写触发器的基本信息后,点击“保存”
表1-1 触发器基本信息
图1-33 触发器基本信息
----结束
4.2 创建应用
复用的基础组件配置完成后,进行应用的开发,主要是完成应用创建、数据接入以及高级页面的开发。
4.2.1 创建项目
创建项目是在App Engine平台开发环境的第一步,也是端到端构建软件应用的入口。
步骤 1 在平台首页->项目,点击“创建App”,创建项目时,会提示创建命名空间(命名空间一旦创建, 不可修改,后续所有新建对象,都会使用此命名空间作为前缀,建议使用姓名首字母缩写)
图1-34 创建项目
图1-35 项目命名
步骤 2 自定义新建/修改开发目录名称,可以通过
新增目录,
删除目录,此处在logic下建Flow与Data Access目录,方便后续使用。
图1-36 开发目录
----结束
4.2.2 配置数据接入-OC
平台提供了华为IOT平台Ocean Connector的对接能力,通过创建数据接入配置对接信息
步骤 1 创建数据接入,点击“数据接入”-->“新建”
图1-37 数据接入
步骤 2 将右侧输入源OceanConnector拖入中间画布,配置相关对接信息
图1-38 拖拽OC
图1-39 配置OC基本信息
认证:默认为打勾,请取消打勾,关闭AK/SK的强制校验![image45]()
图1-40 元数据定义
注意:以下元数据为Postman或者OC推送数据,这里的消息定义要与Postman或者OC消息体保持一致
步骤 3 将右侧通道中的内存通道拖入中间画布,如图配置相关信息,点击“保存”
图1-41 内存通道
步骤 4 将右侧输出源中的Kafka拖入中间画布,如图配置相关信息,点击“保存”
注意:事件选择设备BO暴露出的事件服务Device_DeviceMessageEvent__e,属性映射取自于OC元数据
图1-42 Kafka
步骤 5 依次点击左上方
保存,
激活,
运行改数据接入,并保存提示中的数据推送地址,供OC对接时使用
图1-43 保存![image52]()
图1-44 设置数据接入的名称
注意:保存时标签和名称设置为SmokeAlarmDataAccess,也可以自己定义,名称将用在数据接入的数据接收URL中
图1-45 提示
注意:请复制保存此数据推送地址,它将用在4.3.1功能测试章节,粗体部分每个开发者,因数据接入的名称与租户ID不同,将不同:https://studio.e.huawei.com/access/v1.0/runtime/lgj__SmokeAlarmDataAccess?tenant_id=0000000000VZImwnfniD
----结束
4.2.3 配置发送短信
在告警上报后可以在监控页面查看告警,确定是否需要发送短信,本实践中使用填入短信接收方的手机号码进行告警消息的发送,在短信发送功能实现过程中可以使用平台提供的流(Flow)来调用平台预集成的华为SMS短信服务。(目前使用的是基础组件服务中预置的连接器;如需修改请使用华为云消息&短信服务,在华为云官网企业认证后在平台创建相应connector使用)
4.2.3.1 开发发送SMS Flow
步骤 1 点击“集成”->“连接器”->“华为SMS短信服务”,查看预置的Connector
图1-46 华为SMS短信服务
步骤 2 鼠标放在“Logic中的Flow”上,单击界面上出现的“+”,在弹出菜单中选择“流”。
图1-47 创建流
步骤 3 选中“创建一个新的流”,在“标签”和“名称”文本框中输入“SendAlarmSMS”,并设置类型为“Autolaunched Flow”,单击“添加”。
系统实际创建的名称会增加租户命名空间前缀,例如“lgj__SendAlarmSMS”
图1-48 SendAlarmSMS
步骤 4 定义Flow的私有结构体及上下文变量
a. 单击右侧
图标,单击“新增”按钮。
图1-49 新增私有结构体类型result
图1-50 编辑私有结构体名称为result,无需结构体成员,单击“保存”。
b. 单击
图标,再单击“全局上下文”,单击“变量”后的“+”,添加如下表所示的变量
c. 单击“对象变量”后的“+”,选择“私有结构体”,填写名称result,并指定关联的私有结构体,单击“保存”
图1-51 对象变量关联私有结构体result,单击“保存”。
d. 保存整体流,单击下图“保存”,忽略错误提示
图1-52 可忽略错误
图1-53 保存整体流
步骤 5 点击左侧“连接器”-->Huawei Cloud, 拖拽HuaweiCloud目录下的SMS至右侧画布中,在“标签”和“名称”文本框中输入“SendAlarmSMS”,连接器处,下拉框选择“GasStation_HWSMN”
图1-54 点击“连接器”-->“Huawei Cloud”
图1-55 拖拽SMS到画布
图1-56 请按图填写基本信息
步骤 6 单击
配置SMS图元的动作、单击输入参数与输出参数下面的单元格后,从“全局上下文”中拖拽变量到单元格来设置脚本的入参和出参。
图1-57 选择动作,拖入输入输出参数
步骤 7 连接“开始”图元和“SMS”图元,鼠标放在开始图元,出现+号后,鼠标拖拽到SMS图元。
图1-58 连接开始图元与SMS图元
步骤 8 点击开始图元,配置Flow的输入参数输出参数
图1-59 Flow输入输出参数配置
步骤 9 点击保存
,点击激活![image50]()
----结束
4.2.3.2 定义短信发送公共API
步骤 1 新建自定义API,点击“服务”->“新建”
图1-60 新建公共接口SendAlarmSMS
步骤 2 输入如下公共接口基本信息,点击保存
图1-61 新建公共接口
图1-62 新建后的效果
注意: 请保存URL:/XXX__SmokeAlarmApp/0.0.1/SendAlarmSMS,用于4.2.4.4配置SmokeAlarmWidget组件发送短信,URL为上图部分,去掉/service.
步骤 3 上述操作都成功,已经成功三分之二,加油!!!
----结束
4.2.4 页面组装
应用端页面主要完成告警实例实时展示、告警/设备位置地图呈现等,在本实践中提供全部代码。
所需要的组件烟感告警列表组件SmokeAlarmWidget、地图组件、视频播放组件Camera、时间组件、文本框组件Text,其中烟感告警列表组件、地图桥接器需是自定义开发,其他组件和库平台默认提供.
4.2.4.1 上传组装页面的组件
步骤 1 鼠标放在“Page”上,单击界面上出现的“+”,在弹出菜单中选择“高级页面”。
步骤 2 页面模板选择“空白页”,设置“页面标题”和“页面路径”为“SmokeMonitor”,并选择“绝对布局”,单击“添加”。
图1-63 创建高级页面
图1-64 基本信息
步骤 3 将下列的烟感告警列表组件上传至组件库中,点击“资产”->“组件”->“提交新组件”
SmokeAlarmWidget.zip
图1-65 提交新组件
图1-66 上传提交界面![image77]()
步骤 4 将下列的自定义地图桥接器上传至桥接器库中,点击“资产”->“桥接器”->“提交新桥接器”
IotMonitorOverlaysConnector.zip
图1-67 上传新桥接器
----结束
4.2.4.2 拖拽拼装页面
步骤 1 点击“页面设置”, 点击“常用”页签,如果锁定,请先解锁,将"流域"改为“studio.e.huawei.com”, 保存
,<img src="/media/image83.png" alt="image83" style="zoom: 50%;" />发布 ,再锁定。
图1-68 烟感告警组件,可按截图数字顺序操作
步骤 2 在Page文件夹下,点击 ”SmokeMonitor”高级页面,点击图标区域最左边“组件列表” 图标
-->“全部”-->“自定义”,搜索烟感告警列表组件SmokeAlarmWidget、拖拽至画布。
图1-69 烟感告警组件,可按截图数字顺序操作
步骤 3 点击“地图”,搜索地图组件“地图”,拖拽至画布
图1-70 地图组件
步骤 4 点击“时间”,搜索时间组件“时间”,拖拽至画布
图1-71 时间组件
步骤 5 点击“文本”,搜索文本组件Text,拖拽至画布
图1-72 文本组件
步骤 6 点击“媒体”,搜索文本组件“视频播放”,拖拽至画布
图1-73 视频组件
----结束
4.2.4.3 配置组件
步骤 1 点击地图组件设置按钮,设置**“高德地图密钥”**与“自定义地图样式”,点击“确定”
图1-74 组件列表![image89]()
图1-75 高德密钥
注意:21b7703643438a868cf7074cd06fe38e 仅供测试使用,拷贝复制注意准确, 不能多复制空格
图1-76 自定义地图样式:amap://styles/bd0193a628f255105fd1079c3267a234
图1-77 编辑地图组件,最后记得点击按钮区域的“保存”
图1-78 地图组件“属性-->位置”设置,请按截图设置,先设置画布大小,然后设置地图为满屏
图1-79 地图组件“数据”设置,配置iotMonitorOverlaysConnector,URL:/service/Device/0.1.0/Device/query(复用DeviceBO中的基础服务url)
步骤 2 点击组件属性设置
返回组件列表,点击Camera Player组件“编辑”按钮,设置“位置”,距离左端顶端,宽度与高度只是为了整个页面整洁美观,可自行设置,堆叠顺序必须大于1(越大越在上层)
图1-80 编辑摄像头组件位置
步骤 3 点击组件列表SmokeAlarmWidget组件“编辑”按钮,设置 “属性-->位置”、 “属性-->Parameters”、 “数据”、“事件”
图1-81 编辑位置,最好按图设置,会显示完整
图1-82 配置发送短信服务
注意:短信服务按照在4.2.3.2的公共API定义,填写相对路径;如 /XXX__SmokeAlarmApp/0.0.1/SendAlarmSMS,红色部分每个人不一样![image97]()
图1-83 配置APIConnector,只配置Post/Get方法
图1-84 设置视频播放事件、动作
图1-85 设置地图打点事件、动作
图1-86 设置地图清理覆盖物事件、动作
图1-87 broadCameraConnetor事件设置页面
图1-88 设置时间组件,请按图设置,会显示完整
图1-89 鼠标放到时间组件,右键高级设置时间组件显示样式
步骤 5 点击Text组件“编辑”按钮,设置“属性—>位置”、点击“保存”
图1-90 设置位置
图1-91 设置文本内容 “IOT Smoke Detect & Monitor System”
步骤 6 点击页面保存
,
发布,
进行页面预览
图1-92 保存发布
图1-93 预览
----结束
4.3 应用功能测试
当没有真实设备对接IOT平台(OceanConnector),可以通过Postman(未安装,请安装)模拟OC平台的设备数据变化通知接口,直接测试智慧烟雾告警应用是否正常工作。
遇到问题可以优先通过查询《4步玩转智慧消防告警应用开发FAQ.chm》解决
步骤 1 复制4.2.2章节“配置数据接入-OC”中配置的数据接入的推送地址,例如:
https://studio.e.huawei.com/access/v1.0/runtime/xxx__SmokeAlarmDataAccess?tenant_id==xxxxx
注意:域名、数据接入名称、租户ID根据租户真实情况设置
类似格式:https://studio.e.huawei.com/access/v1.0/runtime/lgj__SmokeAlarmDataAccess?tenant_id=0000000000VZImwnfniD
4.3.1测试告警产生
步骤 1 Postman实现测试模拟数据变化时上报消息至APP Engine应用平台(仅用于测试)
图1-94 Postman测试推送数据变化消息到应用端
注意:data中的数据,请填200以上,因为新增触发器阈值配置的200。
步骤 2 查看预览页面有告警警报显示:
图1-95 告警警报显示页面
4.3.2测试发送告警短信
步骤 1 当点击左侧告警列表时,可以打开短信开关,发送短信:
图1-96 短信下发页面
图1-97 接受者可收到如下类似短信:
4.3.3测试告警时烟感与摄像头关联
步骤 1 当点击左侧告警列表时,可以看到烟感设备关联的摄像头:
图1-98 烟感设备与摄像头关联
4.3.4测试高警时关联视频流
步骤 1 当点击左侧告警列表时,可以看到烟感设备关联摄像头的视频流(请事先启动Chrome的Flash:设置-->高级-->网站设置-->Flash):
图1-99 视频监控
4.3.5测试告警清除
步骤 1 将Postman 模拟发送body中的数据 Smoke_value改成<200, SmokeDevice001设备上的告警都将消失。
图1-100 告警清除页面
5 恭喜你
祝贺您,您已经成功完成本次Codelabs的操作,有机会赢取精美礼品,点击"闯关有礼"查看活动详情。
6 参考文件
· 更多关于数字平台资料和视频,请参考数字平台知识中心。