Compare commits
2 commits
798acb1839
...
259d13b3f1
Author | SHA1 | Date | |
---|---|---|---|
|
259d13b3f1 | ||
|
15e8d58744 |
|
@ -254,11 +254,11 @@ void OvmsVehicleRenaultZoePh2OBD::IncomingEVC(uint16_t type, uint16_t pid, const
|
|||
//ESP_LOGD(TAG, "2B8A EVC ms_v_charge_voltage: %f", (CAN_UINT(0) * 0.5));
|
||||
break;
|
||||
}
|
||||
case 0x21CD: { // User SOC
|
||||
/*case 0x21CD: { // User SOC
|
||||
mt_bat_user_soc->SetValue((float) (CAN_UINT(0)), Percentage);
|
||||
//ESP_LOGD(TAG, "21CD EVC mt_bat_user_soc: %f", (float) CAN_UINT(0));
|
||||
break;
|
||||
}
|
||||
}*/
|
||||
|
||||
default: {
|
||||
char *buf = NULL;
|
||||
|
|
|
@ -45,7 +45,7 @@ void OvmsVehicleRenaultZoePh2OBD::IncomingLBC(uint16_t type, uint16_t pid, const
|
|||
break;
|
||||
}
|
||||
case 0x9002: { //Battery SOC
|
||||
mt_bat_lbc_soc->SetValue((float) (CAN_UINT(0)) * 0.01, Percentage);
|
||||
StandardMetrics.ms_v_bat_soc->SetValue((float) (CAN_UINT(0)) * 0.01, Percentage);
|
||||
StandardMetrics.ms_v_bat_cac->SetValue(Bat_cell_capacity * CAN_UINT(0) * 0.0001);
|
||||
//ESP_LOGD(TAG, "9002 LBC mt_bat_lbc_soc: %f", CAN_UINT(0) * 0.01);
|
||||
break;
|
||||
|
|
|
@ -59,7 +59,7 @@ static const OvmsVehicle::poll_pid_t renault_zoe_polls[] = {
|
|||
{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x300D, { 0, 10, 300, 3 }, 0, ISOTP_EXTFRAME }, // AC mains current
|
||||
{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x300B, { 0, 2, 300, 10 }, 0, ISOTP_EXTFRAME }, // AC phases
|
||||
{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2B8A, { 0, 2, 300, 10 }, 0, ISOTP_EXTFRAME }, // AC mains voltage
|
||||
{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21CD, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // User SOC
|
||||
//{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21CD, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // User SOC
|
||||
|
||||
//BCM
|
||||
//{ 0x745, 0x765, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_DEFAULT, { 0, 60, 60, 60 }, 0, ISOTP_STD }, // OBD Extended Diagnostic Session
|
||||
|
|
|
@ -46,14 +46,12 @@ using namespace std;
|
|||
void OvmsVehicleRenaultZoePh2OBD::WebCfgCommon(PageEntry_t& p, PageContext_t& c)
|
||||
{
|
||||
std::string error, rangeideal, battcapacity;
|
||||
bool UseBMScalculation, UseBMSsoc;
|
||||
bool UseBMScalculation;
|
||||
|
||||
if (c.method == "POST") {
|
||||
rangeideal = c.getvar("rangeideal");
|
||||
battcapacity = c.getvar("battcapacity");
|
||||
//UseCarTrip = (c.getvar("UseCarTrip") == "no");
|
||||
UseBMScalculation = (c.getvar("UseBMScalculation") == "no");
|
||||
UseBMSsoc = (c.getvar("UseBMSsoc") == "no");
|
||||
|
||||
if (!rangeideal.empty()) {
|
||||
int v = atoi(rangeideal.c_str());
|
||||
|
@ -64,9 +62,7 @@ void OvmsVehicleRenaultZoePh2OBD::WebCfgCommon(PageEntry_t& p, PageContext_t& c)
|
|||
// store:
|
||||
MyConfig.SetParamValue("xrz2o", "rangeideal", rangeideal);
|
||||
MyConfig.SetParamValue("xrz2o", "battcapacity", battcapacity);
|
||||
//MyConfig.SetParamValueBool("xrz2o", "UseCarTrip", UseCarTrip);
|
||||
MyConfig.SetParamValueBool("xrz2o", "UseBMScalculation", UseBMScalculation);
|
||||
MyConfig.SetParamValueBool("xrz2o", "UseBMSsoc", UseBMSsoc);
|
||||
|
||||
c.head(200);
|
||||
c.alert("success", "<p class=\"lead\">Renault Zoe Ph2 battery setup saved.</p>");
|
||||
|
@ -83,9 +79,7 @@ void OvmsVehicleRenaultZoePh2OBD::WebCfgCommon(PageEntry_t& p, PageContext_t& c)
|
|||
// read configuration:
|
||||
rangeideal = MyConfig.GetParamValue("xrz2o", "rangeideal", "350");
|
||||
battcapacity = MyConfig.GetParamValue("xrz2o", "battcapacity", "52000");
|
||||
//UseCarTrip = MyConfig.GetParamValueBool("xrz2o", "UseCarTrip", false);
|
||||
UseBMScalculation = MyConfig.GetParamValueBool("xrz2o", "UseBMScalculation", false);
|
||||
UseBMSsoc = MyConfig.GetParamValueBool("xrz2o", "UseBMSsoc", false);
|
||||
c.head(200);
|
||||
}
|
||||
|
||||
|
@ -102,15 +96,7 @@ void OvmsVehicleRenaultZoePh2OBD::WebCfgCommon(PageEntry_t& p, PageContext_t& c)
|
|||
|
||||
c.input_slider("Range Ideal", "rangeideal", 3, "km", -1, atoi(rangeideal.c_str()), 350, 80, 500, 1,
|
||||
"<p>Default 350km. Ideal Range...</p>");
|
||||
/*
|
||||
c.fieldset_start("Trip counter settings");
|
||||
c.input_radio_start("Which tripcounter to use?", "UseCarTrip");
|
||||
c.input_radio_option("UseCarTrip", "Internal (New trip everytime car starts)", "yes", UseCarTrip == false);
|
||||
c.input_radio_option("UseCarTrip", "Car trip counter from Cluster", "no", UseCarTrip == true);
|
||||
c.input_radio_end("");
|
||||
|
||||
c.fieldset_end();
|
||||
*/
|
||||
|
||||
c.fieldset_start("Battery energy calculation");
|
||||
|
||||
c.input_radio_start("Which energy calculation?", "UseBMScalculation");
|
||||
|
@ -118,11 +104,6 @@ void OvmsVehicleRenaultZoePh2OBD::WebCfgCommon(PageEntry_t& p, PageContext_t& c)
|
|||
c.input_radio_option("UseBMScalculation", "BMS-based calculation", "no", UseBMScalculation == true);
|
||||
c.input_radio_end("");
|
||||
|
||||
c.input_radio_start("State of Charge - Display", "UseBMSsoc");
|
||||
c.input_radio_option("UseBMSsoc", "User SOC from EVC", "yes", UseBMSsoc == false);
|
||||
c.input_radio_option("UseBMSsoc", "Real SOC from BMS", "no", UseBMSsoc == true);
|
||||
c.input_radio_end("");
|
||||
|
||||
c.fieldset_end();
|
||||
|
||||
c.print("<hr>");
|
||||
|
|
|
@ -69,7 +69,6 @@ OvmsVehicleRenaultZoePh2OBD::OvmsVehicleRenaultZoePh2OBD() {
|
|||
// Renault ZOE specific metrics
|
||||
mt_bus_awake = MyMetrics.InitBool("zph2.v.bus.awake", SM_STALE_NONE, false);
|
||||
mt_pos_odometer_start = MyMetrics.InitFloat("zph2.v.pos.odometer.start", SM_STALE_MID, 0, Kilometers, true);
|
||||
mt_pos_car_trip = MyMetrics.InitFloat("zph2.v.pos.car.trip", SM_STALE_NONE, 0, Kilometers, true);
|
||||
mt_bat_used_start = MyMetrics.InitFloat("zph2.b.used.start", SM_STALE_MID, 0, kWh, true);
|
||||
mt_bat_recd_start = MyMetrics.InitFloat("zph2.b.recd.start", SM_STALE_MID, 0, kWh, true);
|
||||
mt_bat_chg_start = MyMetrics.InitFloat("zph2.b.chg.start", SM_STALE_MID, 0, kWh, true);
|
||||
|
@ -90,8 +89,6 @@ OvmsVehicleRenaultZoePh2OBD::OvmsVehicleRenaultZoePh2OBD() {
|
|||
mt_hvac_compressor_pressure = MyMetrics.InitFloat("zph2.h.compressor.pressure", SM_STALE_MID, 0, Bar);
|
||||
mt_hvac_compressor_power = MyMetrics.InitFloat("zph2.h.compressor.power", SM_STALE_MID, 0, Watts);
|
||||
mt_hvac_compressor_mode = MyMetrics.InitString("zph2.h.compressor.mode", SM_STALE_MID, 0, Other);
|
||||
mt_bat_lbc_soc = MyMetrics.InitFloat("zph2.b.lbc.soc", SM_STALE_MAX, 0, Percentage, true);
|
||||
mt_bat_user_soc = MyMetrics.InitFloat("zph2.b.user.soc", SM_STALE_MAX, 0, Percentage, true);
|
||||
|
||||
// BMS configuration:
|
||||
BmsSetCellArrangementVoltage(96, 1);
|
||||
|
@ -117,9 +114,7 @@ void OvmsVehicleRenaultZoePh2OBD::ConfigChanged(OvmsConfigParam* param) {
|
|||
// get values from config store
|
||||
m_range_ideal = MyConfig.GetParamValueInt("xrz2o", "rangeideal", 350);
|
||||
m_battery_capacity = MyConfig.GetParamValueInt("xrz2o", "battcapacity", 52000);
|
||||
m_UseCarTrip = MyConfig.GetParamValueBool("xrz2o", "UseCarTrip", false);
|
||||
m_UseBMScalculation = MyConfig.GetParamValueBool("xrz2o", "UseBMScalculation", false);
|
||||
m_UseBMSsoc = MyConfig.GetParamValueBool("xrz2o", "UseBMSsoc", false);
|
||||
StandardMetrics.ms_v_bat_range_ideal->SetValue(m_range_ideal, Kilometers);
|
||||
if (m_battery_capacity == 52000) {
|
||||
Bat_cell_capacity = 78.0 * 2 * (StandardMetrics.ms_v_bat_soh->AsFloat() / 100.0);
|
||||
|
@ -130,7 +125,7 @@ void OvmsVehicleRenaultZoePh2OBD::ConfigChanged(OvmsConfigParam* param) {
|
|||
if (m_battery_capacity == 22000) {
|
||||
Bat_cell_capacity = 36.0 * 2 * (StandardMetrics.ms_v_bat_soh->AsFloat() / 100.0);
|
||||
}
|
||||
ESP_LOGI(TAG, "Renault Zoe Ph2 (OBD) reload configuration: Range ideal: %d, Battery capacity: %d, Use Car trip counter: %s, Use BMS as energy counter: %s, Use BMS for SOC: %s", m_range_ideal, m_battery_capacity, m_UseCarTrip ? "Yes" : "No", m_UseBMScalculation ? "yes" : "no", m_UseBMSsoc ? "yes" : "no");
|
||||
ESP_LOGI(TAG, "Renault Zoe Ph2 (OBD) reload configuration: Range ideal: %d, Battery capacity: %d, Use BMS as energy counter: %s", m_range_ideal, m_battery_capacity, m_UseBMScalculation ? "yes" : "no");
|
||||
}
|
||||
|
||||
void OvmsVehicleRenaultZoePh2OBD::ZoeWakeUp() {
|
||||
|
@ -225,7 +220,7 @@ void OvmsVehicleRenaultZoePh2OBD::IncomingPollReply(canbus* bus, uint16_t type,
|
|||
}
|
||||
|
||||
int OvmsVehicleRenaultZoePh2OBD::calcMinutesRemaining(float charge_voltage, float charge_current) {
|
||||
float bat_soc = mt_bat_lbc_soc->AsFloat(100);
|
||||
float bat_soc = StandardMetrics.ms_v_bat_soc->AsFloat(100);
|
||||
|
||||
float remaining_wh = m_battery_capacity - (m_battery_capacity * bat_soc / 100.0);
|
||||
float remaining_hours = remaining_wh / (charge_current * charge_voltage);
|
||||
|
@ -320,7 +315,7 @@ void OvmsVehicleRenaultZoePh2OBD::Ticker10(uint32_t ticker) {
|
|||
}
|
||||
|
||||
void OvmsVehicleRenaultZoePh2OBD::Ticker1(uint32_t ticker) {
|
||||
if (StandardMetrics.ms_v_env_on->AsBool() && !CarIsDriving && !m_UseCarTrip) {
|
||||
if (StandardMetrics.ms_v_env_on->AsBool() && !CarIsDriving) {
|
||||
CarIsDriving = true;
|
||||
//Start trip after power on
|
||||
StandardMetrics.ms_v_pos_trip->SetValue(0);
|
||||
|
@ -364,19 +359,11 @@ void OvmsVehicleRenaultZoePh2OBD::Ticker1(uint32_t ticker) {
|
|||
POLLSTATE_OFF;
|
||||
}
|
||||
|
||||
if (StandardMetrics.ms_v_env_on->AsBool() && !m_UseCarTrip) {
|
||||
if (StandardMetrics.ms_v_env_on->AsBool()) {
|
||||
StandardMetrics.ms_v_pos_trip->SetValue(StandardMetrics.ms_v_pos_odometer->AsFloat(0) - mt_pos_odometer_start->AsFloat(0));
|
||||
}
|
||||
if (m_UseCarTrip) {
|
||||
StandardMetrics.ms_v_pos_trip->SetValue(mt_pos_car_trip->AsFloat());
|
||||
}
|
||||
StandardMetrics.ms_v_bat_range_est->SetValue((m_range_ideal * (StandardMetrics.ms_v_bat_soc->AsFloat(1) * 0.01)), Kilometers);
|
||||
|
||||
if(m_UseBMSsoc) {
|
||||
StandardMetrics.ms_v_bat_soc->SetValue(mt_bat_lbc_soc->AsFloat(0));
|
||||
} else {
|
||||
StandardMetrics.ms_v_bat_soc->SetValue(mt_bat_user_soc->AsFloat(0));
|
||||
}
|
||||
}
|
||||
|
||||
class OvmsVehicleRenaultZoePh2OBDInit {
|
||||
|
|
|
@ -83,7 +83,6 @@ class OvmsVehicleRenaultZoePh2OBD : public OvmsVehicle {
|
|||
int m_battery_capacity;
|
||||
bool m_UseCarTrip = false;
|
||||
bool m_UseBMScalculation = false;
|
||||
bool m_UseBMSsoc = false;
|
||||
char zoe_vin[18] = "";
|
||||
void IncomingINV(uint16_t type, uint16_t pid, const char* data, uint16_t len);
|
||||
void IncomingEVC(uint16_t type, uint16_t pid, const char* data, uint16_t len);
|
||||
|
@ -103,7 +102,6 @@ class OvmsVehicleRenaultZoePh2OBD : public OvmsVehicle {
|
|||
// Renault ZOE specific metrics
|
||||
OvmsMetricBool *mt_bus_awake; //CAN bus awake status
|
||||
OvmsMetricFloat *mt_pos_odometer_start; //ODOmeter at trip start
|
||||
OvmsMetricFloat *mt_pos_car_trip; //Cluster tripcounter
|
||||
OvmsMetricFloat *mt_bat_used_start; //Used battery kWh at trip start
|
||||
OvmsMetricFloat *mt_bat_recd_start; //Recd battery kWh at trip start
|
||||
OvmsMetricFloat *mt_bat_chg_start; //Charge battery kWh at charge start
|
||||
|
@ -112,8 +110,6 @@ class OvmsVehicleRenaultZoePh2OBD : public OvmsVehicle {
|
|||
OvmsMetricFloat *mt_bat_aux_power_ptc; //Power usage by PTCs
|
||||
OvmsMetricFloat *mt_bat_max_charge_power; //Battery max allowed charge, recd power
|
||||
OvmsMetricFloat *mt_bat_cycles; //Battery full charge cycles
|
||||
OvmsMetricFloat *mt_bat_lbc_soc; //Battery real SOC by BMS
|
||||
OvmsMetricFloat *mt_bat_user_soc; //Battery user SOC by Cluster
|
||||
OvmsMetricFloat *mt_main_power_available; //Mains power available
|
||||
OvmsMetricString *mt_main_phases; //Mains phases used
|
||||
OvmsMetricFloat *mt_main_phases_num; //Mains phases used
|
||||
|
|
Loading…
Reference in a new issue