ZerokW
Every device, protocol and program Zero kW connects to
What we connect to

Zero kW is an OpenADR VTN and it ships a VEN you can run on your own site. Between them they reach thermostats, building management systems, lighting, batteries, inverters, EV charging and anything that speaks BACnet or Modbus — which, in a commercial building, is nearly everything.

18
working today
42
in the library
14
drivers shipped
3
OpenADR profiles served

Connect your equipment Machine-readable capability document

OpenADR, all four ways

One event model, four wire formats. A utility on 2.0b, an aggregator on 3.0 and a legacy controller on 2.0a can all be served the same dispatch, and each gets it in the form it understands.

ProfileTransportSignalsReportsAuthEndpoint
OpenADR 2.0a OASIS EI, XML level only no HTTP Basic over TLS https://mail.zerokw.com/oadr.php/OpenADR2/Simple/2.0a
OpenADR 2.0b OASIS EI, XML level, price, kW, limit, state of charge yes HTTP Basic over TLS https://mail.zerokw.com/oadr.php/OpenADR2/Simple/2.0b
OpenADR 3.0 REST / JSON level, price, kW, limit, state of charge yes OAuth2 client credentials https://mail.zerokw.com/oadr.php/openadr3/3.0.1
What a signal means
SignalUnits2.0a/2.0b3.0What it is for
Simple level simple / level SIMPLE Normal / moderate / high / special. Understood by every device that speaks OpenADR at all.
Price USD/kWh ELECTRICITY_PRICE / price PRICE The actual $/kWh for the interval. Drives arbitrage and price-responsive setpoints.
Dispatch to kW KW LOAD_DISPATCH / setpoint DISPATCH_SETPOINT Hold total load at this kW. The instruction a battery or a chiller plant can act on directly.
Shed kW KW LOAD_DISPATCH / delta DISPATCH_SETPOINT_RELATIVE Reduce by this many kW from baseline. What most capacity programs settle against.
Capacity limit KW LOAD_CONTROL / x-loadControlCapacity IMPORT_CAPACITY_LIMIT A hard ceiling on import. This is the one that protects a demand charge and a ratchet.
State of charge PERCENT LOAD_DISPATCH / setpoint CHARGE_STATE_SETPOINT Target state of charge. Used to pre-charge a battery before a peak or a price spike.

Profile A carries only the level. A price or a kW target addressed to a 2.0a device is converted to a level and the original instruction is written into the event comment, so an operator reading the exchange can see what was actually meant.

What could you actually shed?

Count what you have. The figures are per unit for a residential site and come from the same model the dispatch page bills against, so this is an estimate of controllable load, not a brochure number.

7.7 kW each
1.2 kW each
1.1 kW each
1.1 kW each
18.0 kW each
5.0 kW each
4.6 kW each
The device library

A driver ships in the exported VEN and speaks this device's protocol. Local/on-premises protocols are exercised against simulators, not against every listed product — the protocol is implemented, the specific model is not certified.

Everything Commercial Residential

Thermostats

The largest addressable residential load and the fastest commercial one. Setpoint offsets are reversible, cheap and invisible for short events.

DeviceReached byAuthTypical shedHow it is curtailed
Google Nest driver ships
Google · nest_sdm
Setpoint offset Eco mode Reads state
Device Access needs a one-off Google project registration fee. Worth saying to a customer before they hit it.
https://smartdevicemanagement.googleapis.com/v1
vendor cloud
oauth2 1.1 kW SetCool at the offset setpoint.
Honeywell Home / Resideo driver ships
Resideo · resideo
Setpoint offset Temporary hold Reads state
https://api.honeywell.com/v2
vendor cloud
oauth2 1.1 kW changeableValues.coolSetpoint with thermostatSetpointStatus TemporaryHold.
ecobee driver ships
ecobee (Generac) · ecobee
Setpoint offset Temporary hold Occupancy Runtime telemetry
Runtime telemetry is reported in five-minute intervals, which is enough to evidence a shed without a separate meter.
https://api.ecobee.com/1
vendor cloud
oauth2 1.2 kW setHold with a cooling setpoint offset sized to the level.
Emerson Sensi roadmap
Emerson
Setpoint offset
vendor cloud
partner
No public API. Emerson runs a utility/DR partner program; access is a commercial agreement, not a signup.
Through the partner DR endpoint.
tado° roadmap
tado GmbH
Setpoint offset Reads state
https://my.tado.com/api/v2
vendor cloud
oauth2 PUT zone overlay with the offset setpoint.
Lighting control

Dimming to 80% is unnoticeable and instant. Small per fixture, large per campus, and it never has a comfort complaint.

DeviceReached byAuthTypical shedHow it is curtailed
Lutron (Vive, Caséta Pro, Athena) driver ships
Lutron Electronics · lutron_leap
Dimming Reads state Per-zone
Lighting is the least-complained-about curtailment there is, and it responds in under a second.
LEAP over TLS, port 8081
on site
mtls
LEAP uses a client certificate paired once with the bridge or hub.
18 kW GoToLevel at the computed dim percentage.
Batteries

The only asset that can both remove load and add generation. Precharge before a peak, discharge through it.

DeviceReached byAuthTypical shedHow it is curtailed
Tesla Powerwall (local gateway) driver ships
Tesla · tesla_powerwall
Meters itself State of charge Battery dispatch Reserve control Discharge on demand
The local gateway is preferred over the Fleet API: no cloud round trip, no rate limit, and it keeps working when the internet does not.
https://{gateway}/api
on site
basic 5.0 kW Lower the backup reserve so the Powerwall discharges into the site load through the event.
sonnen (sonnenBatterie) driver ships
sonnen GmbH · sonnen
Meters itself State of charge Battery dispatch Discharge on demand
http://{ip}:80/api/v2
on site
api_key
Auth-Token header, read from the battery's own web UI.
4.6 kW Manual operating mode, then a discharge setpoint in watts.
FranklinWH aPower roadmap
FranklinWH
Meters itself State of charge Battery dispatch
https://energy.franklinwh.com/api
vendor cloud
bearer Time-of-use and reserve settings through the cloud API.
Generac PWRcell roadmap
Generac
Meters itself State of charge Battery dispatch
Modbus TCP 502
on site
none
Modbus TCP on the PWRcell inverter.
Reachable through the Modbus driver with the PWRcell register map.
Tesla Fleet API (energy sites, vehicles) roadmap
Tesla
Meters itself State of charge Reserve control Vehicle Charge Limit Vehicle Charge Amps
https://fleet-api.prd.na.vn.cloud.tesla.com/api/1
vendor cloud
oauth2
Partner registration and a hosted public key are prerequisites.
backup_reserve_percent on an energy site; set_charging_amps on a vehicle.
Solar inverters

Curtailment, power factor and, under IEEE 1547-2018, dispatchable reactive support.

DeviceReached byAuthTypical shedHow it is curtailed
Enphase IQ Gateway (local) driver ships
Enphase Energy · enphase_envoy
Meters itself State of charge
Metering at 1-second resolution locally, which is the best baseline evidence any residential site will have.
https://{envoy}
on site
bearer
A token from entrez.enphaseenergy.com, exchanged once and cached; the gateway itself validates it.
Read-only locally. Storage control needs the cloud API or a grid profile change.
Fronius driver ships
Fronius International · sunspec
Meters itself Percentage curtailment
Modbus TCP 502, SunSpec
on site
none SunSpec 123 over Modbus; the Solar API is read-only.
SolarEdge driver ships
SolarEdge · sunspec
Meters itself Percentage curtailment Battery dispatch
Modbus TCP must be enabled on the inverter's SetApp site-communication screen; it is off by default.
https://monitoringapi.solaredge.com
either
api_key
Monitoring API key for cloud reads; local SunSpec Modbus needs no key and is where control lives.
SunSpec model 123 over local Modbus. The cloud monitoring API is read-only.
Enphase Energy API v4 roadmap
Enphase Energy
Meters itself State of charge Battery dispatch
Rate-limited by plan tier. Use the local gateway for telemetry and the cloud only for control.
https://api.enphaseenergy.com/api/v4
vendor cloud
oauth2 Battery profile and reserve through the systems endpoint.
EV charging

Large, deferrable and increasingly the biggest single load at a site. Smart charging profiles are the standard lever.

DeviceReached byAuthTypical shedHow it is curtailed
OCPP 1.6J / 2.0.1 (EV charging) driver ships
Open Charge Alliance · ocpp
Meters itself Hard kW limit Deferrable
EV load is the most deferrable thing at most sites and the least noticed when deferred.
OCPP over WebSocket at the charger; this driver calls the CSMS REST façade
on site
bearer
Against the CSMS, not the charger. The charger trusts its CSMS; we talk to that.
7.7 kW SetChargingProfile, TxDefaultProfile, chargingRateUnit W, limit set to the allocation.
Enel X JuiceBox roadmap
Enel X Way
Meters itself Hard kW limit
Enel X Way withdrew from North America in 2024; existing units run on third-party clouds. Confirm what a site is actually pointed at before promising control.
https://jbv1-api.emotorwerks.com/box_pin
vendor cloud
api_key Set the charging current cap.
Wallbox roadmap
Wallbox N.V.
Meters itself Hard kW limit Session control
https://api.wall-box.com
vendor cloud
bearer maxChargingCurrent on the charger.
Water heating

A thermal battery that already exists. CTA-2045 makes it dispatchable without touching the tank.

DeviceReached byAuthTypical shedHow it is curtailed
CTA-2045-B module (water heaters, HVAC) roadmap
ANSI/CTA standard
Native shed command Pre-load Reads state
Every major US water heater brand ships a CTA-2045 port. It is the cheapest residential kW on the market and it needs a serial adapter, not an integration.
CTA-2045-B over the UCM serial port
on site
none 4.5 kW Shed for the event duration.
Meters and gateways

Not controllable, but the measurement that makes everything else settleable.

DeviceReached byAuthTypical shedHow it is curtailed
Shelly (Pro EM, Plus series) driver ships
Allterco · rest_generic
Meters itself On/off
http://{ip}/rpc
on site
none
Optional local basic auth.
Switch the circuit off for the event window — appropriate for a discrete load, never for anything with a compressor.
Emporia Vue / EV charger roadmap
Emporia Energy
Meters itself Per-circuit metering Hard kW limit
The cheapest way to get circuit-level residential telemetry, which is what makes a residential baseline defensible.
https://api.emporiaenergy.com
vendor cloud
bearer
AWS Cognito.
Charger current cap; the Vue itself is measurement only.
Green Button Connect My Data roadmap
utility
Interval history
Already wired into the platform's rebate and program matching — see the Green Button flags on the programs page.
ESPI / Atom XML
vendor cloud
oauth2
Per-utility authorization server; the customer authorizes their own data.
Not controllable. This is where the baseline comes from.
Protocols

Generic transports. When a device is not named here, it usually still speaks one of these.

DeviceReached byAuthTypical shedHow it is curtailed
Generic webhook driver ships
any · rest_generic
Setpoint control Hard kW limit
The escape hatch. A site with a bespoke control system can act on a dispatch in an afternoon without waiting for a driver.
HTTPS POST of the dispatch as JSON
vendor cloud
bearer POST {action, level, kw, event} to the configured URL.
Local script driver ships
any · script
Setpoint control Hard kW limit
For the site that already has automation and only needs to be told when.
Executes a configured command with the dispatch in the environment
on site
none Runs the configured command with ZK_ACTION, ZK_LEVEL, ZK_KW and ZK_EVENT_ID set.
Modbus TCP (any device) driver ships
Modbus Organization · modbus_tcp
Meters itself Setpoint control Hard kW limit
Register maps are per-product and are configured, not guessed. The driver refuses to write a register it has no map entry for.
Modbus TCP, port 502
on site
none
No authentication in the protocol. Segment the network.
Write the kW limit to a configured holding register, scaled per the register map.
SunSpec Modbus (inverters, meters, storage) driver ships
SunSpec Alliance · sunspec
Meters itself Percentage curtailment Power factor Battery dispatch
This is the reason a fleet of mixed inverters is tractable at all: one control path for every conformant device.
Modbus TCP 502, SunSpec model discovery from base 40000
on site
none Model 123 WMaxLimPct plus WMaxLim_Ena — the vendor-neutral way to curtail any conformant inverter.
IEEE 2030.5 / CSIP (Rule 21, HECO) roadmap
IEEE / SunSpec CSIP
Percentage curtailment Power factor Volt-VAR Battery dispatch
Mandatory for utility DER programs in California and Hawaii. Worth building the moment a customer has a Rule 21 obligation — it is a different trust model, not a different protocol shape.
IEEE 2030.5 over HTTPS, XML/EXI
vendor cloud
mtls
Client certificate from a CSIP-approved PKI. There is no password path.
DERControl with opModMaxLimW for the event window.
If your equipment is not listed

Two drivers cover the rest. rest_generic posts the dispatch to a URL you control; script runs a command with the dispatch in its environment. Either takes an afternoon at a site that already has a way to control itself, and neither waits on us.

And if a device on the roadmap is the one you have, say so from the connect page — that is what moves it up the list.

What we will not claim