/* ; Project: Open Vehicle Monitor System ; Date: 14th March 2017 ; ; Changes: ; 1.0 Initial release ; ; (C) 2011 Michael Stegen / Stegen Electronics ; (C) 2011-2017 Mark Webb-Johnson ; (C) 2011 Sonny Chen @ EPRO/DX ; ; Permission is hereby granted, free of charge, to any person obtaining a copy ; of this software and associated documentation files (the "Software"), to deal ; in the Software without restriction, including without limitation the rights ; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ; copies of the Software, and to permit persons to whom the Software is ; furnished to do so, subject to the following conditions: ; ; The above copyright notice and this permission notice shall be included in ; all copies or substantial portions of the Software. ; ; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ; THE SOFTWARE. */ #ifndef __METRICS_STANDARD_H__ #define __METRICS_STANDARD_H__ #include "ovms_metrics.h" #define SM_STALE_NONE 0 #define SM_STALE_MIN 10 #define SM_STALE_MID 120 #define SM_STALE_HIGH 3600 #define SM_STALE_MAX 65535 #define MS_M_VERSION "m.version" #define MS_M_HARDWARE "m.hardware" #define MS_M_SERIAL "m.serial" #define MS_M_TASKS "m.tasks" #define MS_M_FREERAM "m.freeram" #define MS_M_MONOTONIC "m.monotonic" #define MS_M_TIME_UTC "m.time.utc" #define MS_N_TYPE "m.net.type" #define MS_N_SQ "m.net.sq" #define MS_N_PROVIDER "m.net.provider" #define MS_N_MDM_ICCID "m.net.mdm.iccid" #define MS_N_MDM_MODEL "m.net.mdm.model" #define MS_N_MDM_NETREG "m.net.mdm.netreg" #define MS_N_MDM_NETWORK "m.net.mdm.network" #define MS_N_MDM_SQ "m.net.mdm.sq" #define MS_N_MDM_MODE "m.net.mdm.mode" #define MS_N_WIFI_NETWORK "m.net.wifi.network" #define MS_N_WIFI_SQ "m.net.wifi.sq" #ifdef CONFIG_OVMS_COMP_MAX7317 #define MS_M_EGPIO_INPUT "m.egpio.input" #define MS_M_EGPIO_MONITOR "m.egpio.monitor" #define MS_M_EGPIO_OUTPUT "m.egpio.output" #endif //CONFIG_OVMS_COMP_MAX7317 #define MS_S_V2_CONNECTED "s.v2.connected" #define MS_S_V2_PEERS "s.v2.peers" #define MS_S_V3_CONNECTED "s.v3.connected" #define MS_S_V3_PEERS "s.v3.peers" #define MS_V_TYPE "v.type" #define MS_V_VIN "v.vin" #define MS_V_BAT_SOC "v.b.soc" #define MS_V_BAT_SOH "v.b.soh" #define MS_V_BAT_CAC "v.b.cac" #define MS_V_BAT_HEALTH "v.b.health" #define MS_V_BAT_VOLTAGE "v.b.voltage" #define MS_V_BAT_CURRENT "v.b.current" #define MS_V_BAT_COULOMB_USED "v.b.coulomb.used" #define MS_V_BAT_COULOMB_USED_TOTAL "v.b.coulomb.used.total" #define MS_V_BAT_COULOMB_RECD "v.b.coulomb.recd" #define MS_V_BAT_COULOMB_RECD_TOTAL "v.b.coulomb.recd.total" #define MS_V_BAT_POWER "v.b.power" #define MS_V_BAT_CONSUMPTION "v.b.consumption" #define MS_V_BAT_ENERGY_USED "v.b.energy.used" #define MS_V_BAT_ENERGY_USED_TOTAL "v.b.energy.used.total" #define MS_V_BAT_ENERGY_RECD "v.b.energy.recd" #define MS_V_BAT_ENERGY_RECD_TOTAL "v.b.energy.recd.total" #define MS_V_BAT_RANGE_FULL "v.b.range.full" #define MS_V_BAT_RANGE_IDEAL "v.b.range.ideal" #define MS_V_BAT_RANGE_EST "v.b.range.est" #define MS_V_BAT_RANGE_SPEED "v.b.range.speed" #define MS_V_BAT_12V_VOLTAGE "v.b.12v.voltage" #define MS_V_BAT_12V_CURRENT "v.b.12v.current" #define MS_V_BAT_12V_VOLTAGE_REF "v.b.12v.voltage.ref" #define MS_V_BAT_12V_VOLTAGE_ALERT "v.b.12v.voltage.alert" #define MS_V_BAT_TEMP "v.b.temp" #define MS_V_BAT_PACK_LEVEL_MIN "v.b.p.level.min" #define MS_V_BAT_PACK_LEVEL_MAX "v.b.p.level.max" #define MS_V_BAT_PACK_LEVEL_AVG "v.b.p.level.avg" #define MS_V_BAT_PACK_LEVEL_STDDEV "v.b.p.level.stddev" #define MS_V_BAT_PACK_VMIN "v.b.p.voltage.min" #define MS_V_BAT_PACK_VMAX "v.b.p.voltage.max" #define MS_V_BAT_PACK_VAVG "v.b.p.voltage.avg" #define MS_V_BAT_PACK_VSTDDEV "v.b.p.voltage.stddev" #define MS_V_BAT_PACK_VSTDDEVMAX "v.b.p.voltage.stddev.max" #define MS_V_BAT_PACK_VGRAD "v.b.p.voltage.grad" #define MS_V_BAT_PACK_TMIN "v.b.p.temp.min" #define MS_V_BAT_PACK_TMAX "v.b.p.temp.max" #define MS_V_BAT_PACK_TAVG "v.b.p.temp.avg" #define MS_V_BAT_PACK_TSTDDEV "v.b.p.temp.stddev" #define MS_V_BAT_PACK_TSTDDEVMAX "v.b.p.temp.stddev.max" #define MS_V_BAT_CELL_VOLTAGE "v.b.c.voltage" #define MS_V_BAT_CELL_VMIN "v.b.c.voltage.min" #define MS_V_BAT_CELL_VMAX "v.b.c.voltage.max" #define MS_V_BAT_CELL_VDEVMAX "v.b.c.voltage.dev.max" #define MS_V_BAT_CELL_VALERT "v.b.c.voltage.alert" #define MS_V_BAT_CELL_TEMP "v.b.c.temp" #define MS_V_BAT_CELL_TMIN "v.b.c.temp.min" #define MS_V_BAT_CELL_TMAX "v.b.c.temp.max" #define MS_V_BAT_CELL_TDEVMAX "v.b.c.temp.dev.max" #define MS_V_BAT_CELL_TALERT "v.b.c.temp.alert" #define MS_V_CHARGE_VOLTAGE "v.c.voltage" #define MS_V_CHARGE_CURRENT "v.c.current" #define MS_V_CHARGE_POWER "v.c.power" #define MS_V_CHARGE_EFFICIENCY "v.c.efficiency" #define MS_V_CHARGE_CLIMIT "v.c.climit" #define MS_V_CHARGE_TIME "v.c.time" #define MS_V_CHARGE_KWH "v.c.kwh" #define MS_V_CHARGE_KWH_GRID "v.c.kwh.grid" #define MS_V_CHARGE_KWH_GRID_TOTAL "v.c.kwh.grid.total" #define MS_V_CHARGE_MODE "v.c.mode" #define MS_V_CHARGE_TIMERMODE "v.c.timermode" #define MS_V_CHARGE_TIMERSTART "v.c.timerstart" #define MS_V_CHARGE_STATE "v.c.state" #define MS_V_CHARGE_SUBSTATE "v.c.substate" #define MS_V_CHARGE_TYPE "v.c.type" #define MS_V_CHARGE_PILOT "v.c.pilot" #define MS_V_CHARGE_INPROGRESS "v.c.charging" #define MS_V_CHARGE_LIMIT_RANGE "v.c.limit.range" #define MS_V_CHARGE_LIMIT_SOC "v.c.limit.soc" #define MS_V_CHARGE_DURATION_FULL "v.c.duration.full" #define MS_V_CHARGE_DURATION_RANGE "v.c.duration.range" #define MS_V_CHARGE_DURATION_SOC "v.c.duration.soc" #define MS_V_CHARGE_TEMP "v.c.temp" #define MS_V_CHARGE_12V_CURRENT "v.c.12v.current" #define MS_V_CHARGE_12V_POWER "v.c.12v.power" #define MS_V_CHARGE_12V_TEMP "v.c.12v.temp" #define MS_V_CHARGE_12V_VOLTAGE "v.c.12v.voltage" #define MS_V_GEN_VOLTAGE "v.g.voltage" #define MS_V_GEN_CURRENT "v.g.current" #define MS_V_GEN_POWER "v.g.power" #define MS_V_GEN_EFFICIENCY "v.g.efficiency" #define MS_V_GEN_CLIMIT "v.g.climit" #define MS_V_GEN_TIME "v.g.time" #define MS_V_GEN_KWH "v.g.kwh" #define MS_V_GEN_KWH_GRID "v.g.kwh.grid" #define MS_V_GEN_KWH_GRID_TOTAL "v.g.kwh.grid.total" #define MS_V_GEN_MODE "v.g.mode" #define MS_V_GEN_TIMERMODE "v.g.timermode" #define MS_V_GEN_TIMERSTART "v.g.timerstart" #define MS_V_GEN_STATE "v.g.state" #define MS_V_GEN_SUBSTATE "v.g.substate" #define MS_V_GEN_TYPE "v.g.type" #define MS_V_GEN_PILOT "v.g.pilot" #define MS_V_GEN_INPROGRESS "v.g.generating" #define MS_V_GEN_LIMIT_RANGE "v.g.limit.range" #define MS_V_GEN_LIMIT_SOC "v.g.limit.soc" #define MS_V_GEN_DURATION_EMPTY "v.g.duration.empty" #define MS_V_GEN_DURATION_RANGE "v.g.duration.range" #define MS_V_GEN_DURATION_SOC "v.g.duration.soc" #define MS_V_GEN_TEMP "v.g.temp" #define MS_V_INV_TEMP "v.i.temp" #define MS_V_INV_POWER "v.i.power" #define MS_V_INV_EFFICIENCY "v.i.efficiency" #define MS_V_MOT_RPM "v.m.rpm" #define MS_V_MOT_TEMP "v.m.temp" #define MS_V_DOOR_FL "v.d.fl" #define MS_V_DOOR_FR "v.d.fr" #define MS_V_DOOR_RL "v.d.rl" #define MS_V_DOOR_RR "v.d.rr" #define MS_V_DOOR_CHARGEPORT "v.d.cp" #define MS_V_DOOR_HOOD "v.d.hood" #define MS_V_DOOR_TRUNK "v.d.trunk" #define MS_V_ENV_DRIVEMODE "v.e.drivemode" #define MS_V_ENV_GEAR "v.e.gear" #define MS_V_ENV_THROTTLE "v.e.throttle" #define MS_V_ENV_FOOTBRAKE "v.e.footbrake" #define MS_V_ENV_HANDBRAKE "v.e.handbrake" #define MS_V_ENV_REGENBRAKE "v.e.regenbrake" #define MS_V_ENV_AWAKE "v.e.awake" #define MS_V_ENV_CHARGING12V "v.e.charging12v" #define MS_V_ENV_AUX12V "v.e.aux12v" #define MS_V_ENV_COOLING "v.e.cooling" #define MS_V_ENV_HEATING "v.e.heating" #define MS_V_ENV_HVAC "v.e.hvac" #define MS_V_ENV_ON "v.e.on" #define MS_V_ENV_LOCKED "v.e.locked" #define MS_V_ENV_VALET "v.e.valet" #define MS_V_ENV_HEADLIGHTS "v.e.headlights" #define MS_V_ENV_ALARM "v.e.alarm" #define MS_V_ENV_PARKTIME "v.e.parktime" #define MS_V_ENV_DRIVETIME "v.e.drivetime" #define MS_V_ENV_CTRL_LOGIN "v.e.c.login" #define MS_V_ENV_CTRL_CONFIG "v.e.c.config" #define MS_V_ENV_TEMP "v.e.temp" #define MS_V_ENV_CABINTEMP "v.e.cabintemp" #define MS_V_ENV_CABINFAN "v.e.cabinfan" #define MS_V_ENV_CABINSETPOINT "v.e.cabinsetpoint" #define MS_V_ENV_CABININTAKE "v.e.cabinintake" #define MS_V_ENV_CABINVENT "v.e.cabinvent" #define MS_V_ENV_SERV_RANGE "v.e.serv.range" #define MS_V_ENV_SERV_TIME "v.e.serv.time" #define MS_V_POS_GPSLOCK "v.p.gpslock" #define MS_V_POS_GPSSTALE "v.p.gpsstale" #define MS_V_POS_GPSMODE "v.p.gpsmode" #define MS_V_POS_GPSHDOP "v.p.gpshdop" #define MS_V_POS_SATCOUNT "v.p.satcount" #define MS_V_POS_GPSSQ "v.p.gpssq" #define MS_V_POS_GPSTIME "v.p.gpstime" #define MS_V_POS_LATITUDE "v.p.latitude" #define MS_V_POS_LONGITUDE "v.p.longitude" #define MS_V_POS_LOCATION "v.p.location" #define MS_V_POS_DIRECTION "v.p.direction" #define MS_V_POS_ALTITUDE "v.p.altitude" #define MS_V_POS_SPEED "v.p.speed" #define MS_V_POS_ACCELERATION "v.p.acceleration" #define MS_V_POS_GPSSPEED "v.p.gpsspeed" #define MS_V_POS_ODOMETER "v.p.odometer" #define MS_V_POS_TRIP "v.p.trip" #define MS_V_TPMS_FL_T "v.tp.fl.t" #define MS_V_TPMS_FR_T "v.tp.fr.t" #define MS_V_TPMS_RR_T "v.tp.rr.t" #define MS_V_TPMS_RL_T "v.tp.rl.t" #define MS_V_TPMS_FL_P "v.tp.fl.p" #define MS_V_TPMS_FR_P "v.tp.fr.p" #define MS_V_TPMS_RR_P "v.tp.rr.p" #define MS_V_TPMS_RL_P "v.tp.rl.p" #define MS_V_TPMS_PRESSURE "v.t.pressure" #define MS_V_TPMS_TEMP "v.t.temp" #define MS_V_TPMS_HEALTH "v.t.health" #define MS_V_TPMS_ALERT "v.t.alert" // Standard wheel index numbers: #define MS_V_TPMS_IDX_FL 0 #define MS_V_TPMS_IDX_FR 1 #define MS_V_TPMS_IDX_RL 2 #define MS_V_TPMS_IDX_RR 3 class MetricsStandard { public: MetricsStandard(); virtual ~MetricsStandard(); public: // // OVMS module metrics // OvmsMetricString* ms_m_version; OvmsMetricString* ms_m_hardware; OvmsMetricString* ms_m_serial; OvmsMetricInt* ms_m_tasks; OvmsMetricInt* ms_m_freeram; OvmsMetricInt* ms_m_monotonic; OvmsMetricInt* ms_m_timeutc; OvmsMetricString* ms_m_net_type; // none, wifi, modem OvmsMetricInt* ms_m_net_sq; // Network signal quality [dbm] OvmsMetricString* ms_m_net_provider; // Network provider name OvmsMetricString* ms_m_net_wifi_network; // Wifi network SSID OvmsMetricFloat* ms_m_net_wifi_sq; // Wifi network signal quality [dbm] OvmsMetricString* ms_m_net_mdm_netreg; // Modem network registration state OvmsMetricString* ms_m_net_mdm_network; // Modem network operator OvmsMetricFloat* ms_m_net_mdm_sq; // Modem network signal quality [dbm] OvmsMetricString* ms_m_net_mdm_iccid; // ICCID of SIM card in modem OvmsMetricString* ms_m_net_mdm_model; // Model of modem discovered OvmsMetricString* ms_m_net_mdm_mode; // Cellular connection mode and status #ifdef CONFIG_OVMS_COMP_MAX7317 OvmsMetricBitset<10,0>* ms_m_egpio_input; // EGPIO (MAX7317) input port state (ports 0…9) OvmsMetricBitset<10,0>* ms_m_egpio_output; // EGPIO (MAX7317) output port state OvmsMetricBitset<10,0>* ms_m_egpio_monitor; // EGPIO (MAX7317) input monitoring state #endif //CONFIG_OVMS_COMP_MAX7317 OvmsMetricBool* ms_s_v2_connected; // True = V2 server connected [1] OvmsMetricInt* ms_s_v2_peers; // V2 clients connected [1] OvmsMetricBool* ms_s_v3_connected; // True = V3 server connected [1] OvmsMetricInt* ms_s_v3_peers; // V3 clients connected [1] OvmsMetricString* ms_v_type; // Vehicle type code OvmsMetricString* ms_v_vin; // Vehicle identification number // // Battery pack & cell metrics // OvmsMetricFloat* ms_v_bat_soc; // State of charge [%] OvmsMetricFloat* ms_v_bat_soh; // State of health [%] OvmsMetricFloat* ms_v_bat_cac; // Calculated capacity [Ah] OvmsMetricString* ms_v_bat_health; // General textual description of battery health OvmsMetricFloat* ms_v_bat_voltage; // Main battery momentary voltage [V] OvmsMetricFloat* ms_v_bat_current; // Main battery momentary current [A] (output=positive) OvmsMetricFloat* ms_v_bat_coulomb_used; // Main battery coulomb used on trip [Ah] OvmsMetricFloat* ms_v_bat_coulomb_used_total; // Main battery coulomb used total (life time) [Ah] OvmsMetricFloat* ms_v_bat_coulomb_recd; // Main battery coulomb recovered on trip [Ah] OvmsMetricFloat* ms_v_bat_coulomb_recd_total; // Main battery coulomb recovered total (life time) [Ah] OvmsMetricFloat* ms_v_bat_power; // Main battery momentary power [kW] (output=positive) OvmsMetricFloat* ms_v_bat_consumption; // Main battery momentary consumption [Wh/km] OvmsMetricFloat* ms_v_bat_energy_used; // Main battery energy used on trip [kWh] OvmsMetricFloat* ms_v_bat_energy_used_total; // Main battery energy used total (life time) [kWh] OvmsMetricFloat* ms_v_bat_energy_recd; // Main battery energy recovered on trip [kWh] OvmsMetricFloat* ms_v_bat_energy_recd_total; // Main battery energy recovered total (life time) [kWh] OvmsMetricFloat* ms_v_bat_range_full; // Ideal range at 100% SOC & current conditions [km] OvmsMetricFloat* ms_v_bat_range_ideal; // Ideal range [km] OvmsMetricFloat* ms_v_bat_range_est; // Estimated range [km] OvmsMetricFloat* ms_v_bat_range_speed; // Momentary ideal range gain/loss speed [kph] (gain=positive) OvmsMetricFloat* ms_v_bat_temp; // Battery temperature [°C] OvmsMetricFloat* ms_v_bat_12v_voltage; // Auxiliary 12V battery momentary voltage [V] OvmsMetricFloat* ms_v_bat_12v_current; // Auxiliary 12V battery momentary current [A] OvmsMetricFloat* ms_v_bat_12v_voltage_ref; // Auxiliary 12V battery reference voltage [V] OvmsMetricBool* ms_v_bat_12v_voltage_alert; // True = auxiliary battery under voltage alert OvmsMetricFloat* ms_v_bat_pack_level_min; // Cell level - weakest cell in pack [%] OvmsMetricFloat* ms_v_bat_pack_level_max; // Cell level - strongest cell in pack [%] OvmsMetricFloat* ms_v_bat_pack_level_avg; // Cell level - pack average [%] OvmsMetricFloat* ms_v_bat_pack_level_stddev; // Cell level - pack standard deviation [%] // Note: "level" = voltage levels normalized to percent OvmsMetricFloat* ms_v_bat_pack_vmin; // Cell voltage - weakest cell in pack [V] OvmsMetricFloat* ms_v_bat_pack_vmax; // Cell voltage - strongest cell in pack [V] OvmsMetricFloat* ms_v_bat_pack_vavg; // Cell voltage - pack average [V] OvmsMetricFloat* ms_v_bat_pack_vstddev; // Cell voltage - current standard deviation [V] OvmsMetricFloat* ms_v_bat_pack_vstddev_max; // Cell voltage - maximum standard deviation observed [V] OvmsMetricFloat* ms_v_bat_pack_vgrad; // Cell voltage - gradient of current series [V] OvmsMetricFloat* ms_v_bat_pack_tmin; // Cell temperature - coldest cell in pack [°C] OvmsMetricFloat* ms_v_bat_pack_tmax; // Cell temperature - warmest cell in pack [°C] OvmsMetricFloat* ms_v_bat_pack_tavg; // Cell temperature - pack average [°C] OvmsMetricFloat* ms_v_bat_pack_tstddev; // Cell temperature - current standard deviation [°C] OvmsMetricFloat* ms_v_bat_pack_tstddev_max; // Cell temperature - maximum standard deviation observed [°C] OvmsMetricVector* ms_v_bat_cell_voltage; // Cell voltages [V] OvmsMetricVector* ms_v_bat_cell_vmin; // Cell minimum voltages [V] OvmsMetricVector* ms_v_bat_cell_vmax; // Cell maximum voltages [V] OvmsMetricVector* ms_v_bat_cell_vdevmax; // Cell maximum voltage deviation observed [V] OvmsMetricVector* ms_v_bat_cell_valert; // Cell voltage deviation alert level [0=normal, 1=warning, 2=alert] OvmsMetricVector* ms_v_bat_cell_temp; // Cell temperatures [°C] OvmsMetricVector* ms_v_bat_cell_tmin; // Cell minimum temperatures [°C] OvmsMetricVector* ms_v_bat_cell_tmax; // Cell maximum temperatures [°C] OvmsMetricVector* ms_v_bat_cell_tdevmax; // Cell maximum temperature deviation observed [°C] OvmsMetricVector* ms_v_bat_cell_talert; // Cell temperature deviation alert level [0=normal, 1=warning, 2=alert] // // Charger / charging 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 [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 sum for running charge [kWh] 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] 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; // 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 remaing 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] OvmsMetricFloat* ms_v_charge_12v_current; // Output current of DC/DC-converter [A] OvmsMetricFloat* ms_v_charge_12v_power; // Output power of DC/DC-converter [W] OvmsMetricFloat* ms_v_charge_12v_temp; // Temperature of DC/DC-converter [°C] OvmsMetricFloat* ms_v_charge_12v_voltage; // Output voltage of DC/DC-converter [V] // // Power generator role metrics (V2G / V2H / V2X) // 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] 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] 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] // // Motor inverter/controller metrics // OvmsMetricFloat* ms_v_inv_temp; // Inverter temperature [°C] OvmsMetricFloat* ms_v_inv_power; // Momentary inverter motor power [kW] (output=positive) OvmsMetricFloat* ms_v_inv_efficiency; // Momentary inverter efficiency [%] // // Motor metrics // OvmsMetricInt* ms_v_mot_rpm; // Motor speed (RPM) OvmsMetricFloat* ms_v_mot_temp; // Motor temperature [°C] // // Doors & ports // OvmsMetricBool* ms_v_door_fl; OvmsMetricBool* ms_v_door_fr; OvmsMetricBool* ms_v_door_rl; OvmsMetricBool* ms_v_door_rr; OvmsMetricBool* ms_v_door_chargeport; OvmsMetricBool* ms_v_door_hood; OvmsMetricBool* ms_v_door_trunk; // // Environmental & general vehicle state metrics // OvmsMetricBool* ms_v_env_aux12v; // 12V auxiliary system is on (base system awake) OvmsMetricBool* ms_v_env_charging12v; // 12V battery is charging OvmsMetricBool* ms_v_env_awake; // Vehicle is fully awake (switched on by the user) OvmsMetricBool* ms_v_env_on; // Vehicle is in "ignition" state (drivable) OvmsMetricInt* ms_v_env_drivemode; // Active drive profile number [1] OvmsMetricInt* ms_v_env_gear; // Gear/direction; negative=reverse, 0=neutral [1] OvmsMetricFloat* ms_v_env_throttle; // Drive pedal state [%] OvmsMetricFloat* ms_v_env_footbrake; // Brake pedal state [%] OvmsMetricBool* ms_v_env_handbrake; // Handbrake state OvmsMetricBool* ms_v_env_regenbrake; // Regenerative braking state OvmsMetricBool* ms_v_env_cooling; OvmsMetricBool* ms_v_env_heating; OvmsMetricBool* ms_v_env_hvac; // Climate control system state OvmsMetricBool* ms_v_env_locked; // Vehicle locked OvmsMetricBool* ms_v_env_valet; // Vehicle in valet mode OvmsMetricBool* ms_v_env_headlights; OvmsMetricBool* ms_v_env_alarm; OvmsMetricInt* ms_v_env_parktime; OvmsMetricInt* ms_v_env_drivetime; OvmsMetricBool* ms_v_env_ctrl_login; // Module logged in at ECU/controller OvmsMetricBool* ms_v_env_ctrl_config; // ECU/controller in configuration state OvmsMetricFloat* ms_v_env_temp; // Ambient temperature [°C] OvmsMetricFloat* ms_v_env_cabintemp; // Cabin temperature [°C] OvmsMetricInt* ms_v_env_cabinfan; // Cabin FAN [%] OvmsMetricFloat* ms_v_env_cabinsetpoint; // Cabin setpoint temperature [°C] OvmsMetricString* ms_v_env_cabinintake; // Cabin intake type (fresh, recirc, etc) OvmsMetricString* ms_v_env_cabinvent; // Cabin vent type (comma-separated list of feet, face, screen, etc) OvmsMetricInt* ms_v_env_service_range; // Distance to next scheduled maintenance/service [km] OvmsMetricInt* ms_v_env_service_time; // Time to next scheduled maintenance/service [Seconds] // // Position / location metrics // OvmsMetricBool* ms_v_pos_gpslock; OvmsMetricString* ms_v_pos_gpsmode; // ; N/A/D/E (None/Autonomous/Differential/Estimated) OvmsMetricFloat* ms_v_pos_gpshdop; // Horizontal dilution of precision (smaller=better) OvmsMetricInt* ms_v_pos_satcount; OvmsMetricInt* ms_v_pos_gpssq; // GPS signal quality [%] (<30 unusable, >50 good, >80 excellent) OvmsMetricInt* ms_v_pos_gpstime; // Time (UTC) of GPS coordinates [Seconds] OvmsMetricFloat* ms_v_pos_latitude; OvmsMetricFloat* ms_v_pos_longitude; OvmsMetricString* ms_v_pos_location; // Name of current location if defined OvmsMetricFloat* ms_v_pos_direction; OvmsMetricFloat* ms_v_pos_altitude; OvmsMetricFloat* ms_v_pos_speed; // Vehicle speed [kph] OvmsMetricFloat* ms_v_pos_acceleration; // Vehicle acceleration [m/s²] OvmsMetricFloat* ms_v_pos_gpsspeed; // GPS speed over ground [kph] OvmsMetricFloat* ms_v_pos_odometer; OvmsMetricFloat* ms_v_pos_trip; // // TPMS: tyre monitoring metrics // // Notes: // "Tyre" = whatever device your vehicle uses for movement & steering force transmission. // Standard layout: four wheels FL,FR,RL,RR (see MS_V_TPMS_IDX_* constants) // Override OvmsVehicle::GetTpmsLayout() for custom layouts OvmsMetricVector* ms_v_tpms_pressure; // Tyre pressures [kPa] OvmsMetricVector* ms_v_tpms_temp; // Tyre temperatures [°C] OvmsMetricVector* ms_v_tpms_health; // Tyre health states [%] OvmsMetricVector* ms_v_tpms_alert; // Tyre warning/alert levels [0=normal, 1=warning, 2=alert] }; extern MetricsStandard StandardMetrics; #define StdMetrics StandardMetrics #endif //#ifndef __METRICS_STANDARD_H__