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

Hi Anders,

I need a bit more info about your setup.. did you configure everything already?

If so please send me all the log files via the buttons at the bottom of the settings page. You can also DM those to me.

Fixed: switching the active vehicle in the EV widget (when two vehicle profiles are configured) could show a confusing technical error and leave the widget’s vehicle button not updating, even though the new profile’s settings were actually applied correctly in the background. This could happen when the second vehicle has no linked Homey device. The widget now always confirms the switch and updates properly, regardless of what happens in the background.

Version 2.4.3

Thanks for the quick reply.

The start/stop of the wallbox works without an extra flow. The changing of the amps will be tested. :wink:

Hi Menno,

I am sorry I did not find a way to DM you, will send the config below. I have a Solax g4 inverter and Solax EV charger and a Tesla. (I am able to control the inverter using homey but sometimes i need to run a unlock command first, not sure if that means anything..) I don’t have a P1 meter so I’m using the ‘solax modbus feed in’ here.

{
“_report”: “Ultimate EMS Bug Report”,
“_version”: “2.4.3”,
“_generatedAt”: “2026-09-01T20:30:44.389Z”,
“settings”: {
“phases”: 3,
“max_amps”: 25,
“contract_type”: “dynamic”,
“price_source”: “device”,
“price_device_id”: “a9493b53-4865-4f69-b468-bb2063e6ae05”,
“zero_import”: false,
“pv_peak_kw_l1”: 1.68,
“pv_peak_kw_l2”: 1.68,
“pv_peak_kw_l3”: 1.68,
“pv_l1_peak_hour”: 13,
“pv_l2_peak_hour”: 13,
“pv_l3_peak_hour”: 13,
“gridMeterId”: “1be3884f-110f-4d40-b3ae-2e2192b64e28”,
“pvMeterIds”: [
“c7025a26-f7ea-4224-99af-4591d6a2d986”
],
“pvMeterPhases”: [
0
],
“hasBattery”: true,
“batteries”: [
{
“id”: “35e172c5-db72-4fe8-b0f2-a8cce34785ef”,
“phase”: 0,
“autonomous”: false,
“capacityKwh”: 6.2,
“maxChargeW”: 2500,
“maxDischargeW”: 2500,
“rte”: 0.85,
“zendureIp”: null,
“zendureSn”: null
}
],
“hasEv”: true,
“evDeviceId”: “59cedc4d-3d19-4971-904b-7a2a8b2fdedc”,
“evChargerId”: “cb9ec881-6f47-413d-b71e-7b2a07cd4b6f”,
“ev_capacity_kwh”: 95,
“ev_min_current_a”: 5,
“ev_charge_mode”: “solar_only”,
“ev_default_soc”: 80,
“ev_solar_ceiling_min_pct”: 50,
“ev_night_charge”: true,
“ev_home_mon”: true,
“ev_home_tue”: true,
“ev_home_wed”: true,
“ev_home_thu”: true,
“ev_home_fri”: true,
“ev_home_sat”: true,
“ev_home_sun”: true,
“hasHeatPump”: false,
“hasEvCharger”: true,
“hasDumpLoad”: false,
“dumpLoadIds”:
},
“devices”: [
{
“id”: “1be3884f-110f-4d40-b3ae-2e2192b64e28”,
“name”: “Solax Modbus Feed-In”,
“driverId”: “homey:app:com.msd.inverter.solax:solax_modbus_feed_in”,
“capabilities”: [
“measure_power”,
“meter_power.imported”,
“meter_power.exported”
],
“values”: {
“measure_power”: 518,
“meter_power.imported”: 12.78,
“meter_power.exported”: 11.51
}
},
{
“id”: “c7025a26-f7ea-4224-99af-4591d6a2d986”,
“name”: “Solax Inverter”,
“driverId”: “homey:app:com.msd.inverter.solax:solax_modbus_g4”,
“capabilities”: [
“onoff”,
“calculate_self_consumed_today”,
“calculate_self_consumed_year”,
“calculate_self_sufficiency_today”,
“calculate_self_sufficiency_year”,
“measure_load”,
“measure_feed_in”,
“measure_battery_power”,
“measure_battery_soc”,
“measure_battery_soh”,
“measure_solar_dc_1”,
“measure_solar_dc_2”,
“status_inverter_use_mode”,
“status_inverter_run_mode”,
“status_inverter_manual_mode”,
“status_inverter_state_lock”,
“status_inverter_fault”,
“measure_battery”,
“measure_export_limit”,
“measure_generation_total”,
“measure_temperature_battery”,
“measure_temperature_inverter”,
“meter_power.discharged”,
“meter_power.charged”,
“meter_feed_in_export_today”,
“meter_feed_in_import_today”,
“measure_power”,
“meter_power”,
“measure_solar_potential”,
“measure_solar_clipping_loss”,
“status_solar_clipping”,
“meter_solar_clipping_today”,
“button.unlock”,
“button.unlock_advanced”,
“measure_battery_voltage”,
“status_inverter_available_mode”
],
“values”: {
“onoff”: true,
“calculate_self_consumed_today”: 53,
“calculate_self_consumed_year”: 92,
“calculate_self_sufficiency_today”: 81,
“calculate_self_sufficiency_year”: 25,
“measure_load”: 578,
“measure_feed_in”: -518,
“measure_battery_power”: -41,
“measure_battery_soc”: 96,
“measure_battery_soh”: 91,
“measure_solar_dc_1”: 0,
“measure_solar_dc_2”: 0,
“status_inverter_use_mode”: “Self-Use”,
“status_inverter_run_mode”: “Normal”,
“status_inverter_manual_mode”: “Force discharge”,
“status_inverter_state_lock”: “Unlocked”,
“status_inverter_fault”: “OK”,
“measure_battery”: 96,
“measure_export_limit”: 300000,
“measure_generation_total”: null,
“measure_temperature_battery”: 24,
“measure_temperature_inverter”: 31,
“meter_power.discharged”: 3.4,
“meter_power.charged”: 0.6,
“meter_feed_in_export_today”: 11.5,
“meter_feed_in_import_today”: 12.8,
“measure_power”: 0,
“meter_power”: 17,
“measure_solar_potential”: 0,
“measure_solar_clipping_loss”: 0,
“status_solar_clipping”: false,
“meter_solar_clipping_today”: 11.25,
“button.unlock”: null,
“button.unlock_advanced”: null,
“measure_battery_voltage”: 208,
“status_inverter_available_mode”: “Awake”
}
},
{
“id”: “59cedc4d-3d19-4971-904b-7a2a8b2fdedc”,
“name”: “Sorte”,
“driverId”: “homey:app:com.tesla.car:car”,
“capabilities”: [
“measure_battery”,
“device_state_insights”,
“ev_charging_state”,
“last_update”,
“car_state”,
“meter_car_odo”,
“car_software_version”,
“car_software_update_version”,
“car_software_update_state”,
“car_shift_state”,
“measure_car_drive_speed”,
“measure_car_tpms_pressure_fl”,
“measure_car_tpms_pressure_fr”,
“measure_car_tpms_pressure_rl”,
“measure_car_tpms_pressure_rr”,
“car_refresh”,
“car_wake_up”,
“car_doors_locked”,
“car_sentry_mode”,
“car_trunk_rear”,
“car_trunk_front”,
“alarm_api_error”,
“api_error”,
“car_user_present”,
“measure_api_request_count”,
“measure_api_command_count”,
“measure_api_command_wakes_count”,
“measure_api_costs”,
“measure_api_ble_success_count”,
“measure_api_ble_error_count”,
“measure_powertrain_inverter_temp_f”,
“measure_powertrain_inverter_temp_r”,
“measure_powertrain_stator_temp_f”,
“measure_powertrain_stator_temp_r”,
“measure_powertrain_inverter_voltage_f”,
“measure_powertrain_inverter_voltage_r”,
“measure_powertrain_inverter_current_f”,
“measure_powertrain_inverter_current_r”,
“measure_powertrain_inverter_power_f”,
“measure_powertrain_inverter_power_r”,
“last_online”
],
“values”: {
“measure_battery”: 42,
“device_state_insights”: true,
“ev_charging_state”: “plugged_out”,
“last_update”: “01.09.2026 22.29”,
“car_state”: “online”,
“meter_car_odo”: 155708.49,
“car_software_version”: “2026.26.6.1”,
“car_software_update_version”: " ",
“car_software_update_state”: “”,
“car_shift_state”: “P”,
“measure_car_drive_speed”: 0,
“measure_car_tpms_pressure_fl”: 2.75,
“measure_car_tpms_pressure_fr”: 2.77,
“measure_car_tpms_pressure_rl”: 2.73,
“measure_car_tpms_pressure_rr”: 2.75,
“car_refresh”: null,
“car_wake_up”: null,
“car_doors_locked”: false,
“car_sentry_mode”: false,
“car_trunk_rear”: false,
“car_trunk_front”: false,
“alarm_api_error”: false,
“api_error”: null,
“car_user_present”: false,
“measure_api_request_count”: 182,
“measure_api_command_count”: 0,
“measure_api_command_wakes_count”: 0,
“measure_api_costs”: 0.36,
“measure_api_ble_success_count”: 0,
“measure_api_ble_error_count”: 0,
“measure_powertrain_inverter_temp_f”: null,
“measure_powertrain_inverter_temp_r”: null,
“measure_powertrain_stator_temp_f”: null,
“measure_powertrain_stator_temp_r”: null,
“measure_powertrain_inverter_voltage_f”: null,
“measure_powertrain_inverter_voltage_r”: null,
“measure_powertrain_inverter_current_f”: null,
“measure_powertrain_inverter_current_r”: null,
“measure_powertrain_inverter_power_f”: null,
“measure_powertrain_inverter_power_r”: null,
“last_online”: “01.09.2026 22.29”
}
},
{
“id”: “cb9ec881-6f47-413d-b71e-7b2a07cd4b6f”,
“name”: “SolaX EV Charger”,
“driverId”: “homey:app:com.msd.inverter.solax:solax_ev_charger_g2_local”,
“capabilities”: [
“onoff”,
“solax_evc_mode”,
“solax_evc_state”,
“measure_power”,
“meter_power”,
“meter_power_session”,
“measure_voltage”,
“measure_current”,
“solax_evc_current_limit”,
“solax_evc_start_mode”,
“solax_evc_eco_limit”,
“solax_evc_green_limit”
],
“values”: {
“onoff”: false,
“solax_evc_mode”: “FAST”,
“solax_evc_state”: “Finishing”,
“measure_power”: 1,
“meter_power”: 69953126.6,
“meter_power_session”: 0,
“measure_voltage”: 231.18,
“measure_current”: 0,
“solax_evc_current_limit”: 16,
“solax_evc_start_mode”: “Plug & Play”,
“solax_evc_eco_limit”: “1”,
“solax_evc_green_limit”: “1”
}
},
{
“id”: “a9493b53-4865-4f69-b468-bb2063e6ae05”,
“name”: “DK_Denmark_1”,
“driverId”: “homey:app:com.gruijter.powerhour:dap15”,
“capabilities”: [
“meter_price_h0”,
“meter_price_h0_export”,
“meter_price_m15”,
“meter_price_m30”,
“meter_price_m45”,
“meter_price_h1”,
“meter_price_h2”,
“meter_price_h3”,
“meter_price_last_month_avg”,
“meter_price_this_month_avg”,
“meter_price_this_day_avg”,
“meter_price_next_8h_avg”,
“meter_price_next_8h_lowest”,
“hour_next_8h_lowest”,
“meter_price_this_day_lowest”,
“hour_this_day_lowest”,
“meter_price_this_day_highest”,
“hour_this_day_highest”,
“meter_price_next_8h_highest”,
“hour_next_8h_highest”,
“meter_price_next_day_lowest”,
“hour_next_day_lowest”,
“meter_price_next_day_highest”,
“hour_next_day_highest”,
“meter_price_next_day_avg”,
“meter_rank_price_h0_this_day”,
“meter_rank_price_h0_next_8h”
],
“values”: {
“meter_price_h0”: 0.1946,
“meter_price_h0_export”: 0.1946,
“meter_price_m15”: 0.1909,
“meter_price_m30”: 0.1884,
“meter_price_m45”: 0.1794,
“meter_price_h1”: 0.176,
“meter_price_h2”: 0.1572,
“meter_price_h3”: 0.1482,
“meter_price_last_month_avg”: 0.1403,
“meter_price_this_month_avg”: 0.1433,
“meter_price_this_day_avg”: 0.1433,
“meter_price_next_8h_avg”: 0.1545,
“meter_price_next_8h_lowest”: 0.1366,
“hour_next_8h_lowest”: 5,
“meter_price_this_day_lowest”: 0.034,
“hour_this_day_lowest”: 13.75,
“meter_price_this_day_highest”: 0.2326,
“hour_this_day_highest”: 19.75,
“meter_price_next_8h_highest”: 0.1946,
“hour_next_8h_highest”: 22.5,
“meter_price_next_day_lowest”: 0.0837,
“hour_next_day_lowest”: 13.75,
“meter_price_next_day_highest”: 0.2536,
“hour_next_day_highest”: 20,
“meter_price_next_day_avg”: 0.1568,
“meter_rank_price_h0_this_day”: 74,
“meter_rank_price_h0_next_8h”: 32
}
}
],
“liveState”: {
“ready”: false
},
“pvCurtailment”: {
“pvW”: null,
“pvExpectedW”: null,
“pvCurtailing”: null,
“ratio”: null,
“gridW”: null,
“netW”: null,
“gridPhases”: null,
“pvPhases”: null
},
“planSummary”: null,
“planDetails”: {
“today”: null,
“tomorrow”: null
},
“planError”: “EMS is nog aan het opstarten (weerservice nog niet geïnitialiseerd) — probeer het over ongeveer 15 seconden opnieuw.”,
“evController”: null,
“priceSlot”: null,
“battery”: {
“type”: “BatteryAdapter”,
“isAutonomous”: false,
“count”: 0,
“ids”: ,
“capacities”: ,
“maxChargeW”:
},
“thermostat”: null,
“config”: null,
“dashboardSync”: {
“connected”: true,
“lastSuccessAt”: “2026-09-01T20:30:09.698Z”,
“lastError”: null,
“queued”: 0,
“paired”: true
}
}

Hi Menno,

For my situation, nothing has changed since the update to 2.4.3. Charging profile still doesn’t seem to change visually in the widget.

Are my settings correct to actually force two different profiles Kodiaq = solar+ night, E- Golf = solar only)?

Also, how can I force the 1 phase charging option, to test? Setting load balancing current to 6A doesn’t affect the amount of phases used, right? I haven’t seen target power drop below 4,1kW neither.

Hi Anders, thanks for that config export — it was exactly what I needed. The battery: {count: 0} in your report pinpointed it: the app’s internal device lookup could hang forever without ever failing or timing out, if it happened during startup on your setup. That’s why “Recalculate plan now” stayed stuck on “EMS is still starting up” indefinitely instead of eventually showing an error.

Fixed in 2.4.4 — that lookup now has the same safety timeout (10s) that similar checks elsewhere in the app already use, so startup can no longer freeze this way. Please update and let me know if it’s resolved on your end.

Hi Martijn, thanks for the screenshots, they made it clear. Two separate things were going on:

  1. The vehicle profiles (Kodiaq/E-Golf tabs in the widget) could only switch capacity, charge target and min-SoC — there was no field for charging mode at all, so the mode badge could never actually change when you switched vehicles. That’s fixed in 2.4.4: each vehicle profile now has its own “Laadmodus” and “Minimum aandeel zonnestroom” fields, and switching vehicles in the widget now switches those too.
  2. The “Tweede elektrische auto” section you filled in with “Solar only” is actually a separate feature — a second, independent charger slot — not connected to the Kodiaq/E-Golf vehicle switcher at all. So that setting was never going to affect the E-Golf tab. For your setup (one charger, two cars), you want the vehicle profiles under the EV widget, not the second-EV block — you can leave that second block unconfigured.

Please install the new test version 2.4.4, same link, after updating, please re-check your two vehicle profiles: set Kodiaq to “Zon + net” and E-Golf to “Solar only” directly in each profile’s own settings now, and the widget badge should follow correctly when you switch.

Separately, on 1-phase forcing: that’s on my list to look into for the Alfen charger — will follow up on that one separately.

Hi Menno,

Awesome work so far!

I adjusted the configuration as you suggested. Switching profiles now seems to work correctly. Hopefully 1P charging will also succeed soon! :crossed_fingers:

You’re welcome, and let me know if you have other strange or unexpected behaviors as well, you have an interesting setup so great to test functionality on.

2.4.5

New device support: Sessy home battery (native control), Huawei FusionSolar LUNA2000 battery (via Flow, see new “battery_flow_command” trigger), and Victron Cerbo/Venus GX systems (self-consumption battery control).

New: a “Force EV charging phase” Flow action to manually test 1-phase/3-phase switching, plus more detailed phase-switch info in the diagnostics log. @MartijnB

Fixed: on fresh installs, the EV’s default home/away schedule now assumes away on weekdays and home on weekends (was backwards before). Fixed: ~35 settings could wrongly show as “not configured” on the web dashboard even though the app was using a sensible default.

Someone mentioned you in a post.





|

Menno_De_Braak
August 31

|

  • | - |

Dear peoples,

Here is the new test version: Ultimate EMS | Homey

@Arne_Sch @MartijnB @Anders_Haubjerg @Dick_Koornneef please test and see what has been solved and let me know if it works.

(attachments)


Hi Menno, I don’t see anything happening, charging continues at 4.1kW and nothing to see in the Alfen log when charging to 1P through the flow option card. Where can I find the Ultimate EMS diagnostics log?

Hi Martijn,

What app are you using to control the Alfen? I see that only the Alfen Ace has the 1 and 3 phase support. Please make sure you have installed and selected the right device in EMS settings.

Dick,

Bug found, fix is underway. :wink:

Changelog 2.4.6:

Fixed (critical): the home battery (Marstek) was never actually being charged or discharged by the app — the app’s log looked completely normal, but every charge/discharge command silently failed due to a leftover call to a Homey API function that doesn’t exist in this context. Monitoring (SoC, power) was unaffected, which is why this went unnoticed. If your battery is a Marstek, it should now respond to charge/discharge commands for the first time — please keep an eye on it after updating.

Fixed: rejected attempts to manually force 1-phase/3-phase EV charging (via the test Flow action) weren’t visible in the app’s own diagnostics log — only in Homey’s raw developer log. The reason now shows up in the regular EMS log.

Fixed: on one setup, the EV’s configured number of charging phases had ended up stored as an invalid value, silently zeroing the day-plan’s charging estimate for that vehicle even while it was actively charging. This can no longer happen.

Hi Menno,

Unfortunately I am still getting the same error.. maybe it is my system/setup somehow.. :confused:

The new bug report is from 2026-09-03 and is version 2.4.6.

Interestingly, the report still shows:

battery:
  type: BatteryAdapter
  isAutonomous: false
  count: 0

but the app now maybe seems to get past that point rather than simply hanging.

The relevant state is still:

liveState.ready: false
planSummary: null
planDetails.today: null
planDetails.tomorrow: null
planError: EMS is nog aan het opstarten (weerservice nog niet geïnitialiseerd)

So it looks like the timeout fix may have addressed the original startup hang, but the EMS still never initializes the weather/plan part(?)

One other observation: priceSlot is now populated and working (price: 0.03018, isCheap: true), so the price service seems to be initialized.

full log below:
{
“_report”: “Ultimate EMS Bug Report”,
“_version”: “2.4.6”,
“_generatedAt”: “2026-09-03T19:25:15.987Z”,
“settings”: {
“phases”: 3,
“max_amps”: 25,
“contract_type”: “dynamic”,
“price_source”: “device”,
“price_device_id”: “a9493b53-4865-4f69-b468-bb2063e6ae05”,
“zero_import”: false,
“pv_peak_kw_l1”: 1.68,
“pv_peak_kw_l2”: 1.68,
“pv_peak_kw_l3”: 1.68,
“pv_l1_peak_hour”: 13,
“pv_l2_peak_hour”: 13,
“pv_l3_peak_hour”: 13,
“gridMeterId”: “1be3884f-110f-4d40-b3ae-2e2192b64e28”,
“pvMeterIds”: [
“c7025a26-f7ea-4224-99af-4591d6a2d986”
],
“pvMeterPhases”: [
0
],
“hasBattery”: true,
“batteries”: [
{
“id”: “35e172c5-db72-4fe8-b0f2-a8cce34785ef”,
“phase”: 0,
“autonomous”: false,
“capacityKwh”: 6.2,
“maxChargeW”: 2500,
“maxDischargeW”: 2500,
“rte”: 0.85,
“zendureIp”: null,
“zendureSn”: null
}
],
“hasEv”: true,
“evDeviceId”: “59cedc4d-3d19-4971-904b-7a2a8b2fdedc”,
“evChargerId”: “cb9ec881-6f47-413d-b71e-7b2a07cd4b6f”,
“ev_capacity_kwh”: 95,
“ev_min_current_a”: 5,
“ev_charge_mode”: “solar_and_grid”,
“ev_default_soc”: 80,
“ev_solar_ceiling_min_pct”: 50,
“ev_night_charge”: true,
“ev_home_mon”: true,
“ev_home_tue”: true,
“ev_home_wed”: true,
“ev_home_thu”: true,
“ev_home_fri”: true,
“ev_home_sat”: true,
“ev_home_sun”: true,
“hasHeatPump”: false,
“hasEvCharger”: true,
“hasDumpLoad”: false,
“dumpLoadIds”:
},
“devices”: [
{
“id”: “1be3884f-110f-4d40-b3ae-2e2192b64e28”,
“name”: “Solax Modbus Feed-In”,
“driverId”: “homey:app:com.msd.inverter.solax:solax_modbus_feed_in”,
“capabilities”: [
“measure_power”,
“meter_power.imported”,
“meter_power.exported”
],
“values”: {
“measure_power”: 475,
“meter_power.imported”: 19.99,
“meter_power.exported”: 1.97
}
},
{
“id”: “c7025a26-f7ea-4224-99af-4591d6a2d986”,
“name”: “Solax Inverter”,
“driverId”: “homey:app:com.msd.inverter.solax:solax_modbus_g4”,
“capabilities”: [
“onoff”,
“calculate_self_consumed_today”,
“calculate_self_consumed_year”,
“calculate_self_sufficiency_today”,
“calculate_self_sufficiency_year”,
“measure_load”,
“measure_feed_in”,
“measure_battery_power”,
“measure_battery_soc”,
“measure_battery_soh”,
“measure_solar_dc_1”,
“measure_solar_dc_2”,
“status_inverter_use_mode”,
“status_inverter_run_mode”,
“status_inverter_manual_mode”,
“status_inverter_state_lock”,
“status_inverter_fault”,
“measure_battery”,
“measure_export_limit”,
“measure_generation_total”,
“measure_temperature_battery”,
“measure_temperature_inverter”,
“meter_power.discharged”,
“meter_power.charged”,
“meter_feed_in_export_today”,
“meter_feed_in_import_today”,
“measure_power”,
“meter_power”,
“measure_solar_potential”,
“measure_solar_clipping_loss”,
“status_solar_clipping”,
“meter_solar_clipping_today”,
“button.unlock”,
“button.unlock_advanced”,
“measure_battery_voltage”,
“status_inverter_available_mode”
],
“values”: {
“onoff”: true,
“calculate_self_consumed_today”: 91,
“calculate_self_consumed_year”: 72,
“calculate_self_sufficiency_today”: 33,
“calculate_self_sufficiency_year”: 57,
“measure_load”: 400,
“measure_feed_in”: -459,
“measure_battery_power”: 60,
“measure_battery_soc”: 10,
“measure_battery_soh”: 91,
“measure_solar_dc_1”: 0,
“measure_solar_dc_2”: 1,
“status_inverter_use_mode”: “Self-Use”,
“status_inverter_run_mode”: “Normal”,
“status_inverter_manual_mode”: “Stop charge&discharge”,
“status_inverter_state_lock”: “Unlocked”,
“status_inverter_fault”: “OK”,
“measure_battery”: 10,
“measure_export_limit”: 300000,
“measure_generation_total”: null,
“measure_temperature_battery”: 20,
“measure_temperature_inverter”: 32,
“meter_power.discharged”: 1.3,
“meter_power.charged”: 1.2,
“meter_feed_in_export_today”: 2,
“meter_feed_in_import_today”: 20.1,
“measure_power”: 1,
“meter_power”: 9,
“measure_solar_potential”: 2908,
“measure_solar_clipping_loss”: 2907,
“status_solar_clipping”: false,
“meter_solar_clipping_today”: 11.57,
“button.unlock”: null,
“button.unlock_advanced”: null,
“measure_battery_voltage”: 200.4,
“status_inverter_available_mode”: “Awake”
}
},
{
“id”: “59cedc4d-3d19-4971-904b-7a2a8b2fdedc”,
“name”: “Sorte”,
“driverId”: “homey:app:com.tesla.car:car”,
“capabilities”: [
“measure_battery”,
“device_state_insights”,
“ev_charging_state”,
“last_update”,
“car_state”,
“meter_car_odo”,
“car_software_version”,
“car_software_update_version”,
“car_software_update_state”,
“car_shift_state”,
“measure_car_drive_speed”,
“measure_car_tpms_pressure_fl”,
“measure_car_tpms_pressure_fr”,
“measure_car_tpms_pressure_rl”,
“measure_car_tpms_pressure_rr”,
“car_refresh”,
“car_wake_up”,
“car_doors_locked”,
“car_sentry_mode”,
“car_trunk_rear”,
“car_trunk_front”,
“alarm_api_error”,
“api_error”,
“car_user_present”,
“measure_api_request_count”,
“measure_api_command_count”,
“measure_api_command_wakes_count”,
“measure_api_costs”,
“measure_api_ble_success_count”,
“measure_api_ble_error_count”,
“measure_powertrain_inverter_temp_f”,
“measure_powertrain_inverter_temp_r”,
“measure_powertrain_stator_temp_f”,
“measure_powertrain_stator_temp_r”,
“measure_powertrain_inverter_voltage_f”,
“measure_powertrain_inverter_voltage_r”,
“measure_powertrain_inverter_current_f”,
“measure_powertrain_inverter_current_r”,
“measure_powertrain_inverter_power_f”,
“measure_powertrain_inverter_power_r”,
“last_online”
],
“values”: {
“measure_battery”: 28,
“device_state_insights”: false,
“ev_charging_state”: “plugged_out”,
“last_update”: “03.09.2026 21.22”,
“car_state”: “offline”,
“meter_car_odo”: 155816.77,
“car_software_version”: “2026.26.6.1”,
“car_software_update_version”: " ",
“car_software_update_state”: “”,
“car_shift_state”: “P”,
“measure_car_drive_speed”: 0,
“measure_car_tpms_pressure_fl”: 2.83,
“measure_car_tpms_pressure_fr”: 2.85,
“measure_car_tpms_pressure_rl”: 2.8,
“measure_car_tpms_pressure_rr”: 2.8,
“car_refresh”: null,
“car_wake_up”: null,
“car_doors_locked”: false,
“car_sentry_mode”: false,
“car_trunk_rear”: false,
“car_trunk_front”: false,
“alarm_api_error”: false,
“api_error”: null,
“car_user_present”: false,
“measure_api_request_count”: 503,
“measure_api_command_count”: 0,
“measure_api_command_wakes_count”: 0,
“measure_api_costs”: 1.01,
“measure_api_ble_success_count”: 0,
“measure_api_ble_error_count”: 0,
“measure_powertrain_inverter_temp_f”: null,
“measure_powertrain_inverter_temp_r”: null,
“measure_powertrain_stator_temp_f”: null,
“measure_powertrain_stator_temp_r”: null,
“measure_powertrain_inverter_voltage_f”: null,
“measure_powertrain_inverter_voltage_r”: null,
“measure_powertrain_inverter_current_f”: null,
“measure_powertrain_inverter_current_r”: null,
“measure_powertrain_inverter_power_f”: null,
“measure_powertrain_inverter_power_r”: null,
“last_online”: “03.09.2026 15.04”
}
},
{
“id”: “cb9ec881-6f47-413d-b71e-7b2a07cd4b6f”,
“name”: “SolaX EV Charger”,
“driverId”: “homey:app:com.msd.inverter.solax:solax_ev_charger_g2_local”,
“capabilities”: [
“onoff”,
“solax_evc_mode”,
“solax_evc_state”,
“measure_power”,
“meter_power”,
“meter_power_session”,
“measure_voltage”,
“measure_current”,
“solax_evc_current_limit”,
“solax_evc_start_mode”,
“solax_evc_eco_limit”,
“solax_evc_green_limit”
],
“values”: {
“onoff”: true,
“solax_evc_mode”: “FAST”,
“solax_evc_state”: “Preparing”,
“measure_power”: 1,
“meter_power”: 72305869,
“meter_power_session”: 0,
“measure_voltage”: 228.54,
“measure_current”: 0,
“solax_evc_current_limit”: 16,
“solax_evc_start_mode”: “Plug & Play”,
“solax_evc_eco_limit”: “1”,
“solax_evc_green_limit”: “1”
}
},
{
“id”: “a9493b53-4865-4f69-b468-bb2063e6ae05”,
“name”: “DK_Denmark_1”,
“driverId”: “homey:app:com.gruijter.powerhour:dap15”,
“capabilities”: [
“meter_price_h0”,
“meter_price_h0_export”,
“meter_price_m15”,
“meter_price_m30”,
“meter_price_m45”,
“meter_price_h1”,
“meter_price_h2”,
“meter_price_h3”,
“meter_price_last_month_avg”,
“meter_price_this_month_avg”,
“meter_price_this_day_avg”,
“meter_price_next_8h_avg”,
“meter_price_next_8h_lowest”,
“hour_next_8h_lowest”,
“meter_price_this_day_lowest”,
“hour_this_day_lowest”,
“meter_price_this_day_highest”,
“hour_this_day_highest”,
“meter_price_next_8h_highest”,
“hour_next_8h_highest”,
“meter_price_next_day_lowest”,
“hour_next_day_lowest”,
“meter_price_next_day_highest”,
“hour_next_day_highest”,
“meter_price_next_day_avg”,
“meter_rank_price_h0_this_day”,
“meter_rank_price_h0_next_8h”
],
“values”: {
“meter_price_h0”: 0.1595,
“meter_price_h0_export”: 0.1595,
“meter_price_m15”: 0.1574,
“meter_price_m30”: 0.1528,
“meter_price_m45”: 0.1543,
“meter_price_h1”: 0.1523,
“meter_price_h2”: 0.1363,
“meter_price_h3”: 0.1133,
“meter_price_last_month_avg”: 0.1403,
“meter_price_this_month_avg”: 0.143,
“meter_price_this_day_avg”: 0.1289,
“meter_price_next_8h_avg”: 0.1247,
“meter_price_next_8h_lowest”: 0.0815,
“hour_next_8h_lowest”: 0,
“meter_price_this_day_lowest”: 0.0201,
“hour_this_day_lowest”: 13.75,
“meter_price_this_day_highest”: 0.2061,
“hour_this_day_highest”: 8,
“meter_price_next_8h_highest”: 0.1595,
“hour_next_8h_highest”: 21.25,
“meter_price_next_day_lowest”: 0.039,
“hour_next_day_lowest”: 17,
“meter_price_next_day_highest”: 0.1689,
“hour_next_day_highest”: 7,
“meter_price_next_day_avg”: 0.103,
“meter_rank_price_h0_this_day”: 68,
“meter_rank_price_h0_next_8h”: 32
}
}
],
“liveState”: {
“ready”: false
},
“pvCurtailment”: {
“pvW”: null,
“pvExpectedW”: null,
“pvCurtailing”: null,
“ratio”: null,
“gridW”: null,
“netW”: null,
“gridPhases”: null,
“pvPhases”: null
},
“planSummary”: null,
“planDetails”: {
“today”: null,
“tomorrow”: null
},
“planError”: “EMS is nog aan het opstarten (weerservice nog niet geïnitialiseerd) — probeer het over ongeveer 15 seconden opnieuw.”,
“evController”: null,
“priceSlot”: {
“price”: 0.1595,
“isCheap”: true,
“isExpensive”: false,
“avg”: 0.23838,
“rank”: 23
},
“battery”: {
“type”: “BatteryAdapter”,
“isAutonomous”: false,
“count”: 0,
“ids”: ,
“capacities”: ,
“maxChargeW”:
},
“thermostat”: null,
“config”: null,
“dashboardSync”: {
“connected”: true,
“lastSuccessAt”: “2026-09-03T19:24:49.127Z”,
“lastError”: null,
“queued”: 0,
“paired”: true
}
}

Hi Anders,

I created another version 2.4.7 with startup loging as well to identify where it goes wrong, the EMS app does not finish the startup sequence in your case so that’s a first but important for me to fix… so if you could install and run the app it should log the startup as well.

Hi Menno,

I installed the ACE app as you suggested, will test that.

2.4.6 and later broke the functionality to control a vehicle without a Homey device. It now shows the status below.

I noticed that it also removes the EV in the app settings when toggling to E-Golf, not sure if this has always been the case?

Hi Martijn, its new indeed,… seems to be an issue in the widget not showing the EV.

Wil fix that right now and build another test version.