在模拟器下方区域填写上报数据内容后单击“发送消息”。
![]()
上报数据的样例如下,请自行修改参数的取值模拟真实设备数据:
样例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秒深圳福田的自动贩卖机卖出了两支果汁饮料。
本实验共上报十条消息,参数取值如下:
category |
number |
area |
timeStamp |
soda |
1 |
SZLH |
20190425T091157Z |
juice |
1 |
SZFT |
20190425T121511Z |
sport |
1 |
SZLH |
20190425T172433Z |
juice |
2 |
SZFT |
20190426T170005Z |
soda |
1 |
SZNS |
20190426T190905Z |
juice |
1 |
SZNS |
20190427T085959Z |
juice |
2 |
SZLH |
20190427T111111Z |
soda |
3 |
SZFT |
20190428T182215Z |
sport |
1 |
SZLH |
20190429T205901Z |
soda |
1 |
SZLG |
20190430T225045Z |
发送消息成功后,右侧日志显示信息推送成功。
基于IoT平台的自贩机销量分析
您在体验过程中有任何疑问,都可以在此留言反馈>>
1. 介绍
背景介绍
物联网解决方案中,作为数据主体的“物”可能数量会非常大,产生的数据已经无法通过传统的数据处理服务进行处理。如何分析与利用这庞大的物联网设备数据对物联网企业来说又是一个新的挑战。
华为物联网平台提供规则引擎能力,支持将设备上报的数据转发至华为云其他云服务,可实现将海量数据通过数据接入服务(DIS)转发至MapReduce服务(MRS),分析后再由数据可视化服务(DLV)读取数据呈现为可视化报表,实现数据的一站式采集、处理和分析。
您将建立什么
在本次Codelab中,我们基于华为IoT平台设备接入服务、数据接入服务、MapReduce服务等服务构建一个物联网大数据分析解决方案,实现对自贩机上报的数据分析并可视化。
您将会学到什么
理解物联网平台如何利用设备数据。
掌握设备上报数据到物联网平台的原理和方法。
如何利用大数据处理平台处理物联网设备数据。
您需要什么
已实名认证的华为云账号
自贩机实验工具包(点此下载)
2. 资源准备
进入控制台
打开浏览器,输入华为云网站地址https://www.huaweicloud.com/,在上方菜单栏中单击“登录”。
在账号登录界面输入账户名、密码,单击“登录”。
进入华为云控制台,更改当前区域为“华北-北京四”。以保证后续实验都在该区域下进行。
安装并配置JDK1.8
下载JDK 1.8版本,如“jdk-8u161-windows-x64.exe”,并双击进行安装。官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
以下以WIN7为例说明如何配置环境变量。右键单击“计算机”,选择“属性”。
单击“高级系统设置”。
单击“环境变量”。
配置系统变量。需配置3个变量:JAVA_HOME、Path、CLASSPATH(不区分大小写)。若变量名已经存在,则单击“编辑”;若变量名不存在,则单击“新建”。一般Path变量存在,JAVA_HOME变量和CLASSPATH变量需要新增。
JAVA_HOME指明JDK安装路径,配置示例:C:\ProgramFiles\Java\jdk1.8.0_45。此路径下包括lib,bin等文件夹。
Path变量使系统可以在任何路径下识别Java命令。如果Path变量已经存在,则需在变量值最后添加路径,配置示例:;C:\Program Files\Java\jdk1.8.0_45\bin;C:\Program Files\Java\jdk1.8.0_45\jre\bin。
两个路径之间需要使用“;”分割,分号是英文半角。
CLASSPATH为Java加载类(class或lib)路径,只有配置CLASSPATH,Java命令才能识别。配置示例:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(路径以“.”开始,表示当前路径)。
重启系统,使环境变量生效。
选择“开始 > 运行”,输入“cmd”,执行命令:java -version、java、javac。如果命令可以执行,则说明环境变量配置成功。
创建虚拟私有云VPC
登录华为云控制台,在“所有服务”下单击“网络>虚拟私有云”,进入网络控制台,点击“创建虚拟私有云”进入创建界面。
基本信息:
当前区域:华北-北京四
名称:保持默认
网段:192.168.0.0/16
子网配置:
可用分区:可用区1
子网名称:保持默认
子网网段:192.168.0.0/24
高级配置:默认配置
单击“立即创建”。
单击“虚拟私有云”界面,进入自己创建的虚拟私有云界面。可查看到已创建好的虚拟私有云。
3. 创建MapReduce集群
登录华为云官方网站,访问MapReduce服务。
单击“立即购买”,创建集群,以下配置仅为样例。
**注:**下图以新版自定义购买界面为例,需要在“购买集群”界面点击右上角的“点击体验新版”,然后选择“自定义购买”。
软件配置
当前区域:华为-北京四。
集群名称:保持默认。
集群版本:MRS 2.0.5
集群类型:分析集群。组件勾选Spark,系统会自动勾选Hive和Tez。“Hive使用外部数据源存储元数据”保持关闭。
Kerberos认证:关闭。
用户名:固定为“admin”不可修改。
密码:自定义。
确认密码:再次输入密码。
硬件配置
计费模式:按需计费
网络配置:全部保持默认
实例:为节省实验费用,关闭集群高可用,并将分析Core的实例数量修改为1,其余保持默认值。密码自定义。
高级配置无需配置,直接点击“立即购买”。
集群创建需要约15到30分钟,待集群状态变更为“运行中”则表示创建成功,在集群创建期间您可继续下面的操作。
4. 创建OBS桶
登录华为云官方网站,访问对象存储服务。
单击“管理控制台”进入对象存储服务管理控制台。
单击页面右上角的“创建桶”,根据需求选择桶规格后,单击“立即创建”。
建议除多AZ修改为关闭外,其余参数保持默认。
5. 创建数据接入通道和转储任务
登录华为云官方网站,访问数据接入服务。
单击“立即购买”,购买接入通道,以下配置仅为样例。
区域:保持默认。
通道名称:保持默认。
通道类型:保持默认。
分区数量:1。
生命周期:1。
源数据类型:JSON。
自动扩缩容:保持默认。
Schema开关:保持默认。
高级配置:保持默认。
通道购买成功后,请先回到MRS的控制台确认MRS集群的状态是否已变成运行中,如果是运行中,请继续下面的操作添加转储任务,否则请先跳过下面的操作先进行“注册设备并创建数据转发规则”,待MRS集群状态变为运行中之后再回来添加转储任务。
点击通道名称进入“通道管理”页面。
单击需要查看的通道名称,进入所选通道的管理页面,选择“转储管理”页签。
单击“添加转储任务”按钮。
在弹出的“添加转储任务”页面配置转储相关配置项。
源数据类型:默认为通道源数据类型 转储服务类型:选择“MRS”。 任务名称:自定义,如“物联网_to_mrs”。 转储文件格式:选择“Text”。 MRS集群:选择已创建的MRS集群。需要等集群创建成功后才可在此处选择。 HDFS路径:选择转储文件要存储的路径,本文中选择“/user”。 转储文件目录:自定义转储文件存放的文件夹名称,如“temp”。 偏移量:选择“最新”。 数据转储周期:修改为“60”。 数据临时桶:选择已创建的桶。 数据临时目录:自定义,如“temp”。
单击“立即创建”。
6. 注册设备并创建数据转发规则
登录华为云官方网站,访问设备接入管理服务。
开通服务后,进入控制台。
从左侧导航打开“产品”页面,单击页面右上角的“创建产品”。
创建自贩机产品。
所属资源空间:保持默认。
产品名称:自定义,如“VendingMachine”。
协议类型:选择MQTT。
数据格式:选择JSON。
厂商名称:自定义,如“Huawei_IoT”。
选择模型:不勾选。
所属行业:选择智慧城市
设备类型:自定义,如“VendingMachine”。
产品创建成功后,进入“设备 > 所有设备”页面,单击右上角的“添加设备”,填写设备注册参数。
所属资源空间:与创建产品时的资源空间保持一致。
选择产品:选择之前创建的产品模型,如“VendingMachine”。
设备标识码:自定义,填写任意包含数字或英文字母的字符串。
设备ID:填写设备标识码后自动生成,无需修改。 设备名称:自定义,如“VendingMachine001”。
设备认证类型:保持默认。
预置密钥/确认秘钥:无需填写。
填写完成后单击“确定”,请注意保存注册成功返回的“设备ID”和“密钥”。
通过左侧导航进入“规则”页面,单击“云服务对接配置”,按照页面提示配置与华为云对接。
完成对接配置后,单击“创建规则”,选择“数据转发规则”,填写规则内容,填写完成后单击“立即创建”
规则名称:自定义,如“to_DIS”。
数据类型/过滤产品:保持默认。
转发至服务:数据接入服务
区域:cn-north-4
通道:选择已创建的通道名称。
7. 设备上报数据
注:以下操作需要完成前面的全部配置后再进行。
双击启动设备接入模拟器(HubSimulator.jar),切换到MQTT设备模拟器页签。
输入服务IP,设备ID,设备密钥,单击“建立连接”。
服务IP:进入设备接入管理服务控制台查看,填写为MQTTS接入信息的域名。
设备ID:注册设备成功后返回的设备ID。
设备密钥:注册设备成功后返回的密钥。
**注:**若无法建立连接,请在系统开始菜单输入“cmd”打开命令行,输入“ping 服务IP:服务端口”查看您的主机是否能和华为云物联网平台正常通信,若无法正常通信,请更换主机的网络环境。
建立连接成功后,右侧日志显示MQTT服务连接成功。
在模拟器下方区域填写上报数据内容后单击“发送消息”。
上报数据的样例如下,请自行修改参数的取值模拟真实设备数据:
样例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秒深圳福田的自动贩卖机卖出了两支果汁饮料。
本实验共上报十条消息,参数取值如下:
发送消息成功后,右侧日志显示信息推送成功。
登录MRS控制台,在“集群列表 > 现有集群”中单击集群名称进入集群管理页面。
进入“文件管理”页面,在“HDFS文件列表”页签中查看“/user”文件夹下是否存在转储文件目录如“temp”,并进入temp文件夹查看文件夹内是否存在文件。
**注:**DIS会将数据合并转发,所以此处的文件数量和上报的数据条数可能会不一致。
8. 创建数据处理作业
创建数据处理作业前,我们需要先获取华为云账号的AK/SK并上传作业的样例程序。
登录华为云后,从右上角下拉菜单进入华为云账号中心。
在“基本信息”页中点击“管理我的凭证”。
在“我的凭证”页面中,选择“访问密钥”页签,并单击“新增访问密钥”。
输入当前用户的华为云登录密码,并输入短信验证码,单击“确定”按钮后,会自动下载访问密钥信息,包括“Access Key Id”和“Secret Access Key”信息,请妥善保管。
解压“自贩机实验工具包.zip”,获取作业样例程序“IoT_MRS_Demo.jar”。
登录对象管理服务控制台,点击已创建的桶名称进入桶管理页面。
从控制台左侧导航进入“对象”页面,单击“新建文件夹”新建一个名称为“jar”的文件夹。
进入“jar”文件夹,单击“上传对象”,将“IoT_MRS_Demo.jar”上传到OBS,存储类别为“标准存储”。
然后添加作业
登录MRS管理控制台,选择“集群列表 > 现有集群”,单击集群名进入集群信息页面。
单击页面上方的“作业管理”,在“作业”页签中单击“添加”,配置作业信息后单击 “确定”启动作业。
作业类型:SparkSubmit
作业名称:自定义,如“IoT_MRS_Demo”。
执行程序路径:单击“OBS”,选择已上传的作业样例jar包。
运行程序参数:左侧选择“--class”右侧填写“com.huawei.bigdata.spark.examples.SalesStatistics”。
执行程序参数:输入“AK SK inputpath outputpath”;
其中AK SK填写华为云账号的AK、SK,可在账号中心获取;
inputpath填写文件输入路径,在本实验中为DIS的转储路径,即“/user/temp”;
outputpath填写文件输出路径,在本实验中设置为“s3a://{OBS桶名称}/output”,例如“s3a://obs-213d/output”。
服务配置参数无需填写。
待作业执行状态变为完成后,可登陆OBS控制台,在OBS桶内看到分析完成的文件。
**注:**本实验的样例程序分析数据时会将UTC时间转换为本地时间,因此数据分析结果中的日期与时间段数值会和上报时的数值不一致。
9. 创建数据大屏并关联数据(可选)
特别说明:如果数据可视化服务DLV提供30天免费试用,请开通免费试用并按照实验步骤完成实验;如果免费试用下线,建议您参考实验手册了解即可,无需完成实验。
登录华为云官方网站,访问数据可视化服务。
单击“体验试用”获取30天的基础版免费试用。
进入控制台,在“我的数据”页面单击“新建数据连接”,在“新建数据连接”页面左侧的数据库类型中,选择“CSV文件”,填写配置后点击确定。
重复本步骤创建四个数据连接,数据规划如下:
名称:四个数据连接分别为“salesByDate”、“salesByTime”、“salesByCategory”和“salesByArea”。
Access Key/ Secret Access Key:填写华为云账号的AK,SK,可在账号中心获取。
文件来源:选择“OBS文件”。
文件路径:四个连接分别选择output文件夹内和连接同名的文件夹内的csv文件。
返回控制台首页,在“我的大屏”页面新建一个大屏。
选择空白模板,输入大屏名称后,单击“创建大屏”
单击“文本 > 标题”新增一个标题。
在右侧“数据”面板修改静态数据中“value”的值为“每日销量”
在大屏内拖动标题到左上角,并拉伸成合适的形状
单击“常用图表 > 线状图”新增一个线状图报表。
拖动图表到标题下面并拉伸成合适的形状。
在右侧数据面板选择数据类型为“CSV文件”,数据连接选择“salesByDate”。
配置字段映射。
配置 “x”为 “saleDate”, “y”为 “saleNumber”。
添加一个名称为“时间段销量”的标题,再添加一个柱状图,放到大屏右上角。
选中柱状图,在右侧数据面板选择数据类型为“CSV文件”,数据连接选择 “salesByTime”。
配置字段映射。
配置 “x”为 “saleTime”, “y”为 “saleNumber”。
添加一个名称为“种类销量”的标题,再添加一个饼状图,放到大屏左下角。
选中饼状图,在右侧数据面板选择数据类型为“CSV文件”,数据连接选择 “salesByCategory”。
配置字段映射。
配置 “s”为 “category”, “y”为 “saleNumber”,并设置各个分类的名称(本实验中为“soda”,“juice”,“sport”)和图例的颜色。
添加一个名称为“地区销量”的标题,再添加一个区域排行图,放到大屏右下角。
选中区域排行图,在右侧数据面板选择数据类型为“CSV文件”,数据连接 “salesByArea”。
配置字段映射。
配置 “num”为 “saleNumber”。
全部图表配置完成后,单击页面右上角的
可预览报表,示例如下图。
10. 恭喜您
祝贺您,您已经完成了自贩机销量分析系统的开发,并学到了:
理解物联网平台如何利用设备数据。
掌握设备上报数据到物联网平台的原理和方法。
如何利用大数据处理平台处理物联网设备数据。
完成实验后请自行释放付费资源,避免持续扣费。
11. 参与互动赢好礼
欢迎体验华为云IoT CodeLabs,点击下方按钮可返回华为云IoT CodeLabs论坛帖参与活动,有机会赢取荣耀手环、移动电源等大奖哦!