电动汽车智能充电
电动汽车智能充电集成将在电价最低时自动为电动汽车(EV)充电。该集成原生支持Nordpool、Energi Data Service和Entso-e集成。该集成还支持通用价格格式。结合使用模板传感器,可以使用多种不同的价格集成。
该集成计算出一组能够提供最低价格的时段,默认情况下限制为连续的时段。这个计算在明天的电价可用时进行(通常在中欧时间/中欧夏令时13:00之后不久到午夜之间),或者在一天中的时间早于配置的充电完成时间时进行。当自动充电开始后,设置的更改将不会产生任何影响。
要求
- Nordpool、Energi Data Service、Entso-e集成,或使用支持的通用价格格式生成价格数据的模板传感器。
- Home Assistant 2023.4版本或更新版本。
功能
- 基于电价的自动电动汽车充电控制。
- 原生支持Nordpool、Energi Data Service和Entso-e集成。
- 支持通用价格格式。可以使用模板传感器从多个价格集成获取价格信息。
- 配置每天充电应完成的最晚时间,以及充电可以开始的最早时间。
- 选择偏好一次连续充电还是多次(可能更优化价格)非连续充电。
- 可选设置应达到的最低电量水平,不受电价影响。
- 可选设置仅在电价低于指定水平时充电(如果最低电量设置需要,将被忽略)。
- 可选设置,如果明天结束时电价非常低,则进一步降低最高电价水平。
- 可选设置,如果电量低于配置的水平,立即开始充电。
- 可选设置,如果电价低于配置的水平,立即开始充电。
- 可选提供电动汽车何时连接到充电器的信息。
- 可选在充电完成后保持充电器开启,以便在出发前进行预调节,即可以从电网而不是电池进行预热/预冷。
- 服务调用,动态控制所有影响充电的配置参数。
- 自动检测并连接到Volkswagen We Connect ID和OCPP集成。可以手动配置与其他电动汽车和充电器集成的连接。
安装
HACS
- 在Home Assistant中,转到HACS -> 集成。点击"+ 浏览和下载存储库",搜索"EV Smart Charging"。
- 在Home Assistant中,转到设置 -> 设备和服务 -> 集成。点击"+ 添加集成"并搜索"EV Smart Charging"。
手动安装
- 使用你选择的工具打开Home Assistant配置文件夹(你可以找到
configuration.yaml
的地方)。 - 如果你没有
custom_components
文件夹,需要创建一个。 - 在
custom_components
文件夹中创建一个名为ev_smart_charging
的新文件夹。 - 从本存储库的
custom_components/ev_smart_charging/
文件夹下载_所有_文件。 - 将下载的文件放在你创建的新文件夹中。
- 重启Home Assistant。
- 在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可用于创建以下类型的图表。黑线显示自动充电将在何时进行。
根据所使用的价格单位,修改unit
、float_precision
和color_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
属性,那么可以通过以下三个步骤进行配置使用。
- 在设置 -> 设备和服务 -> 助手中创建一个数字助手(例如命名为"SOC",通常会创建一个实体
input_number.soc
) - 创建一个自动化,将此数字助手的值设置为状态属性的值。
- 在配置此集成时,使用助手实体
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个设备 -> 控制。
- 将电动车连接到充电器。
- 按下手动开始充电。
- 检查充电是否开始。
- 按下手动停止充电。
- 检查充电是否停止。
- 按下手动开始充电。
- 检查充电是否开始。
如果以上步骤都正常工作,说明集成能够控制充电。