Utilita Energy [UK] - Utility Sensors

I finally decided to have a go at my own Custom Integration.
For years I’ve been manually pulling my Gas / Electric balance so I decided to try and automate it into Home Assistant :slight_smile:.

This is literally my first Repo, so please be nice lol.

There’s still some work to do to ensure if the URL/APIs fail, it doesn’t kill anything else. I’ve tested for a couple of weeks and it feels stable.

NOTE:

  • This isn’t officially supported by Utilita and could break at any time.
  • This has only been tested with PAYG (Pay As You Go) accounts.

Brand Icon:

Update - Brand Icon now approved ! Add utilita by 91JJ · Pull Request #7248 · home-assistant/brands · GitHub

V2 now added for MFA support.

I’m currently still waiting for beta testers … so if you have Utilita, please give it a go :slight_smile:

Failed setup, will retry: Error fetching data: Failed to fetch payments: HTTP 400

1 Like

Hi @pressurejetsolutions, what version of HA are you using?

  • Installation methodHome Assistant OS
  • Core2025.8.3
  • Supervisor2025.08.3
  • Operating System16.1
  • Frontend20250811.1

Logger: homeassistant.bootstrap
Source: bootstrap.py:947
First occurred: 19:40:25 (1 occurrence)
Last logged: 19:40:25

Setup timed out for bootstrap waiting on {<Task pending name=‘Task-433’ coro=<UtilitaDataUpdateCoordinator._async_keep_alive() running at /config/custom_components/utilita/init.py:160> wait_for= cb=[set.remove()]>, <Task pending name=‘Task-1805’ coro=<UtilitaDataUpdateCoordinator._async_keep_alive() running at /config/custom_components/utilita/init.py:130> wait_for= cb=[set.remove()]>} - moving forward

Logger: homeassistant.core
Source: core.py:551
First occurred: 19:40:40 (1 occurrence)
Last logged: 19:40:40

Something is blocking Home Assistant from wrapping up the start up phase. We’re going to continue anyway. Please report the following info at https://github.com/home-assistant/core/issues: spook.time, tts, downloader, api, mobile_app.notify, alexa_media.media_player, synology_dsm, device_tracker, eero.switch, wyoming.switch, browser_mod.sensor, google_home, plex_recently_added, thread, config_editor, hyperion, backup, uptime, google_generative_ai_conversation.tts, sun, mqtt.number, version, proximity, mqtt.button, tailscale, spook.number, ios.notify, usb, reolink.switch, homewhiz.switch, mqtt.sensor, binary_sensor, webhook, logger, google_generative_ai_conversation.ai_task, skyq.media_player, eero.update, frigate.sensor, tailscale.binary_sensor, image_upload, battery_notes.button, matter.climate, history, tuya.switch, persistent_notification, matter.water_heater, tuya.event, local_calendar.calendar, frigate.update, blueprint, system_health, group.light, plex.sensor, local_ip, tuya.light, counter, frigate.camera, utilita, synology_dsm.binary_sensor, hacs.update, skyq, mqtt.climate, update, lock, input_text, browser_mod.media_player, eero.binary_sensor, tuya.camera, spook.sensor, esphome.switch, eero.number, playstation_network.binary_sensor, homewhiz.select, wyoming.tts, button, jellyfin_status, hassio.sensor, speedtestdotnet, mobile_app.binary_sensor, local_ip.sensor, reolink.sensor, homewhiz.binary_sensor, input_datetime, snapcast.media_player, uptime_kuma, browser_mod.light, plex.media_player, cupertino, siren, matter.number, switch, google_photos, energy, diagnostics, reolink.binary_sensor, tuya.alarm_control_panel, homewhiz.climate, tuya, hyperion.sensor, google_generative_ai_conversation.stt, weather, matter, github.sensor, input_number, vacuum, jellyfin.sensor, local_todo.todo, shopping_list, playstation_network.notify, hyperion.light, wled, battery_notes.binary_sensor, wyoming.stt, reolink, analytics, ssdp, systemmonitor.sensor, spook, image, alarm_control_panel, conversation, alexa_media.switch, matter.button, fully_kiosk, homeassistant.scene, tuya.humidifier, upnp, mqtt.binary_sensor, homeassistant, humidifier, energy.sensor, tag, matter.lock, spook.button, spook.binary_sensor, mqtt.device_tracker, hardware, emulated_hue, reolink.camera, sun.binary_sensor, spotify.media_player, synology_dsm.button, notify, google_assistant_sdk, hyperion.camera, timer, cover, wyoming, sonos_cloud.media_player, plex.update, onboarding, sonos.switch, backup.sensor, sonos.sensor, tuya.number, sonos.binary_sensor, backup.event, go2rtc, bluetooth_adapters, tuya.cover, reolink.select, frigate, shopping_list.todo, mqtt.update, wyoming.select, homewhiz.sensor, music_assistant, valve, epg, file_upload, zeroconf, tuya.binary_sensor, eero.time, uptime_kuma.sensor, androidtv, playstation_network, wake_word, alexa_media.light, google_generative_ai_conversation.conversation, matter.switch, matter.event, skyq.sensor, tailscale.sensor, upnp.binary_sensor, stream, ha-jf-profile-monitor, hassio.update, version.sensor, battery_notes, default_config, tuya.vacuum, trace, homewhiz, command_line, reolink.button, google_home.switch, network, matter.vacuum, repairs, wyoming.number, upnp.sensor, scene, frigate.switch, google_home.sensor, hassio, sonos_cloud, alexa_media, frontend, uptime_kuma.binary_sensor, proximity.sensor, water_heater, number, frigate.image, llmvision, group, reolink.update, intent, lovelace, input_select, search, local_todo, spook.select, media_source, sensor, matter.sensor, template.sensor, sonos.number, spotify, person, command_line.sensor, assist_satellite, cloud.tts, music_assistant.button, tuya.button, scrape, hyperion.switch, wyoming.assist_satellite, ai_task, esphome, config, http, device_automation, synology_dsm.camera, scheduler.switch, frigate.binary_sensor, recorder, eero.image, eero.sensor, rest, bluetooth, tuya.select, schedule, nodered, jellyfin.media_player, todo, eero.button, panel_custom, extended_openai_conversation, reolink.siren, matter.binary_sensor, alarmo.alarm_control_panel, wyoming.binary_sensor, frigate.number, system_log, systemmonitor, profiler, mqtt.select, tuya.sensor, time_date.sensor, tuya.scene, alarmo, input_button, matter.valve, fan, tuya.fan, browser_mod, sonos.media_player, mqtt, music_assistant.media_player, event, dlna_dmr.media_player, google_home.number, google_generative_ai_conversation, select, matter.fan, playstation_network.image, dhcp, sun.sensor, mqtt.switch, reolink.number, playstation_network.sensor, local_calendar, assist_pipeline, script, uptime.sensor, xbox, hacs, alexa_media.notify, hassio.binary_sensor, dlna_dms, tuya.siren, mobile_app.sensor, met.weather, my, spook.event, zone, version.binary_sensor, hacs.switch, jellyfin_status.sensor, climate, matter.update, systemmonitor.binary_sensor, matter.cover, media_player, synology_dsm.switch, eero.device_tracker, jellyfin, browser_mod.binary_sensor, snapcast, cast.media_player, matter.select, plex_recently_added.sensor, esphome.update, alexa_media.alarm_control_panel, plex, synology_dsm.sensor, template, ha-jf-profile-monitor.media_player, stt, logbook, cloud, met, battery_notes.sensor, eero.select, alexa_media.sensor, automation, dlna_dmr, ios, calendar, spotcast, eero, light, time, template.binary_sensor, ios.sensor, synology_dsm.update, camera, application_credentials, scheduler, plex.button, radio_browser, playstation_network.media_player, ha_tracker, google_assistant_sdk.notify, homeassistant_alerts, reolink.light, mobile_app, mobile_app.device_tracker, spook.switch, generic_thermostat.climate, cast, github, websocket_api, wyoming.wake_word, ffmpeg, auth, google_translate.tts, tuya.climate, matter.light, alexa_media.binary_sensor, speedtestdotnet.sensor, browser_mod.camera, sonos, input_boolean, eero.light The system is waiting for tasks: {<Task pending name=‘Task-433’ coro=<UtilitaDataUpdateCoordinator._async_keep_alive() running at /config/custom_components/utilita/init.py:160> wait_for= cb=[set.remove()]>, <Task pending name=‘Task-1805’ coro=<UtilitaDataUpdateCoordinator._async_keep_alive() running at /config/custom_components/utilita/init.py:160> wait_for= cb=[set.remove()]>}

This error originated from a custom integration.

Logger: custom_components.utilita
Source: custom_components/utilita/init.py:274
integration: Utilita Energy (documentation)
First occurred: 19:40:44 (3 occurrences)
Last logged: 19:41:23

Error fetching data for entry 33336TSQ94M6S3WCWB1MDP51T: Failed to fetch payments: HTTP 400

1 Like

Are you on PAYG?
This pulls the last 50 top-ups which appears to be the sensor falling.

yes im a payg customer and i can see online the last 50 top ups,
still http 400 error

Failed setup, will retry: Error fetching data: Failed to fetch payments: HTTP 400

i have fixed it.
https://my.utilita.co.uk/login?page=1&per_page=50
https://my.utilita.co.uk/login?page=1&per_page=45

in init.py

working thank you

1 Like

Ohh that’s good to hear!
I’ll have to take a look at the payments as I had issues with it too and the API appears to always attempt to grab the last 50 payments so something is failing there.

I’ve applied an update to allow users to choose their MFA method… You can now select email or mobile.