Project Icon

ev_smart_charging

基于电价自动优化调度的智能电动车充电系统

EV Smart Charging是一款智能电动车充电优化系统,可根据实时电价自动规划最经济的充电时段。系统支持多种电价数据源,允许设置充电完成时间和最低电量等参数,提供多项智能充电功能。兼容多种电动车和充电设备,在满足用车需求的同时有效降低充电成本。

电动汽车智能充电

GitHub 发布 Codecov 许可证

hacs 项目维护 赞助咖啡

图标

电动汽车智能充电集成将在电价最低时自动为电动汽车(EV)充电。该集成原生支持NordpoolEnergi Data ServiceEntso-e集成。该集成还支持通用价格格式。结合使用模板传感器,可以使用多种不同的价格集成。

该集成计算出一组能够提供最低价格的时段,默认情况下限制为连续的时段。这个计算在明天的电价可用时进行(通常在中欧时间/中欧夏令时13:00之后不久到午夜之间),或者在一天中的时间早于配置的充电完成时间时进行。当自动充电开始后,设置的更改将不会产生任何影响。

要求

功能

  • 基于电价的自动电动汽车充电控制。
  • 原生支持NordpoolEnergi Data ServiceEntso-e集成。
  • 支持通用价格格式。可以使用模板传感器从多个价格集成获取价格信息。
  • 配置每天充电应完成的最晚时间,以及充电可以开始的最早时间。
  • 选择偏好一次连续充电还是多次(可能更优化价格)非连续充电。
  • 可选设置应达到的最低电量水平,不受电价影响。
  • 可选设置仅在电价低于指定水平时充电(如果最低电量设置需要,将被忽略)。
  • 可选设置,如果明天结束时电价非常低,则进一步降低最高电价水平。
  • 可选设置,如果电量低于配置的水平,立即开始充电。
  • 可选设置,如果电价低于配置的水平,立即开始充电。
  • 可选提供电动汽车何时连接到充电器的信息。
  • 可选在充电完成后保持充电器开启,以便在出发前进行预调节,即可以从电网而不是电池进行预热/预冷。
  • 服务调用,动态控制所有影响充电的配置参数。
  • 自动检测并连接到Volkswagen We Connect IDOCPP集成。可以手动配置与其他电动汽车和充电器集成的连接。

安装

HACS

  1. 在Home Assistant中,转到HACS -> 集成。点击"+ 浏览和下载存储库",搜索"EV Smart Charging"。

在Home Assistant实例中打开,并在Home Assistant社区商店中打开存储库。

  1. 在Home Assistant中,转到设置 -> 设备和服务 -> 集成。点击"+ 添加集成"并搜索"EV Smart Charging"。

打开Home Assistant实例并开始设置新的集成。

手动安装

  1. 使用你选择的工具打开Home Assistant配置文件夹(你可以找到configuration.yaml的地方)。
  2. 如果你没有custom_components文件夹,需要创建一个。
  3. custom_components文件夹中创建一个名为ev_smart_charging的新文件夹。
  4. 从本存储库的custom_components/ev_smart_charging/文件夹下载_所有_文件。
  5. 将下载的文件放在你创建的新文件夹中。
  6. 重启Home Assistant。
  7. 在Home Assistant中,转到设置 -> 设备和服务 -> 集成。点击"+ 添加集成"并搜索"EV Smart Charging"。

配置

配置在Home Assistant用户界面中完成。

配置表单包含集成交互的实体。

参数必填描述
名称实例的名称。
电价实体Nordpool、Energi Data Service、Entso-e集成传感器实体,或提供通用价格格式价格的模板传感器。对于Entso-e集成,应使用名为sensor.average_electricity_price_today的实体。
电动汽车电量实体车辆电量状态的实体。值在0到100之间。请注意,这个实体对集成至关重要。如果无法获得实时电量信息,请仔细阅读下面关于电动汽车电量实体的更多信息。
电动汽车目标电量实体电量状态目标值的实体。值在0到100之间。如果未提供,假定为100。
充电器控制开关实体如果提供,集成将通过将此实体的状态设置为"开"或"关"来直接控制充电器。
通过电动汽车集成控制充电如果使用电动汽车集成(而不是充电器集成)来控制充电的开始/停止,请选择此项。另外,如果使用电动汽车集成来控制充电的开始/停止,强烈建议创建一个自动化来控制switch.ev_smart_charging_ev_connected

除了名称外,上述配置项可以在初始配置后在设置 -> 设备和服务 -> 集成 -> EV Smart Charging -> 1个设备 -> 配置中进行更改。要更改名称,可以使用Home Assistant中重命名集成或设备的原生方式。

影响充电方式的其他参数作为配置实体提供。这些实体可以放置在仪表板上,并可以使用自动化进行控制。

配置实体

实体类型描述、有效值范围和服务调用
select.ev_smart_charging_charge_start_time选择每天充电开始的最早时间。如果选择"None",则不会对开始时间有明确限制。有效选项:"00:00"、"01:00"、...、"23:00"和"None"。可通过服务调用select.select_option设置。
select.ev_smart_charging_charge_completion_time选择每天充电达到目标电量的最晚时间。如果选择"None",充电将使用所有有价格信息的时间段进行优化,包括在明天的价格可用之前。有效选项:"00:00"、"01:00"、...、"23:00"和"None"。可通过服务调用select.select_option设置。
number.ev_smart_charging_charging_speed数字充电速度,以每小时百分比表示。例如,如果电动车电池容量为77 kWh,充电器可提供11 kW(三相16 A),则将此参数设置为14.3(11/77*100)。如果充电功率有限制,建议选择较小的数值。尝试看看哪个适合你!有效值:最小=0.1,步长=0.1,最大=100。可通过服务调用number.set_value设置。
number.ev_smart_charging_electricity_price_limit数字如果激活了switch.ev_smart_charging_apply_price_limit开关,当电价高于此限制时将不会充电。注意,这可能导致电动车无法充到目标电量。有效值:最小=-10000,步长=0.01,最大=10000。可通过服务调用number.set_value设置。
number.ev_smart_charging_minimum_ev_soc数字计划充电时应充到的最低电量百分比,不受电价影响。有效值:最小=0,步长=1,最大=100。可通过服务调用number.set_value设置。
number.ev_smart_charging_opportunistic_level数字如果激活了switch.ev_smart_charging_opportunistic_charging开关,当当天结束时的价格低于电价限制 * 机会主义水平 / 100时,价格限制会进一步降低。例如,如果机会主义水平设为50,价格限制将设为电价限制的50%。如果明天的价格可用,将使用明天结束时的价格作为触发器。有效值:最小=0,步长=1,最大=100。可通过服务调用number.set_value设置。
number.ev_smart_charging_low_soc_charging_level数字如果激活了switch.ev_smart_charging_low_soc_charging开关,当电动车电量低于此水平时将立即充电。有效值:最小=0.0,步长=1.0,最大=100。可通过服务调用number.set_value设置。
number.ev_smart_charging_low_price_charging_level数字如果激活了switch.ev_smart_charging_low_price_charging开关,当电价低于此水平时将立即充电。有效值:最小=-10000,步长=0.01,最大=10000。可通过服务调用number.set_value设置。

实体

实体类型描述
sensor.ev_smart_charging_charging传感器状态为"on"或"off"。可用于自动化控制电动车充电器。
sensor.ev_smart_charging_status传感器状态为以下之一:"等待新价格"、"无计划充电"、"等待充电开始"、"充电中"、"保持充电器开启"、"低价充电"、"低电量充电"、"已断开连接"和"智能充电未激活"。
switch.ev_smart_charging_smart_charging_activated开关开启或关闭电动车智能充电集成。
switch.ev_smart_charging_apply_price_limit开关应用价格限制。
switch.ev_smart_charging_opportunistic_charging开关激活机会主义充电。参见配置实体number.ev_smart_charging_opportunistic_level的描述。此功能要求"电价限制"功能开启。
switch.ev_smart_charging_low_soc_charging开关当电动车电量低于配置水平时立即激活充电。强烈建议创建一个自动化来控制switch.ev_smart_charging_ev_connected,如果此开关设置为开启。注意,此充电不会显示为计划充电。典型用例是在回家时直接将电动车充电到最低水平,然后在价格最低时使用计划充电进行完全充电。
switch.ev_smart_charging_low_price_charging开关当电价低于配置水平时立即激活充电。强烈建议创建一个自动化来控制switch.ev_smart_charging_ev_connected,如果此开关设置为开启。注意,此充电不会显示为计划充电。
switch.ev_smart_charging_continuous_charging_preferred开关如果开启,将基本安排一次连续的充电会话。如果关闭,将在电价最低的时段安排充电,即使这些时段不连续。
switch.ev_smart_charging_keep_charger_on开关如果为"on",sensor.ev_smart_charging_charging在完成充电周期后不会关闭。此功能旨在在出发前启用预处理,即预热/预冷可以从电网而不是电池进行。如果使用此选项,"电价限制"功能将被关闭,反之亦然。注意为使此功能正常工作,需要适当控制switch.ev_smart_charging_ev_connected。另外,假设电动车本身在达到目标电量时会停止充电。
switch.ev_smart_charging_ev_connected开关告诉集成电动车已连接到充电器。最好通过自动化控制(见下面的示例)。可以避免在充电应开始时电动车未连接到充电器的问题。使用它还可以确保在电动车未连接到充电器时将sensor.ev_smart_charging_charging设置为"off"。
button.ev_smart_charging_manually_start_charging按钮手动开始充电。这完全独立于自动充电。
button.ev_smart_charging_manually_stop_charging按钮手动停止充电。这完全独立于自动充电。

传感器属性

传感器sensor.ev_smart_charging_charging具有以下属性。

属性描述
current_price来自电价实体的当前价格。
ev_soc电动车电量实体报告的当前电量百分比。
ev_target_soc电动车目标电量实体报告的目标电量百分比。
charging_is_planned如果计划了充电则为true,否则为false。充电完成后设置为false
charging_start_time如果计划了充电,充电将开始的日期和时间。
charging_stop_time如果计划了充电,充电将停止的日期和时间。
charging_number_of_hours如果计划了充电,将进行充电的小时数。如果激活了apply_price_limit开关,这可能少于开始和停止时间之间的小时数。
raw_two_days来自电价实体的今天和明天的电价。
charging_schedule计算出的充电计划。可用于ApexCharts卡片来可视化计划的充电,见下文。

Lovelace UI

ApexCharts Card可用于创建以下类型的图表。黑线显示自动充电将在何时进行。 根据所使用的价格单位,修改unitfloat_precisioncolor_threshold的设置。例如,如果使用价格单位SEK/kWh,请更改以下示例中的行。

        unit: ' SEK/kWh'

        float_precision: 2

        color_threshold:
          - value: -1
            color: cyan
          - value: 0
            color: green
          - value: 0.4
            color: orange
          - value: 1
            color: red
          - value: 2
            color: magenta
          - value: 5
            color: black

图表

type: vertical-stack
cards:
  - type: custom:apexcharts-card
    now:
      show: true
      label: 现在
      color: '#ffc0cb'
    locale: zh
    header:
      show: true
      title: 电动汽车智能充电
      show_states: true
    graph_span: 2d
    yaxis:
      - min: ~0
        apex_config:
          forceNiceScale: true
    span:
      start: day
    apex_config:
      legend:
        show: false
      xaxis:
        labels:
          show: true
          format: HH
          rotate: -45
          rotateAlways: true
          hideOverlappingLabels: true
          style:
            fontSize: 10
            fontWeight: 10
    series:
      - entity: sensor.ev_smart_charging_charging
        name: 电价
        unit: ' 欧分/kWh'
        data_generator: >
          return entity.attributes.raw_two_days.map((entry) => { return [new
          Date(entry.start), entry.value]; });
        type: line
        float_precision: 0
        show:
          in_header: before_now
        extend_to: false
        color_threshold:
          - value: -100
            color: cyan
          - value: 0
            color: green
          - value: 40
            color: orange
          - value: 100
            color: red
          - value: 200
            color: magenta
          - value: 500
            color: black
      - entity: sensor.ev_smart_charging_charging
        name: 充电
        data_generator: >
          return entity.attributes.charging_schedule.map((entry) => { return
          [new Date(entry.start), entry.value]; });
        type: area
        curve: stepline
        color: black
        show:
          in_header: false
        extend_to: false
    experimental:
      color_threshold: true
  - type: entities
    entities:
      - entity: sensor.ev_smart_charging_charging
        name: 充电
      - entity: switch.ev_smart_charging_smart_charging_activated
        name: 智能充电已激活
      - entity: switch.ev_smart_charging_apply_price_limit
        name: 应用价格限制
      - entity: switch.ev_smart_charging_opportunistic_charging
        name: 机会充电
      - entity: switch.ev_smart_charging_continuous_charging_preferred
        name: 首选连续充电
      - entity: switch.ev_smart_charging_keep_charger_on
        name: 保持充电器开启
      - entity: switch.ev_smart_charging_low_price_charging
        name: 低价充电
      - entity: switch.ev_smart_charging_low_soc_charging
        name: 低电量充电
      - entity: button.ev_smart_charging_manually_start_charging
        name: 手动开始充电
      - entity: button.ev_smart_charging_manually_stop_charging
        name: 手动停止充电
    title: 电动汽车智能充电
    show_header_toggle: false
  - type: entity
    entity: sensor.ev_smart_charging_status
    name: 状态
  - type: entity
    entity: sensor.ev_smart_charging_charging
    attribute: EV SOC
    name: 电动汽车电量
    icon: mdi:battery-70
    unit: '%'

与电动汽车集成

电动汽车SOC实体

如果电动汽车SOC不是作为实体的状态而是作为状态属性提供,例如一个名为sensor.my_ev的传感器具有EV SOC属性,那么可以通过以下三个步骤进行配置使用。

  1. 在设置 -> 设备和服务 -> 助手中创建一个数字助手(例如命名为"SOC",通常会创建一个实体input_number.soc
  2. 创建一个自动化,将此数字助手的值设置为状态属性的值。
  3. 在配置此集成时,使用助手实体input_number.soc作为EV SOC实体
alias: 电动汽车SOC
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.my_ev
    attribute: EV SOC
condition: []
action:
  - service: input_number.set_value
    data:
      value: "{{ state_attr('sensor.my_ev', 'EV SOC') }}"
    target:
      entity_id: input_number.soc
mode: single

本集成的许多功能依赖于知道电动汽车SOC。然而,如果无法获取此信息,仍然可以使用此集成来控制充电器。在这种情况下,在设置 -> 设备和服务 -> 助手中创建一个数字助手(例如命名为"SOC",通常会创建一个实体input_number.soc),然后在配置集成时使用此实体。为了使集成良好运行,SOC的值应在充电周期之间变化。建议的方法是在充电完成时将SOC值设置为100,然后在开始下一个充电周期时将其设置为适当的值。

例如,如果SOC实体设置为60,目标SOC实体设置为100(或未配置),充电速度参数设置为10,那么将有4小时的充电时间,(100-60)/10 = 4。

电动汽车目标SOC实体

如果电动汽车目标SOC作为状态属性提供,可以使用与上述电动汽车SOC类似的解决方案。

如果没有提供电动汽车目标SOC的集成,可以在设置 -> 设备和服务 -> 助手中创建一个数字助手(例如命名为"目标SOC",通常会创建一个实体input_number.target_soc),然后在配置集成时使用此实体。

与充电器集成

如果您的充电器集成没有提供此集成可用于控制的开关实体,那么在许多情况下,可以通过自动化来建立此集成与充电器集成之间的连接。

此外,如果有关电动汽车连接到充电器的信息可用,自动化可以将该信息提供给集成,以改善在计划开始充电时车辆未连接到充电器的情况处理。

以下提供了一些示例。更多示例可以在Wiki页面中找到。

开始充电的自动化示例

alias: 电动汽车智能充电 - 开始
description: ""
mode: single
trigger:
  - platform: state
    entity_id:
      - sensor.ev_smart_charging_charging
    from: "off"
    to: "on"
condition: []
action:
  - service: easee.set_circuit_dynamic_limit
    data:
      charger_id: exxxxxxx(替换为您的充电器ID,可以在Easee应用程序中找到(充电器设置 -> 关于 -> 序列号))
      currentP1: 16(替换为您首选的充电电流)

请将action:的内容替换为适合您充电器的内容。

停止充电的自动化示例

alias: 电动车智能充电 - 停止
description: ""
mode: single
trigger:
  - platform: state
    entity_id:
      - sensor.ev_smart_charging_charging
    from: "on"
    to: "off"
condition: []
action:
  - service: easee.set_circuit_dynamic_limit
    data:
      charger_id: exxxxxxx (替换为您的充电器ID,可在Easee应用中找到(充电器设置 -> 关于 -> 序列号))
      currentP1: 0 (设置为低于6的值以停止充电)

请将action:的内容替换为适合您充电器的内容。

通知集成电动车已连接充电器的自动化示例

alias: 电动车智能充电 - 电动车已连接
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.ocpp_status_connector
condition: []
action:
  - if:
      - condition: state
        entity_id: sensor.ocpp_status_connector
        state: Preparing
    then:
      - service: switch.turn_on
        data: {}
        target:
          entity_id: switch.ev_smart_charging_ev_connected
    else:
      - if:
          - condition: state
            entity_id: sensor.ocpp_status_connector
            state: Available
        then:
          - service: switch.turn_off
            data: {}
            target:
              entity_id: switch.ev_smart_charging_ev_connected
mode: single

验证配置

要验证集成是否能够控制充电,请转到设置 -> 设备和服务 -> 集成 -> 电动车智能充电 -> 1个设备 -> 控制。

  1. 将电动车连接到充电器。
  2. 按下手动开始充电。
  3. 检查充电是否开始。
  4. 按下手动停止充电。
  5. 检查充电是否停止。
  6. 按下手动开始充电。
  7. 检查充电是否开始。

如果以上步骤都正常工作,说明集成能够控制充电。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号