Schedule a battery charge for later: defer it with a bare start, or bound a cheap-rate window with start and end. Capability check, curl, action lifecycle, cancellation.
Schedule a charge action two ways. Send start on its own to defer the charge: it fires once, at that instant, and holds until your next push. Add an end and it becomes a window: the platform fires at start and reverts the battery at end, so you can ride a cheap-rate tariff overnight without touching the API again.A cheap-rate window is the most common reason to schedule a charge: an Octopus Agile dip, a Cosy off-peak slot, a tariff window the customer’s app already knows about. The platform fires the command, reverts the device at the end of any window, and webhook payloads land at each transition so the customer’s app reflects what actually happened.Which shapes a battery accepts is declared in commands.charge.execution: scheduled for a bare start, windowed for a start/end pair. They vary by device, so check before you push.
Support varies by battery. This FoxESS unit lists windowed, so it takes a start/end window. A unit that lists scheduled (GivEnergy’s charge default, for instance) accepts a deferred start on its own. Match your push to what the array shows.
Send start without an end. The GivEnergy unit below lists scheduled, so it accepts a bare start; the charge fires at 22:00 and holds until you push something else.
When the window opens, the command dispatches to the OEM. acknowledgedAt populates and state advances to acknowledged. On success, state reaches completed and a push.completed webhook fires.