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

场景简介

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

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服务系列三-自动售货机销售分析场景示例的更多相关文章

  1. 玩转华为物联网IoTDA服务系列三-自动售货机销售分析场景示例

    场景简介 通过收集自动售货机系统的销售数据,EI数据分析售货销量状况. 该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,应用侧可以到物联网平台订阅设备侧变化的通知,用户可以在控制台或通 ...

  2. 干货分享丨玩转物联网IoTDA服务系列五-智能家居煤气检测联动

    摘要:该场景主要描述的是设备可以通过LWM2M协议与物联网平台进行交互,用户可以在控制台或通过应用侧接口创建设备联动规则,把设备上报的属性转发,通过物联网平台规则引擎转变成命令下发给其他指定设备. 场 ...

  3. 干货分享丨玩转物联网IoTDA服务系列四-智能网关

    摘要:该场景主要描述的是设备可以通过MQTT协议与物联网平台进行交互,用户可以在控制台产品详情中自定义Topic,通过应用侧接口或控制台创建数据转发规则,把设备上报的消息转发给其他华为云服务,供应用侧 ...

  4. 华为云实战开发】5.如何快速创建免费Git代码仓库【华为云技术分享】

    1 文章目的 本文主要帮助已经掌握或者想要掌握Git的开发者,如何更好的应用Git,以及更好的将Git与DevCloud结合应用. 2 概述 2.1 版本控制系统介绍 从狭义上来说,版本控制系统是软件 ...

  5. OpenCV图像识别初探-50行代码教机器玩2D游戏【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  6. 【我的物联网成长记6】由浅入深了解NB-IoT【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  7. 重磅!普惠AI--华为云语音语义万次调用1元购,有奖问答@评论区等你来!【华为云技术分享】

    活动快速入口:https://activity.huaweicloud.com/language_speech_promotion0.html 语音交互与自然语言处理 语音交互是一种人机交互方式,以开 ...

  8. 华为云·寻找黑马程序员#海量数据的分页怎么破?【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  9. Python正则表达式,看完这篇文章就够了...#华为云·寻找黑马程序员#【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  10. Spring Boot 最流行的 16 条实践解读!【华为云技术分享】

    置顶:华为云618大促火热进行中,全场1折起,免费抽主机,消费满额送P30 Pro,点此抢购. Spring Boot是最流行的用于开发微服务的Java框架.在本文中,将与大家分享自2016年以来笔者 ...

随机推荐

  1. CF1363C

    题目简化和分析: 首先注意特判 $ x $ 在叶子节点上 ( 即度为 \(1\) ). 因为每人都采用最优策略所以不可能有人执着的为别人开路. 就是不在同一颗子树上挣扎,会从外围不断清理. 但是每步必 ...

  2. React生命周期函数(迭代合并:react 16.3)

    本文分两部分,上面的是react16.3,下部分是老版本 react 16.3生命周期更新解析 ------ 老react版本生命周期 1.组件生命周期的执行次数 只执行一次: constructor ...

  3. nginx参数调优能提升多少性能

    前言 nginx安装后一般都会进行参数优化,网上找找也有很多相关文章,但是这些参数优化对Nginx性能会有多大影响?为此我做个简单的实验测试下这些参数能提升多少性能. 声明一下,测试流程比较简单,后端 ...

  4. [Python急救站课程]斐波那契数列的计算吧

    斐波那契数列的计算 a, b = 0, 1 while a < 1000: # 输出不大于1000 的序列.while表示循环 print(a, end=',') a, b = b, a + b

  5. Util应用框架基础(三) - 面向切面编程(AspectCore AOP)

    本节介绍Util应用框架对AspectCore AOP的使用. 概述 有些问题需要在系统中全局处理,比如记录异常错误日志. 如果在每个出现问题的地方进行处理,不仅费力,还可能产生大量冗余代码,并打断业 ...

  6. Basic concepts of complex number

    目录 虚数的引入 复数和虚数的关系 Example - 分辨一个数 判断两个复数是否相等的条件 共轭复数 复数的几何意义.复平面的认识 求复数的模 Reference 虚数的引入 假设有一个数,可以叫 ...

  7. Kafka 集群如何实现数据同步?

    哈喽大家好,我是咸鱼 最近这段时间比较忙,将近一周没更新文章,再不更新我那为数不多的粉丝量就要库库往下掉了 T﹏T 刚好最近在学 Kafka,于是决定写篇跟 Kafka 相关的文章(文中有不对的地方欢 ...

  8. numpy数组基础

    目录 创建数组 多维数组切片 数组属性 使用数组 数组特殊运算符 索引进阶 花式索引 创建数组 在numpy中,创建数组有很多种方法,例如如下的例子: import numpy as np sws_1 ...

  9. C/C++ 常用加密与解密算法

    计算机安全和数据隐私是现代应用程序设计中至关重要的方面.为了确保数据的机密性和完整性,常常需要使用加密和解密算法.C++是一种广泛使用的编程语言,提供了许多加密和解密算法的实现.本文将介绍一些在C++ ...

  10. HDFS存储原理

    冗余数据保存问题: 一个数据块默认被保存三次 好处:1.加快数据传输错误(假如要同时访问数据块1 因为他冗余存储就会有3份 所以会加快数据传输速度) 2.很容易检查数据错误 3.保证数据可靠性 数据的 ...