【华为云技术分享】玩转物联网IoTDA服务系列三-自动售货机销售分析场景示例
摘要:物联网解决方案中,作为数据主体的“物”可能数量会非常大,产生的数据已经无法通过传统的数据处理服务进行处理。如何分析与利用这庞大的物联网设备数据对物联网企业来说又是一个新的挑战。本文以自动售货机销售分析场景示例,分析售货销量状况。
场景简介
通过收集自动售货机系统的销售数据,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. 全部图表配置完成后,单击页面右上角的

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

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

【华为云技术分享】玩转物联网IoTDA服务系列三-自动售货机销售分析场景示例的更多相关文章
- 玩转华为物联网IoTDA服务系列三-自动售货机销售分析场景示例
场景简介 通过收集自动售货机系统的销售数据,EI数据分析售货销量状况. 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,应用侧可以到物联网平台订阅设备侧变化的通知,用户可以在控制台或通 ...
- 干货分享丨玩转物联网IoTDA服务系列五-智能家居煤气检测联动
摘要:该场景主要描述的是设备可以通过LWM2M协议与物联网平台进行交互,用户可以在控制台或通过应用侧接口创建设备联动规则,把设备上报的属性转发,通过物联网平台规则引擎转变成命令下发给其他指定设备. 场 ...
- 干货分享丨玩转物联网IoTDA服务系列四-智能网关
摘要:该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台产品详情中自定义Topic,通过应用侧接口或控制台创建数据转发规则,把设备上报的消息转发给其他华为云服务,供应用侧 ...
- 华为云实战开发】5.如何快速创建免费Git代码仓库【华为云技术分享】
1 文章目的 本文主要帮助已经掌握或者想要掌握Git的开发者,如何更好的应用Git,以及更好的将Git与DevCloud结合应用. 2 概述 2.1 版本控制系统介绍 从狭义上来说,版本控制系统是软件 ...
- OpenCV图像识别初探-50行代码教机器玩2D游戏【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- 【我的物联网成长记6】由浅入深了解NB-IoT【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- 重磅!普惠AI--华为云语音语义万次调用1元购,有奖问答@评论区等你来!【华为云技术分享】
活动快速入口:https://activity.huaweicloud.com/language_speech_promotion0.html 语音交互与自然语言处理 语音交互是一种人机交互方式,以开 ...
- 华为云·寻找黑马程序员#海量数据的分页怎么破?【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- Python正则表达式,看完这篇文章就够了...#华为云·寻找黑马程序员#【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- Spring Boot 最流行的 16 条实践解读!【华为云技术分享】
置顶:华为云618大促火热进行中,全场1折起,免费抽主机,消费满额送P30 Pro,点此抢购. Spring Boot是最流行的用于开发微服务的Java框架.在本文中,将与大家分享自2016年以来笔者 ...
随机推荐
- JDK对于Java的作用
JDK是Java Development Kit的缩写,是Java的开发工具包(SDK).JDK 是整个 Java 的核心,包括 Java 运行环境(Java Runtime Envirnment,简 ...
- 一些对dp突然的理解
突然想到了一些理解,感觉有些模糊,怕忘记,就赶紧记下来就是对于状态的设计 用01背包举例子吧,我们设计状态的时候一定是要保证所有可能在最后优秀的子状态在前面的时候是能够保留下来的也就是我们的状态设计要 ...
- [glibc] 带着问题看源码 —— exit 如何调用 atexit 处理器
前言 之前在写 apue 系列的时候,曾经对系统接口的很多行为产生过好奇,当时就想研究下对应的源码,但是苦于 linux 源码过于庞杂,千头万绪不知从何开启,就一直拖了下来. 最近在查一个问题时无意间 ...
- 23. 从零用Rust编写正反向代理,流控小姐姐的温柔一刀!
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现 ...
- C#操作Microsoft.Office.Interop.Word类库完整例子
使用Microsoft.Office.Interop.Word类库操作wor文档 一.准备工作 首先在工厂中,引用[Microsoft.Office.Interop.Word],本地安装了world, ...
- OpenAI宫斗反转反转再反转,到底是资本任性还是人性扭曲?
最近OpenAI发生了一件大事,创始人山姆·奥特曼被董事会开除了,这在AI界引起了轩然大波. 事件经过 我们先来捋一下事件经过,时间以美国旧金山当地时间为准. 11月17日 11月17日12点(北京时 ...
- FC 交换机基础配置
目录 Primera600 存储服务器 FC 交换机 交换机信息查看 交换机配置管理 用户管理 以太网配置 端口配置管理 别名配置 证书管理 角色管理 Zone 管理 参考网址 Primera600 ...
- 🎉开发者的福音:TinyVue 组件库文档大优化!类型更详细,描述更清晰!
你好,我是 Kagol. 前言 从今年2月份开源以来,有不少朋友给我们 TinyVue 组件库提了文档优化的建议,这些建议都非常中肯,我们也在持续对文档进行优化,并且从中总结出了大家对于文档优化的一些 ...
- SQL执行insert into后返回主键ID
1 select @@identity 2 select SCOPE_IDENTITY() 3 select IDENT_CURRENT('table') 注解:@@IDENTITY 返回当前会话的所 ...
- UMP系统概述
突出性能: 1.低成本,高性能 2.开源数据库 UMP在设计时要实现一下原则: 多租户: