Bugfixes
This commit is contained in:
parent
5734e81f03
commit
0a9eee465c
|
@ -52,24 +52,26 @@ void OvmsVehicleRenaultZoePh2::IncomingEVC(uint16_t type, uint16_t pid, const ch
|
|||
if (CAN_NIBL(0) == 1) {
|
||||
mt_inv_status->SetValue("Inverter off");
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
CarIsDriving = false;
|
||||
if (!CarIsCharging) { POLLSTATE_ON; }
|
||||
} else if (CAN_NIBL(0) == 2) {
|
||||
mt_inv_status->SetValue("Inverter on");
|
||||
StandardMetrics.ms_v_pos_trip->SetValue(0);
|
||||
mt_pos_odometer_start->SetValue(StandardMetrics.ms_v_pos_odometer->AsFloat(0));
|
||||
StandardMetrics.ms_v_env_on->SetValue(true);
|
||||
POLLSTATE_RUNNING;
|
||||
} else if (CAN_NIBL(0) == 3) {
|
||||
mt_inv_status->SetValue("Inverter decharging");
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
CarIsDriving = false;
|
||||
if (!CarIsCharging) { POLLSTATE_ON; }
|
||||
} else if (CAN_NIBL(0) == 4) {
|
||||
mt_inv_status->SetValue("Inverter alternator mode");
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
CarIsDriving = false;
|
||||
if (!CarIsCharging) { POLLSTATE_ON; }
|
||||
} else if (CAN_NIBL(0) == 5) {
|
||||
mt_inv_status->SetValue("Inverter ready to sleep");
|
||||
StandardMetrics.ms_v_env_on->SetValue(false);
|
||||
CarIsDriving = false;
|
||||
if (!CarIsCharging) { POLLSTATE_ON; }
|
||||
} else {
|
||||
mt_inv_status->SetValue("Inverter state unknown");
|
||||
|
|
|
@ -34,7 +34,7 @@ void OvmsVehicleRenaultZoePh2::IncomingLBC(uint16_t type, uint16_t pid, const ch
|
|||
break;
|
||||
}
|
||||
case 0x925D: { //Battery current
|
||||
StandardMetrics.ms_v_bat_current->SetValue((float) ((CAN_UINT(0) * 0.03125 - 1020) * -1.0), Amps);
|
||||
StandardMetrics.ms_v_bat_current->SetValue((float) ((CAN_UINT(0) * 0.03125 - 1020) * -1.0f), Amps);
|
||||
//ESP_LOGD(TAG, "925D LBC ms_v_bat_current: %f", (CAN_UINT(0) * 0.03125 - 1020));
|
||||
StandardMetrics.ms_v_bat_power->SetValue(((CAN_UINT(0) * 0.03125 - 1020) * StandardMetrics.ms_v_bat_voltage->AsFloat()) * 0.001);
|
||||
break;
|
||||
|
|
|
@ -89,13 +89,13 @@ void OvmsVehicleRenaultZoePh2::WebCfgBattery(PageEntry_t& p, PageContext_t& c)
|
|||
c.form_start(p.uri);
|
||||
|
||||
c.fieldset_start("Battery size and Ideal range");
|
||||
/*
|
||||
|
||||
c.input_radio_start("Battery size", "battcapacity");
|
||||
c.input_radio_option("battcapacity", "R240 (22kWh)", "22000", (if (battcapacity = "22000") == true));
|
||||
c.input_radio_option("battcapacity", "ZE40 (41kWh)", "41000", (if (battcapacity = "41000") == true));
|
||||
c.input_radio_option("battcapacity", "ZE50 (52kWh)", "52000", (if (battcapacity = "52000") == true));
|
||||
c.input_radio_option("battcapacity", "R240 (22kWh)", "22000", battcapacity == "22000");
|
||||
c.input_radio_option("battcapacity", "ZE40 (41kWh)", "41000", battcapacity == "41000");
|
||||
c.input_radio_option("battcapacity", "ZE50 (52kWh)", "52000", battcapacity == "52000");
|
||||
c.input_radio_end("");
|
||||
*/
|
||||
|
||||
c.input_slider("Range Ideal", "rangeideal", 3, "km", -1, atoi(rangeideal.c_str()), 350, 80, 500, 1,
|
||||
"<p>Default 350km. Ideal Range...</p>");
|
||||
|
||||
|
|
|
@ -186,7 +186,7 @@ int OvmsVehicleRenaultZoePh2::calcMinutesRemaining(float charge_voltage, float c
|
|||
}
|
||||
|
||||
//Handle Charging values
|
||||
void OvmsVehicleRenaultZoePh2::Ticker10(uint32_t ticker) {
|
||||
void OvmsVehicleRenaultZoePh2::ChargeStatistics() {
|
||||
float charge_current = StandardMetrics.ms_v_bat_current->AsFloat(0, Amps);
|
||||
float charge_voltage = StandardMetrics.ms_v_bat_voltage->AsFloat(0, Volts);
|
||||
float battery_power = StandardMetrics.ms_v_bat_power->AsFloat(0, kW);
|
||||
|
@ -204,9 +204,7 @@ void OvmsVehicleRenaultZoePh2::Ticker10(uint32_t ticker) {
|
|||
}
|
||||
CarLastCharging = CarIsCharging;
|
||||
|
||||
if (!StandardMetrics.ms_v_charge_pilot->AsBool() ||
|
||||
!StandardMetrics.ms_v_charge_inprogress->AsBool() ||
|
||||
(charge_current <= 0.0) ) {
|
||||
if (!StandardMetrics.ms_v_charge_pilot->AsBool() || !StandardMetrics.ms_v_charge_inprogress->AsBool() || (charge_current <= 0.0) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -225,12 +223,44 @@ void OvmsVehicleRenaultZoePh2::Ticker10(uint32_t ticker) {
|
|||
}
|
||||
}
|
||||
|
||||
//Handle trip counter and range
|
||||
void OvmsVehicleRenaultZoePh2::EnergyStatistics() {
|
||||
float voltage = StandardMetrics.ms_v_bat_voltage->AsFloat(0, Volts);
|
||||
float current = StandardMetrics.ms_v_bat_current->AsFloat(0, Amps);
|
||||
|
||||
float power = voltage * current / 1000.0;
|
||||
|
||||
StandardMetrics.ms_v_bat_power->SetValue(power * -1.0f);
|
||||
|
||||
if (power != 0.0 && StandardMetrics.ms_v_env_on->AsBool()) {
|
||||
float energy = power / 3600.0;
|
||||
if (energy < 0.0f)
|
||||
StandardMetrics.ms_v_bat_energy_used->SetValue( StandardMetrics.ms_v_bat_energy_used->AsFloat() - energy);
|
||||
else
|
||||
StandardMetrics.ms_v_bat_energy_recd->SetValue( StandardMetrics.ms_v_bat_energy_recd->AsFloat() + energy);
|
||||
}
|
||||
}
|
||||
|
||||
void OvmsVehicleRenaultZoePh2::Ticker10(uint32_t ticker) {
|
||||
if (StandardMetrics.ms_v_charge_pilot->AsBool() && !StandardMetrics.ms_v_env_on->AsBool()) {
|
||||
ChargeStatistics();
|
||||
} else {
|
||||
EnergyStatistics();
|
||||
}
|
||||
}
|
||||
|
||||
void OvmsVehicleRenaultZoePh2::Ticker1(uint32_t ticker) {
|
||||
if (StandardMetrics.ms_v_env_on->AsBool() && !CarIsDriving) {
|
||||
CarIsDriving = true;
|
||||
//Start trip after power on
|
||||
StandardMetrics.ms_v_pos_trip->SetValue(0);
|
||||
mt_pos_odometer_start->SetValue(StandardMetrics.ms_v_pos_odometer->AsFloat(0));
|
||||
StandardMetrics.ms_v_bat_energy_used->SetValue(0);
|
||||
StandardMetrics.ms_v_bat_energy_recd->SetValue(0);
|
||||
}
|
||||
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));
|
||||
}
|
||||
StandardMetrics.ms_v_bat_range_est->SetValue((m_range_ideal / StandardMetrics.ms_v_bat_soc->AsFloat(1)) * 100.0, Kilometers);
|
||||
StandardMetrics.ms_v_bat_range_est->SetValue((m_range_ideal / (StandardMetrics.ms_v_bat_soc->AsFloat(1) * 100.0)), Kilometers);
|
||||
}
|
||||
|
||||
class OvmsVehicleRenaultZoePh2Init {
|
||||
|
|
|
@ -71,6 +71,7 @@ class OvmsVehicleRenaultZoePh2 : public OvmsVehicle {
|
|||
bool CarIsCharging = false;
|
||||
bool CarPluggedIn = false;
|
||||
bool CarLastCharging = false;
|
||||
bool CarIsDriving = false;
|
||||
|
||||
protected:
|
||||
int m_range_ideal;
|
||||
|
@ -82,7 +83,9 @@ class OvmsVehicleRenaultZoePh2 : public OvmsVehicle {
|
|||
void IncomingHVAC(uint16_t type, uint16_t pid, const char* data, uint16_t len);
|
||||
void IncomingUCM(uint16_t type, uint16_t pid, const char* data, uint16_t len);
|
||||
int calcMinutesRemaining(float charge_voltage, float charge_current);
|
||||
virtual void Ticker10(uint32_t ticker); //Handle charge statistics
|
||||
void ChargeStatistics();
|
||||
void EnergyStatistics();
|
||||
virtual void Ticker10(uint32_t ticker);//Handle charge, energy statistics
|
||||
virtual void Ticker1(uint32_t ticker); //Handle trip counter
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue