[Ovmsdev] Generator / V2G metrics proposal

Michael Balzer dexter at expeedo.de
Mon Jan 18 02:00:10 HKT 2021


Everyone,

the generator / V2G metrics are now added as proposed.

https://docs.openvehicles.com/en/latest/userguide/metrics.html#standard-metrics

Regards,
Michael


Am 12.01.21 um 19:22 schrieb Michael Balzer:
> Everyone,
>
> I'm planning to add a general (optional) charge / grid integration log 
> and a general (optional) trip log. I'll describe my log record 
> proposal in a separate mail.
>
> For the grid log, I'm going to add V2G / generator mode metrics now, 
> so we can support this and define an already fully featured log 
> format. As this is more or less a reverse charge, and can be combined 
> with charging, my proposal is to a) basically duplicate the set of 
> charge metrics with only slight changes for the "generating" view, and 
> b) add grid side energy counters.
>
> We currently have these charge metrics:
>
>     OvmsMetricFloat* ms_v_charge_voltage;          // Momentary 
> charger supply voltage [V]
>     OvmsMetricFloat*  ms_v_charge_power;            // Momentary 
> charger input power [kW]
>     OvmsMetricFloat*  ms_v_charge_efficiency;       // Momentary 
> charger efficiency [%]
>     OvmsMetricFloat*  ms_v_charge_current;          // Momentary 
> charger output current (→battery) [A]
>     OvmsMetricFloat*  ms_v_charge_climit;           // Maximum charger 
> output current [A]
>     OvmsMetricInt*    ms_v_charge_time;             // Duration of 
> running charge [sec]
>     OvmsMetricFloat*  ms_v_charge_kwh;              // Energy charged 
> into the battery in the running session [kWh]
>     OvmsMetricString* ms_v_charge_mode;             // standard, 
> range, performance, storage
>     OvmsMetricBool*   ms_v_charge_timermode;        // True if timer 
> enabled
>     OvmsMetricInt*    ms_v_charge_timerstart;       // Time timer is 
> due to start
>     OvmsMetricString* ms_v_charge_state;            // charging, 
> topoff, done, prepare, timerwait, heating, stopped
>     OvmsMetricString* ms_v_charge_substate;         // scheduledstop, 
> scheduledstart, onrequest, timerwait, powerwait, stopped, interrupted
>     OvmsMetricString* ms_v_charge_type;             // Connection 
> type: undefined, type1, type2, chademo, roadster, teslaus, 
> supercharger, ccs
>     OvmsMetricBool*   ms_v_charge_pilot;            // Pilot signal 
> present
>     OvmsMetricBool*   ms_v_charge_inprogress;       // True = 
> currently charging
>     OvmsMetricFloat*  ms_v_charge_limit_range;      // Sufficient 
> range limit for current charge [km]
>     OvmsMetricFloat*  ms_v_charge_limit_soc;        // Sufficient SOC 
> limit for current charge [%]
>     OvmsMetricInt*    ms_v_charge_duration_full;    // Estimated time 
> remaining for full charge [min]
>     OvmsMetricInt*    ms_v_charge_duration_range;   // … for 
> sufficient range [min]
>     OvmsMetricInt*    ms_v_charge_duration_soc;     // … for 
> sufficient SOC [min]
>     OvmsMetricFloat*  ms_v_charge_temp;             // Charger 
> temperature [°C]
>
> …metrics (not in same order):
>     v.c.charging
>     v.c.climit
>     v.c.current
>     v.c.duration.full
>     v.c.duration.range
>     v.c.duration.soc
>     v.c.efficiency
>     v.c.kwh
>     v.c.limit.range
>     v.c.limit.soc
>     v.c.mode
>     v.c.pilot
>     v.c.power
>     v.c.state
>     v.c.substate
>     v.c.temp
>     v.c.time
>     v.c.timermode
>     v.c.timerstart
>     v.c.type
>     v.c.voltage
>
>
> I would add now the following metrics for the generator mode:
>
>     OvmsMetricFloat* ms_v_gen_voltage;             // Momentary 
> generator output voltage [V]
>     OvmsMetricFloat*  ms_v_gen_power;               // Momentary 
> generator output power [kW]
>     OvmsMetricFloat*  ms_v_gen_efficiency;          // Momentary 
> generator efficiency [%]
>     OvmsMetricFloat*  ms_v_gen_current;             // Momentary 
> generator input current (←battery) [A]
>     OvmsMetricFloat*  ms_v_gen_climit;              // Maximum 
> generator input current [A]
>     OvmsMetricInt*    ms_v_gen_time;                // Duration of 
> generator running [sec]
>     OvmsMetricFloat*  ms_v_gen_kwh;                 // Energy sum 
> generated in the running session [kWh]
>     OvmsMetricString* ms_v_gen_mode;                // TBD
>     OvmsMetricBool*   ms_v_gen_timermode;           // True if 
> generator timer enabled
>     OvmsMetricInt*    ms_v_gen_timerstart;          // Time generator 
> is due to start
>     OvmsMetricString* ms_v_gen_state;               // TBD
>     OvmsMetricString* ms_v_gen_substate;            // TBD
>     OvmsMetricString* ms_v_gen_type;                // Connection type 
> (chademo, ccs, …)
>     OvmsMetricBool*   ms_v_gen_pilot;               // Pilot signal 
> present
>     OvmsMetricBool*   ms_v_gen_inprogress;          // True = 
> currently delivering power
>     OvmsMetricFloat*  ms_v_gen_limit_range;         // Minimum range 
> limit for generator mode [km]
>     OvmsMetricFloat*  ms_v_gen_limit_soc;           // Minimum SOC 
> limit for generator mode [%]
>     OvmsMetricInt*    ms_v_gen_duration_empty;      // Estimated time 
> remaining for full discharge [min]
>     OvmsMetricInt*    ms_v_gen_duration_range;      // … for range 
> limit [min]
>     OvmsMetricInt*    ms_v_gen_duration_soc;        // … for SOC limit 
> [min]
>     OvmsMetricFloat*  ms_v_gen_temp;                // Generator 
> temperature [°C]
>
> …metrics (not in same order):
>     v.g.generating
>     v.g.climit
>     v.g.current
>     v.g.duration.empty
>     v.g.duration.range
>     v.g.duration.soc
>     v.g.efficiency
>     v.g.kwh
>     v.g.limit.range
>     v.g.limit.soc
>     v.g.mode
>     v.g.pilot
>     v.g.power
>     v.g.state
>     v.g.substate
>     v.g.temp
>     v.g.time
>     v.g.timermode
>     v.g.timerstart
>     v.g.type
>     v.g.voltage
>
>
> In addition to these, I would add energy counters to cover the actual 
> grid energy side (i.e. before/after conversion losses):
>
>     OvmsMetricFloat* ms_v_charge_kwh_grid;           // Energy drawn 
> from grid during running session [kWh]
>     OvmsMetricFloat*  ms_v_charge_kwh_grid_total;     // Energy drawn 
> from grid total (life time) [kWh]
>     OvmsMetricFloat*  ms_v_gen_kwh_grid;              // Energy sent 
> to grid during running session [kWh]
>     OvmsMetricFloat*  ms_v_gen_kwh_grid_total;        // Energy sent 
> to grid total (life time) [kWh]
>
>     v.c.kwh.grid
>     v.c.kwh.grid.total
>     v.g.kwh.grid
>     v.g.kwh.grid.total
>
>
> And yes, "kwh" as a metric name isn't perfect, but we started this 
> with "v.c.kwh", so we should now stick to it for consistency.
>
> Do I miss something? Any objections / suggestions?
>
> Regards,
> Michael
>

-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 203 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20210117/116e4ba4/attachment-0001.sig>


More information about the OvmsDev mailing list