Hi!
I’m looking for a solution to display the stats of the las 28 days using sensor.car.daily_driving_stats.
I’d like to display a chart of daily consumption and distance.
Thank you,
Balint
Hi!
I’m looking for a solution to display the stats of the las 28 days using sensor.car.daily_driving_stats.
I’d like to display a chart of daily consumption and distance.
Thank you,
Balint
Hi,
It"s possible to add control to start and stop charging the vehicle, like on the mobile application?
The goal is to manage the charge via Home Assistant depending on the sunshine to optimize charging with the photovoltaic panels.
THANKS
You can to that with the “start_charge” service. It is in the documentation under “Suported services”.
nice one!
Can you share the yml with us ?
Thank you !
I’ve been using it since yesterday ! also for people who come to this post :
I have 2024 Ioniq 5. all of the entities should include 2024_ioniq_5
instead of ioniq_5
Also inside the configuration file
Set the force Update for once/twice a day as it draining the 12v Battery if more
Good luck !
I have it updating 6 times a day and it also refreshes every 5 minutes if I run a certian automation, I have had no issues with 12v, although I did replace mine as soon as I got the car with a lithium one.
i have added this info to the repo
Thanks I’ve installed for my Ioniq 6. Any tips on how you created the graphics so I can adapt for the Ioniq 6?
Should be easy to build on your own.
The Picture of the Car is a png without Background. Just use a simple jpg with such Service: Bild-Hintergrund entfernen oder transparent machen – remove.bg
type: picture-elements
image: /local/images/konatrans.png
elements:
- type: state-badge
entity: sensor.kona2020_ev_range
style:
top: 14%
left: 7%
color: transparent
font-size: 0.8em
- type: state-badge
entity: sensor.kona2020_ev_battery_level
style:
top: 15%
left: 20%
color: transparent
font-size: 0.8em
- type: state-badge
entity: sensor.kona2020_odometer
style:
top: 93%
left: 90%
color: transparent
font-size: 1em
- type: state-badge
entity: sensor.kona2020_target_range_of_charge_ac
style:
top: 14%
left: 90%
color: transparent
font-size: 0.8em
it was done in photoshop with quite a bit of work cutting out squares ect from tail lights for battery level etc, even as far as cutting out doors
Thanks for the guidance. I suspected as much, perhaps I’ll try a simple version without the intricacies of doors and windows moving etc.
simple I worked on in lunch, cant do much better than this as only top down open shot of the ioniq 6 had airbags on show so I had to improvise a little. follow my instructions, but leave out doors and hood and trunk, then the code left over use this image instead of the ioniq 5 lhd one.
Is there any documentation available explaining the sensors used?
I recently bought a Hyundai Kona electric 65kW and installed Kia Uvo / Hyundai Bluelink integration, version 2.26.1, in HA.
Everything works fine, but there are some sensors that do not tell me anything or remain at 0, while the EV Battery Level is 74,5%, such as:
Estimated Charge Duration: 0 min
Estimated Fast Charge Duration: 25 min
Estimated Portable Charge Duration: 90 min
Estimated Station Charge Duration: 6 min
EV Battery Capacity: 234.440 (Unit?, Apples?)
EV Battery Level: 167.299,2 (Unit?, Pears?)
My guess for the Battery Capacity and Level:
The unit is probably Ah instead of kWh.
For Hyundai and Kia owners using the integration, here’s a stacked card with some charging data and controls.
type: vertical-stack
cards:
- type: custom:mushroom-template-card
primary: '{{ states(entity) }}%'
secondary: '{{ state_attr(entity, ''friendly_name'') | title }}'
icon: >
{% set battery_level = (states(entity) | int / 10) | round(0) | int * 10
%}
{% if is_state('binary_sensor.2023_ioniq_6_ev_battery_plug', 'on' ) %}
{% if battery_level > 0 %}
mdi:battery-charging-{{ battery_level }}
{% else %}
mdi:battery-charging-outline
{% endif %}
{% else %}
{% if battery_level == 100 %}
mdi:battery
{% elif battery_level > 0 %}
mdi:battery-{{ battery_level }}
{% else %}
mdi:battery-alert-variant-outline
{% endif %}
{% endif %}
icon_color: |-
{% set battery_level = states(entity) | int %}
{% if battery_level > 90 %}
green
{% elif battery_level > 60 %}
light-green
{% elif battery_level > 50 %}
lime
{% elif battery_level > 40 %}
yellow
{% elif battery_level > 30 %}
amber
{% elif battery_level > 20 %}
orange
{% elif battery_level > 10 %}
deep-orange
{% else %}
red
{% endif %}
tap_action:
action: none
entity: sensor.2023_ioniq_6_ev_battery_level
fill_container: false
layout: horizontal
- type: entities
entities:
- entity: number.2023_ioniq_6_ac_charging_limit
name: AC Charging Limit
- entity: number.2023_ioniq_6_dc_charging_limit
name: DC Charging Limit
- entity: lock.2023_ioniq_6_door_lock
name: Door Lock
- type: horizontal-stack
cards:
- type: custom:bar-card
positions:
name: null
icon: 'off'
value: inside
style:
top: 6.5%
left: 10%
background: none
box-shadow: none
text-shadow: none
transform: none
overflow: hidden
border-radius: 0px
width: 38%
height: 25px
min: 0
max: 100
severity:
- color: Red
from: 0
to: 20
- color: Orange
from: 21
to: 24
- color: Amber
from: 25
to: 49
- color: Green
from: 50
to: 74
entities:
- entity: sensor.2023_ioniq_6_ev_battery_level
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
primary: ''
secondary: ''
icon: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float > 91 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 81 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 71 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 61 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 51 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 41 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 31 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 21 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 11 %}
mdi:square-outline
{% else %}
mdi:square-outline
{% endif %}
entity: sensor.2023_ioniq_6_ev_battery_level
icon_color: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float > 20 %}
green
{% else %}
red
{% endif %}
badge_color: red
badge_icon: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float < 30 %}
mdi:alert
{% endif %}
tap_action:
action: more-info
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-template-card
primary: ''
secondary: ''
icon: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float > 91 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 81 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 71 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 61 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 51 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 41 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 31 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 21 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 11 %}
mdi:square-outline
{% else %}
mdi:square-outline
{% endif %}
entity: sensor.2023_ioniq_6_ev_battery_level
icon_color: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float > 24 %}
green
{% else %}
null
{% endif %}
badge_color: red
badge_icon: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float < 30 %}
mdi:alert
{% endif %}
tap_action:
action: more-info
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-template-card
primary: ''
secondary: ''
icon: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float > 91 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 81 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 71 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 61 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 51 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 41 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 31 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 21 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 11 %}
mdi:square-outline
{% else %}
mdi:square-outline
{% endif %}
entity: sensor.2023_ioniq_6_ev_battery_level
icon_color: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float > 49 %}
green
{% else %}
null
{% endif %}
badge_color: red
badge_icon: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float < 30 %}
mdi:alert
{% endif %}
tap_action:
action: more-info
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-template-card
primary: ''
secondary: ''
icon: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float > 91 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 81 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 71 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 61 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 51 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 41 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 31 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 21 %}
mdi:square-outline
{% elif states("sensor.2023_ioniq_6_ev_battery_level")|float > 11 %}
mdi:square-outline
{% else %}
mdi:square-outline
{% endif %}
entity: sensor.2023_ioniq_6_ev_battery_level
icon_color: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float > 74 %}
green
{% else %}
null
{% endif %}
badge_color: red
badge_icon: |-
{% if states("sensor.2023_ioniq_6_ev_battery_level")|float < 30 %}
mdi:alert
{% endif %}
tap_action:
action: more-info
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
name: Last Updated
entity: sensor.2023_ioniq_6_last_updated_at
tap_action:
action: perform-action
perform_action: kia_uvo.update
hold_action:
action: perform-action
perform_action: kia_uvo.force_update
I live in Indonesia and I use Hyundai Stargazer with bluelink capability. Any chance I can use this integration?
the charge port icon works like the charge port, stays on for battery level and flashes the way the car one does when car is charging.
Hi all,
Posted on UVO thread, I guess I can also share this here.
Thanks @anon63427907 (and @fuatakgun and @wcomartin and all involved) ! This is great to be able to fetch data from uvo/bluelink
I’m using this integration and managed to push bluelink data to ABRP
(inspiration came from here)
First create a rest_command in configuration.yaml:
update_abrp:
method: POST
headers:
content_type: "charset=utf-8; application/x-www-form-urlencoded"
url: >
{% set tlm = {
"utc": as_timestamp(strptime(states('sensor.kona_last_updated_at'), "%Y-%m-%dT%H:%M:%S%z")),
"soc": states('sensor.kona_ev_battery_level'),
"soh": states('sensor.kona_ev_state_of_health_battery'),
"est_battery_range": float(states('sensor.kona_ev_range')),
"is_charging": states('sensor.kona_is_charging'),
"lat": state_attr('device_tracker.kona_location', 'latitude'),
"lon": state_attr('device_tracker.kona_location', 'longitude'),
"odometer": states('sensor.kona_odometer')
} -%}
https://api.iternio.com/1/tlm/send?api_key=your_api_key_from_iternio&token=your_token_from_abrp_app&tlm={{tlm|to_json|urlencode}}
# https://documenter.getpostman.com/view/7396339/SWTK5a8w#api-endpoints
then this automation will push the telemetry each time an update is received by the integration:
alias: Télémétrie KONA vers ABRP
description: ''
triggers:
- trigger: state
entity_id:
- sensor.kona_last_updated_at
conditions: []
actions:
- action: rest_command.update_abrp
data: {}
response_variable: status
mode: single
Now I have to figure out what are the best value for scan without beeing locked until the rest of the day (got “to many request” error in bluelink app while playing with ABRP)