Skip to main content
Version: 1.0

Top AC Portable EV Charger

Top AC Portable EV Charger is a Powered By Shelly smart AC charging device designed for electric vehicles. It provides safe and flexible home or on-the-go charging, supporting both single- and three-phase setups. The charger exposes live per-phase telemetry and allows you to start or stop sessions, limit charging current, and enforce global time or energy limits.

For more information about the original Top AC Portable EV Charger consult: Top AC Portable EV Charger.

The following components are available in Top AC Portable EV Charger:

Supported virtual components:

Supported BTHome components:

Virtual Component Configuration

The Top AC Portable EV Charger has the following virtual components:

Virtual ComponentTypeAccessDescription
work_stateenumreadReports the charger's state (wait, charging, pause, etc.)
current_limitnumberread/writeSets the charging current.
phase_infoobjectreadLive per-phase electrical telemetry (voltage/current/power) with aggregated total active energy (kWh).
start_chargingbooleanread/writeStarts or stops the charging session.
energy_chargenumberreadSession energy consumption (kWh).
time_chargenumberreadSession duration.

Service Configuration

See the Service Configuration Example section for a full example.

PropertyTypeDescription

auto_balance

object

Configures load balancing with an external Shelly EM/EM1 device. When enabled, the charger adjusts its current limit to keep total site current under the configured threshold.

PropertyTypeDescription

enable

boolean

Enables auto balance. When enabled and em_ip is valid, balancing starts automatically with charging.

em_ip

string

IP address of the Shelly EM/EM1 used for load balancing. Must be a valid IPv4 when enable is true; may be null when disabled.

max_current

number

Maximum allowed total current (EV + household), in amperes.

exclude_self_current

boolean

If true, the EV’s measured current is subtracted from the EM reading to avoid double-counting.

auto_charge

boolean

When enabled, charging starts automatically as soon as the connector is plugged into the vehicle.

global_charge_limit

number

Session energy cap (kWh) (0–1000). When reached, charging stops and a status flag is raised.

global_time_limit

number

Session duration cap (minutes) (0–1440). When reached, charging stops and a status flag is raised.

id

number

Service id.

Method Examples

How to check the working state

http://192.168.33.1/rpc/Enum.GetStatus?owner="service:0"&role="work_state"

Response

{
"value": "charger_free",
"source": "",
"last_update_ts": 0
}

How to set the current charging limit (to 10 A)

http://192.168.33.1/rpc/Number.Set?owner="service:0"&role="current_limit"&value=10

Response

null

How to check the phase info

http://192.168.33.1/rpc/Object.GetStatus?owner="service:0"&role="phase_info"

Response

{
"value": {
"counter": {
"total": 0,
"minute_ts": 1761642960,
"by_minute": [
0,
0,
0
]
},
"total_current": 0,
"total_power": 0,
"total_act_energy": 0,
"phase_a": {
"voltage": 0,
"current": 0,
"power": 0
},
"phase_b": {
"voltage": 0,
"current": 0,
"power": 0
},
"phase_c": {
"voltage": 0,
"current": 0,
"power": 0
}
},
"source": "sys",
"last_update_ts": 1761643021
}

How to start a charging session

http://192.168.33.1/rpc/Boolean.Set?owner="service:0"&role="start_charging"&value=true

Response

null

How to check the session energy consumption

http://192.168.33.1/rpc/Number.GetStatus?owner="service:0"&role="energy_charge"

Response

{
"value": 5.37,
"source": "sys",
"last_update_ts": 1761637872
}

How to check the session duration

http://192.168.33.1/rpc/Number.GetStatus?owner="service:0"&role="time_charge"

Response

{
"value": 128,
"source": "sys",
"last_update_ts": 1761643238
}

Service Configuration Example

http://192.168.33.1/rpc/Service.GetConfig?id=0

Response

{
"auto_balance": {
"enable": false,
"em_ip": null,
"max_current": 24,
"exclude_self_current": true
},
"auto_charge": true,
"global_charge_limit": null,
"global_time_limit": null,
"id": 0
}