I was hoping to get this more refined before sharing, but since I’m in the US and Volvo shut off our API access, I can’t get it better, but I thought someone else might like it.
I was using the volvo2mqtt in conjunction with the wallbox evse to control the rate of charging my 2022 C40. I could set a departure time and a target charge level and it would adjust the amps provided by the wallbox to get the C40 to my target charge just as I wanted to leave. This would help make my batteries nice and warm. I also had it crank up the amps if I turned on the climate controls. It’s my first shot at a complicated automation so I know it is ruff. I’m also new to posting things here so if there’s a better place for something like this, let me know.
alias: c40 Above Target Charge
description: ""
trigger:
- platform: state
entity_id:
- sensor.wallbox_portal_status_description_2
from: null
id: wallbox_state
- platform: state
entity_id:
- sensor.volvo_??????_battery_charge_level
id: c40_battery_level_change
- platform: state
entity_id:
- input_number.c40_target_charge
id: c40_target_charge_change
- platform: device
device_id: ??????
domain: device_tracker
entity_id: ????
type: leaves
zone: zone.home
id: c40 left home
- platform: device
device_id: ????
domain: device_tracker
entity_id: ???????
type: enters
zone: zone.home
id: c40 arrives home
- platform: device
type: turned_on
device_id: ?????
entity_id: ??????
domain: switch
id: c40_ac_on
condition: []
action:
- choose:
- conditions:
- condition: trigger
id:
- wallbox_state
- condition: state
entity_id: sensor.wallbox_portal_status_description_2
state: Ready
sequence:
- device_id: ????
domain: number
entity_id: ???
type: set_value
value: 48
- type: turn_on
device_id: ???
entity_id: ????
domain: switch
- conditions:
- condition: or
conditions:
- condition: trigger
id:
- c40_battery_level_change
- condition: trigger
id:
- c40_target_charge_change
- condition: device
device_id: ?????
domain: device_tracker
entity_id: ????
type: is_home
- condition: template
value_template: >-
{{ (states('sensor.volvo_??????_battery_charge_level')
| float ) >= ( states('input_number.c40_target_charge') | float )
}}
- condition: numeric_state
entity_id: sensor.volvo_??????_battery_charge_level
above: input_number.c40_target_charge
enabled: false
- condition: state
entity_id: sensor.wallbox_portal_status_description_2
state: Charging
enabled: false
sequence:
- type: turn_off
device_id: ?????
entity_id: ?????
domain: switch
- conditions:
- condition: or
conditions:
- condition: trigger
id:
- c40_battery_level_change
- condition: trigger
id:
- c40_target_charge_change
- condition: device
device_id: ?????
domain: device_tracker
entity_id: ?????
type: is_home
- condition: numeric_state
entity_id: sensor.volvo_?????_battery_charge_level
below: input_number.c40_target_charge
- condition: device
type: is_off
device_id: ????
entity_id: ?????
domain: switch
enabled: false
sequence:
- variables:
c40_target_amp: >-
{{ (((75 * (((states('input_number.c40_target_charge')|int) -
(states('sensor.volvo_??????_battery_charge_level')|int))/100))*1000)
/ ((((as_timestamp(states('input_datetime.c40_departure'))) -
now().timestamp())/60)/60))/210 }}
- service: notify.mobile_app_pixel_8_pro
data:
message: "{{ c40_target_amp }}"
enabled: false
- service: number.set_value
data:
value: "{{ c40_target_amp }}"
target:
entity_id: number.wallbox_portal_max_charging_current_2
- type: turn_on
device_id: ????
entity_id: ?????
domain: switch
- service: input_number.set_value
data: {}
target:
entity_id: input_number.thor_target_amp
enabled: false
- conditions:
- condition: trigger
id:
- c40 left China
sequence:
- service: input_number.set_value
data:
value: 60
target:
entity_id: input_number.c40_target_charge
- device_id: ??????
domain: number
entity_id: ????
type: set_value
value: 48
- type: turn_on
device_id: ???
entity_id: ????
domain: switch
- conditions:
- condition: trigger
id:
- c40 arrives home
sequence:
- device_id: ????
domain: number
entity_id: ????
type: set_value
value: 6
- conditions:
- condition: trigger
id:
- c40_ac_on
- condition: device
device_id: ???
domain: device_tracker
entity_id: ????
type: is_home
sequence:
- type: turn_on
device_id: ????
entity_id: ????
domain: switch
- device_id: ????
domain: number
entity_id: ?????
type: set_value
value: 48
- service: input_number.set_value
data:
value: 100
target:
entity_id: input_number.c40_target_charge
- service: input_datetime.set_datetime
data: {}
target:
entity_id: input_datetime.c40_departure
trace:
stored_traces: 20
mode: single