sync_status: IN_SYNC, PENDING or FAILED.
The record
- Settings are grouped by domain:
battery,evse,vehicle. Other device types have none. supportedlists the paths you can write, from the device’sdevice_typeandcapabilities. A write outside it returns422.- A capabilities update recomputes
supported, so re-read it ondevice.update. - A device with no settings is seeded from its first reported state.
Write
Send only the changed fields under their domain.updated_by says who wrote last. Debounce continuous controls such as a slider.
Sync loop
- A write from either API fires
device.settings.updateto you and the VPP operator. The payload names the device only. - Retrieve the settings and apply them to the device.
- Your next device state submission reports the values, and that is the confirmation; there is no acknowledgment endpoint.
- A device that does not apply the change in time moves to
FAILED, anddevice.settings.sync_failedfires.
device.settings.update with updated_by set to OEM, so you do not write settings for device-local changes.
One-off charge
one_off_charge, on battery, evse and vehicle, starts a charge now and once, regardless of plans, VPP events and the other settings. A battery charges to full.
- The user sets it to
truein your app or the VPP operator’s, anddevice.settings.updatefires. - Start the charge. An instruction it overrides is recorded as a deviation.
- When the charge ends, write
one_off_chargefalsewith update device settings. Flatpeak does not clear it for you.
sync_status, because device state does not report it. true for an unplugged vehicle returns 422.
Limits
- The VPP operator can write settings only while the device has an
ACTIVEenrollment with theSETTINGSscope. - The user sets
backup_reserve_percentfreely. No VPP program constrains it, and energy under the reserve is never dispatched. strategyis stored and shared, but Flatpeak does not act on it: your planning decides what it means, and instructions stay binding under any strategy.export_ruleandcharge_from_grid_enabledbound dispatch, and affected intervals are recorded as declined, so they do not count as a shortfall.

