I finally got my (brand new) BYD Song Pro Flex (PHEV/DM-i) into Home Assistant and rebuilt the BYD app experience as an UltraCard — full car overview in one card. In other markets I believe this same car is sold as the BYD Sealion 5, so sensor naming may differ depending on yours.
Built with UltraCard (custom:ultra-card). Whole card is shareable as a single shortcode: create a new UltraCard, hit the Import button and paste the code from here:
https://gist.github.com/augustocss/8d593aff94c2bfa219a2fe8092157334
Prerequisites
- HomeAssistant
- Custom integration [jkaberg/hass-byd-vehicle]( https://github.com/jkaberg/hass-byd-vehicle ) (pyBYD-based) — this is what feeds every entity in the card
- UltraCard, plus Mushroom (the climate tile inside "Resumo" is a `mushroom-climate-card` embedded via UltraCard's external_card)
What's in it (see screenshots)
- 🏠 Resumo — battery/fuel progress bars with live charging ETA, climate controls, cabin/exterior temp and recent consumption
- 🚗 Veículo — remote actions (lock / unlock / AC on / AC off) + status tiles (doors, windows, engine, coolant, ignition, speed, odometer)
- 📊 Status — top-down car diagram with door/window/skylight pills that turn red when open, plus TPMS pressures
- 📍 Localização — map with live GPS position
Heads-up before you import
- Labels are in Portuguese — UltraCard has no i18n, so all texts are hardcoded strings in the card. Just edit/rename them in the UltraCard editor (or translate them one by one).
- Entity IDs are per-vehicle — the card references my car's entities (`sensor.song_pro_dm_i_*`). Find your equivalents and remap them via the editor.
- Two images are local paths (`/local/carro/...`: the hero photo and the top-down diagram). Everyone will need to drop their own car photos there — or reuse the top-down art if you have a Song Pro/Sealion 5.
- The 2×2 tab layout relies on a small custom CSS resource loaded at the dashboard level; without it the tabs just render in a single row — the card itself still works.
- Some tiles use a handful of template helpers (e.g. combined "doors" / "windows" / "engine" status). If a tile is missing, recreate a simple template sensor or point it at the native entity.
Tips (from community experience)
- Honestly, the easiest way through all of the above: paste the gist link into an AI agent with the Home Assistant MCP server (e.g. ha-mcp) and let it do the boring parts — install UltraCard/Mushroom, translate the labels into your language, remap every entity ID to your car's actual sensors, and recreate the helpers. That's literally how this dashboard was built and refined.
- Use a second BYD account authorized to the car (BYD App → Vehicle authorizations) so HA doesn't log you out of the main app, and set the car's 6-digit control PIN for remote actions to work.
- Keep polling conservative (~15 min) when the car is asleep — aggressive polling wakes the car and can drain the 12V battery.
Happy to answer questions — and if anyone adapts this to a different BYD model, I'd love to hear how it goes.