【云驻共创】华为云之手把手教你搭建IoT物联网应用充电桩实时监控大屏(下)

举报
愚公搬代码 发表于 2023/07/04 16:38:40 2023/07/04
【摘要】 在本案例中,我们实现下述场景:设备上报数据到物联网平台,物联网平台将数据转储至云数据库(RDS),Astro轻应用(AstroZero)从云数据库(RDS)读取数据并结合可视化组件进行展示。 1. 设备接入平台:使用设备模拟器连接华为云loT平台并上报数据数据;2. 转储至RDS:购买云数据库RDS实例,并配置数据转发规则;3. 搭建Astro大屏应用:导入项目资源包,修改数据源,配置组件

前言

1.什么是充电桩

充电桩是一种提供电动车辆充电服务的设备。由于电动车辆运行时需要储存大量电能,因此需要进行定期充电。充电桩就是为了满足电动车辆充电需求而生产的设备。

充电桩的来源可以追溯到20世纪80年代初期,当时电动车辆的充电设施十分有限。随着电动车辆的普及,充电桩的需求量也逐渐增加。充电桩的作用是提供电能,使电动车辆能够充电,并提高电动车辆在路上行驶的续航里程。现在,充电桩已经成为电动车辆运营的重要基础设施之一。

除了提供充电服务外,充电桩还具有很多其他的作用。例如,充电桩可以对电动车辆进行监控,以确保充电过程安全可靠;充电桩还可以通过互联网联网,实现智能充电和远程控制;此外,充电桩还可以为电动车辆提供各种定制化的服务,例如限时、限电等。

2.什么是IOT

IOT是指物联网(Internet of Things)。物联网是指各种物理设备、传感器、软件、互联网等技术的结合,通过互联网相互连接和通信,实现设备之间的互联互通,并将数据传输到云端进行处理和分析,从而实现设备之间的自动交互、远程监测和控制等功能。

简单来说,物联网就是把所有的物品和设备都连接到互联网上,让它们之间可以互相通信和交互,从而实现更加智能的功能和服务。通过物联网,我们可以得到更准确、更及时、更全面的数据和信息,更好地满足人们的需求和提高生产效率。例如,智能家居、智能工厂、智能城市等都是物联网的应用场景。

loT是物理世界到数字世界的桥梁,是构建行业解决方案的核心竞争力
image.png

3.什么是端、边、云、应用协同

端、边、云、应用协同是一种新型的计算架构,支持从端到边、边到云的计算协同和数据协同。在这个架构下,不同的设备(如传感器、智能终端等)可以与边缘计算设备、云平台和应用程序协同工作,共同处理、存储和分析数据,实现智能化决策和应用。

具体来说,端指的是智能终端、传感器等设备,边指的是边缘计算设备、网关等,云指的是云计算平台,应用指的是各种应用程序。在这个架构下,端设备可以通过边缘计算设备,将数据上传到云平台进行处理和存储;也可以通过边缘计算设备,从云平台获取数据和计算结果,边缘计算设备可以对数据进行预处理和筛选,减少数据传输的负荷,提高数据传输效率;应用程序可以通过云平台,获取到边缘设备和端设备上传的数据,并进行分析和决策,将结果反馈到边缘设备和端设备,实现智能化控制。

这种架构的优点是,可以将不同设备的计算和处理能力进行有效整合,充分利用各设备的优势,提高数据处理的效率和准确性,从而实现智能化决策和应用。
image.png

4.什么是Astro轻应用

Astro轻应用是一款聚焦于用户任务场景的全球首款智能轻应用平台,旨在通过机器学习等技术,将用户的需求和任务场景快速匹配,并提供轻量化的应用服务,帮助用户更加高效地完成工作和生活中的各种任务。例如,用户可以通过Astro轻应用平台快速查找和使用各种工具、服务和应用程序,如预订酒店、点餐、购买电影票等。同时,Astro轻应用还可以帮助用户简化业务流程,提高工作效率,实现更加智能化的工作方式。

二、玩转lOT动态实时大屏(沙箱实验)

云实验平台地址:https://lab.huaweicloud.com/testdetail_2312?ticket=ST-8521673-Y1iBbVulXQ16TdWUYY3ZirlY-sso

image.png

首先得预置实验环境

image.png

进入【实验操作桌面】,打开浏览器进入华为云登录页面。选择【IAM用户登录】模式,于登录对话框中输入系统为您分配的华为云实验账号和密码登录华为云,如下图所示:注意:账号信息详见实验手册上方,切勿使用您自己的华为云账号登录。

image.png

1.设备接入平台

1.1 开通标准版免费单元

① 在控制台总览页,输入“iotda”关键词进行搜索,选择结果列表中的“设备接入 IoTDA”,进入设备接入控制台。

image.png

② 在左侧导航栏,单击“切换”,选择标准版,单击“开通免费单元”。

注:如果已开通IoTDA标准版免费单元,请进入实例详情页进行退订,然后重新开通。

image.png

③ 弹窗提示“标准版实例免费使用”,单击“确定”完成开通。

√ 实例名称:使用默认值即可,即freeStandardInstance

image.png

④ 单击标准版实例选项卡右侧的“切换实例”,切换并使用标准版实例。

image.png

1.2 创建产品

① 选择左侧导航栏“产品”,单击页面右上角“创建产品”,填写参数并“确定”。

√ 所属资源控制:选择默认资源空间

√ 产品名称:充电桩

√ 协议类型:MQTT

√ 数据格式:JSON

√ 设备类型选择:自定义类型

√ 设备类型:充电桩

image.png

② 弹窗提示“创建产品成功”,单击“查看详情”进入产品详情页。
image.png

1.3 导入产品模型

① 回到实验桌面双击“Xfce终端”打开Terminal,输入以下命令下载保存产品模型文件至本地桌面。

image.png

cd Desktop/
wget https://iot-tools.obs.cn-north-4.myhuaweicloud.com/charging-station/Charging_Profile.zip

下载保存的产品模型文件如下:
image.png

② 回到产品详情页,在“模型定义”页签,单击“上传模型文件”,选择添加充电桩物模型文件,然后单击“确定”完成上传。
image.png

③ 上传成功,查看充电桩模型定义详情。

查看ChargingInfo服务下定义的订单属性,如下图所示。
image.png

查看BasicInfo服务下定义的设备基础属性,如下图所示。
image.png

1.4 注册设备

① 选择左侧导航栏“设备 > 所有设备”,单击页面右上角“注册设备”,填写参数并“确定”。

√ 所属资源空间:选择默认资源空间

√ 所属产品:选择上一步中创建的产品,即充电桩

√ 设备标识码:自定义,如charging_machine_001

√ 设备名称:充电桩001

√ 设备ID:由平台自动生成的字符串前缀+设备标识码组合而成,自动填充,无需修改

√ 设备认证类型:密钥

√ 密钥/确认密钥:自定义,不少于8位,如12345678

image.png

② 弹窗提示“设备创建成功”,单击“保存并关闭”,返回设备列表。

下载保存的DEVICES-KEY.txt文本文件中记录了设备ID和密钥信息,请妥善保管。

image.png

③ 查看刚注册的充电桩设备,显示为“未激活”状态。
image.png

1.5 设备上报数据

① 回到实验桌面双击“Xfce终端”打开Terminal,输入以下命令下载保存“HubSimulator.jar”至本地桌面。

cd Desktop/
wget https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com:443/20221019/HubSimulator.jar

② 继续执行以下命令打开设备接入模拟器(HubSimulator.jar),然后切换到MQTT设备模拟器页签。

/usr/local/share/jre1.8.0_181/bin/java -jar HubSimulator.jar

image.png

③ 在MQTT设备模拟器页签下,配置好以下参数后,点击“建立连接”按钮。

image.png

√ 服务IP:进入设备接入控制台,在左侧栏选择“总览”,点击“接入信息”,复制使用MQTT/MQTTS接入信息的域名。

image.png

√ 设备ID/设备密钥:注册设备成功后返回的设备Id和密钥。回到实验桌面双击“Xfce终端”打开Terminal,输入以下命令获取:

cat /home/user/Downloads/DEVICES-KEY.txt

image.png

建立连接成功后,右侧日志显示MQTT服务连接成功。回到物联网所有设备列表,设备状态变更为“在线”,如下图所示:

image.png

④ 在模拟器窗口中的发送消息页签下,填写Topic及上报消息样例,然后单击“发送消息”。
image.png

在发送消息页签下的Topic栏中输入以下代码:

$oc/devices/{device_id}/sys/properties/report

其中的{device_id}需要替换成实际设备ID。

在消息编辑栏中输入以下代码,即上报内容示例如下:

{
    "services": [{
        "properties": {
            "orderID": "0000005",
            "area": "武汉",
            "orderTime": "20230117T192335Z",
            "usingPort": "07",
            "amount": 32.5
        },
        "service_id": "ChargingInfo",
        "event_time": null
    }]
}

单击“发送消息”。发送消息成功后,右侧日志显示信息推送成功(图片仅为示意,请以实际上报数据为准)。

⑤ 回到设备列表页,单击设备标识码,进入设备详情页。可以看到设备在线,且在“最新上报数据”区域正常显示设备上报属性值。

image.png

2.数据转储至RDS

2.1 登录数据库实例

① 在控制台总览页,输入“rds”关键词进行搜索,选择结果列表中的“云数据库 RDS”,进入云数据库RDS控制台。
image.png

② 数据库实例初始化完成,并显示运行正常,单击“登录”。
image.png

③ 输入登录用户名和密码,测试连接成功后,单击“登录”,进入数据管理服务DAS首页。

√ 登录用户名:预置实验环境中云数据库RDS实例的用户名,如“root”

√ 密码:预置实验环境中云数据库RDS实例的密码

image.png

√ 定时采集:选择“开启”

√ SQL执行记录:选择“开启”

image.png

2.2 导入数据库表

① 回到实验桌面双击“Xfce终端”打开Terminal,输入以下命令下载保存数据库资源包至本地桌面。

注意:请务必双击“Xfce终端”打开新的Terminal窗口,禁止在运行设备模拟器的Terminal窗口操作。

cd Desktop/
wget https://iot-tools.obs.cn-north-4.myhuaweicloud.com/charging-station/DAS_Imexport_Export_all_sql.tar.gz

继续执行如下命令解压获取SQL导入脚本。

tar -zxvf DAS_Imexport_Export_all_sql.tar.gz

解压获取的SQL脚本文件,如下图所示:
image.png

② 回到数据管理服务DAS首页,单击“新建数据库”,在弹窗中输入数据库名称,并“确定”。

√ 数据库名称:自定义,如“iotda_notify_all”

√ 字符集:选择“utf8mb4”

image.png

③ 在顶部导航栏选择“导入·导出 > 导入”,单击“新建任务”,填写参数并创建导入任务。

√ 导入类型:sql

√ 文件来源:上传文件

√ 附件存放位置:点击右侧“创建OBS桶”并在弹窗中填写桶名称,如obs-xxx,完成创建;然后选择新创建的OBS桶

√ 选择附件:上传刚下载解压得到的SQL执行脚本文件

√ 数据库:选择刚创建的数据库,如iotda_notify_all

√ 字符集:选择“自动检测”

√ 选项:两项都可以勾选上

image.png

④ 弹窗提示如下,单击“确定”。
image.png

⑤ 导入任务执行完成,回到首页,单击库名进入库管理列表,展开表预览如下图所示:

image.png

2.3 绑定弹性公网IP

① 切换到云数据库RDS控制台,单击“实例名称”进入实例详情页面。
image.png

② 选择左侧导航栏“连接管理”,在右侧连接信息区域,单击公网地址栏的“绑定”,在弹窗中选择预置的弹性公网IP,单击“是”完成绑定。

image.png

绑定完成,结果如下图所示:
image.png

③ 向下滚动页面到安全组规则,选择“sg-hce”页签,查看入方向规则,单击“添加入方向规则”,在弹窗中选择“MySQL (3306)”,然后单击“确定”进行放通。

image.png

2.4 配置数据转发规则

① 切换到设备接入控制台,选择左侧导航栏“规则 > 数据转发”,单击“创建规则”。
image.png

② 设置转发数据:填写基本信息,并配置数据过滤语句后,单击“创建规则”。

√ 规则名称:充电桩转储MySQL

√ 数据来源:设备属性

√ 触发事件:设备属性上报

√ 资源空间:选择默认资源空间,如“DefaultApp_xxx***”

注:只有这里选择了单个资源空间,“数据过滤语句”区域才会出现“快速配置”选项。

image.png

√ 数据过滤语句:单击“快速配置”,勾选“符合以下所选条件的数据”,“所属产品”选择“充电桩”,单击“确定”。

image.png

③ 弹窗提示“规则创建成功”,单击“继续设置”,进入设置转发目标。
image.png

④ 设置转发目标:单击“添加”,填写转发目标信息。
image.png

√ 转发目标:选择“MySQL数据库”

√ 数据库实例地址:填写给数据库实例绑定的弹性公网IP和数据库实例访问端口(即3306),如 121...67:3306

√ 数据库名称:从数据管理服务DAS控制台获取数据库名称,如iotda_notify_all

√ 访问账户/访问密码:填写数据库实例的登录账户和登录密码,从预置环境信息中获取

image.png

√ SSL:本实验中暂不启用,即关闭。

配置完成,单击“下一步:转发数据配置”,会连接数据库。选择转存表格,配置流转数据和数据库表的映射关系,然后单击“确定”。

image.png

√ 转存至表格:选择数据库中用于存储数据的数据表,如charging_order

√ 转存配置:先选择目标存储字段,再填写转发字段,对应关系如下:

目标存储字段为orderID,对应的转发字段如下:

notify_data.body.services[0].properties.orderID

目标存储字段为area,对应的转发字段如下:

notify_data.body.services[0].properties.area

目标存储字段为orderTime,对应的转发字段如下:

notify_data.body.services[0].properties.orderTime

目标存储字段为usingPort,对应的转发字段如下:

notify_data.body.services[0].properties.usingPort

目标存储字段为amount,对应的转发字段如下:

notify_data.body.services[0].properties.amount

⑤ 弹窗提示“操作成功”,单击“设置完成”。

image.png

⑥ 单击“启动规则”,激活配置好的数据转发规则。
image.png

界面显示“规则运行中”,单击左上角返回箭头,返回规则列表。
image.png

2.5 验证数据转发结果

① 回到MQTT设备模拟器窗口,重新上报一次数据。
image.png

在发送消息页签下的Topic栏中输入以下代码:

$oc/devices/{device_id}/sys/properties/report

其中的{device_id}需要替换成实际设备ID。

在消息编辑栏中输入以下代码,即上报内容示例如下:

{
    "services": [{
        "properties": {
            "orderID": "0000005",
            "area": "武汉",
            "orderTime": "20230117T192335Z",
            "usingPort": "07",
            "amount": 32.5
        },
        "service_id": "ChargingInfo",
        "event_time": null
    }]
}

单击“发送消息”。

② 回到数据管理服务DAS首页,单击数据库名称,进入库管理页面。

image.png

③ 单击“打开表”,打开数据库表。

image.png

可以看到数据库表中已生成一条记录,且与设备上报属性值一致。
image.png

3.搭建Astro大屏应用

3.1 开通AstroZero服务

① 在控制台总览页,输入“Astro”关键词进行搜索,选择结果列表中的“Astro轻应用”,进入Astro轻应用控制台。

image.png

② 单击页面右上角“免费试用”,并在弹窗中确认“免费开通”。

注:如果已开通Astro轻应用免费试用,直接下一步“进入首页”即可。

image.png

③ 等待共享实例免费版开通成功,单击“进入首页”,即可进入Astro轻应用应用开发主页。

image.png

Astro轻应用应用开发主页预览如下图所示:

image.png

3.2 导入项目包

① 在“应用开发”页面,单击左侧导航栏的“业务大屏”,即可进入Astro Canvas界面。
image.png

② 回到实验桌面双击“Xfce终端”打开Terminal,输入以下命令下载保存项目包至本地桌面。

注意:请务必双击“Xfce终端”打开新的Terminal窗口,禁止在运行设备模拟器的Terminal窗口操作。

cd Desktop/
wget https://iot-tools.obs.cn-north-4.myhuaweicloud.com/charging-station/AstroCanvas_ChargingSmartScreen.zip

③ 回到Astro Canvas界面,单击“导入项目包”,选择刚下载的项目包,并“打开”。
image.png

项目包导入成功,项目卡片预览如下图所示:
image.png

3.3 修改数据源

① 继续在Astro Canvas界面,切换到“数据中心”页签,选择左侧导航栏“数据源管理”,单击“iot_mysql_data”数据源卡片。

image.png

② 修改好参数后,先单击“连接测试”,确认提示连接成功后,再单击“保存”。
image.png

√ 域名:填写数据库实例绑定的弹性公网IP,如 121...67

√ 端口:固定为3306

√ 用户名/密码:填写数据库实例的登录账户和登录密码,从预置环境信息中获取

image.png

√ 数据库名称:从数据管理服务DAS控制台获取数据库名称,如iotda_notify_all

3.4 修改数据集

① 继续在“数据中心”页签下,选择左侧导航栏“数据集管理”,单击数据集卡片进行修改。

image.png

② 修改“订单总金额”数据集,直接单击“刷新数据”,右侧数据预览OK,然后单击“保存”。

√ SQL查询语句:

select sum(amount) as totalCoast, count(amount) as totalNum from charging_order

注:图例中数据预览结果仅为样例,请以实际数据为准。

image.png

③ 修改“每日订单金额”数据集,直接单击“刷新数据”,右侧数据预览OK,然后单击“保存”。

√ SQL查询语句:

select substring(orderTime, 1, 8) as orderDate, count(orderTime) as orderNum, sum(amount) as orderCoast from charging_order group by orderDate

注:图例中数据预览结果仅为样例,请以实际数据为准。

image.png

④ 修改“区域订单金额”数据集,直接单击“刷新数据”,右侧数据预览OK,然后单击“保存”。

√ SQL查询语句:

select area, count(area) as num, sum(amount) as coast from charging_order group by area

注:图例中数据预览结果仅为样例,请以实际数据为准。

image.png

3.5 配置组件数据

① 继续在Astro Canvas界面,切回到“项目列表”页签,单击“智慧充电桩”项目卡片,并选择“智慧充电桩运行监控大屏”页面,然后单击“编辑页面”进入编辑态。

image.png

image.png

② 参考下图编号标识,依次查看各组件,已加载显示订单数据。

注:如果下图中标注的组件,未加载显示订单数据,请进入组件数据配置页,参考“问答”修正关联使用的数据集。

image.png

以配置“城市充电次数/金额”组件数据为例,预览如下图所示:

√ 数据类型:数据集 | 选择“区域订单金额”

√ 组件预览-配置:X轴数据-area | Y轴数据-coast&num | 刷新周期-10秒

image.png

3.6 查看大屏效果

① 编辑完成,单击“保存”,然后单击“预览”,查看大屏展示效果。

顶部菜单栏“保存(Ctrl+S)”、“预览(Ctrl+P)”按钮,如下图箭头标识所示。
image.png

② 查看大屏展示效果,如下图所示:

注:如下大屏数据仅为样例,请以实际上报数据呈现结果为准。

image.png

4.联动测试

① 回到MQTT设备模拟器窗口,上报更多充电桩订单数据。
image.png

为了Astro大屏应用呈现数据的多样性,请务必自定义修改并上报不少于5条样例数据。

在发送消息页签下的Topic栏中输入以下代码:

$oc/devices/{device_id}/sys/properties/report

其中的{device_id}需要替换成实际设备ID。

在消息编辑栏中输入以下代码,即上报内容示例如下:

√ 修改 orderID 为 0000002

√ 修改 area 为 长沙

√ 修改 orderTime 为 20230515T171215Z

√ 修改 usingPort 为 11

√ 修改 amount 为 28.5

提示:请自定义修改,并多次上报不同内容。

{
    "services": [{
        "properties": {
            "orderID": "0000002",
            "area": "长沙",
            "orderTime": "20230515T171215Z",
            "usingPort": "11",
            "amount": 28.5
        },
        "service_id": "ChargingInfo",
        "event_time": null
    }]
}

② 单击“发送消息”后,等待10秒左右,查看Astro轻应用大屏,数据刷新显示正常。

注:如下大屏数据仅为样例,请以实际上报数据呈现结果为准。

image.png

至此,已完成快速搭建物联网充电桩Astro大屏应用的全部操作体验。

总结

本文主要用到华为云相关服务有:

  • 设备接入服务:华为云设备接入服务是华为云提供的一项设备接入云平台的服务,通过该服务,用户可以将自己的设备连接到华为云,实现设备数据的云端存储、管理和分析。华为云设备接入服务提供了丰富的接口和协议支持,可以满足不同类型的设备接入需求,同时提供了安全、可靠的数据通信和存储保证。用户还可以通过华为云的其他服务,如物联网平台、人工智能平台等,实现设备智能化、应用化的开发和部署。
  • RDS云数据库:华为云RDS(Relational Database Service)云数据库是一种基于云计算技术,提供高可用性、高可扩展性、安全稳定的关系型数据库服务。用户可以通过控制台、API或命令行方式轻松管理、配置和使用云数据库,实现快速部署、高效备份和恢复、实时监控和自动扩容等功能。支持多种数据库引擎,包括MySQL、SQL Server、PostgreSQL和PPAS。同时,华为云RDS可提供可靠的容灾备份、数据加密和安全审计等功能,为企业提供了一个稳定、安全、高效的云数据库服务。
  • 弹性公网IP:华为云弹性公网IP是指一种可以动态绑定到云主机、负载均衡等云资源的公网IP地址。它采用了BGP协议实现动态路由,可以实现灵活的流量管理和负载均衡,支持带宽按需扩展,能够满足用户对公网访问的高可用性、高带宽需求。此外,华为云弹性公网IP还支持IPv6和IPv4双栈方式,能够满足不同用户的网络需求。
  • Astro轻应用:华为云Astro轻应用是一款基于华为云PaaS平台的应用开发框架,旨在帮助开发者快速构建轻量级、高效、灵活、安全的企业级应用。通过Astro轻应用,开发者可以轻松构建基于Web技术的应用,并且可以快速部署到华为云上,实现快速上线、高可用和弹性扩展。Astro轻应用还提供了丰富的开发工具和开发流程支持,助力开发者高效开发应用,降低开发成本。

其中设备接入服务主要是负责接收物联网设备MQTT协议上传的数据,在转发到RDS云数据库(需要弹性公网IP才能进行接收),最终由Astro轻应用读取RDS云数据库中的数据进行大屏展示。

充电桩实时监控大屏可以对充电设施的运营情况进行实时监控和管理,包括:

  1. 实时监测充电桩的使用情况,对充电桩进行统计和分析,为运营商提供运营数据,以便做出决策来优化充电桩布局。

  2. 显示充电桩的位置信息,方便用户查找和选择最近的充电站,提高用户体验和便利性。

  3. 通过实时监控大屏幕,管理人员可以及时发现充电桩故障和异常情况,及时对充电桩进行维修和处理,提高充电桩的工作效率和使用率。

  4. 充电桩实时监控大屏能够统计充电桩的充电量、充电速度等关键指标,为充电桩的运营提供优化和改进方案。

  5. 显示城市充电站的全面情况,对于城市规划、公交站设计等有重要启示作用。

充电桩的管理和运营能提供有效的数据支持、为用户提供更好的服务体验、为企业优化服务和管理提供依据,促进新能源汽车的普及和发展。


本文整理自华为云社区【内容共创】活动第23期。

查看活动详情:https://bbs.huaweicloud.com/blogs/402312

相关任务详情:任务26.DTSE Tech Talk 技术直播 NO.32 让设备数据说“实”话!IT 老手带你实战搭建IoT动态实时大屏

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。