当前位置: 首页 > news >正文

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

文章目录

  • 前言
    • 1.什么是充电桩
    • 2.什么是IOT
    • 3.什么是端、边、云、应用协同
    • 4.什么是Astro轻应用
  • 一、玩转lOT动态实时大屏(线下实际操作)
    • 1.Astro轻应用说明
      • 1.1 场景说明
      • 1.2 资费说明
      • 1.3 整体流程
    • 2.操作步骤
      • 2.1 开通设备接入服务
      • 2.2 创建产品
      • 2.3 注册设备
      • 2.4 购买云数据库实例
      • 2.5 购买弹性公网IP并绑定数据库实例
      • 2.6 配置数据转发规则
      • 2.7 数据上报及验证数据是否转发成功
      • 2.8 数据上报及验证数据是否转发成功开通AstroZero服务
      • 2.9 搭建Astro轻应用
      • 2.10 模拟数据上报及结果验证
      • 2.11 资源释放
        • 2.11.1 删除设备
        • 2.11.2 删除产品
        • 2.11.3 删除弹性公网IP
        • 2.11.4 删除云数据库实例
        • 2.11.5 删除Astro轻应用
  • 二、玩转lOT动态实时大屏(沙箱实验)
    • 1.设备接入平台
      • 1.1 开通标准版免费单元
      • 1.2 创建产品
      • 1.3 导入产品模型
      • 1.4 注册设备
      • 1.5 设备上报数据
    • 2.数据转储至RDS
      • 2.1 登录数据库实例
      • 2.2 导入数据库表
      • 2.3 绑定弹性公网IP
      • 2.4 配置数据转发规则
      • 2.5 验证数据转发结果
    • 3.搭建Astro大屏应用
      • 3.1 开通AstroZero服务
      • 3.2 导入项目包
      • 3.3 修改数据源
      • 3.4 修改数据集
      • 3.5 配置组件数据
      • 3.6 查看大屏效果
    • 4.联动测试
  • 总结


前言

1.什么是充电桩

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

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

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

2.什么是IOT

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

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

loT是物理世界到数字世界的桥梁,是构建行业解决方案的核心竞争力
在这里插入图片描述

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

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

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

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

4.什么是Astro轻应用

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

一、玩转lOT动态实时大屏(线下实际操作)

1.Astro轻应用说明

1.1 场景说明

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

华为云物联网平台提供规则引擎能力,支持将设备上报的数据转发至华为云其他云服务,可实现将海量数据通过云数据库(RDS)存储,再由Astro轻应用(AstroZero)读取数据并结合可视化组件进行呈现,实现数据的一站式采集、处理和分析。

在这里插入图片描述

在本案例中,我们实现下述场景:设备上报数据到物联网平台,物联网平台将数据转储至云数据库(RDS),Astro轻应用(AstroZero)从云数据库(RDS)读取数据并结合可视化组件进行展示。

在这里插入图片描述

  1. 设备接入平台:使用设备模拟器连接华为云loT平台并上报数据数据;
  2. 转储至RDS:购买云数据库RDS实例,并配置数据转发规则;
  3. 搭建Astro大屏应用:导入项目资源包,修改数据源,配置组件数据;
  4. 联动验证:设备模拟器上报充电桩订单数据,查看Astro大屏应用数据更新;

1.2 资费说明

Astro资费明细如下,具体费用以使用时长进行计算。本案例预计两小时完成。为避免因欠费导致实验阻塞,可提前进行充值,案例结束后请及时释放资源,避免持续产生费用。

云服务规格计费(¥/h)
设备接入 IoTDA标准版实例 -免费单元 -1个¥0.00/h
云数据库 RDS for MySQLMySQL-5.7-单机 -通用型-2核4GB / SSD云盘- 40GB¥0.40/h
弹性公网IP独享-全动态BGP-按带宽计费 -1Mbit/s -1个¥0.08/h
云日志服务 LTS按量付费-免费额度内(500MB/月)¥0.00/h
应用运维管理 AOM免费¥0.00/h
统一身份认证服务 IAM免费¥0.00/h
合计-¥0.48/h

1.3 整体流程

  1. 创建MQTT协议产品、开发产品模型、并注册设备。
  2. 创建数据转发规则,将数据转储至云数据库(RDS)。
  3. 搭建Astro轻应用(AstroZero)从云数据库(RDS)读取数据并结合可视化组件进行展示。
  4. 使用设备模拟器上报数据,验证Astro轻应用组件数据准实时刷新。

在这里插入图片描述

2.操作步骤

2.1 开通设备接入服务

步骤 1:访问设备接入服务产品首页,单击“免费试用”。

在这里插入图片描述

步骤 2:根据界面提示,输入实例名称,并单击“确定”,即可开通标准版实例免费单元。

实例名称:自定义,如“freeStandardInstance”

在这里插入图片描述

在这里插入图片描述

2.2 创建产品

步骤 1:进入设备接入控制台,选择左侧导航栏“产品”,单击页面右上角“创建产品”,填写参数并“确定”。

  • 所属资源控制:选择默认资源空间
  • 产品名称:充电桩
  • 协议类型:MQTT
  • 数据格式:JSON
  • 设备类型选择:自定义类型
  • 设备类型:充电桩

在这里插入图片描述

步骤 2:弹窗提示“创建产品成功”,单击“查看详情”进入产品详情页。

在这里插入图片描述
步骤 3:单击“上传模型文件”,选择添加充电桩物模型文件,然后单击“确定”完成上传。

模型文件文件下载地址:https://mp.csdn.net/mp_download/manage/download/UpDetailed

在这里插入图片描述

在这里插入图片描述
步骤 4:上传成功,查看充电桩模型定义详情。

查看ChargingInfo服务下定义的订单属性,如下图所示。
在这里插入图片描述
查看BasicInfo服务下定义的设备基础属性,如下图所示。

在这里插入图片描述

2.3 注册设备

步骤 1:进入设备接入控制台,选择左侧导航栏“设备 > 所有设备”,单击页面右上角“注册设备”,填写参数并“确定”。

  • 所属资源空间:选择默认资源空间
  • 所属产品:选择“充电桩”
  • 设备标识码:自定义,如charging_machine_001
  • 设备名称:充电桩001
  • 设备ID:由平台自动生成的字符串前缀+设备标识码组合而成,自动填充,无需修改
  • 设备认证类型:密钥
  • 密钥/确认密钥:自定义,不少于8位,如12345678

在这里插入图片描述
步骤 2:弹窗提示“设备创建成功”,单击“保存并关闭”,返回设备列表。

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

在这里插入图片描述
步骤 3:查看刚注册的充电桩设备,显示为“未激活”状态。

在这里插入图片描述

2.4 购买云数据库实例

步骤 1:访问云数据库 RDS for MySQL产品首页,单击“立即购买”。

在这里插入图片描述
步骤 2:购买数据库实例:填写参数信息,然后单击“立即创建”。

  • 计费模式:选择“按需计费”
  • 区域:选择“华北-北京四”
  • 实例名称:自定义,如“rds-charging-demo”
  • 数据库引擎:选择“MySQL”
  • 数据库版本:选择“5.7”
  • 实例类型:选择“单机”
  • 存储类型:SSD云盘
  • 可用区:默认
  • 时区:默认

在这里插入图片描述

  • 性能规格:选择“通用型”| 2 vCPUs | 4 GB
  • 存储空间(GB):40
  • 磁盘加密:选择“不加密”

在这里插入图片描述

  • 虚拟私有云:选择当前帐号下的默认vpc和subnet,如“vpc-default”| “subnet-default”
  • 数据库端口:填写默认端口,即“3306”
  • 安全组:选择当前帐号下的默认安全组,如“Sys-default”;并查看安全组确认已放通3306端口。
    如果默认安全组的入方向规则未放通3306端口,请单击“添加规则”放通3306端口。

在这里插入图片描述

  • 设置密码:选择“现在设置”
  • 管理员帐户名:root
  • 管理员密码/确认密码:自定义,如“AstroZero@12#$”

在这里插入图片描述

  • 参数模板:默认,如“Default-MySQL-5.7”
  • 表名大小写:选择“区分大小写”
  • 企业项目:如果有此选项,选择默认项目即可,如“default”。
  • 购买数量:1
  • 只读实例:暂不购买

在这里插入图片描述

在这里插入图片描述

步骤 3:登录数据库实例:

① 预计等待5分钟左右,数据库实例初始化完成,并显示运行正常,单击“登录”。

在这里插入图片描述

② 输入登录用户名和密码,测试连接成功后,单击“登录”,进入DAS首页。

  • 登录用户名:步骤2中创建的管理员账户名,如“root”
  • 密码:步骤2中创建的管理员密码,如“AstroZero@12#$”
  • 定时采集:选择“开启”
  • SQL执行记录:选择“开启”

在这里插入图片描述

步骤 4:新建数据库:单击“新建数据库”,在弹窗中输入数据库名称,并“确定”。

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

  • 字符集:选择“utf8mb4”

    在这里插入图片描述

步骤 5:新建数据库表:

① 数据库创建完成,单击数据库操作列的“新建表”。
在这里插入图片描述
② 填写基本信息,然后单击“下一步”。

  • 表名:自定义,如“charging_order”
  • 存储引擎:默认,即“InnoDB”
  • 字符集:默认,即“utf8mb4”
  • 校验规则:默认,即“utf8mb4_general_ci”
    在这里插入图片描述

③ 添加字段,然后单击“立即创建”。

序号列名类型长度可空主键扩展信息
1idint11-自动增长:开启 , 数字选项:无符号
2orderIDvarchar32--
3areavarchar32--
4orderTimevarchar32--
5usingPortvarchar32--
6amountdecimal32-默认值:0 , 数字选项:无符号
7receive_timetimestamp---默认值:CURRENT_TIMESTAMP , 根据当前时间更新:开启

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5 购买弹性公网IP并绑定数据库实例

步骤 1:访问弹性公网 IP EIP 产品首页,单击“立即使用”。

在这里插入图片描述

步骤 2:根据界面提示,填写参数后,单击“立即购买”。

  • 计费模式:选择“按需计费”
  • 区域:选择“华北-北京四”
  • 线路:选择“全动态BGP”
  • 公网带宽:选择“按带宽计费”
  • 带宽大小 (Mbit/s):1
  • IPv6转换:不开启
  • DDos防护:默认值,即“DDoS原生基础防护”
  • 弹性公网IP名称:自定义,可不填
  • 企业项目:如果有此选项,选择默认项目即可,如“default”。
  • 购买量:1

在这里插入图片描述

步骤 3:购买完成,进入网络控制台,在弹性公网IP列表查看刚购买的弹性公网IP。

弹性公网IP资源如下图所示:

在这里插入图片描述
步骤 4:进入云数据库RDS控制台,单击“实例名称”进入实例详情页面。

在这里插入图片描述
步骤 5:选择左侧导航栏“连接管理”,在右侧连接信息区域,单击公网地址栏的“绑定”,在弹窗中选择刚购买的弹性公网IP,单击“是”完成绑定。

在这里插入图片描述
绑定完成,结果如下图所示:
在这里插入图片描述

2.6 配置数据转发规则

步骤 1:进入设备接入控制台,选择左侧导航栏“规则 > 数据转发”,单击“创建规则”。

在这里插入图片描述

步骤 2:设置转发数据。

① 填写基本信息:

  • 规则名称:充电桩转储MySQL
  • 数据来源:设备属性
  • 触发事件:设备属性上报
  • 资源空间:选择默认资源空间,如“DefaultApp_xxx***”

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

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

在这里插入图片描述
③ 单击“创建规则”,弹窗提示“规则创建成功”,单击“继续设置”,进入设置转发目标。

在这里插入图片描述
步骤 3:设置转发目标。

① 单击“添加”,填写转发目标信息,然后单击“下一步:转发数据配置”,会连接数据库。

  • 转发目标:选择“MySQL数据库”
  • 数据库实例地址:填写购买弹性公网IP并绑定数据库实例中给数据库实例绑定的弹性公网IP和购买云数据库实例时配置的数据库实例访问端口,如 121...67:3306
  • 数据库名称:填写购买云数据库实例时新建的数据库,如 iotda_notify_all
  • 访问账户:填写购买云数据库实例时配置的数据库实例的登录账户,如 root
  • 访问密码:填写购买云数据库实例时配置的数据库实例的登录密码,如 AstroZero@12#$
  • SSL:本实验中暂不启用,即关闭。选择通过SSL方式连接时,需要先在数据库实例中设置SSL数据加密

在这里插入图片描述

② 选择转存表格,配置流转数据和数据库表的映射关系,然后单击“确定”。

  • 转存至表格:选择数据库中用于存储数据的数据表,如 charging_order
  • 转存配置:
转发字段目标存储字段
说明:流转数据中需要转存的参数路径。说明:数据库表的字段,选择目标存储字段后自动匹配字段类型。
notify_data.body.services[0].properties.orderIDorderID
notify_data.body.services[0].properties.areaarea
notify_data.body.services[0].properties.orderTimeorderTime
notify_data.body.services[0].properties.usingPortusingPort
notify_data.body.services[0].properties.amountamount

在这里插入图片描述
③ 弹窗提示“操作成功”,单击“设置完成”。

在这里插入图片描述
步骤 4:单击“启动规则”,激活配置好的数据转发规则。

在这里插入图片描述
界面显示“规则运行中”,单击左上角返回箭头,返回规则列表。

在这里插入图片描述
单击左上角小箭头,返回数据转发规则列表,查看刚创建的规则,如下图所示:

在这里插入图片描述

2.7 数据上报及验证数据是否转发成功

步骤 1:使用MQTT模拟器连接到平台。

① 下载模拟器,并双击运行,启动设备模拟器。
下载地址:https://obs-pipeline.obs.cn-north-4.myhuaweicloud.com/sdkDeploy/simulator/MQTT_Simulator.zip

在这里插入图片描述
② 配置连接参数,然后单击“Connect”,日志提示“connect to mqtt server success…”则表示连接成功。

  • SSL Connection:不勾选则使用1883端口,勾选则使用8883端口。本案例中勾选。
  • Server Address:从设备接入控制台,实例接入信息页获取,如 ***.st1.iotda-device.cn-north-4.myhuaweicloud.com

在这里插入图片描述

  • Device ID:注册设备成功后,获取到的设备ID。
  • Device Secret:注册设备成功后,获取到的设备密钥。

在这里插入图片描述

步骤 2:使用模拟器进行属性上报。

在模拟器窗口最下方的输入框,填写上报内容,然后单击“Publish”,日志提示“… is published success”则表示上报成功。

在这里插入图片描述
上报内容示例如下:

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

步骤 3:前往设备接入控制台,选择左侧导航栏“设备 > 所有设备”,单击设备标识码,进入设备详情页。

可以看到设备在线,且在“最新上报数据”区域正常显示设备上报属性值。

在这里插入图片描述
步骤 4:前往云数据库RDS控制台,登录数据库实例,打开数据库>数据表,查看转发目标数据表中是否有记录生成。

① 单击“登录”,跳转到“实例登录”窗口。

在这里插入图片描述

② 输入登录用户名和密码,勾选“记住密码”,单击“测试连接”,提示“连接成功”后,单击“登录”。

  • 定时采集:按需开启,本案例中选择开启。
  • SQL执行记录:按需开启,本案例中选择开启。

在这里插入图片描述

③ 单击数据库名称,进入数据库管理界面。

在这里插入图片描述
④ 单击“打开表”,打开数据库表。

在这里插入图片描述
⑤ 可以看到数据库表中已生成一条记录,且与设备上报属性值一致。

在这里插入图片描述

2.8 数据上报及验证数据是否转发成功开通AstroZero服务

步骤 1:访问Astro轻应用产品首页,单击“立即使用”,进入Astro轻应用控制台。

在这里插入图片描述

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

在这里插入图片描述
步骤 3:等待共享实例免费版开通成功,单击“进入首页”,即可进入Astro轻应用应用开发主页。

在这里插入图片描述
Astro轻应用应用开发主页预览如下图所示:

在这里插入图片描述

2.9 搭建Astro轻应用

步骤 1:进入Astro轻应用控制台,在实例页面,单击“进入首页”,进入新版应用开发环境。

在这里插入图片描述

步骤 2:在“应用开发”页面,单击左侧导航栏的“业务大屏”,即可进入Astro Canvas界面。

在这里插入图片描述
步骤 3:导入项目:单击“导入项目包”,选择“AstroCanvas_智慧充电桩”项目包,并“打开”。

AstroCanvas_智慧充电桩文件下载地址:https://mp.csdn.net/mp_download/manage/download/UpDetailed
在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

步骤 4:修改数据源:切换到“数据中心”页签,选择左侧导航栏“数据源管理”,单击“iot-mysql-data”数据源卡片。

在这里插入图片描述
修改好参数后,先单击“连接测试”,确认提示连接成功后,再单击“保存”。

  • 数据源:关系型数据库
  • 数据源名称:自定义,如“iot-mysql-data”
  • 数据库类型:MySQL
  • 域名:填写购买弹性公网IP并绑定数据库实例中给数据库实例绑定的弹性公网IP,如 121...67
  • 端口:填写购买云数据库实例时配置的数据库实例访问端口,如 3306
  • 用户名:填写购买云数据库实例时配置的数据库实例的登录账户,如 root
  • 密码:填写购买云数据库实例时配置的数据库实例的登录密码,如 AstroZero@12#$
  • 数据库名称:填写购买云数据库实例时新建的数据库,如 iotda_notify_all

在这里插入图片描述

步骤 5:修改数据集:选择左侧导航栏“数据集管理”,单击数据集卡片进行修改。

在这里插入图片描述
① 修改“订单总金额”数据集,填写参数,并刷新数据预览OK,然后单击“保存”。

  • 数据来源:关系型数据库

  • 数据源连接:步骤5中刚创建的数据源,如“iot-mysql-data”

  • 数据集名称:自定义,如“订单总金额”

  • 分类:选择“订单金额”

  • 数据配置:选择“SQL模式”

  • 选择数据表:选择“charging_order”

  • SQL查询语句:

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

在这里插入图片描述
② 修改“每日订单金额”数据集,填写参数,并刷新数据预览OK,然后单击“保存”。

  • 数据来源:关系型数据库

  • 数据源连接:步骤5中刚创建的数据源,如“iot-mysql-data”

  • 数据集名称:自定义,如“每日订单金额”

  • 分类:选择“订单金额”

  • 数据配置:选择“SQL模式”

  • 选择数据表:选择“charging_order”

  • SQL查询语句:

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

在这里插入图片描述
③ 修改“区域订单金额”数据集,填写参数,并刷新数据预览OK,然后单击“保存”。

  • 数据来源:关系型数据库

  • 数据源连接:步骤5中刚创建的数据源,如“iot-mysql-data”

  • 数据集名称:自定义,如“区域订单金额”

  • 分类:选择“订单金额”

  • 数据配置:选择“SQL模式”

  • 选择数据表:选择“charging_order”

  • SQL查询语句:

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

在这里插入图片描述
步骤 6:配置组件数据:切回到“项目列表”页签,单击项目卡片,并选择“智慧充电桩运行监控大屏”页面,然后单击“编辑页面”进入编辑态。

在这里插入图片描述

参考下图编号标识顺序,依次选择组件,单击 进入组件数据配置页面,完成数据配置。

在这里插入图片描述

① 配置“城市充电次数/金额”组件数据:

  • 数据类型:数据集 | 选择“区域订单金额”
  • 组件预览-配置:X轴数据-area | Y轴数据-coast&num | 刷新周期-10秒

在这里插入图片描述
② 配置“城市充电次数占比率”组件数据:

  • 数据类型:数据集 | 选择“区域订单金额”
  • 组件预览-配置:数据-num | 数据类别-area | 刷新周期-10秒

在这里插入图片描述

③ 配置“城市结算金额占比率”组件数据:

  • 数据类型:数据集 | 选择“区域订单金额”
  • 组件预览-配置:数据-coast | 数据类别-area | 刷新周期-10秒

在这里插入图片描述
④ 配置“每日充电次数/金额”组件数据:

  • 数据类型:数据集 | 选择“每日订单金额”
  • 组件预览-配置:X轴数据-orderDate | Y轴数据-orderNum&orderCoast | 刷新周期-10秒

在这里插入图片描述

⑤ 配置“累计充电次数”组件数据:

  • 数据类型:数据集 | 选择“订单总金额”
  • 组件预览-配置:基准数字-totalNum | 刷新周期-10秒

在这里插入图片描述

⑥ 配置“累计结算金额”组件数据:

  • 数据类型:数据集 | 选择“订单总金额”
  • 组件预览-配置:基准数字-totalCoast | 刷新周期-10秒

在这里插入图片描述

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

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

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

在这里插入图片描述

2.10 模拟数据上报及结果验证

步骤 1:参考数据上报及验证数据是否转发成功,上报更多充电桩订单数据。

在这里插入图片描述

  • 请自定义修改样例值后进行上报。如orderID改为0000002,area改为长沙,orderTime改为20230515T171215Z,usingPort改为11,amount改为28.5。
  • 为了Astro大屏应用呈现数据的多样性,请务必自定义修改并上报不少于5条样例数据。

上报内容样例:

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

步骤 2:等待10秒左右,查看Astro轻应用大屏,数据刷新显示正常。

在这里插入图片描述

2.11 资源释放

实验完成,请及时释放计费资源,避免产生不必要的费用。

2.11.1 删除设备

进入设备接入控制台,选择左侧导航栏“设备 > 所有设备”,选择已注册的设备,单击“删除”,并在弹窗中单击“是”完成删除。

2.11.2 删除产品

进入设备接入控制台,选择左侧导航栏“产品”,选择已创建的产品,单击“删除”,并在弹窗中单击“确认”完成删除。

2.11.3 删除弹性公网IP

步骤 1:进入云数据库RDS控制台,单击“实例名称”进入实例详情页面。

在这里插入图片描述

步骤 2:选择左侧导航栏“连接管理”,在右侧连接信息区域,单击公网地址栏的“解绑”,并在弹窗中单击“是”完成解绑。

在这里插入图片描述
弹性公网IP解绑成功后,如下图所示:

在这里插入图片描述
步骤 3:进入网络控制台,在弹性公网IP列表勾选本实验购买的弹性公网IP,单击“解绑 > 释放”,并在弹窗中单击“是”完成释放。

在这里插入图片描述

2.11.4 删除云数据库实例

进入云数据库RDS控制台,选择左侧导航栏“实例管理”,单击“更多 > 删除实例”,并在弹窗中单击“是”完成删除。
在这里插入图片描述

2.11.5 删除Astro轻应用

进入Astro Canvas界面,选择“智慧充电桩”项目卡片,单击“删除”按钮,并在弹窗中单击“确认”完成删除。

在这里插入图片描述

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

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

在这里插入图片描述

首先得预置实验环境

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

在这里插入图片描述

1.设备接入平台

1.1 开通标准版免费单元

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

在这里插入图片描述
② 在左侧导航栏,单击“切换”,选择标准版,单击“开通免费单元”。

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

在这里插入图片描述
③ 弹窗提示“标准版实例免费使用”,单击“确定”完成开通。

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

在这里插入图片描述
④ 单击标准版实例选项卡右侧的“切换实例”,切换并使用标准版实例。

在这里插入图片描述

1.2 创建产品

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

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

√ 产品名称:充电桩

√ 协议类型:MQTT

√ 数据格式:JSON

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

√ 设备类型:充电桩

在这里插入图片描述
② 弹窗提示“创建产品成功”,单击“查看详情”进入产品详情页。
在这里插入图片描述

1.3 导入产品模型

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

在这里插入图片描述

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

下载保存的产品模型文件如下:
在这里插入图片描述
② 回到产品详情页,在“模型定义”页签,单击“上传模型文件”,选择添加充电桩物模型文件,然后单击“确定”完成上传。
在这里插入图片描述
③ 上传成功,查看充电桩模型定义详情。

查看ChargingInfo服务下定义的订单属性,如下图所示。
在这里插入图片描述

查看BasicInfo服务下定义的设备基础属性,如下图所示。
在这里插入图片描述

1.4 注册设备

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

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

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

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

√ 设备名称:充电桩001

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

√ 设备认证类型:密钥

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

在这里插入图片描述

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

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

在这里插入图片描述
③ 查看刚注册的充电桩设备,显示为“未激活”状态。
在这里插入图片描述

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

在这里插入图片描述

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

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

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

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

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

在这里插入图片描述
④ 在模拟器窗口中的发送消息页签下,填写Topic及上报消息样例,然后单击“发送消息”。
在这里插入图片描述
在发送消息页签下的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}]
}

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

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

在这里插入图片描述

2.数据转储至RDS

2.1 登录数据库实例

① 在控制台总览页,输入“rds”关键词进行搜索,选择结果列表中的“云数据库 RDS”,进入云数据库RDS控制台。
在这里插入图片描述
② 数据库实例初始化完成,并显示运行正常,单击“登录”。
在这里插入图片描述
③ 输入登录用户名和密码,测试连接成功后,单击“登录”,进入数据管理服务DAS首页。

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

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

在这里插入图片描述
√ 定时采集:选择“开启”

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

在这里插入图片描述

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脚本文件,如下图所示:
在这里插入图片描述
② 回到数据管理服务DAS首页,单击“新建数据库”,在弹窗中输入数据库名称,并“确定”。

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

√ 字符集:选择“utf8mb4”

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

√ 导入类型:sql

√ 文件来源:上传文件

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

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

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

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

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

在这里插入图片描述
④ 弹窗提示如下,单击“确定”。
在这里插入图片描述
⑤ 导入任务执行完成,回到首页,单击库名进入库管理列表,展开表预览如下图所示:

在这里插入图片描述

2.3 绑定弹性公网IP

① 切换到云数据库RDS控制台,单击“实例名称”进入实例详情页面。
在这里插入图片描述
② 选择左侧导航栏“连接管理”,在右侧连接信息区域,单击公网地址栏的“绑定”,在弹窗中选择预置的弹性公网IP,单击“是”完成绑定。

在这里插入图片描述
绑定完成,结果如下图所示:
在这里插入图片描述
③ 向下滚动页面到安全组规则,选择“sg-hce”页签,查看入方向规则,单击“添加入方向规则”,在弹窗中选择“MySQL (3306)”,然后单击“确定”进行放通。

在这里插入图片描述

2.4 配置数据转发规则

① 切换到设备接入控制台,选择左侧导航栏“规则 > 数据转发”,单击“创建规则”。
在这里插入图片描述
② 设置转发数据:填写基本信息,并配置数据过滤语句后,单击“创建规则”。

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

√ 数据来源:设备属性

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

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

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

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

在这里插入图片描述
③ 弹窗提示“规则创建成功”,单击“继续设置”,进入设置转发目标。
在这里插入图片描述
④ 设置转发目标:单击“添加”,填写转发目标信息。
在这里插入图片描述
√ 转发目标:选择“MySQL数据库”

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

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

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

在这里插入图片描述
√ SSL:本实验中暂不启用,即关闭。

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

在这里插入图片描述
√ 转存至表格:选择数据库中用于存储数据的数据表,如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

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

在这里插入图片描述
⑥ 单击“启动规则”,激活配置好的数据转发规则。
在这里插入图片描述
界面显示“规则运行中”,单击左上角返回箭头,返回规则列表。
在这里插入图片描述

2.5 验证数据转发结果

① 回到MQTT设备模拟器窗口,重新上报一次数据。
在这里插入图片描述
在发送消息页签下的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首页,单击数据库名称,进入库管理页面。

在这里插入图片描述
③ 单击“打开表”,打开数据库表。

在这里插入图片描述

可以看到数据库表中已生成一条记录,且与设备上报属性值一致。
在这里插入图片描述

3.搭建Astro大屏应用

3.1 开通AstroZero服务

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

在这里插入图片描述
② 单击页面右上角“免费试用”,并在弹窗中确认“免费开通”。

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

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

在这里插入图片描述
Astro轻应用应用开发主页预览如下图所示:

在这里插入图片描述

3.2 导入项目包

① 在“应用开发”页面,单击左侧导航栏的“业务大屏”,即可进入Astro Canvas界面。
在这里插入图片描述
② 回到实验桌面双击“Xfce终端”打开Terminal,输入以下命令下载保存项目包至本地桌面。

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

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

③ 回到Astro Canvas界面,单击“导入项目包”,选择刚下载的项目包,并“打开”。
在这里插入图片描述
项目包导入成功,项目卡片预览如下图所示:
在这里插入图片描述

3.3 修改数据源

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

在这里插入图片描述
② 修改好参数后,先单击“连接测试”,确认提示连接成功后,再单击“保存”。
在这里插入图片描述
√ 域名:填写数据库实例绑定的弹性公网IP,如 121...67

√ 端口:固定为3306

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

在这里插入图片描述
√ 数据库名称:从数据管理服务DAS控制台获取数据库名称,如iotda_notify_all

3.4 修改数据集

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

在这里插入图片描述
② 修改“订单总金额”数据集,直接单击“刷新数据”,右侧数据预览OK,然后单击“保存”。

√ SQL查询语句:

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

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

在这里插入图片描述
③ 修改“每日订单金额”数据集,直接单击“刷新数据”,右侧数据预览OK,然后单击“保存”。

√ SQL查询语句:

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

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

在这里插入图片描述
④ 修改“区域订单金额”数据集,直接单击“刷新数据”,右侧数据预览OK,然后单击“保存”。

√ SQL查询语句:

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

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

在这里插入图片描述

3.5 配置组件数据

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

在这里插入图片描述
在这里插入图片描述
② 参考下图编号标识,依次查看各组件,已加载显示订单数据。

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

在这里插入图片描述

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

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

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

在这里插入图片描述

3.6 查看大屏效果

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

顶部菜单栏“保存(Ctrl+S)”、“预览(Ctrl+P)”按钮,如下图箭头标识所示。
在这里插入图片描述
② 查看大屏展示效果,如下图所示:

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

在这里插入图片描述

4.联动测试

① 回到MQTT设备模拟器窗口,上报更多充电桩订单数据。
在这里插入图片描述
为了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轻应用大屏,数据刷新显示正常。

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

在这里插入图片描述

至此,已完成快速搭建物联网充电桩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. 显示城市充电站的全面情况,对于城市规划、公交站设计等有重要启示作用。

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

相关文章:

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

文章目录 前言1.什么是充电桩2.什么是IOT3.什么是端、边、云、应用协同4.什么是Astro轻应用 一、玩转lOT动态实时大屏(线下实际操作)1.Astro轻应用说明1.1 场景说明1.2 资费说明1.3 整体流程 2.操作步骤2.1 开通设备接入服务2.2 创建产品2.3 注册设备2.4…...

Hadoop分布式计算与资源调度:打开专业江湖的魔幻之门

文章目录 版权声明一 分布式计算概述1.1 分布式计算1.2 分布式(数据)计算模式1.3 小结 二 MapReduce概述2.1 分布式计算框架 - MapReduce2.2 MapReduce执行原理2.3 小结 三 YARN概述3.1 YARN & MapReduce3.2 资源调度3.3 程序的资源调度3.4 YARN的资…...

为什么叫源表?源表是如何四象限工作的?

为何称呼为源表? “源”为电压源和电流源,“表”为测量表; “源表”即指一种可作为四象限的电压源或电流源提供精确的电压或电流,同时可同步测量电流值或电压值的测量仪表。(恒流源时测电压,恒压源时测电…...

云原生周刊:Kubernetes v1.28 正式发布 | 2023.8.21

开源项目推荐 kurt 一个 Kubernetes 插件,可提供 Kubernetes 集群中重启内容的上下文信息。 Kubean Kubean 是一个基于 kubespray 的 Kubernetes 集群生命周期管理工具。 k8sgpt k8sgpt 是一款用简单的英语扫描 Kubernetes 集群、诊断和分流问题的工具。 它将…...

Git基础——基本的 Git本地操作

本文涵盖了你在使用Git的绝大多数时间里会用到的所有基础命令。学完之后,你应该能够配置并初始化Git仓库、开始或停止跟踪文件、暂存或者提交更改。我们也会讲授如何让Git忽略某些文件和文件模式,如何简单快速地撤销错误操作,如何浏览项目版本…...

PythonJS逆向解密——实现翻译软件+语音播报

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 环境使用: python 3.8 pycharm 模块使用: requests --> pip install requests execjs --> pip install PyExecJS ttkbootstrap --> pip install ttkbootstrap pyttsx3 --> pip install pyttsx3 第三…...

gPRC与SpringBoot整合教程

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

Hadoop Yarn 配置多队列的容量调度器

文章目录 配置多队列的容量调度器多队列查看 配置多队列的容量调度器 首先,我们进入 Hadoop 的配置文件目录中($HADOOP_HOME/etc/hadoop); 然后通过编辑容量调度器配置文件 capacity-scheduler.xml 来配置多队列的形式。 默认只…...

c语言练习题28:杨氏矩阵

杨氏矩阵 从左到右增加 从上到下增加 思路&#xff1a; 代码&#xff1a; #include<stdio.h> int findNum(int(*arr)[3], int x, int y, int k) {int i 0;int j y - 1;while (i<x&&j>0) {if (arr[i][j] > k) {j--;}else if (arr[i][j] < k) {i;…...

梳理系统学习R语言1-R语言实战-使用ggplot进行高阶绘图

以下为书中代码&#xff0c;会添加一些理解 library("ggplot2") ggplot(datamtcars,aes(xwt,ympg))geom_point()geom_point(pch17,color"blue",size2)geom_smooth(method"lm",color"red",linetype2)labs(title"Automobile Data&…...

测试框架pytest教程(2)-用例依赖库-pytest-dependency

对于 pytest 的用例依赖管理&#xff0c;可以使用 pytest-dependency 插件。该插件提供了更多的依赖管理功能&#xff0c;使你能够更灵活地定义和控制测试用例之间的依赖关系。 Using pytest-dependency — pytest-dependency 0.5.1 documentation 安装 pytest-dependency 插…...

electron软件安装时,默认选择为全部用户安装

后续可能会用electron开发一些工具&#xff0c;包括不限于快速生成个人小程序、开发辅助学习的交互式软件、帮助运维同学一键部署的简易版CICD工具等等。 开发进度&#xff0c;取决于我懒惰的程度。 不过不嫌弃的同学还是可以先关注一波小程序&#xff0c;真的发布工具了&…...

MySQL常用表级操作

基础信息相关 1.修改表名&#xff1a; rename table 旧表名 to 新表名; 2、修改字段类型&#xff1a; alter table 表名 modify column 字段名 字段类型(长度) 3、修改字段名称和类型&#xff1a; alter table 表名 change 现有字段名称 修改后字段名称 数据类型 4、增加字段&a…...

Golang Gorm 一对多关系 关系表创建

一对多关系 我们先从一对多开始多表关系的学习因为一对多的关系生活中到处都是&#xff0c;例如&#xff1a; 老板与员工女神和添狗老师和学生班级与学生用户与文章 在创建的时候先将没有依赖的创建。表名称ID就是外键。外键要和关联的外键的数据类型要保持一致。 package ma…...

java八股文面试[数据结构]——ConcurrentHashMap原理

HashMap不是线程安全&#xff1a; 在并发环境下&#xff0c;可能会形成环状链表&#xff08;扩容时可能造成&#xff0c;具体原因自行百度google或查看源码分析&#xff09;&#xff0c;导致get操作时&#xff0c;cpu空转&#xff0c;所以&#xff0c;在并发环境中使用HashMap是…...

学习记录——FeatEnHancer

FeatEnHancer: Enhancing Hierarchical Features for Object Detection and Beyond Under Low-Light Vision 一种适用于任意低光照任务增强方法 ICCV 2023 提出了FeatEnHancer&#xff0c;一种用于低光照视觉任务的增强型多尺度层次特征的新方法。提议的解决方案重点增强相关特…...

OpenCV中常用的函数

OpenCV是一个功能强大的计算机视觉库&#xff0c;提供了众多用于图像处理、计算机视觉和机器学习的函数和模块。以下是一些OpenCV中常用的函数和模块的子集&#xff1a; 图像读取和显示&#xff1a; cv::imread&#xff1a;用于读取图像文件。cv::imshow&#xff1a;用于显示图…...

【福利】Google Cloud Next ’23 精彩待发,Cloud Ace 作为联合赞助商提前发福利~

【Cloud Ace 是 Google Cloud 全球战略合作伙伴&#xff0c;在亚太地区、欧洲、南北美洲和非洲拥有二十多个办公室。Cloud Ace 在谷歌专业领域认证及专业知识目前排名全球第一位&#xff0c;并连续多次获得 Google Cloud 各类奖项。作为谷歌云托管服务商&#xff0c;我们提供谷…...

vue-admin-template实现按钮级控制

这里记录一下使用大佬的模板vue-admin-template&#xff0c;实现按钮级别控制 实现的思路&#xff1a;用户登录之后&#xff0c;返回用户详细信息(将用户的所有权限码发送给前端)&#xff0c;然后将权限码保存在全局状态管理对象中&#xff0c;然后在组件中进行判断是否显示 最…...

数据驱动工作效率提升的5个层次—以PreMaint设备数字化平台为例

在现代工业领域&#xff0c;数据分析已成为提升工作效率和优化生产的不可或缺的工具。从描述性分析到规范性分析&#xff0c;数据分析逐步揭示了设备运行和维护的深层信息&#xff0c;帮助企业更明智地做出决策。本文将以PreMaint设备数字化平台为例&#xff0c;探讨工业数据驱…...

白介素对NK细胞功能的影响(IL-1β、IL-12、IL-15、IL-18、IL-21)

1、促进NK细胞扩增和活化&#xff1a;IL-2/21 Soiffer RJ等自1996年起即报道IL-2低剂量持续输注和间歇给药对转移癌患者的CD56NK细胞有明显扩增效果。大部分NK细胞表面具有IL-2中亲和性受体&#xff0c;IL-2诱导NK的杀伤活性约需18&#xff5e;24小时。此外&#xff0c;IL-2还…...

C++笔记之虚函数重写规则、返回类型协变、函数的隐藏

C笔记之虚函数重写规则、返回类型协变、函数的隐藏 code review! 文章目录 C笔记之虚函数重写规则、返回类型协变、函数的隐藏1.返回类型协变2.C中函数的隐藏 —— C Primer Plus &#xff08;第6版&#xff09; —— cppreference 1.返回类型协变 2.C中函数的隐藏 在C中&a…...

抢鲜体验!vLive虚拟直播5大实用新功能上线!

vLive虚拟直播系统2.6.2版本全新上线&#xff01;新版本一共更新了5项实用功能&#xff0c;能让你的直播操作更加方便。现在就跟随小编一起来看看吧&#xff01; 1.本地下载场景支持一键迁移 用户下载后的场景可以直接迁移至另一个磁盘&#xff0c;无需重复下载。 2.信号源添加…...

网约车平台如何开发?需要多少钱?

随着共享经济的兴起&#xff0c;网约车行业迅速发展&#xff0c;并成为人们生活中不可或缺的一部分。为了满足市场需求和提供更好的服务&#xff0c;开发一款高质量的网约车源码平台至关重要。本文将深入探讨网约车源码平台的开发方案&#xff0c;从技术架构、安全性和用户体验…...

Rust踩雷笔记(5)——刷点链表的题(涉及智能指针Box,持续更新)

目录 leetcode 2 两数相加——模式匹配单链表Box 只能说Rust链表题的画风和C完全不一样&#xff0c;作为新手一时间还不太适应&#xff0c;于是单独为链表、智能指针开一篇&#xff0c;主要记录leetcode相关题型的答案以及注意事项。 leetcode 2 两数相加——模式匹配单链表Bo…...

[附源码]计算机毕业设计-JAVA火车票订票管理系统-springboot-论-文-ppt

PPT论文 文章目录 前言一、主要技术javaMysql数据库JSP技术 二、系统设计三、功能截图总结 前言 本论文主要论述了如何使用JAVA语言开发一个火车订票管理系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想…...

CARLA spawn Actor (Vehicle and Pedestrian)

1. Spawn Vehicles 2. Spawn Pedestrian References [1] Carla简单入门-1 基本的API使用 - 知乎 [2] https://carla.org/2019/07/12/release-0.9.6/...

【官方中文文档】Mybatis-Spring #SqlSessionFactoryBean

SqlSessionFactoryBean 在基础的 MyBatis 用法中&#xff0c;是通过 SqlSessionFactoryBuilder 来创建 SqlSessionFactory 的。而在 MyBatis-Spring 中&#xff0c;则使用 SqlSessionFactoryBean 来创建。 设置 要创建工厂 bean&#xff0c;将下面的代码放到 Spring 的 XML …...

el-tree树回显删除某项,再次点开树形组件无变化,实际数据已改变

el-tree树回显删除某项&#xff0c;再次点开树形组件无变化&#xff0c;实际数据已改变 页面有添加和删除已选选项的按钮&#xff0c;点击删除一个选项&#xff0c;再点添加&#xff0c;打开树形弹窗&#xff0c;发现弹窗被删除的选项还在 原因&#xff1a; 发现是添加的时候&…...

生产作业标准化是什么?生产车间作业流程标准化的步骤

生产作业标准化是以精益化为目标&#xff0c;对现行作业方法进行量化细化的分析改善&#xff0c;最终形成优化后的更好的作业程序。标准化的作用主要是以文件的方式保存企业成员积累的技术和经验&#xff0c;而不是因为人员的流动而失去整个技术和经验。 生产作业标准化的实施非…...

CSS3盒模型+flex

1.盒模型 标准盒模型: wwidthpaddingborderhheightpaddingborder 怪异盒模型(ie盒模型) wwidth包含了(paddingborder)hheight包含了(paddingborder) 2.CSS3弹性盒(重点新版弹性盒) 弹性盒: 设置为弹性盒后,父元素为容器,子元素为项目弹性盒中存在两根轴,默认水平为主轴,垂…...

物种气候生态位动态量化与分布特征模拟

在全球气候快速变化的背景下&#xff0c;理解并预测生物种群如何应对气候变化&#xff0c;特别是它们的地理分布如何变化&#xff0c;已经变得至关重要。利用R语言进行物种气候生态位动态量化与分布特征模拟&#xff0c;不仅可以量化描述物种对环境的需求和适应性&#xff0c;预…...

微服务参数透传实现

说明&#xff1a;在微服务架构中&#xff0c;用户身份经网关验证后&#xff0c;我们可以将用户信息&#xff0c;如ID加入到请求头上。后面的微服务中&#xff0c;可以设置一个拦截器&#xff0c;拦截请求&#xff0c;获取请求头上的用户ID&#xff0c;加入到ThreadLocal中。 最…...

leetcode 767. Reorganize String(重组字符串)

重新排列字符串s中的字母&#xff0c;使得任意两个相邻的字母都不相同。 思路&#xff1a; 让相邻字母不同&#xff0c;能想到的办法是先把相同的字母排列&#xff0c; 然后在相同字母的缝隙中插入另一种字母。 比如"aab", 先把"a a"排出来&#xff0c;再…...

java八股文面试[数据结构]——List和Set的区别

List和Set是用来存放集合的接口&#xff0c;并且二者都继承自接接口Collection List 中的元素存放是有序的&#xff0c;可以存放重复的元素&#xff0c;检索效率较高&#xff0c;插入删除效率较低。 Set 没有存放顺序不能存放重复元素检索效率较低&#xff0c;插入删除效率较…...

脑机接口里程碑!一天2篇Nature!

2023年8月23日&#xff0c;《Nature》期刊一口气发表了两项独立的脑机接口方向的研究。 一项来自加州大学旧金山分校华裔科学家张复伦团队&#xff0c;另一项来自斯坦福大学的神经科学家弗朗西斯威利特(Francis Willett)团队。两项研究都旨在帮助那些因脑损伤和疾病而失去语言能…...

C语言strchr函数

描述 strchr函数用于在一个字符串中查找某个字符的第一次出现的位置。 函数的声明&#xff1a; char * strchr(const char *s, int c); 其中&#xff0c;s是要进行查找的字符串&#xff0c;c是要查找的字符。函数返回指向第一次出现字符 c 的指针&#xff0c;如果未找到&…...

Linux下的Shell基础——Shell概述和入门(一)

前言&#xff1a; Shell还是一个功能相当强大的编程语言&#xff0c;易编写、易调试、灵活性强。为了方便后续的学习&#xff0c;我们需要学习在Linux系统下的Shell编程 目录 一、Shell概述 1.Linux 提供的 Shell 解析器有 2. 默认的解析器是 bash 二、Shell 脚本入门 1.脚…...

当你在浏览器中输入了网址访问时产生了哪些技术步骤

当你在浏览器中输入了网址访问时产生了哪些技术步骤 前段时间在知乎上了看一些网络方面的知识&#xff0c;刚好小编自己也是从事这一块的相关工作由对网络方面有一定的了解。今天我们来讲讲&#xff0c;当你在浏览器中输入本站域名并回车后&#xff0c;这背后到底发生来什么事…...

嵌入式Linux人脸检测libfacedetection

人脸检测 此库依赖Opencv&#xff0c;所以首先要移植Opencv到板子上。 笔者使用LVGL搭建了一个界面&#xff0c;界面有些卡顿&#xff08;主要原因是文件存取较慢&#xff09;&#xff0c;演示效果如下&#xff1a; OpenCV 首先要交叉编译Opencv 参考&#xff1a;https://…...

Hugo托管到Github Pages

Github通过其Github Pages服务可以user、project或organization提供免费快速的静态托管&#xff0c;同时使用Github Actions自动化开发工作流和构建。 1.创建Github仓库 可见性为public。 命名为username.github.io&#xff0c;username为你的Github用户名。 2.添加远程仓库…...

Python经典面试题——在txt里面添加字段和数据

1. 问题&#xff1a; 如何在txt中实现第一行的字段加一个"test",如果第二行开始有数据&#xff0c;在每条数据的最后加"ok" 2.条件 提供的txt文本如下 时间--地区--人口---降雨量----- 20220101--北京--200--0.5----- 20230101--成都--100--0.55----- …...

【观察】打造以AI为导向的基础设施,联想锚定AI算力“主航道”

毫无疑问&#xff0c;人工智能对人类社会来说并不是一项简单的技术革命&#xff0c;它象征着一个时代的到来&#xff0c;如同工业时代之于农业时代一样&#xff0c;会带来天翻地覆的变革&#xff0c;影响人类社会百年、甚至千年的进程。 而AI算力对于推动人工智能应用的重要性毋…...

预防缓存穿透工具类

1. 前言 缓存穿透大家都知道&#xff0c;这里简单过一下 缓存和数据库中都没有的数据&#xff0c;而用户不断发起请求。比如查询id -1 的值 想着很多面向C端的查询接口&#xff0c;可能都需要做一下缓存操作&#xff0c;这里简单写了个自定义注解&#xff0c;将查询结果(包含…...

会员管理系统实战开发教程04-会员开卡

我们已经用3篇篇幅介绍了会员管理的功能&#xff0c;接着就要开发会员的业务。通常我们开通会员之后需要给会员开通会员卡&#xff0c;一个会员可以有多张会员卡。 在数据源设计的时候&#xff0c;像这种一个会员有多张会员卡的&#xff0c;我们称之为一对多的关系&#xff0c…...

数据结构(2)

冒泡排序&#xff1a; 1.比较相邻的两个元素。如果前一个元素比后一个元素大&#xff0c;则交换两者位置。 2.对每一对相邻元素做相同工作&#xff0c;从第一对元素到最后一对元素&#xff0c;最后的一个元素就是最大的元素。 for(int ia.length-1;i>0;i--){for (int j 0…...

使用ELK(ES+Logstash+Filebeat+Kibana)收集nginx的日志

文章目录 Nginx日志格式修改配置logstash收集nginx日志引入Redis收集日志写入redis从redis中读取日志 引入FilebeatFilebeat简介Filebeat安装和配置 配置nginx转发ES和kibanaELK设置账号和密码 书接上回&#xff1a;《ELK中Logstash的基本配置和用法》 Nginx日志格式修改 默认…...

TDengine server连接遇到的坑

一、TDengine安装 TDengine目前只有linux版本的server端&#xff0c;安装教程参考 https://zhuanlan.zhihu.com/p/302413259 二、TDengine连接 TDengine连接目前支持两种方式&#xff0c;一种是原生连接&#xff0c;该方法的默认端口号为6030&#xff1b;另一种是REST API连…...

什么是NetDevOps

NetDevOps 是一种新兴的方法&#xff0c;它结合了 NetOps 和 DevOps 的流程&#xff0c;即将网络自动化集成到开发过程中。NetDevOps 的目标是将虚拟化、自动化和 API 集成到网络基础架构中&#xff0c;并实现开发和运营团队之间的无缝协作。 开发运营&#xff08;DevOps&…...

中小金融机构数字化转型最大的挑战是什么?

中国银保监会办公厅印发的《关于银行业保险业数字化转型的指导意见》强调&#xff0c;银行保险机构要加强顶层设计和统筹规划&#xff0c;科学制定数字化转型战略&#xff0c;统筹推进工作&#xff0c;并从战略规划与组织流程建设、业务经营管理数字化、数据能力建设、科技能力…...