了解如何在你的 app 中支持 energykit,以便用户可以优化家庭用电量。这可以帮助用户在电力更清洁、更便宜的时段运行电器或为电动汽车充电。详细了解如何进行设置,如何生成充电计划,以及如何通过用电量反馈向用户提供能耗洞察信息等详情。

视频封面
视频地址

此文章由AI生成,可能存在错误,如有问题,请联系djs66256@163.com

使用 EnergyKit 优化家庭用电量

EnergyKit 是一个强大的框架,帮助开发者将电网洞察信息整合到住宅应用中,使用户能够更智能地管理家庭用电。本篇文章将详细介绍如何将 EnergyKit 集成到应用中,帮助用户在更清洁且可能更便宜的时段运行电器或为电动汽车充电。

什么是 EnergyKit?

EnergyKit 是苹果推出的一个框架,旨在帮助开发者获取电网预测信息,优化家庭用电。该框架支持开发者获取用电指导、生成充电计划,并通过用电量反馈向用户提供能耗洞察信息。通过 EnergyKit,用户可以了解电网中相对清洁的电力供应时段,从而优化用电行为。

加入 EnergyKit

将 EnergyKit 集成到应用的第一步是让用户选择加入”清洁能源充电”体验。用户需要为每个希望使用更清洁电力充电的地点进行选择。在应用中,可以通过一个开关控件让用户选择是否启用”清洁能源充电”功能。

加入流程的核心是 EnergyVenue,它代表一个物理场所,设备从电网消耗电力。开发者可以通过 EnergyVenue.venue(for: venueID) 方法检索用户选择的地点。每次应用启动时,都应检查用户之前选择的场所是否仍然有效。

以下是检索 EnergyVenue 的代码示例:

// Retrieve an EnergyVenue

import EnergyKit
import Foundation

@Observable final class EnergyVenueManager  {

    let venue: EnergyVenue

    init?(venueID: UUID) async {
        guard let energyVenue = await EnergyVenue.venue(for: venueID) else {
            return nil
        }
        venue = energyVenue
    }
}

生成充电计划

选择 EnergyVenue 后,下一步是生成”清洁能源充电计划”。计划的基础是”用电指导”(Electricity Guidance),它提供用电优化的建议。”用电指导”分为两种类型:

  1. 减少(Reduce):适用于智能恒温器等减少用电量的设备。
  2. 转移(Shift):适用于电动汽车等可以调整用电时段的设备。

通过 ElectricityGuidance.sharedService.guidance(using:query,at:venueID) 方法可以获取用电指导。以下是获取用电指导的代码示例:

// Fetch ElectricityGuidance

import EnergyKit
import Foundation

@Observable final class EnergyVenueManager  {
    // The current active guidance.
    var guidance: ElectricityGuidance?

    fileprivate func streamGuidance(
        venueID: UUID,
        update: (_ guidance: ElectricityGuidance) -> Void
    ) async throws {
        let query = ElectricityGuidance.Query(suggestedAction: .shift)
        for try await currentGuidance in ElectricityGuidance.sharedService.guidance(
            using: query,
            at: venueID
        ) {
            update(currentGuidance)
              break
        }
    }
}

用电量反馈与洞察

为了让 EnergyKit 提供准确的用电洞察,开发者需要提交充电设备的用电数据。这些数据通过 LoadEvents 提交,并在充电过程中定期更新。用电量按电网清洁度和电价分类:

  • 清洁度分类
    • 清洁(Clean)
    • 减少(Reduced)
    • 避免(Avoided)
  • 电价分类(如果有费率计划信息):
    • 超级非高峰(Super Off-Peak)
    • 非高峰(Off-Peak)
    • 部分高峰(Partial Peak)
    • 高峰(Peak)
    • 关键高峰(Critical Peak)

以下是创建和提交 LoadEvents 的代码示例:

// Update charging measurements

import EnergyKit

// A controller that handles an electric vehicle
@Observable class ElectricVehicleController {
    fileprivate func chargingMeasurement() -> ElectricVehicleLoadEvent.ElectricalMeasurement {
        let stateOfCharge = Int(configuration.state.stateOfCharge.rounded(.down))
        let power = Measurement<UnitPower>(
            value: configuration.properties.chargingPower * 1000000,
            unit: .milliwatts
        )
        let energy = Measurement<UnitEnergy>(
            value: configuration.state.cummulativeEnergy * 1000000,
            unit: .EnergyKit.milliwattHours
        )
        return ElectricVehicleLoadEvent.ElectricalMeasurement(
            stateOfCharge: stateOfCharge,
            direction: .imported,
            power: power,
            energy: energy
        )
    }
}

获取用电洞察

提交 LoadEvents 后,开发者可以通过 ElectricityInsightQuery 获取用电洞察。以下是查询洞察的代码示例:

// Create an insight query

import EnergyKit

@Observable final class EnergyVenueManager  {
    func createInsightsQuery(on date: Date) -> ElectricityInsightQuery {
        return ElectricityInsightQuery(
            options: .cleanliness.union(.tariff),
            range: self.dayInterval(date: date),
            granularity: .daily,
            flowDirection: .imported
        )
    }
}

总结

EnergyKit 为开发者提供了强大的工具,帮助用户优化家庭用电。通过以下步骤可以完成集成:

  1. 用户加入:让用户选择加入”清洁能源充电”体验。
  2. 获取用电指导:使用 ElectricityGuidance 获取优化建议。
  3. 提交用电数据:通过 LoadEvents 反馈充电行为。
  4. 生成洞察:利用 ElectricityInsightQuery 提供用户用电报告。

开发者可以访问苹果官方文档进一步了解 EnergyKit 的实现细节,并通过示例代码优化应用功能。

相关视频

完成后台任务
探索 SwiftUI 中的并发机制

文档

Apple 2030