Fixed: the minimum charge current is now 6 A for all chargers and cars, including Tesla. The 5 A exception sometimes ended up on other charging stations. Fixed: Sessy home batteries reported their power the wrong way round, so the EMS thought the battery was discharging while it was charging and the control kept swinging; the status line and cost tracking now match. Fixed: the “other devices” energy tracking no longer counts Power by the Hour copies of a solar device (that doubled the solar total). Fixed: when a boiler or inverter cannot be switched, the error is now reported once instead of every minute, and an app that has no on/off command is skipped. Fixed: the “EMS Today” totals could get stuck on an old value and now recover by themselves. New: the app now sends the measured solar production per phase (L1, L2, L3) to the portal; a phase without its own measurement stays empty instead of showing an estimate.
I’ve installed the app and in the fase of exploring it at the moment. First, thanks for the app. it looks great.
I’ve found an issue with my battery coupled to my SMA STP8.0 hybrid inverter. The battery charge/discharge is switched in the app. Furthermore if I log into ultimate-ems.com, it’s stated that my P1 meter and amount of fases are not choosen, which is not the case.
Hi Fred, thanks for trying the app and for the clear report! Two things:
Battery direction: you’re right. Your SMA battery reports charging as a positive number, while the EMS expects the opposite, so charging and discharging were swapped (I can see it in your data: state of charge rising from 44% to 99% while the EMS thought it was discharging). I’ve fixed this: the EMS now uses the battery’s own charging/discharging status instead of guessing the sign, so it should be right for SMA and also for other brands. It’ll be in the next version, I’ll post here when it’s ready to test.
Portal says P1 meter and phases aren’t chosen: that was a bug on my side, not in your settings. Your Homey had registered twice (an older entry from 27 September), which stopped the portal from saving your settings. I’ve cleaned that up and fixed the cause, so your settings should show up after your next sync. Could you check ultimate-ems.com again later today or tomorrow and let me know if it still says anything is missing?
Thanks again, and let me know how the battery behaves once you have the new version!
I saw the following remark on power curtailment for SMA inverters in the changelog:
“SMA inverters are not curtailed using the app’s power limit setting, because that action writes to the inverter’s flash memory”.
How does Ultimate EMS handle curtailment for the SMA inverters? The Homey SMA energy app can use register 40023 via modbus. It writes a curtailment percentage to register 40023. The value is applied as a fraction of the manual power limit (register 40915). For example, a curtailment setting of 50% with a manual power limit of 5000 W results in an output limit of 2500 W.
This is SMA’s intended method for repeated or automated power control and does not cause wear on the inverter’s flash memory.
Is Ultimate EMS also using 40023?
Observation:
I also have a heatpump installed, Itho Amber, via de Leejow modbus module. The Amber is also providing hot water (extra boiler combined to the heatpump). Since this morning I’ve noticed that ultimate EMS several times switched the heatpump to standby. In my opinion it should never do this, can you have a look what is happening here? For now I’ll deconfigure it from the setup.
Hi Fred, thanks again for the detailed report. Both points are fixed in 2.5.100 (test version):
Heat pump going to standby: your Itho Amber was set up twice (as heat pump and as boiler). The boiler part switched the device’s on/off, which on the Amber puts the whole unit in standby, so heating stopped too. The boiler part no longer switches on/off on a device that is also used for heating. Since the boiler entry now does nothing on the Amber, you can either remove it or leave it. Please keep an eye on it for 24 hours and tell me if it still goes to standby. Also, saving settings no longer re-sends the on/off command to a boiler (that caused the burst of “ON” entries on 8 Oct).
SMA curtailment: you’re right that the EMS didn’t use register 40023 (it only has the flash-writing power limit, which is why SMA was blocked). There is now a Flow trigger, “EMS requests a PV limit in %”, that carries the percentage. Connect it to the SMA action “Curtail active power to %” with the Percent token. The EMS repeats the same value every 4 minutes, because the inverter falls back to 100% after its fallback time. For this to work, external control with a fallback time must be enabled on the inverter (EnnexOS / Sunny Portal). In the EMS log you’ll see “PV dimmen … SMA via Flow → x%”; please check that register 40023 actually changes. This part is new and untested on real SMA hardware, so your feedback is very welcome.
One question: what values does itho_amber_dhw_mode accept? With that I can later control the hot water separately from the heating.
Battery brand table. The app now reads the state of charge and power of every home battery through one table, always in the same convention (plus = discharging, minus = charging). Each brand in the table has its evidence listed. A new battery brand now takes one line in that table instead of changes in several adapters. Brands that report “plus = charging” (Victron, Zonneplan, SMA, Marstek, Huawei Luna, Sessy and others) are handled the same way as before, and a battery’s own charging/discharging status still takes priority.
SMA inverters can be dimmed without wearing the flash memory. A new Flow trigger, “EMS requests a PV limit in %”, fires with the percentage the EMS wants. Connect it to the SMA Energy action “Curtail active power to %” (register 40023, applied to the manual limit) and pass the Percent token. The EMS repeats the value every 4 minutes, because the inverter falls back to 100% after its fallback time. External control with a fallback time must be enabled on the inverter (EnnexOS / Sunny Portal). Without such a Flow nothing is written to the inverter, so there is no change for existing setups. This is new and not yet tested on real SMA hardware, so feedback is welcome.
Fixed
Victron GX batteries were shown with charging and discharging reversed.
A heat pump that was set up twice, as heat pump and as boiler (for example an Itho Amber), was put in standby by the boiler part during peak and expensive hours, which also stopped the heating. The boiler part no longer switches the on/off of a device that is also used for heating. Such a boiler entry now does nothing on that device, and the log explains why.
Saving the settings made a boiler get the same on or off command again every time. The EMS now remembers the boiler state across settings reloads.
When one device is configured twice (heat pump and boiler), an action by the EMS could be mistaken for a manual switch-off. That is fixed.
Known limitations
Hot water on a combined heat pump such as the Itho Amber cannot be scheduled separately from the heating yet. That needs a safe way to control its hot-water mode.
The sign (+ or - ) of GoodWe, Anker Solix and Alpha ESS batteries is not confirmed yet. If you own one of these, let me know what your battery reports while charging.
Checked both the SMA curtailment and Amber behaviour. Both are ok in 2.5.100, thanks!
Another question. On the webpage configuration pages, I see a value of 5 for peaklevel sun total in kW. But my setup is 8kW (2.7kW per fase) as configured in the app. Do I mis someting here?
@Menno_De_Braak: Thanks for developing the app, it saves me a lot of advanced flows to be made and helps me in optimising my solar energy consumption and cost .
I have one question though, why can’t Ultimate EMS steer the amperage of the Zaptec Go 2 charger? In Homey I can make flows to change the amperage of the Zaptec Go 2.
Thanks Smit, glad it helps! The reason is how the Zaptec app exposes things in Homey: the charge current is only available as a Flow action card (“Set available current to P1/P2/P3”), not as a device capability that other apps can write to. The EMS controls chargers through capabilities (as with Easee or Alfen), and an app can’t call another app’s Flow cards, so for Zaptec Go/Go 2 it can only switch charging on and off directly.
You can already close the gap with one small Flow: trigger “EMS wants to set EV charge current” (it has a token with the current in amps) → action “Set available current to P1/P2/P3” of the Zaptec app, with the token on all three. Note that Zaptec describes that action as changing the available current for the whole installation, so with several chargers on one installation it affects all of them.
I’m looking at letting the EMS call Flow action cards of other apps itself, which would make this work without a Flow. Not promising a date yet, but good to know there’s demand. Which Zaptec app version and phase setup (1 or 3 phase) do you have?
It seems that the Loadbalancer was causing this issue, it was trying to reduce the current but was falling back to a hard coded 5 amps. I changed this to the new setting so should be fixed. I will add this to the update.
Hi Menno, for some reason I just can’t get the EMS to control the BYD battery connected to the SMA inverter. Or I’m overlooking something, or the EMS battery control doesn’t function, but I can’t fix it.
Can the EMS verify the exact control capability names from the source code for this battery? Or is a flow required using the card “EMS wants to control the battery (flow fallback)”?
BTW, using the flowcard also doesn’t work.
I used that to check battery control via Modbus. It works when I test the flow manually, but the EMS itself does no battery control via the flow, even though the schedule has selected “discharge.”
Thanks Fred, I found it, and it’s on my side. Your battery device (“Thuis_accu”, SMA battery driver) only has read capabilities (SoC, power, voltage, charging state); there is nothing the EMS can write to. So the plan said “discharge”, the EMS logged it every minute, but it had nowhere to send it. The flow card you tried (“EMS wants to control the battery (flow-fallback)”) only fired for Huawei batteries, never for SMA, so it could not work either.
I’ve fixed that in the next version (2.5.106): with an SMA battery the EMS now fires that trigger with the tokens action (charge / discharge / stop) and power_w, and repeats it every 4 minutes while the action continues, because SMA falls back if nothing arrives for a while.
What to connect it to: from what I can see in the SMA Energy app, battery control sits on the inverter, not on the battery device. Your STP8.0 has a target_power capability, and the app has the action “Set the target power (W)”. I can’t verify from the source what sign it expects or how it behaves with your BYD. Could you test that by hand with a flow: run “Set the target power” with +1000 and then -1000 and tell me which of the two discharges the BYD? Then the flow is: trigger → if action = discharge, set target power to (the sign that discharges) × power_w; if charge, the opposite; if stop, set it back to 0 / whatever returns the inverter to normal. If it behaves, I can write to target_power directly in a later version so you don’t need a flow at all.