Ultimate EMS

Intelligent energy management for solar, battery, EV and heat pump

Warning! This app might not work properly.

This app version is currently being tested, and has not yet been reviewed. It might not work as expected.
Be extra careful when installing this app.

« Back to the regular version

Intelligent energy management for solar, battery, EV and heat pump

Read more ›

Supported devices

Flow cards

Click on a device above to show related Flow cards only.

When...

EMS Controller
Turned on
EMS Controller
Turned off
Ultimate EMS
EMS mode changed
i
Triggers when the EMS switches to a different operating mode.
Ultimate EMS
Priority 1 not fully achievable tomorrow
i
Triggers when the forecast shows insufficient solar energy to cover all priority 1 loads.
Ultimate EMS
EV ready for departure
i
Triggers when the EV has reached the target SoC for a planned trip.
Ultimate EMS
Battery below minimum SoC
i
Triggers when the battery drops below the configured minimum state of charge.
Ultimate EMS
Dump load activated
i
Triggers when all priority 1 and 2 devices are satisfied and surplus energy is available.
Ultimate EMS
Dump load deactivated
i
Triggers when the solar surplus drops and dump loads are turned off.
Ultimate EMS
EMS wants to set EV charge current
i
Fires every time the EMS calculates a new target charge current. Connect this to the 'Set charge current' action of your EV app.
Ultimate EMS
EMS wants to start or stop EV charging
i
Fires when the EMS starts or stops charging. Connect to your EV app's start/stop action.
Ultimate EMS
EMS wants to start EV charging
i
Fires when the EMS wants to start charging. Connect to your EV app's start charging action.
Ultimate EMS
EMS wants to stop EV charging
i
Fires when the EMS wants to stop charging. Connect to your EV app's stop charging action.
Ultimate EMS
Heat pump switched mode
i
Triggers once per day when the EMS switches the heat pump between heating and cooling based on the weather forecast.

And...

EMS Controller
Is turned on
Ultimate EMS
EMS mode is Mode
Ultimate EMS
Battery SoC is above Threshold (%)%
Ultimate EMS
A trip is planned today
Ultimate EMS
Heat pump is in Mode mode
Ultimate EMS
Solar is producing

Then...

EMS Controller
Turn on
EMS Controller
Turn off
EMS Controller
Toggle on or off
Ultimate EMS
Set EMS mode to Mode
Ultimate EMS
Plan EV trip: depart Departure time at Target SoC (%)%
i
Use this action in a Shortcut or Flow to schedule an EV charging session before departure.
Ultimate EMS
Recalculate day plan now
i
Forces the EMS to recalculate tomorrow's energy plan immediately.
Ultimate EMS
Set EV charge profile to Profile
Ultimate EMS
Set EV fixed current to Current (A)A
Ultimate EMS
Set EV max current to Max current (A)A
Ultimate EMS
Set battery target SoC to Target SoC (%)%
Ultimate EMS
Set dump load to Enabled
Ultimate EMS
Postpone EV charging (load balance)
i
Temporarily stops EV charging for the duration set in app settings (ev_postpone_minutes, default 30 min). Use this in a flow that monitors per-phase current to prevent overload.
Ultimate EMS
Import PBTH prices for Period: Prices (JSON)
i
Feed the full-resolution price array from Power by the Hour's 'New prices received' trigger (or its 'Get prices JSON' action) into the EMS, so today/tomorrow's plan uses real ENTSO-E prices instead of the sparse capability anchors.

Widgets

You can add this app’s widgets to your dashboard or homescreen in the mobile app.

EMS Tomorrow
EMS Tomorrow
EMS Today
EMS Today
EV Charging
EV Charging
PV Fleet
PV Fleet

Support

Having an issue with this app? Report issues via the developer issue tracker.

What’s new

Version 2.0.0 — New: full-resolution day-ahead prices (today AND tomorrow, all 24 hours) can now be imported directly from Power by the Hour through a Homey Flow action ('Import full price data from PBTH'), instead of relying only on its sparse capability anchors (day low/high plus the next few hours). Set up two Flows — PBTH 'New prices received' (period: this day / tomorrow) → Ultimate EMS 'Import full price data from PBTH' — to have planning use the real ENTSO-E curve; the settings page now explains exactly how. Removed: Elecz as a selectable price source — its Dutch data turned out to be structurally flat/incorrect compared to PBTH's real curve, so the settings page now only offers a price device (Power by the Hour or Tibber). New: on 3-phase installations where one or more phases have no PV metering at all, that phase's live production is now estimated from its configured peak power together with the weather forecast, and clearly marked as an estimate in the diagnostic log, instead of being invisible to planning. Fix: several related bugs in the day-plan's night-charge block were found and fixed the same day — the plan preview used a stricter 'cheap enough' threshold than the realtime controller actually used to decide charging, so the preview could show no night block even though charging would really happen; a single day's price array could conflate two physically different nights (the tail of last night and the start of the next one); the cheapest-hours selection could be forced into a more expensive hour when the truly cheapest hours weren't back-to-back (now picks the individually cheapest hours, gaps allowed); and PBTH's rolling 'next 8 hours' price anchor could be discarded near midnight even when it genuinely belonged to the day being planned. Fix: the real-time 'is this price expensive' check for the Elecz source used a coarse one-third-of-the-day bucket that flagged roughly a third of every single day regardless of the actual price level, while the day plan used a much rarer definition for the same concept, causing night charging to sometimes not fire even on a clearly cheap night; the two now use the same definition. Fix: forward (tomorrow) planning could schedule a full EV night-charge block on a day the car is configured to be away, simply because the car happened to be connected at home right now (today); tomorrow's plan now only charges the EV when it's actually expected home that day, an explicit trip is planned, or (today only) it's genuinely connected. New: past the ordinary grid-charge ceiling, the EV is only allowed to keep charging toward the higher solar ceiling if the measured charging power is genuinely mostly solar (configurable minimum ratio), instead of just because there's some PV production somewhere in the house. Fix: a heat pump/thermostat whose target_temperature capability is (or turns out to be) not settable no longer floods the log with a repeating error; it's now logged once, skipped gracefully, and recovers automatically if the device becomes settable again. Fix: sending a Zendure battery a slightly different power target on every single tick could prevent its internal ramp-up from ever settling (confirmed by Zendure support that the hardware ramps slowly and this can't be changed in software); a new target is now only resent once it differs meaningfully from the last one actually sent. Changed: the 'NOM' import-side setting has been renamed to 'Zero import' for consistency with 'Zero export', and can now be toggled fully independently of it.

View changelog

Ultimate EMS

This app can manage your entire Homey.

Ultimate EMS is not compatible with the selected Homey.

Ultimate EMS will install on Homey shortly.
Install App