Featured image of post Ioniq 5 - My First EV

Ioniq 5 - My First EV

Long before the current spike in gas prices, I was in search of a new car. Generally I try to drive cars until they die, but the Mrs.’s car was approaching 150,000 miles and 10 years old so we figured it was time for a new one. She really wants a truck for her next car, which we don’t need currently (and she wants an electric too!) so we figured we’d wait. That put me in search of a new car for myself.

I’ve loved my Hyundai Ioniq hybrid for years. Sure it’s no muscle car but it gets me from A to B, gets great gas mileage (45-50 in the winter, 55+ in the summer) and is pretty roomy. We started looking at another Ioniq hybrid when I saw the Ioniq 5, Hyundai’s new fully electric crossover.

At first, I was totally putoff by the retro look. But after some reconsideration, it ended up on the top of my wanted list. And eventually I finally got my hands on an Ioniq 5. Granted, I was more interested in an SEL trim than a Limited, but the Limited is what became available. And boy is it a sweet ride. It’s loaded with all kinds of fun tech (heads up display on the windshield, 360 camera, phone-as-a-key) and…yeah it’s all electric so no more gas.

As a brief aside, two absolutely invaluable sites that aided my search were TheEVFinder and a [user-submitted dataset that tracks dealer markup over MSRP](EV Dealer Markup Tracker). That combo eventually led me to my car.


Now having an EV is great, but it definitely comes with a few hiccups/requirements. Below are some of the tools I’ve come across that help EV owners plan trips and keep track of the status of your car.


First, there’s the all important HomeAssistant integration (naturally). This is a custom integration you can find here. Unfortunately it’s not feature complete (at least not in the US) so important things like controlling charge percentages aren’t yet working. Hopefully soon. There is a fork out there as well if you want to look at that.

Another big limitation on this integration is on Hyundai’s end. They limit the number of API calls that can be made to somewhere around 30/day in the US. So the integration only does a hard pull every 4 hours by default and does not update during the evening (can be customized). The lack of frequent updates does limit data resolution, particularly when it comes to charging the car. But have to live with it. As a result of this limitation I haven’t done a whole lot of automations yet. Mainly just tracking the battery level and sending an alert if the battery runs low, or on Sunday evenings if the battery isn’t charge enough to get me through the week.

That doesn’t mean I haven’t worked on creating a nice UI to view the car stats. I did borrow most of the template from another user in the HASS forum, with some tweaks. It does require a few custom cards: custom:stack-in-card and custom:bar-card. I’ll have the dashboard YAML at the bottom of the post. The other tweak I’ve done is creating a few sensors to track the car’s performance in miles per kilowatt hour. It takes a bunch of input_number entities and template sensors and I’m not really sure it’s worth the effort. If someone is really interested in how I did it, please feel free to reach out and contact me and I’m happy to share.

A Better Route Planner

While the charging infrastructure is OK, there are some definite gaps and going on a road trip is not nearly as easy as in a gas car. This next tool is absolutely invaluable when it comes to planning said road trip. A Better Route Planner (ABRP) is both an app and a website that, well, plans your route better. You type in your start point and destination, along with your EV model and some basic charge information, and it’ll map out a route for you, including where to charge, for how long, and to what percentage.

If you pay for Premium, you can take it one step further and have the app factor in real-time weather and traffic information, both of which can have a significant impact on an EV’s range. It also adds some other useful perks, like charger availability and Android Auto/Carplay functionality.

To go one step even further, you can pick up a Bluetooth Low Energy ODB2 plug that allows ABRP to read the actual remaining battery percentage. This allows ABRP to recalculate your actual consumption (measured in miles per kWh) and re-estimate your charging needs. There are a few models recommended by ABRP here. For the Ioniq, for some reason the Vgate one wouldn’t start back up when the car was off. I ended up going with the ODBLink CX which has worked great (though is on the pricier side). Note the big huge security warning with this though and make sure you’re OK with the ramifications.


Now this next one isn’t necessarily unique, but I’ve found PlugShare to be one of the better tools for figuring out where plugs are located. You can filter by all sorts of conditions and can see user reviews/check-ins to better determine if a charger is working or where it’s located. In combination with ABRP I have been able to map my trips with relative ease.


Recently I put all these tools to the test when I took a 700 mile road trip. Overall I was pretty pleased, though I will say ABRP was super conservative when it came to estimating my charging needs. For instance, on basically every leg of my trip it indicated when I started that I would arrive with ~10% charge. With one exception (first leg of the day when it was slightly chilly and I was going 70 MPH which was the speed limit), I arrived with way more left in the tank. Sometimes to the tune of 30% extra. While I’d rather it be conservative and have me charge more often to be safe, I did find this a bit annoying. Perhaps after some further tweaking and refinement it’ll improve. Still for now it’s the best tool I’ve found for the job.

Dashboard YAML:

type: vertical-stack
  - type: picture-entity
    image: /local/ioniq5.png
    entity: device_tracker.bluey_location
    name: Bluey
      action: none
      action: none
      style: |
        ha-card {
          --ha-card-background: transparent;
          box-shadow: none;
  - type: custom:stack-in-card
    mode: vertical
      background: false
      border_radius: false
      box_shadow: false
      margin: false
      outer_padding: false
      - type: glance
          - entity: binary_sensor.bluey_plugged_in
            name: Charger
          - entity: binary_sensor.bluey_charging
            name: EV Battery
          - entity: sensor.bluey_range_by_ev
            name: Range
        show_state: true
        show_name: true
        state_color: true
      - type: custom:bar-card
          - entity: sensor.bluey_ev_battery
            name: Percentage
            icon: mdi:car-electric-outline
            color: '#161616'
              - from: '25'
                to: '100'
                color: '#006600'
              - from: '15'
                to: '25'
                color: '#c1c100'
              - from: '0'
                to: '15'
                color: '#660000'
          - entity: sensor.bluey_battery_capacity_remaining
            name: Capacity
            icon: mdi:battery-charging
            color: '#161616'
            max: 77.4
              - color: '#006600'
                from: '50'
                to: '78'
              - color: '#c1c100'
                from: '25'
                to: '50'
              - color: '#660000'
                from: '0'
                to: '25'
      - type: glance
          - entity: binary_sensor.bluey_tire_pressure_all
            name: Tire Pressure
          - entity: sensor.bluey_car_battery
            name: 12v Battery
          - entity: binary_sensor.bluey_engine
            name: Engine Status
        show_state: true
        show_name: true
        state_color: true
      - type: markdown
        content: ___
      - type: glance
          - entity: sensor.bluey_mileage_since_last_charge
            name: Trip
          - entity: sensor.bluey_comsumption
            name: Consumption
          - entity: sensor.bluey_odometer
            name: Odometer
        show_state: true
        show_name: true
        state_color: true
      - type: custom:button-card
        entity: sensor.bluey_last_update
        show_last_changed: true
            - grid-template-areas: '"i n l"'
            - grid-template-rows: 100%
            - grid-template-columns: 25% 45% 30%
            - justify-self: start
            - justify-self: end
            - margin-right: 10%
        name: 'Last Updated:'
        aspect_ratio: 7/1
          action: call-service
          service: kia_uvo.force_update
Built with Hugo
Theme Stack designed by Jimmy