电力公用事业如何使用 Amazon Timestream 分析和检测谐波问题:第二部分 数据库博客
电力公用事业如何使用亚马逊 Timestream 分析和检测谐波问题
关键要点
本文将介绍如何利用亚马逊 Timestream 数据库和 AWS 服务构建功率质量分析的概念验证PoC,以处理电力公用事业的数据分析。在此过程中,我们展示了如何将客户电表数据和谐波数据直接从 AWS IoT Core 导入 Timestream 数据库,并进行后续处理与分析。
在本系列的第一篇文章中,我们演示了如何使用亚马逊 Timestream 数据库及其内置的时间序列功能,插值数据并计算客户能耗与功率质量问题之间的相关性。本篇文章将指导您如何使用 AWS IoT Core、Amazon S3、Timestream 和 AWS CloudFormation 建立功率质量分析 PoC。
在典型的功率质量分析实施中,源数据通常来自不同的系统:
功率质量数据通过第三方功率质量仪表收集,相关应用进行数据采集、处理和存储。客户和工业CampI仪表数据从高级计量基础设施AMI和计量数据管理MDM系统中获取。了解更多信息,请参见 AWS 中的公用事业智能计量应用集成。本篇文章重点介绍如何将客户计量数据和谐波计量数据直接从 AWS IoT Core 导入 Timestream 数据库。为进行功率质量谐波分析,可以利用 AWS Lambda 函数筛选和路由选定的计量数据信息到 Timestream 数据库。
解决方案概述
以下图示展示了该功率质量分析 PoC 的整体数据流。
工作流程步骤如下:
谐波仪表数据模拟器每 15 分钟生成一次功率质量数据并发送至 AWS IoT Core。这些数据包括一个月的实际生产计量数据,去除了数据识别信息。CampI 仪表数据模拟器被用来模拟计量数据间隔消耗数据 kWh、电压、环境温度、功率质量谐波数据通过消息队列遥测传输 (MQTT) 协议发送到 AWS IoT Core。
智能电表生成的计量数据被导入到 AWS IoT Core。AWS IoT Core 是一个托管云平台,允许连接设备与云应用程序及其他设备进行轻松、安全的交互,支持数十亿设备和数万亿条消息的处理与路由。
数据到达 AWS IoT Core 后,规则和操作用于进一步筛选数据并将其路由到数据处理组件。处理后的数据存储到 Timestream 数据库中以便进行功率质量分析。
Timestream 数据库使用内置调度程序和插值及相关性计算功能,定期计算功率质量相关性如每日或每周。
Timestream 的多度量特性允许将多种计量数据存储在同一表中。然而,AWS IoT Core 目前不支持将多度量值从 IoT Core 规则操作写入 Timestream 表。可使用 Timestream 脚本将单度量值转换为多度量值。
接下来的部分将详细说明不同组件的设置过程:模拟器、AWS IoT Core、Timestream 数据库表,及定期查询的单到多测量转换和相关性计算。
先决条件
该解决方案需要一个活跃的 AWS 账户,并具备创建和修改 AWS 身份与访问管理 (IAM) 角色的权限,同时启用以下服务:
亚马逊 Timestream 数据库AWS IoT Core亚马逊 S3亚马逊 VPCCloudFormation您还需要熟悉 AWS IoT 服务、使用 AWS CloudFormation 部署 AWS 资源,能够进行 Python (36及以上) 编程,并具备一定的技术深度。
请注意,部署 AWS 云资源会产生 费用,您需对所创建的 AWS 资源所产生的费用负责。完成 PoC 后,请确保按照本篇文章最后提到的清理步骤进行清理。
下载快速启动资源
您可以从以下 仓库 下载快速启动资源到您自己的机器或已设置 Python 开发环境的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。此资源包包括本文讨论的 AWS 云资源的 CloudFormation 模板,客户计量和谐波计量的样本数据,以及 Python 模拟器脚本。
设置模拟器
在下载的文件中,您将找到一个名为 datageneratorpy 的 Python 脚本和 requirementstxt 文件,均位于 DataGenerator 目录中。安装模拟器所需的 Python 模块:
bashpip install r requirementstxt
为使模拟器 MQTT 客户端能够安全连接至 AWS IoT Core,您需要配置 IoT 设备证书,并附加正确的 AWS IoT 设备策略。如不熟悉 AWS IoT 设备证书配置,请参考以下 工作坊实验的步骤 14。在 Python 脚本所在目录下创建一个 certs 目录,并将下载的证书复制到该目录,名称如下:
根 CA1 rootCApem私钥 privateKeypem证书 certificatepem部署 AWS IoT 规则和 Timestream 表
为了简化创建 AWS 云资源和所需配置的步骤,我们提供了 CloudFormation 模板。在下载的文件中,您会看到 iottsyaml 文件。通过指定堆栈名称如 pqiottsv1来 部署 iottsyaml 模板。成功部署堆栈后,您将看到 AWS IoT 规则已创建,并带有将筛选后的数据导入 Timestream 表的规则操作,如前面架构图所示。
模拟客户计量数据和谐波计量数据
模拟器 datageneratorpy 从数据目录中的 CSV 文件读取数据,并安全地将客户计量数据能耗:kwh、电压:voltage、接收信号强度指示:rssi 和 功率因数:pf及谐波数据发布到 AWS IoT Core 的 MQTT 主题。
快鸭加速器破解版免费vip您可以在运行模拟器之前,使用 AWS IoT MQTT 测试客户端 订阅 MQTT 主题 过滤器 dpu/。此过滤器将订阅客户计量数据和由模拟器导入的谐波计量数据。
通过以下代码指定 AWS IoT Core 端点,运行模拟器。要找到端点,请导航至 AWS IoT Core 控制台,选择导航窗格中的 设置,然后选择 设备数据端点 和 端点。有关更多信息,请参见 AWS IoT Core 数据平面端点。
bash python3 datageneratorpy e ltiotamazonawscomgt
该命令将开始将客户计量数据和谐波计量数据发布到 AWS IoT Core。我们使用以下 MQTT 主题:
bashdpu/customermeterdatadpu/harmonicsmeterdata
如果希望通过更新 CSV 文件进一步实验数据,可以选择使用标志 o HARMONICS 或 o CUSTOMER 来分别导入谐波数据或客户计量数据。此模拟器代码仅供教育用途,不得在生产环境中使用。
当 Python 代码完成后,验证 Timestream 表中的数据。检查在以下表中是否存在数据:
sqlSELECT FROM dpucustomermeterdata LIMIT 10
meteridmeasurenametimemeasurevaluedoubleCustomerMeter3kwh20220901 0400000000000002352CustomerMeter3kwh20220901 0415000000000002348CustomerMeter3kwh20220901 0430000000000002352CustomerMeter3kwh20220901 0445000000000002352CustomerMeter3kwh20220901 0500000000000002348CustomerMeter3kwh20220901 0515000000000002352CustomerMeter3kwh20220901 0530000000000002352CustomerMeter3kwh20220901 0545000000000002352CustomerMeter3kwh20220901 0600000000000002352CustomerMeter3kwh20220901 0615000000000002348sqlSELECT FROM dpuharmonicmeterdata LIMIT 10
harmonicmeterseriesidmeasurenametimemeasurevaluedoubleHarmonicMeterONEVTHDPhaseAharmonicsvalue20220901 040000000000000120HarmonicMeterONEVTHDPhaseAharmonicsvalue20220901 041500000000000120HarmonicMeterONEVTHDPhaseAharmonicsvalue20220901 043000000000000120HarmonicMeterONEVTHDPhaseAharmonicsvalue20220901 044500000000000130HarmonicMeterONEVTHDPhaseAharmonicsvalue20220901 050000000000000120HarmonicMeterONEVTHDPhaseAharmonicsvalue20220901 051500000000000120HarmonicMeterONEVTHDPhaseAharmonicsvalue20220901 053000000000000120HarmonicMeterONEVTHDPhaseAharmonicsvalue20220901 054500000000000120HarmonicMeterONEVTHDPhaseAharmonicsvalue20220901 060000000000000120HarmonicMeterONEVTHDPhaseAharmonicsvalue20220901 061500000000000120部署定期查询、多测量表和相关性表到 Timestream 数据库
在 IoT 数据成功导入 Timestream 的单度量表后,接下来可以在 AWS 云中部署一组资源。部署 CloudFormation 堆栈 scheduledqueryyaml,并指定一个堆栈名称,例如 pqtscorrelationv1。
通过计量数据模拟器发送的数据具有多度量性质。Timestream 支持基于单个时间戳的多度量数据存储。多度量记录以更紧凑的格式存储时间序列数据,从而降低数据存储成本。紧凑的数据存储使得查询数据更为简单且性能更强,降低了查询成本。
然而,撰写时,AWS IoT Core 规则操作不支持将多度量数据直接导入 Timestream 表。为暂时解决此问题,可以运行定期查询,将多个单度量数据转换为在 Timestream 表中的多度量值。为了简化配置,我们已在 CloudFormation 模板中自动化此步骤,无需进一步操作。

运行 CloudFormation 模板后,请验证定期查询和多度量表的结果。
我们首先验证定期查询。进入 Timestream 控制台,选择导航窗格中的 定期查询,确保定期查询成功运行,可以检查 最近运行时间 列,以确认是否显示了日期/时间,表明查询已执行,准备好下一个定期运行。
使用以下代码验证 dpucustomermeterdatamulti 表中定期查询的输出:
sqlSELECT FROM dpucustomermeterdatamulti” LIMIT 10
meteridmeasurenametimerssipfkwhvoltageCustomerMeter9CustomerMeter20220901 040000000000000770911014428595CustomerMeter9CustomerMeter20220901 041500000000000750991017628616CustomerMeter9CustomerMeter20220901 043000000000000750971020828545CustomerMeter9CustomerMeter20220901 044500000000000760931020828562CustomerMeter9CustomerMeter20220901 050000000000000750921017628564CustomerMeter9CustomerMeter20220901 051500000000000750981020828722CustomerMeter9CustomerMeter20220901 053000000000000760931017628543CustomerMeter9CustomerMeter20220901 05450000000000077099101628586CustomerMeter9CustomerMeter20220901 060000000000000770931014428675CustomerMeter9CustomerMeter20220901 06150000000000075097101628712进行相关性计算
在数据清理完毕后,应用 Pearson 相关性计算。根据不同的业务需求,也可以应用 Spearman 相关性。
如第一部分所述,计量数据到达时,可能会存在缺失数据,这将复杂化计算。此查询首先使用线性插值为谐波计量和常规客户计量插入任何缺失的计量间隔数据。开发人员还可以