@@ -127,16 +127,18 @@ The following sections describe the standardized telemetry data structures for D
127127 - [ PV Data Model] ( #pv-data-model )
128128 - [ Battery Data Model] ( #battery-data-model )
129129 - [ Meter Data Model] ( #meter-data-model )
130+ - [ V2X Charger Data Model] ( #ev-charger-data-model-v2x-enabled )
130131
131132## Base Structure
132133
133134### DERData Root Structure
134135
135- The root data structure can contain up to three subsystems:
136+ The root data structure can contain up to four subsystems:
136137
137138- ** pv** : Photovoltaic system data
138139- ** battery** : Battery storage system data
139140- ** meter** : Meter data
141+ - ** v2x_charger** : Vehicle-to-grid charger data
140142
141143### Inheritance Model
142144
@@ -183,7 +185,7 @@ Common fields shared by all device types:
183185
184186| Field | Unit | Data Type | Description |
185187| -------------- | ------------ | --------- | -------------------------------------- |
186- | ` type ` | - | string | Object type ("pv", "battery", "meter") |
188+ | ` type ` | - | string | Object type ("pv", "battery", "meter", "v2x_charger" ) |
187189| ` make ` | - | string | Manufacturer/brand name (optional) |
188190| ` timestamp ` | milliseconds | integer | Timestamp of reading start |
189191| ` read_time_ms ` | milliseconds | integer | Time taken to complete the reading |
@@ -306,30 +308,23 @@ Grid meter data with import/export and phase-level measurements:
306308{
307309 "type" : " v2x_charger" ,
308310 "make" : " Ferroamp" ,
309- "status" : " charging" ,
311+ "connector_status" : " occupied" ,
312+ "charging_state" : " charging" ,
310313 "protocol" : " ISO_15118_20" ,
311- "control_mode" : " dynamic_bpt " ,
314+ "control_mode" : " bi_dir " ,
312315 "plug_connected" : true ,
313316 "W" : 5300 ,
317+ "ac_W" : 5300 ,
314318 "A" : 23.0 ,
315319 "V" : 230.5 ,
316320 "Hz" : 49.98 ,
317321 "L1_V" : 232.8 ,
318322 "L1_A" : 23.0 ,
319323 "L1_W" : 5354 ,
320- "L2_V" : 230.9 ,
321- "L2_A" : 0.0 ,
322- "L2_W" : 0 ,
323- "L3_V" : 230.2 ,
324- "L3_A" : 0.0 ,
325- "L3_W" : 0 ,
326324 "dc_W" : 5100 ,
327325 "dc_V" : 400.0 ,
328326 "dc_A" : 12.75 ,
329327 "vehicle_soc_fract" : 0.55 ,
330- "ev_target_energy_req_Wh" : 5300 ,
331- "ev_max_energy_req_Wh" : 18100 ,
332- "ev_min_energy_req_Wh" : -25800 ,
333328 "session_charge_Wh" : 1500 ,
334329 "session_discharge_Wh" : 0 ,
335330 "total_charge_Wh" : 142000 ,
@@ -341,13 +336,16 @@ Grid meter data with import/export and phase-level measurements:
341336
342337| Field | Unit | Data Type | Description |
343338| -------| ------| -----------| -------------|
344- | ` type ` | - | string | Always "v2x_charger" |
339+ | ` type ` | - | string | Always ` "v2x_charger" ` |
345340| ` make ` | - | string | Manufacturer brand (e.g., Ferroamp, Ambibox) |
346- | ` status ` | - | string | State (idle, charging, discharging, error, suspended) |
341+ | ` connector_status ` | - | string | Connector availability (see [ Connector Status] ( #connector-status ) ) |
342+ | ` charging_state ` | - | string | Vehicle/session charging state (see [ Charging State] ( #charging-state ) ) |
343+ | ` status ` | - | string | ** Deprecated.** Legacy flat status string. Use ` connector_status ` + ` charging_state ` instead |
347344| ` protocol ` | - | string | Active protocol (e.g., ISO_15118_2, ISO_15118_20, DIN) |
348- | ` control_mode ` | - | string | scheduled (Car decides) or dynamic (EMS/Charger decides) |
349- | ` plug_connected ` | - | boolean | true if cable is physically inserted |
350- | ` W ` | W | integer | AC Grid Power: (+) Charging, (-) Discharging/V2G |
345+ | ` control_mode ` | - | string | ` "unknown" ` , ` "bi_dir" ` (bidirectional), or ` "uni_dir" ` (charge only) |
346+ | ` plug_connected ` | - | boolean | ** Deprecated.** Use ` connector_status ` instead — derivable from status != ` "available" ` |
347+ | ` W ` | W | integer | Active Power, derived from ` ac_W ` or ` dc_W * 0.95 ` . (+) Charging, (-) V2G |
348+ | ` ac_W ` | W | integer | AC Active Power (+) Charging, (-) V2G |
351349| ` A ` | A | float | AC Grid Current (Total) |
352350| ` V ` | V | float | AC Grid Voltage (Average) |
353351| ` Hz ` | Hz | float | Grid Frequency |
@@ -360,16 +358,35 @@ Grid meter data with import/export and phase-level measurements:
360358| ` vehicle_soc_fract ` | fraction | float | Vehicle State of Charge (0.0 - 1.0) |
361359| ` ev_target_energy_req_Wh ` | Wh | integer | Demand: Energy needed to reach driver's target SoC |
362360| ` ev_max_energy_req_Wh ` | Wh | integer | Capacity: Empty space in battery available for charging |
363- | ` ev_min_energy_req_Wh ` | Wh | integer | V2G Potential: Energy available for export (Negative value = V2G) |
361+ | ` ev_min_energy_req_Wh ` | Wh | integer | V2G Potential: Energy available for export (negative = V2G) |
364362| ` session_charge_Wh ` | Wh | integer | Energy imported by EV during this session |
365363| ` session_discharge_Wh ` | Wh | integer | Energy exported by EV during this session |
366364| ` total_charge_Wh ` | Wh | integer | Lifetime Energy delivered to EV |
367365| ` total_discharge_Wh ` | Wh | integer | Lifetime Energy exported from EV (V2G) |
368366
369- ** Status Values: **
367+ #### Connector Status
370368
371- - ` "charging" ` - Vehicle is connected and actively charging/discharging
372- - ` "suspended" ` - A vehicle is plugged into the port, but the charger is not delivering any power
373- - ` "available" ` - Charger is ready and no vehicle connected
374- - ` "preparing" ` - Vehicle connected, preparing to charge (authentication, cable check, etc.)
375- - ` "error" ` - Charger or charging session has encountered an error
369+ Describes the physical connector's availability. Based on OCPP 2.0.1 ` ConnectorStatusEnumType ` , with ` preparing ` and ` finishing ` retained from OCPP 1.6 for backward compatibility.
370+
371+ | Value | Meaning |
372+ | -------| ---------|
373+ | ` "available" ` | Ready, nothing plugged in |
374+ | ` "preparing" ` | Cable plugged in, session not started yet |
375+ | ` "finishing" ` | Session ending, cable still plugged in |
376+ | ` "reserved" ` | Locked for a specific user |
377+ | ` "unavailable" ` | Intentionally offline (maintenance, admin) |
378+ | ` "faulted" ` | Hardware/software fault |
379+ | ` "occupied" ` | In use (charging, discharging, or connected) |
380+
381+ #### Charging State
382+
383+ Describes the vehicle/charging session state. Based on OCPP 2.0.1 ` ChargingStateEnumType ` , extended with ` discharging ` for V2G.
384+
385+ | Value | Meaning |
386+ | -------| ---------|
387+ | ` "charging" ` | Energy actively flowing to vehicle |
388+ | ` "discharging" ` | Energy flowing from vehicle to grid (V2G) |
389+ | ` "suspended_ev" ` | Vehicle not accepting power (e.g., battery full) |
390+ | ` "suspended_evse" ` | Charger not delivering power (e.g., smart charging limit, pending auth) |
391+ | ` "ev_connected" ` | Cable plugged in, session open, no energy flowing yet |
392+ | ` "idle" ` | Transaction open but no EV connected (e.g., cable removed mid-session) |
0 commit comments