[APP][Pro] Ultimate EMS - Intelligent energy management for solar, battery, EV and heat pump

Ultimate EMS v2.5.4

New: price-based steering for heat pump/airco/heater
Room thermostats can now optionally react to the dynamic electricity price too, alongside the existing “follow solar surplus” behavior. Turn on “Also steer on price” per device, and the setpoint nudges up during cheap hours and down during expensive/peak hours — on top of the solar offset, within your comfort band. Off by default.

New: two Flow cards for the boiler’s cheap-hours schedule
A trigger fires whenever the schedule is recalculated (with the scheduled hours as a token), and a condition lets you check whether a boiler is inside its scheduled hours right now — hook your own relay, smart plug or notification into the same schedule the EMS uses internally. (Thanks Brian for the request!)

New: “Set active vehicle” Flow action
If you already have a Flow that detects which car is plugged in, you can now feed that straight into the EMS instead of switching vehicles manually in the EV widget. (Thanks Mantlet!)

Fix: stuck device links, now visible
A removed/swapped device (EV charger, heat pump, battery, grid or PV meter) could leave a setting stuck on an empty placeholder — silently. This is now checked and repaired automatically on every startup, and the EV widget shows a clear error instead of quietly looking like “no EV configured.”

Fix: planning a trip in the EV widget actually updates the plan now
Previously, saving a trip didn’t properly trigger a recalculation, so the widget kept showing the old plan until the next scheduled refresh. Now it updates immediately (today + tomorrow) and also pushes your target charge level to the car’s own onboard limit, so it won’t refuse to go past a lower limit it had stored.

Fix: less log noise from an offline device
A boiler or PV inverter that became unreachable used to get retried every single minute, forever. Now it backs off to once every 30 minutes after a few failed attempts, with a clear message when it happens and when it’s resolved.

Moved
“Peak hours” now lives under “Grid & connection” instead of “Electric car.”

Hi Menno, a quick follow-up to my earlier request. My Homey Pro is now running Ultimate EMS 2.5.4. On 18 September at about 09:02 CEST, the Tibber Pulse reported measure_current.L1/L2/L3 = 1/1/0 A and measure_power = 233 W. At the same time the EMS Controller showed measure_power.grid = 233 W, but measure_power.grid_l1/l2/l3 = 0/0/0 W. So the per-phase current fallback still appears to be missing in 2.5.4.

The new boiler_schedule_updated trigger and boiler_scheduled_now condition are available here. Thanks for adding those cards. For reserving EV headroom before DHW heating, explicit next start/end times and the planning reason would still be useful as a future addition.

v2.5.5 is out — full support for two EVs, smarter PV curtailment, and a couple of bug fixes

Hey all,

New test version is up. Highlights:

Two EVs, fully supported now
If you’ve got two electric cars each on their own charger, the app now treats them as equals everywhere:

  • Every EV-related Flow card (charging mode, postpone, force-charge, etc.) has an optional “EV” selector — existing Flows keep working unchanged and just default to EV 1.
  • The EV widget shows a tab per car when a second one is configured.
  • Trip planning (set a departure time + target battery %, and the app makes sure it’s charged in time) now works independently for both cars — including in the day-ahead charge plan, not just live control.

Smarter PV export curtailment

  • Curtailment now looks a bit ahead at the forecast instead of only reacting to the current grid reading, so it can start pulling back a few minutes before an export spike actually happens instead of chasing it afterwards.
  • It also now considers a dump load (like a boiler) that can still soak up extra power as additional export headroom, on top of what your battery/EV can already absorb.
  • For inverters that store the export limit in EEPROM (limited write cycles), curtailment updates to an already-active limit are now rate-limited to once per interval (5 min by default) — turning curtailment fully on or off is still instant either way.
  • A new fast safety loop can force all boiler slots off immediately if total grid import spikes, independent of the normal minimum-runtime protection.

Fixes

  • Tibber Pulse (and similar meters that only expose current, not power, per phase) always showed 0W/0W/0W on the per-phase dashboard tiles. They now show a directional-less estimate there instead. The app’s actual control decisions (export room, battery phase capacity, etc.) still only use real signed power data, so this is a display-only fix.
  • Adding a device when you already have an EMS Controller paired used to show an empty, unexplained pairing screen. It now shows a clear “already added” message pointing you to the existing device’s settings.

As always, let me know if anything looks off.

Ultimate EMS 2.5.93 (public release) — what’s new since v2.4.9 (public release)

Hi,

A lot has changed in the Ultimate EMS app since v2.4.9 — here’s a summary of what’s new and improved if you haven’t updated in a while.

New features

  • Two EVs, two chargers: full support for two simultaneous EVs on separate chargers, each with independent trip planning, day-ahead charge plans, and its own tab in the EV widget.
  • Price-aware climate control: heat pumps/AC/heaters can now optionally follow the dynamic electricity price on top of solar surplus — nudging the setpoint up in cheap hours and down in expensive/peak hours, within your comfort band (off by default).
  • Smarter export curtailment: curtailment now looks ahead at the forecast instead of reacting only to the live reading, and can free up extra export room via a dump load (boiler), not just the battery/EV.
  • “Fixed power” chargers: on/off-only chargers (no adjustable current) can now be marked with a manual kW value so the EMS can plan around them properly.
  • New Flow cards: temporary EV charge boost (“charge to X% now” / cancel), boiler cheapest-hours schedule trigger/condition, and a “set active vehicle” action for external automations.
  • In-app FAQ on the settings page for the most common questions (EV “status unknown”, partial battery charge/discharge, “basic configuration incomplete”, etc.).
  • Daily self-consumption summary (“EMS Vandaag”) on the dashboard — kWh self-used, % of your own solar, and your effective average price per kWh.

Reliability fixes

  • Fixed a sign-reversal bug on Zonneplan Nexus/Powerplay batteries that made the dashboard show charging when the battery was actually discharging (and vice versa) — this also silently affected export/curtailment decisions.
  • Fixed a rare but real case where the EMS Controller device could get permanently stuck at “still starting up” from the very first boot, with nothing logged — caused by an unprotected call that could hang forever; it now times out and recovers on its own.
  • Fixed peak-power (solar) settings being usable with no sanity limit — a Watt/kWp mix-up could previously inflate the live solar estimate to absurd values and skew battery/EV/heat pump/curtailment decisions; values are now capped to what your grid connection can deliver, with an on-screen warning.
  • Fixed the pairing wizard failing to show the P1/smart meter on some integrations, blocking installation.
  • Fixed devices stuck endlessly retrying every minute when a boiler or PV inverter became unreachable, flooding the logs — now backs off after 5 failures and recovers cleanly when the device comes back.
  • Fixed settings changed via the Ultimate-EMS portal not actually being re-applied by the running EMS.
  • Fixed EV trip planning silently failing to recalculate the charge plan.
  • Fixed air conditioners occasionally being nudged the wrong way (heating vs. cooling) when their live mode didn’t match the app’s own forecast assumption.

EMS Controller device linking

  • If the EMS Controller device is missing or becomes unlinked (e.g. removed and re-added), the settings page now detects this on the spot: it automatically re-links an existing-but-unreported device, or shows a clear “EMS Controller device not found” notice with instructions if there truly isn’t one.
  • Fixed the EMS Controller tile freezing on its last readings when you switch the EMS off via its on/off toggle — it now keeps updating and clearly shows “EMS off — no control active”. Turning the EMS off now also fully stops the fast grid-overload safety loop from intervening, matching what “off” should mean.