【IoT Openlab】一个小CASE:IoT解决方案端到端体验指南(包含IoTDA+IoTA+DIS)
本博客阅读前建议先食用《一个围绕数据分析服务端到端解决方案的体验》。
1. 声明
本demo需要购买DIS,按照最小规格(0.1元/时),预计需要1~2个小时。
在执行前建议先申请IoTA公测资格。
2. 场景说明
基于上文给出的解决方案,构造实现以下场景:
在一个园区的若干个库房各有一个传感器,传感器定时上报一批数据,数据中包含温度数据,温度数据中有异常数据。行业应用对温度数据获取到后进行显示。现在集成华为云IoT平台,要求数据经过IoT云服务时,能够过滤掉异常数据和非温度数据,并且如果设备在一定时间段内上报了重复温度数据,则IoT云服务能够过滤掉重复数据而不将其传递给行业应用。
按照上文中的解决方案,首先设备的数据会被上报到IoTDA,然后数据被转发到IoTA,经过分析处理后,能够通过DIS上报到行业应用中。
如果步骤已完成可以跳过。
3. 集成设备接入服务(IoTDA)
step 0、 申请华为云账户和开通IoTDA云服务
step 1、 创建资源空间
1) 登录华为云官方网站,访问设备接入服务。
2) 单击“立即使用”进入设备接入控制台。
3) 在左侧导航栏,单击“产品”,单击右上角下拉框,选择新建产品所属的资源空间。如无对应的资源空间,请创建资源空间。这里我们创建个名为IoT_test的资源空间
step 2、 创建产品模型
1) 单击右上角的“创建产品”,在弹出的页面中,填写“产品名称”、“厂商名称”、“设备类型”等信息,选择“协议类型”、“数据格式”后,点击右下角“立即创建”。
2) “数据格式”配置为“JSON”时,该产品下不需要进行编解码插件开发。
3) 使用模型定义设备功能:不勾选
4) 点击右下角的立即创建即可成功创建产品
5) 选择创建的产品,单击“详情”进入产品详情页面。
6) 在产品详情功能定义页面选择“自定义模型”。
7) 进入产品模型开发,填写服务类型和描述,也就是service ID,
8) 点击添加属性,填写属性名称,如图所示
step 3、 创建设备
1) 进入“在线测试”板块点击“新增测试设备”,填写相应的信息。如图所示
生成的设备ID(即deviceId)和设备密钥(即secret)请保存,下文设备上线需要使用。
2) 设备创建成功后可以在设备列表中看到所创建的设备,此时设备处于未激活状态,只有设备与平台建链后才能激活设备
step 4、 设备上线
我们使用MQTT.fx来模拟设备。
1) 下载MQTT.fx,安装最新版本的MQTT.fx工具(也可直接下载附件); 下载连接信息生成工具,运行“MqttClientIdGenerator.jar”,然后将设备ID(即deviceId)和设备密钥(即secret)分别填入deviceId和deviceSecret,生成连接信息(clientId、username、password),复制保存。
2) 保存生成的连接信息,打开MQTT.fx ; 单击设置图标,填写物联网平台MQTT设备接入地址,并配置鉴权参数。
图中参数如下(如图可按照图中填写)
参数名 |
参数值 |
说明 |
ProfileName |
任意值 |
如图 |
ProfileType |
MQTT Broker |
如图 |
Broker Address |
iot-mqtts.cn-north-4.myhuaweicloud.com |
MQTT协议 |
Broker Port |
1883 |
MQTT1883|MQTTS 8883 |
Client ID |
/ |
上文连接工具生成的clientId |
User Name |
/ |
上文连接工具生成的username |
Password |
/ |
上文连接工具生成的password |
3) 参数配置完成之后点击窗口上方蓝色按钮连接(Connect),连接成功之后可以在IoTDA的页面看到设备列表中设备的状态为在线,然后可通过设备模拟器上报数据了。设备上报的Topic可以通过华为云_设备接入进行详细查看。
step 5、 试测设备上报数据
参数名 |
参数值 |
说明 |
Topic |
$oc/devices/{device_id}/sys/properties/report |
如下,替换设备id |
内容 |
{ "services": [{ "service_id": "DemoService", "properties": { "temperature": 54.2, "humidity":40 }, "event_time": "20151012T121213Z" } ] } |
如图,按照格式发送消息 |
1) 上报设备的属性消息。Topic为$oc/devices/{device_id}/sys/properties/report,这里的device_id需要替换成设备ID。配置完成后点击蓝色按钮“Publish”
2) 打开IoTDA的Console页面,可以看到上报的数据。
4. 购买DIS
DIS主要是对数据传输所需要的基础设置、存储、网络和配置进行管理。在IoT流程中的最终输出结果一般都会通过dis的管道输出到与其对接的上层应用中,因此在demo体验中我们通过消费dis的数据去查看数据分析的结果更能真实的感受实际场景。按照如下步骤操作。
进入dis的控制台,点击“购买接入通道”,进入购买界面
填写管道名称,数据类型根据需要选择,这里我们使用json格式方便浏览查看
注:管道名称会在下文IoTA配置中使用
立即购买后,给出通道的详情,确认无误后点击提交。
提交成功之后会提示开始创建接入通道
返回列表之后可以看到刚刚创建的接入通道正在运行之中
5. 使用数据分析服务(IoTDA)
step 0、 申请开通IoTA
请前往网站申请,公测期间可以通过提工单申请。
step 1、 配置数据源
1) 进入数据源模块中,授权IoTDA服务,才能将设备上报的数据同步。并且确保我们创建的产品在共享的实例中。
2) 配置DIS数据源,进入实时数据源,点击“添加数据源”,按照下列表格填写完成后点击连接测试按钮,提示连接成功后点击确定为配置成功
参数名 |
参数值 |
说明 |
数据源名称 |
dis-demo |
建议与开通的DIS通道名称相同 |
项目ID |
/ |
账户的projectID,在华为云账户“我的凭证”处获取 |
通道名称 |
dis-demo |
上文配置的DIS通道名称 |
AK |
/ |
账户的AK信息,在华为云账户“我的凭证”处获取 |
SK |
/ |
账户的SK信息,在华为云账户“我的凭证”处获取 |
step 2、 配置数据管道
1) 进入数据分析的数据管道模块,点击“创建数据管道”,填写对应的参数值,数据源选择绑定的DMP,就可以获取设备接入服务的数据。
2) 右键点击IoT设备接入数据源控件按钮,创建产品过滤,填写在设备接入模块的资源空间ID和产品ID,输出位置就会展现出设备的产品模型。
3) 右键添加数据存储输出,填写对应参数值,存储组选用“IoTDA 设备存储”;填写“存储名称”以及对应的“设备id”值为header.device_id,属性值使用JSONPath语法;格式如下:
body.services[?(@.service_id=='DemoService')].properties.temperature
这里只配置temperature用以说明管道的清洗功能作用,实际场景下可以根据实际需要过滤掉设备上报数据中的不需要分析的字段。这段配置就可以通过管道的清洗功能,清洗掉设备上报humidity字段。
4) 配置完成后启动作业,选择“独享资源”进行作业的运行。
step 3、 建立资产模型
资产模型可以反映园区、库房、设备之间的关系,请参看场景说明。
1) 进入资产模型模块,点击“新建视图”按钮,填写“视图名称”以及“描述”,确认之后进入视图。
2) 按照IoTA数据分析云服务要求,每一个视图中资产关系是树状结构,必须具备一个根节点资产。新建的视图,默认会生成一个根资产,如上图所示的“未命名资产”。
将“未命名资产”名称修改为“root”,方便理解。
3) 点击root资产,右键点击“添加子资产”,创建1号园区资产“compus001”。资产分类填写为compus
4) 修改资产名称为“compus001”,添加资产分类“compus”
5) 以相同方式在compus001下创建warehouse001、warehouse002、warehouse003资产,表示该园区下部署有001、002、003号机房,其中001号机房下面有001号传感器。
6) sensor001资产匹配真实的传感器设备,需要具备IoT数据采集功能以及原始数据清洗转换功能, IoT数据采集和数据清洗、计算、转换功能由IoTA数据分析服务资产建模中的“测点”实现。“测点”分为“实测点”和“虚测点”。
实测点 |
测点数据主要来源于静态配置数据或是动态数据源,动态数据源可对应实际的物联网设备,通过数据源映射,将您业务系统中实际存在的物联网设备、与资产模型中的实测点进行绑定。 |
虚测点 |
虚测点有多种计算任务类型,当前版本支持事件型、实时分析型2种类型。 |
给sensor001资产创建实测点。点击sensor001资产,右键选择“添加测点”。
修改实测点名称为“sensor001数据采集”便于理解,配置测点详情,包括测点分类,选择数据格式等。其中,测点类型选择“实测点”,测点分类新增类型“receiverDataCollector”。
7) 点击添加数据源映射,按照之前创建的产品和设备,选择对应名称选项填写测点绑定的设备信息,用户接受设备上报数据,确认后没有警示号说明配置成功
8) 信息填写完成之后,点击发布视图,发布成功后表示视图编辑完成
step 4、 构建实时分析算法
1) 进入分析任务板块,点击实时分析,新建算子作业
2) 点击算子,算子进入算子编排,拖拽“IoT资产输入”算子到作业工作台画布,其中视图配置选择对应视图,视图就是之前资产建模中的名称,配置好对应的视图,视图中的设备信息数据就会流向对应的算法中进行数据处理。
3) 拖拽“数据扁平”算子到工作台,上游算子为“IoT资产输入”。“字段名称”配置为temperature,类型为double,路径为value
4) 拖拽“数据过滤”算子到工作台,配置数值为_NULL,符合为NOT_EQUAL
5) 拖拽“数据去重”算子到工作台,配置分区字段为“temperature”和“assetId”;抑制字段为“temperature”,抑制周期为600。
抑制周期就是上文中场景“如果设备在一定时间段内上报了重复温度数据”中的时间段。如果设置为使用事件时间,则根据设备上报数据的eventTime字段进行抑制
6) 拖拽“数据选择”算子,选择字段点击全部的字段
7) 拖拽“dis输出”算子,配置好dis的名称。
8) 完成配置后点击右上角的保存,并启动作业,配置没有问题提示作业启动成功。
6. 行业应用开发
连接dis的接入管道,可以用我们提供的java版的demo,其他语言可以自己参考华为云服务dis的帮助文档内容。详细操作流程以及参数可以查看demo中的README。
见附件dis_demo.zip
7. 联调调测
step 1、 启动行业应用demo
根据自己账户的信息配置好demo应用服务,启动demo项目应用
step 2、 设备模拟器数据上报
1) 通过模拟器多条上报数据,模拟实际设备的数据上报,详细上报数据见附件提供的模拟数据,如图。
上报数据的参看附件IoT_test设备数据.txt
step 3、 查看行业应用输出
1) 使用dis的demo,通道名称以及信息改为自己账户的配置,消费如下,发现经过算子处理数据去除了重复数据和空数据。
2) 通过资产模型的监控也可以看到最新上报的数据
8. 资源清理
删除购买的DIS
进入dis的列表,点击删除按钮即可删除dis管道
- 点赞
- 收藏
- 关注作者
评论(0)