华为云技术分享玩转物联网IoTDA服务系列三自动售货机销售分析场景示例

2次阅读

共计 4805 个字符,预计需要花费 13 分钟才能阅读完成。

摘要: 物联网解决方案中,作为数据主体的“物”可能数量会非常大,产生的数据已经无法通过传统的数据处理服务进行处理。如何分析与利用这庞大的物联网设备数据对物联网企业来说又是一个新的挑战。本文以自动售货机销售分析场景示例,分析售货销量状况。

场景简介

通过收集自动售货机系统的销售数据,EI 数据分析售货销量状况。

该场景主要描述的是设备可以通过 MQTT 协议与物联网平台进行交互,应用侧可以到物联网平台订阅设备侧变化的通知,用户可以在控制台或通过应用侧接口创建数据转发规则,把设备上报的属性转发给其他华为云服务。

核心知识点 :产品模型、编辑码插件、订阅推送、属性上报、MQTT 协议、数据转发规则。

场景流程

流程解释:

1. 创建自动售货机产品:物联网平台以产品为粒度管理批量设备。用户可以通过平台提供的 API 接口或控制台创建产品。

2. 上传产品模型:产品模型是定义一种设备的基本属性和命令。产品模型可以通过控制台,也可以导入公共产品库的模型。该场景没有编解码插件,是因为设备是基于安卓操作系统开发的,能够通过 MQTT 协议与平台进行交互。

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

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

5. 设备建链:MQTT 设备是指通过 MQTT 协议,不论是集成了华为 IoT Device SDK,还是原生 MQTT 协议接入,只要是 json 数据格式传输给平台,平台就无需使用编解码插件。如果是二进制上传,则需要先做编解码插件的开发。MQTT 是长连接,需要先建链才能进行数据传输,可以通过安全加密方式 8883 端口接入(推荐),也可以通过非安全加密方式 1883 端口接入。

6. 推送自动售货机设备激活通知:平台会根据之前应用订阅的回调地址,把自动售货机设备上线的通知类型通过 HTTP/HTTPS 推送回去。

7. 创建数据转发规则:售货管理系统可以通过 API 接口创建规则,也可以通过控制台创建,指定过滤指定的属性,给指定的通道转发数据。

8. 开通 DIS 通道 /MRS 服务:华为公有云上有丰富的 SaaS 服务和 PaaS 服务,供您结合自己的业务需要进行组合使用。DIS 服务提供高效采集、传输、分发能力,支持多种 IoT 协议,可以开通该服务,通过 IoTDA 规则引擎,把自动售货机设备的数据转发给 DIS,然后再利用诸如 MRS 服务,实现自动售货销量状况数据分析。

9. 自动售货机属性上报:设备侧可以通过 SDK 或 MQTT 原生协议接入平台,属性上报销售信息。这里值得注意的是,设备侧上报的数据,是通过属性上报,与消息上报最大的区别在于是否经过产品模型。属性上报的内容与格式都要跟产品模型定义保持一致。具体概念介绍可以参阅“物模型”。

10. 按规则数据转发:平台收到设备上报的属性后,规则引擎会进行过滤(不论属性还是消息,平台都会做规则过滤),把设定好的属性值转发到指定的 DIS 通道,然后再通过 DIS 的接口,由 MRS 去消费 DIS 的数据,实现对销量的分析。

最佳实践

场景说明

物联网解决方案中,作为数据主体的“物”可能数量会非常大,产生的数据已经无法通过传统的数据处理服务进行处理。如何分析与利用这庞大的物联网设备数据对物联网企业来说又是一个新的挑战。

华为云物联网平台提供规则引擎能力,支持将数据上报的数据转发至华为云其他云服务,可实现将海量数据通过数据接入服务(DIS)转发至 MapReduce 服务(MRS),对数据进行处理后再由数据可视化服务(DLV)读取数据呈现为可视化报表,实现数据的一站式采集、处理和分析。

在本示例中,我们实现下述场景:

自动售货机每次销售商品后上报销售商品种类、数量、时间和所属区域到物联网平台,物联网平台将数据通过数据接入服务转发至 MapReduce 服务,MapReduce 服务处理数据并写为统计文件,数据可视化服务从统计文件读取数据展现为四个维度的销售报表。

创建 MapReduce 集群

创建集群,用于存储和处理 DIS 转储的数据。

1. 登录华为云官方网站,访问 MapReduce 服务。

2. 单击“立即购买”,创建集群,以下配置仅为样例。

注:下图以新版自定义购买界面为例,需要在“购买集群”界面点击右上角的“点击体验新版”,然后选择“自定义购买”。

3. 集群创建成功后,等待 15 到 30 分钟,集群状态变更为“运行中”则表示创建成功。

创建 OBS 桶

1. 登录华为云官方网站,访问对象存储服务。

2. 单击“管理控制台”进入对象存储服务管理控制台。

3. 单击页面右上角的“创建桶”,根据需求选择桶规格后,单击“立即创建”。

创建数据接入通道和转储任务

创建通道并配置转储任务,实现将设备管理服务传入 DIS 的数据转发至 MRS。

1. 登录华为云官方网站,访问数据接入服务。

2. 单击“立即购买”,购买接入通道,以下配置仅为样例。

3. 通道购买成功后,进入 DIS 控制台“接入管理 > 通道管理”页面。

4. 单击需要查看的通道名称,进入所选通道的管理页面,选择“转储管理”页签。

5. 单击“添加转储任务”按钮。

6. 在弹出的“添加转储任务”页面配置转储相关配置项。

7. 单击“立即创建”。

配置设备接入服务

在设备接入服务中创建产品模型、注册设备并设置数据转发规则,实现当设备上报数据时将数据转发至 DIS。

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

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

3. 单击“规则 > 创建规则 > 数据转发”,首次创建对接到 DIS 服务的规则时,平台会根据对接的云服务和区域弹出对应的云服务访问授权窗口。

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

注:本文中使用的产品模型和设备仅为示例,您可以使用自己的产品模型和设备进行操作。

5. 单击右上角的“创建产品”,创建一个基于 MQTT 协议的产品,填写参数后,单击“确认”。

6. 在功能定义页面,单击“上传模型文件”,单击 Profile.zip,获取产品模型文件样例。

7. 进入“设备 > 设备注册”页面,单击“注册设备”,参考下表填写参数。

填写完成后单击“确定”,请注意保存注册成功返回的“设备 ID”和“设备密钥”。

8. 单击左侧导航栏的“规则”,单击右上角的“创建规则”,选择“数据转发”。

9. 填写规则内容,规则名称自定义,“数据类型”选择“JSON”,转发至“数据接入服务(DIS)”,“区域”选择您开通 OBS 的区域,“通道”选择您创建的桶,填写完成后单击“创建规则”。

配置数据可视化服务

配置数据可视化服务,新建数据报表视图。

1. 登录华为云官方网站,访问数据可视化服务。

2. 单击“进入控制台”。

注:若您未开通 DLV 服务,可单击“体验试用”获取 30 天的基础版免费试用。

3. 访问 DLV 控制台“我的大屏”页面,新建一个大屏。

4. 选择空白模板,输入大屏名称后,单击“创建大屏”。

5. 单击“文本 > 标题”新增一个标题。

6. 在右侧“数据”面板修改静态数据中“value”的值为“每日销量”。

7. 在大屏内拖动标题到左上角,并拉伸成合适的形状。

8. 单击“常用图表 > 线状图”新增一个线状图报表。

9. 拖动图表到标题下面并拉伸成合适的形状。

10. 重复以上步骤再添加一个标题为“时间段销量”柱状图,一个标题为“种类销量”的饼状图,一个标题为“地区销量”的区域排行图,并根据自己的需要设置图表的样式。最终效果类似下图。

11. 单击页面右上角的返回按钮退出编辑页面。

验证操作

1. 首先控制设备上报 10 条数据。

  • 您可以使用配置设备接入服务时注册的真实设备接入平台,上报数据。
  • 您也可以使用模拟器模拟设备上报数据,操作方法请参考通过 MQTT.fx 体验设备接入。

上报数据的样例如下,请自行修改参数的取值模拟真实设备数据:

样例 1

{
    "msgType": "deviceReq",
    "data": [{
        "serviceId": "sales",
        "serviceData": {
            "category": "soda",
            "number": "1",
            "area": "SZLH",
            "timeStamp": "20190425T091157Z"
        }
    }]
}

上述样例表示 UTC 时间 2019 年 4 月 25 日 9 点 11 分 57 秒深圳罗湖的自动贩卖机销售了一支苏打饮料。

样例 2

{
    "msgType": "deviceReq",
    "data": [{
        "serviceId": "sales",
        "serviceData": {
            "category": "juice",
            "number": "2",
            "area": "SZFT"
            "timeStamp": "20190426T170005Z"
        }
    }]
}

上述样例表示 UTC 时间 2019 年 4 月 26 日 17 点 05 秒深圳福田的自动贩卖机销售了两支果汁饮料。

本文以上报下表的数据为例。

2. 登录 MRS 管理控制台,选择“集群列表 > 现有集群”,单击集群名进入集群管理页面。

3. 单击页面上方的“文件管理”,再单击“HDFS 文件列表”,进入转储文件目录(例如“temp”)查看是否存在转储的数据文件。

注:DIS 会将数据合并转发,所以此处的文件数量和上报的数据条数可能会不一致。

4. 单击页面上方的“作业管理”,在“作业”页签中单击“添加”,配置作业信息。本示例中创建一个 spark 类型的作业,实现分析设备上报数据,分别按日期、时间段、种类、区域统计销量,将分析结果输出为 CSV 文件并保存至 OBS。

配置完成后单击“确定”启动作业。

5. 作业完成后,可在 OBS 桶内看到 output 文件夹,里面有四个文件夹,每个文件夹内有一个“_SUCCESS”文件和一个“part”开头的 csv 文件。

注:本实验的样例程序分析数据时会将 UTC 时间转换为本地时间,因此数据分析结果中的日期与时间段数值会和上报时的数值不一致。

6. 登录华为云官方网站,访问数据可视化服务。

7. 单击“进入控制台”。

8. 单击“我的数据 > 新建数据连接”,在“新建数据连接”页面左侧的数据库类型中,选择“CSV 文件”,按照下表的数据规划填写配置后单击“确定”。重复本步骤建立 4 个数据连接。

9. 返回“我的大屏”页签,单击配置数据可视化服务时创建的大屏右下的编辑按钮进入编辑页面。

10. 选中“每日销量”表,在右侧数据面板选择数据类型为“CSV 文件”,数据连接选择步骤 8 添加的数据连接“salesByDate”。

11. 根据响应数据的属性名称配置字段映射。

配置“x”为“saleDate”,“y”为“saleNumber”。

12. 选中“时间段销量”表,在右侧数据面板选择数据类型为“CSV 文件”,数据连接选择步骤 8 添加的数据连接“salesByTime”。

13. 根据响应数据的属性名称配置字段映射。

配置“x”为“saleTime”,“y”为“saleNumber”。

14. 选中“种类销量”表,在右侧数据面板选择数据类型为“CSV 文件”,数据连接选择步骤 8 添加的数据连接“salesByCategory”。

15. 根据响应数据的属性名称配置字段映射。

配置“s”为“category”,“y”为“saleNumber”,并设置各个分类的名称(本示例中为“soda”,“juice”,“sport”)和图例的颜色。

16. 选中“地区销量”表,在右侧数据面板选择数据类型为“CSV 文件”,数据连接选择步骤 8 添加的数据连接“salesByArea”。

17. 根据响应数据的属性名称配置字段映射。

配置“num”为“saleNumber”。

18. 全部图表配置完成后,单击页面右上角的

可预览报表,示例如下图。

至此,通过该文档的学习,您应该对自动售货机销售分析场景有了一定的了解。接下来,可以在系列后续文章中,可以学习到更多的物联网业务场景。

点击关注,第一时间了解华为云新鲜技术~

正文完
 0