Skip to main content

Wallbox

Wallbox EV chargers — Pulsar, Pulsar Plus, Commander 2, and Copper SB — via the myWallbox cloud REST API at api.wall-box.com. Reports per-charger live status (state, charging power, session energy, current limit) and lets you remotely resume, pause, lock, unlock, reboot, trigger firmware updates, and adjust the soft current limit.

One GEM device row = one myWallbox account. One zone per physical charger.

Prerequisites

  • A myWallbox account (same credentials you use in the Wallbox mobile app) with at least one charger paired and online.
  • The Wallbox unit must be online over Wi-Fi or built-in 4G — there is no public LAN API on Pulsar / Commander hardware. Every command round-trips the Wallbox cloud.
  • Remote control must be enabled for the charger in the app (default on for residential commissioning; some commercial sites lock this down at install time).

Setup

  1. Add the device. Go to System → Devices → Add Device and choose the driver Wallbox (Pulsar / Commander / Copper) (key wallbox). One device row represents one myWallbox account, so you add a single device even when the account has several chargers.
  2. Credentials. Fill in:
    • myWallbox Email (email) — your myWallbox account email.
    • myWallbox Password (password) — your myWallbox password. Stored encrypted (gem-crypt:).
  3. Save and reload the device. The driver signs in to the myWallbox cloud, caches the session token for ~2 hours, and the device's status flips to Connected in the Devices list. If it stays disconnected, recheck the email/password and see Troubleshooting below.
  4. Discover chargers. Open the device and, from its Commands tab, run get_chargers. The response lists every charger on the account: {chargers: [{id, name, model, serial, software_version, group_name, status_id, max_charging_current, locked}, ...]}. Note the numeric id of each charger you want to control — that is the zone address in the next step.
  5. Create one zone per charger. The driver does not create zones for you — discovering a charger with get_chargers does not add it to GEM. For each charger you want to control, add a zone (see Zones) bound to this device, place it in the Power subsystem, and set the zone Address to the charger's numeric id from the discovery response.
Subsystem placement

Put charger zones in the Power subsystem — the default GEM subsystem for energy and power gear. The driver advertises an energy placement hint, but GEM ships no subsystem named "energy", so the New Zone editor will not pre-select a subsystem for you; choose Power by hand. Any subsystem works mechanically, but Power keeps chargers alongside panels, meters, and other energy devices.

Attribute Reference

Device

AttributeRequiredDescription
emailyesmyWallbox login email.
passwordyesmyWallbox password — secure, encrypted on disk.
status_intervalnoStatus poll interval in ms. Default 30000. The API is rate-limited; values below ~10 s start drawing throttling and are not recommended.
request_timeoutnoHTTPS request timeout in ms. Default 15000. Pulsar Plus on 4G has noticeably higher latency, so do not lower this.

Zone

AttributeDescription
max_charging_currentOptional default current (A) used by set_current_limit when called without an amps argument.

Zone State and Derived Attributes (written by the driver)

AttributeDescription
stateCoarse state — ready, disconnected, waiting, paused, scheduled, locked, charging, discharging, updating, error, unknown.
status_labelHuman label derived from the Wallbox status id (e.g. waiting for car demand). For unknown codes the label is code_<n>.
status_idRaw Wallbox status code (161-210 range).
charging_power_kwLive charging power.
charging_speed_kmhEstimated added range per hour (Wallbox cloud calculation).
session_energy_kwhEnergy added in the current session.
session_range_kmRange added in the current session.
session_green_kwhPortion of session energy attributed to renewable sources, if the account has solar integration.
session_secondsElapsed session time.
max_charging_currentCurrent soft cap in amps.
depot_pricePer-kWh tariff (if configured in the app).
grid_connection_typee.g. single_phase / three_phase.
ocpp_statusOCPP backend status string, when the charger is configured against an OCPP CSMS.

Zone Address Format

zone.address is the numeric charger id as returned by get_chargers (typically a 5-7 digit integer). Not the serial number, and not the user-assigned name.

Commands

CommandArgsNotes
get_chargersList every charger visible to the account, with id, name, model, serial, group, status, and current limit.
get_statusaddressRefresh and return raw /chargers/status/<id> payload for one charger.
resume / startaddressResume a paused session. POST remote-action 1.
pause / stopaddressPause an active session. POST remote-action 2.
rebootaddressReboot the charger. Use sparingly. POST remote-action 3.
update_softwareaddressTrigger a pending OTA firmware update. POST remote-action 5.
lockaddressLock the charger (RFID / app required to start). POST remote-action 7.
unlockaddressUnlock the charger so a connected car will charge. POST remote-action 8.
set_current_limitaddress, ampsSet the soft current limit in amps (6-80). PUT /v2/charger/<id> {maxChargingCurrent}. Falls back to zone.max_charging_current if no amps arg is given.
refreshForce an immediate status sweep across every zone.

Known Limitations

  • No native LAN API. Wallbox Pulsar / Commander hardware does not expose a documented local API; everything goes through the cloud. If api.wall-box.com is unreachable, the driver cannot control or read state.
  • Status code stability. The 161-210 status code range is observed from the public app and the community ecosystem, not contractually guaranteed by Wallbox. New firmware can add codes. The driver tolerates this — unknown codes surface as state: 'unknown', status_label: 'code_<n>'.
  • Current-limit clamp. set_current_limit is silently clamped server-side to the installer-commissioned max_available_current. Asking for 80 A on a 32 A install just gets you 32 A — no error.
  • Power Sharing / Power Boost. On multi-charger installs, current-limit PUTs against a slave charger id are ignored; you must target the master.
  • Session history. This driver focuses on live state and control. Historical session export (/v4/chargers/<id>/sessions) is not yet wired — fetch it directly via REST if needed.
  • Discharging (V2G). status_id 196 is mapped as discharging for forward compatibility, but no Wallbox model in the field exposes a V2G control surface yet.
  • OCPP backend. If the charger is bound to an external OCPP CSMS rather than myWallbox, some remote actions may return 200 but be ignored by the OCPP layer. Surface this via ocpp_status.

Troubleshooting

  • wallbox login http 403 / wallbox login http 401 — Bad email or password. Reset it via the mobile app, then update the device's password attribute. (A message that starts wallbox login failed: instead means the myWallbox cloud was unreachable — a network/DNS/firewall problem, not bad credentials.)
  • wallbox login: no jwt in response — Wallbox occasionally rotates the auth response shape. The driver tries body.jwt, body.data.attributes.token, and body.user.token. If you see this after a Wallbox cloud update, raise an issue with the response body (redact email).
  • Commands return http 401 repeatedly — JWT was rejected. The driver auto-refreshes once per call; if it loops, your account password has been changed elsewhere.
  • http 429 — You're being rate-limited. Raise status_interval to 60000+ and stop hammering refresh.
  • State stuck on disconnected — Charger lost Wi-Fi / 4G. Check the charger LED ring; the cloud only knows what the charger last reported.
  • set_current_limit accepted but charger does not change — Master/slave install (Power Sharing). Target the master id, not the slave.
  • Zones — create one zone per charger and set its Address to the charger id.
  • Subsystems — the Power subsystem these charger zones belong to.
  • Devices — adding, reloading, and running commands on the Wallbox device.
  • Commands — running get_chargers and the control commands.