> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spirii.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Remote commands

> The remote actions available on a connected charge box, when to reach for each, and where hardware limits what they can do.

Remote commands let you act on a connected charger from the platform — restarting it, starting or stopping a session, or freeing a stuck connector — without sending anyone to the site.

## Overview

Every command here acts on a charge box that's already **Online**: it travels over the charger's live OCPP connection, so a charger that's offline can't receive one. Getting a charger to that state is covered under [Charger activation](/capabilities/connection/charger-activation).

The commands fall into three groups.

<CardGroup cols={3}>
  <Card title="Restart a charger" href="#restarting-a-charger">
    Soft or hard reset, to apply configuration changes or recover an unresponsive unit.
  </Card>

  <Card title="Manage a session" href="#managing-sessions">
    Start or stop a charging session remotely.
  </Card>

  <Card title="Manage a connector" href="#managing-connectors">
    Unlock a connector, or take one out of service for maintenance.
  </Card>
</CardGroup>

Each command is available two ways: run it by hand in **Connect**, or send it programmatically through the **Spirii API**. The behaviour is identical; the API reference for each is linked in its section below.

## Restarting a charger

It helps to separate two words the platform uses precisely. A **reset** is the command you send to tell a charger to restart. A **reboot** is the restart that actually happens — which can also be triggered by the charger itself, for instance after a firmware update or a power cycle.

There are two kinds of reset, and choosing between them is the main decision on this page.

A **soft reset** restarts only the charger's software while the hardware stays powered, taking roughly 30 to 60 seconds. Queued data and configuration are preserved. This is the one to use for applying configuration changes, planned maintenance, or troubleshooting a communication problem — including while drivers may be charging. A charger that responds to a configuration change with `RebootRequired` needs a soft reset to make the change take effect.

A **hard reset** forces a full hardware reboot, takes roughly one to three minutes, and carries a risk of losing data that hasn't been persisted. Keep it for a unit that's unresponsive, or one where a soft reset has already failed.

<Warning>
  Always try a soft reset first. A hard reset should be a last resort — it's more disruptive and can lose unpersisted data. In most cases either reset will interrupt and end any active charging session.
</Warning>

Most charge boxes keep their configuration, connector availability, local authorisation lists, and charging profiles across a reboot; active sessions, network connections, and cached data are cleared and re-established. Behaviour varies by model, so confirm against your hardware's documentation.

Send resets in Connect from the charge box, or through the API: [`reset`](/api-reference/chargeboxes-v2/performs-a-hard-or-soft-reset-on-a-charge-box) for either kind, or [`reboot`](/api-reference/chargeboxes-v2/reboots-a-charge-box-alias-for-soft-reset) as an alias for a soft reset.

## Managing sessions

### Remote start

A remote start begins a charging session without anyone touching the charger. You send the connector ID — say `DE*SPI*E00012345*1` — and an authorisation identifier, a [token](/components/access/tokens), and the charger moves to `Preparing` straight away, even if no vehicle is plugged in yet. A `ConnectionTimeOut` sets how long it waits for a vehicle before returning to `Available`.

This is the only way to authorise a session without a physical action at the charger, such as tapping an RFID token or a payment card. It's what starts a session from a driver app or from Connect, and it's the tool your support staff reach for when helping a driver who can't get a session going on site.

### Remote stop

A remote stop ends a session that's already running: you send the `transactionId` of the active session, and the charger responds `Accepted` or `Rejected`. It's used less often than remote start, since unplugging the vehicle already stops a session — but it's useful when a session is stuck and your support staff need to force it to end.

Both commands trigger the charger's standard `StartTransaction` and `StopTransaction` messages, so billing and the session record stay accurate. Run them in Connect, or via [`start transaction`](/api-reference/evses-v2/requests-an-evse-to-start-a-transaction) and [`stop transaction`](/api-reference/evses-v2/requests-an-evse-to-stop-a-transaction) in the API.

## Managing connectors

### Unlock connector

An unlock command releases a connector's lock, sent against a specific connector ID. If a session is active on it, the charger completes that session first, then unlocks.

Whether it works depends on the hardware:

* It applies only to **AC sockets with electronic locks** — the case where a driver brings their own cable.
* On **CHAdeMO** connectors the charger controls the lock, so an unlock should succeed.
* On **Type 2 and CCS** connectors the *vehicle* controls the lock, so an unlock may not succeed.

Not every manufacturer implements this fully, so confirm the behaviour for your hardware. In practice it's for the case where a driver has released the cable at the car but it stays latched in the charger's socket, and your support staff try to free it. Run it in Connect, or via [`unlock connector`](/api-reference/evses-v2/requests-an-evse-to-unlock-a-connector) in the API.

### Change availability

Changing a connector's availability takes it out of service or brings it back, without affecting the rest of the charge box. Set a connector **Inoperative** to stop new sessions on it — for maintenance on a single connector while the other connectors on the unit keep charging — and **Operative** to return it to service.

Run it in Connect, or via [`change availability`](/api-reference/evses-v2/updates-the-availability-status-of-a-connector) in the API.

## Choosing a command

| Command             | What it does                                                | Reach for it when                                                                  |
| ------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| Soft reset          | Restarts the charger's software, preserving data and config | A config change needs to take effect, or a charger has a minor communication fault |
| Hard reset          | Forces a full hardware reboot                               | The charger is unresponsive and a soft reset has failed                            |
| Remote start        | Begins a session on a connector                             | Authorising a session without a physical tap — from an app, Connect, or support    |
| Remote stop         | Ends an active session                                      | A session is stuck and needs to be forced to end                                   |
| Unlock connector    | Releases a connector's lock                                 | A driver's cable is latched in an AC socket after they've unplugged the car        |
| Change availability | Sets a connector Operative or Inoperative                   | Taking one connector out of service for maintenance                                |

## Dependencies & limitations

* **The charger must be online.** Commands travel over the live OCPP connection; a charger that isn't connected can't act on them.
* **Resets end active sessions.** In most cases a soft or hard reset interrupts and ends whatever session is running.
* **Hard reset can lose data.** Unpersisted data may not survive a hard reset, which is why it's a last resort.
* **Unlock depends on the connector.** It works on AC sockets with electronic locks; on Type 2 and CCS the vehicle holds the lock, so it may not succeed, and support varies by manufacturer.
* **These act on the charger's real state.** To change only the status a driver sees in an app — without touching the charger — use [Temporary EVSE status](/capabilities/operation-monitoring/temporary-evse-status) instead.

## Related

<CardGroup cols={2}>
  <Card title="Charge boxes" icon="server" href="/components/charging/charge-boxes">
    The unit these commands act on, and where its logs and connection history live.
  </Card>

  <Card title="EVSEs and connectors" icon="plug" href="/components/charging/evses-and-connectors">
    The connector level that session and connector commands target.
  </Card>

  <Card title="Charger activation" icon="plug-zap" href="/capabilities/connection/charger-activation">
    How a charger gets online in the first place — the prerequisite for every command here.
  </Card>

  <Card title="Temporary EVSE status" icon="eye" href="/capabilities/operation-monitoring/temporary-evse-status">
    Override the status drivers see in apps, without changing the charger's real state.
  </Card>
</CardGroup>
