diff --git a/OVMS.V3/components/vehicle_renaultzoe_ph2/src/vehicle_renaultzoe_ph2.cpp b/OVMS.V3/components/vehicle_renaultzoe_ph2/src/vehicle_renaultzoe_ph2.cpp index fa8f574..c786803 100644 --- a/OVMS.V3/components/vehicle_renaultzoe_ph2/src/vehicle_renaultzoe_ph2.cpp +++ b/OVMS.V3/components/vehicle_renaultzoe_ph2/src/vehicle_renaultzoe_ph2.cpp @@ -59,35 +59,34 @@ static const char *TAG = "v-zoe-ph2"; static const OvmsVehicle::poll_pid_t renault_zoe_polls[] = { //***TX-ID, ***RX-ID, ***SID, ***PID, { Polltime (seconds) for Pollstate 0, 1, 2, 3}, ***CAN BUS Interface, ***FRAMETYPE //LBC - { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_DEFAULT, { 60, 60, 60, 60 }, 0, ISOTP_EXTFRAME }, // OBD Extended Diagnostic Session - { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9002, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // SOC + //{ 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_DEFAULT, { 60, 60, 60, 60 }, 0, ISOTP_EXTFRAME }, // OBD Extended Diagnostic Session + { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9002, { 0, 10, 3, 10 }, 0, ISOTP_EXTFRAME }, // SOC { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9003, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // SOH { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIGROUP, 0x9131, { 0, 60, 600, 60 }, 0, ISOTP_EXTFRAME }, // Temp Bat Module 1 { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIGROUP, 0x9021, { 0, 60, 600, 60 }, 0, ISOTP_EXTFRAME }, // Cell Bat Module 1-62 { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIGROUP, 0x9062, { 0, 60, 600, 60 }, 0, ISOTP_EXTFRAME }, // Cell Bat Module 63-96 - { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9005, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Battery Voltage - { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x925D, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Battery Current - { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x91C8, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Battery Available Energy kWh + { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9005, { 0, 10, 3, 5 }, 0, ISOTP_EXTFRAME }, // Battery Voltage + { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x925D, { 0, 10, 3, 5 }, 0, ISOTP_EXTFRAME }, // Battery Current + { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x91C8, { 0, 10, 3, 5 }, 0, ISOTP_EXTFRAME }, // Battery Available Energy kWh { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9243, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Energy charged kWh { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9244, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Energy discharged kWh { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9246, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Energy regenerated kWh //{ 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21D9, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Charging State (1: Slow, 2: Fast, 3: Init Charging) //EVC-HCM-VCM - { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_EXTDIAG, { 60, 60, 60, 60 }, 0, ISOTP_EXTFRAME }, // OBD Extended Diagnostic Session - { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2006, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Odometer - { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21DF, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // 12Battery Current - { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2005, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // 12Battery Voltage - { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21D0, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // DCDC Temperature - { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x20B4, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // DCDC Activation - { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21CF, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Inverter Status - { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x303D, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // HV Battery Insulation Resistance + //{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_EXTDIAG, { 60, 60, 60, 60 }, 0, ISOTP_EXTFRAME }, // OBD Extended Diagnostic Session + { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2006, { 180, 10, 10, 300 }, 0, ISOTP_EXTFRAME }, // Odometer + { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21DF, { 0, 10, 5, 3 }, 0, ISOTP_EXTFRAME }, // 12Battery Current + { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2005, { 0, 10, 5, 3 }, 0, ISOTP_EXTFRAME }, // 12Battery Voltage + { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21D0, { 0, 10, 10, 3 }, 0, ISOTP_EXTFRAME }, // DCDC Temperature + { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21CF, { 0, 10, 10, 300 }, 0, ISOTP_EXTFRAME }, // Inverter Status + { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x303D, { 0, 10, 10, 3 }, 0, ISOTP_EXTFRAME }, // HV Battery Insulation Resistance { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0xF446, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Ambient Temperature //Motor Inverter - { 0x18dadff1, 0x18daf1df, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_EXTDIAG, { 60, 60, 60, 60 }, 0, ISOTP_EXTFRAME }, // OBD Extended Diagnostic Session - { 0x18dadff1, 0x18daf1df, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x700F, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Stator Temperature 1 - { 0x18dadff1, 0x18daf1df, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x7010, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Stator Temperature 2 + //{ 0x18dadff1, 0x18daf1df, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_EXTDIAG, { 60, 60, 60, 60 }, 0, ISOTP_EXTFRAME }, // OBD Extended Diagnostic Session + { 0x18dadff1, 0x18daf1df, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x700F, { 0, 10, 3, 10 }, 0, ISOTP_EXTFRAME }, // Stator Temperature 1 + { 0x18dadff1, 0x18daf1df, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x7010, { 0, 10, 3, 10 }, 0, ISOTP_EXTFRAME }, // Stator Temperature 2 //Navigation-UCC-ITM { 0x747, 0x767, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_DEFAULT, { 60, 60, 60, 60 }, 0, ISOTP_STD }, // OBD Extended Diagnostic Session @@ -129,12 +128,12 @@ OvmsVehicleRenaultZoePh2::OvmsVehicleRenaultZoePh2() { // init metrics: mt_pos_odometer_start = MyMetrics.InitFloat("zph2.v.pos.odometer.start", SM_STALE_MID, 0, Kilometers); - mt_bus_awake = MyMetrics.InitBool("zph2.v.bus.awake", SM_STALE_MIN, true); + mt_bus_awake = MyMetrics.InitBool("zph2.v.bus.awake", SM_STALE_MIN, false); mt_available_energy = MyMetrics.InitFloat("zph2.v.avail.energy", SM_STALE_MID, 0, kWh); mt_main_power_consumed = MyMetrics.InitFloat("zph2.c.main.power.consumed", SM_STALE_MID, 0, kWh); - mt_inv_status = MyMetrics.InitString("zph2.m.inverter.status", SM_STALE_MID, 0, Percentage); - mt_mot_temp_stator1 = MyMetrics.InitFloat("zph2.m.temp.stator1", SM_STALE_MID, 0, Celcius); - mt_mot_temp_stator2 = MyMetrics.InitFloat("zph2.m.temp.stator2", SM_STALE_MID, 0, Celcius); + mt_inv_status = MyMetrics.InitString("zph2.m.inverter.status", SM_STALE_MID, 0, Percentage); + mt_mot_temp_stator1 = MyMetrics.InitFloat("zph2.m.temp.stator1", SM_STALE_MID, 0, Celcius); + mt_mot_temp_stator2 = MyMetrics.InitFloat("zph2.m.temp.stator2", SM_STALE_MID, 0, Celcius); // init commands: cmd_zoe = MyCommandApp.RegisterCommand("zoe-ph2", "Renault Zoe Ph2"); @@ -167,17 +166,13 @@ void OvmsVehicleRenaultZoePh2::IncomingFrameCan1(CAN_frame_t* p_frame) { uint8_t *data = p_frame->data.u8; ESP_LOGI(TAG, "PID:%x DATA: %02x %02x %02x %02x %02x %02x %02x %02x", p_frame->MsgID, data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]); - /* - if (m_candata_poll != 1 && m_ready) { - ESP_LOGI(TAG,"Car has woken (CAN bus activity)"); - mt_bus_awake->SetValue(true); - //StandardMetrics.ms_v_env_awake->SetValue(true); - m_candata_poll = 1; - if (m_enable_write) POLLSTATE_ON; + if (data[0] == 0x83 && data[1] == 0xc0 && mt_bus_awake->AsBool(true)) { + ESP_LOGI(TAG,"Zoe has gone to sleep (CAN Gateway NAK response)"); + mt_bus_awake->SetValue(false); + StandardMetrics.ms_v_env_awake->SetValue(false); + car_on(false); + POLLSTATE_OFF; } - - m_candata_timer = RZ_CANDATA_TIMEOUT; - */ } /** @@ -255,6 +250,14 @@ void OvmsVehicleRenaultZoePh2::IncomingEVC(uint16_t type, uint16_t pid, const ch case 0x2006: { // Odometer (Total Vehicle Distance) StandardMetrics.ms_v_pos_odometer->SetValue((float) CAN_UINT24(0), Kilometers); ESP_LOGD(TAG, "2006 EVC ms_v_pos_odometer: %d", CAN_UINT24(0)); + + if (mt_bus_awake->AsBool(false)) { + ESP_LOGI(TAG,"Zoe woke up (Successful poll on odometer)"); + mt_bus_awake->SetValue(true); + StandardMetrics.ms_v_env_awake->SetValue(true); + car_on(true); + POLLSTATE_ON; + } break; } case 0x29FD: { @@ -273,11 +276,6 @@ void OvmsVehicleRenaultZoePh2::IncomingEVC(uint16_t type, uint16_t pid, const ch ESP_LOGD(TAG, "21D0 EVC ms_v_charge_12v_temp: %d", CAN_UINT(0) - 40); break; } - case 0x20B4: { - StandardMetrics.ms_v_env_charging12v->SetValue((bool) (CAN_BYTE(0))); - ESP_LOGD(TAG, "20B4 EVC ms_v_env_charging12v: %d", CAN_UINT(0)); - break; - } case 0x21CF: { ESP_LOGD(TAG, "21CF EVC mt_inv_status: %d", CAN_UINT(0)); if (CAN_UINT(0) == 1) { @@ -472,7 +470,7 @@ void OvmsVehicleRenaultZoePh2::car_on(bool isOn) { StandardMetrics.ms_v_env_awake->SetValue(isOn); // Handle 12Vcharging StandardMetrics.ms_v_env_charging12v->SetValue(true); - if (m_enable_write) POLLSTATE_RUNNING; + POLLSTATE_RUNNING; // Reset trip values if (!m_reset_trip) { StandardMetrics.ms_v_bat_energy_recd->SetValue(0); @@ -486,9 +484,9 @@ void OvmsVehicleRenaultZoePh2::car_on(bool isOn) { ESP_LOGI(TAG,"CAR IS OFF"); if (!StandardMetrics.ms_v_charge_inprogress->AsBool()) { StandardMetrics.ms_v_env_charging12v->SetValue(false); - if (m_enable_write) POLLSTATE_ON; + POLLSTATE_ON; } else { - if (m_enable_write) POLLSTATE_CHARGING; + POLLSTATE_CHARGING; } StandardMetrics.ms_v_env_on->SetValue( isOn ); StandardMetrics.ms_v_env_awake->SetValue( isOn ); @@ -497,20 +495,8 @@ void OvmsVehicleRenaultZoePh2::car_on(bool isOn) { NotifyTrip(); } } - void OvmsVehicleRenaultZoePh2::Ticker1(uint32_t ticker) { - if (m_candata_timer > 0) { - if (--m_candata_timer == 0) { - // Car has gone to sleep - ESP_LOGI(TAG,"Car has gone to sleep (CAN bus timeout)"); - mt_bus_awake->SetValue(false); - //StandardMetrics.ms_v_env_awake->SetValue(false); - StandardMetrics.ms_v_bat_12v_current->SetValue(0); - m_candata_poll = 0; - POLLSTATE_OFF; - } - } - + HandleEnergy(); // Handle Tripcounter @@ -627,9 +613,7 @@ void OvmsVehicleRenaultZoePh2::ConfigChanged(OvmsConfigParam* param) { if (param && param->GetName() != "zph2") return; - ESP_LOGI(TAG, "Renault Zoe/Kangoo reload configuration"); - - m_enable_write = MyConfig.GetParamValueBool("zph2", "canwrite", false); + ESP_LOGI(TAG, "Renault Zoe Ph2 reload configuration"); m_range_ideal = MyConfig.GetParamValueInt("zph2", "rangeideal", 160); m_battery_capacity = MyConfig.GetParamValueInt("zph2", "battcapacity", 27000); m_enable_egpio = MyConfig.GetParamValueBool("zph2", "enable_egpio", false); diff --git a/OVMS.V3/components/vehicle_renaultzoe_ph2/src/vehicle_renaultzoe_ph2.h b/OVMS.V3/components/vehicle_renaultzoe_ph2/src/vehicle_renaultzoe_ph2.h index 74c51dc..f4b2d1c 100644 --- a/OVMS.V3/components/vehicle_renaultzoe_ph2/src/vehicle_renaultzoe_ph2.h +++ b/OVMS.V3/components/vehicle_renaultzoe_ph2/src/vehicle_renaultzoe_ph2.h @@ -115,7 +115,6 @@ class OvmsVehicleRenaultZoePh2 : public OvmsVehicle { virtual vehicle_command_t CommandStat(int verbosity, OvmsWriter* writer); protected: - bool m_enable_write; // canwrite char zoe_vin[8] = ""; // last 7 digits of full VIN int m_range_ideal; // … Range Ideal (default 160 km) int m_battery_capacity; // Battery Capacity (default 27000) @@ -123,10 +122,6 @@ class OvmsVehicleRenaultZoePh2 : public OvmsVehicle { bool m_reset_trip; // Reset trip when charging else when env on int m_vehicle_type; // Vehicle type (Zoe, Kangoo...) int m_reboot_ticker; - - private: - unsigned int m_candata_timer; - unsigned int m_candata_poll; protected: string zoe_obd_rxbuf;