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 5dd69fe..f5ccc67 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 @@ -73,22 +73,33 @@ static const OvmsVehicle::poll_pid_t renault_zoe_polls[] = { { 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) + { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9007, { 0, 10, 60, 10 }, 0, ISOTP_EXTFRAME }, // Cell Max Voltage + { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9009, { 0, 10, 60, 10 }, 0, ISOTP_EXTFRAME }, // Cell Min Voltage + { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9014, { 0, 10, 60, 10 }, 0, ISOTP_EXTFRAME }, // Cell Max Temp + { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9013, { 0, 10, 60, 10 }, 0, ISOTP_EXTFRAME }, // Cell Min Min + { 0x18dadbf1, 0x18daf1db, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x9018, { 0, 10, 60, 10 }, 0, ISOTP_EXTFRAME }, // Max Charge Power //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, { 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, 0x29FD, { 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 + { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2A09, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Power usage by consumer + { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2191, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Power usage by ptc //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, 0x700C, { 0, 10, 3, 10 }, 0, ISOTP_EXTFRAME }, // Inverter temperature { 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 + { 0x18dadff1, 0x18daf1df, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2001, { 0, 10, 3, 10 }, 0, ISOTP_EXTFRAME }, // Motor rpm + { 0x18dadff1, 0x18daf1df, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x7090, { 0, 10, 3, 10 }, 0, ISOTP_EXTFRAME }, // Water temperature + { 0x18dadff1, 0x18daf1df, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2004, { 0, 60, 3, 60 }, 0, ISOTP_EXTFRAME }, // Battery voltage sense + { 0x18dadff1, 0x18daf1df, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x7049, { 0, 60, 3, 60 }, 0, ISOTP_EXTFRAME }, // Current voltage sense //Navigation-UCC-ITM { 0x747, 0x767, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_DEFAULT, { 60, 60, 60, 60 }, 0, ISOTP_STD }, // OBD Extended Diagnostic Session @@ -136,7 +147,13 @@ OvmsVehicleRenaultZoePh2::OvmsVehicleRenaultZoePh2() { 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_temp_water = MyMetrics.InitFloat("zph2.m.temp.water", SM_STALE_MID, 0, Celcius); + mt_aux_power_consumer = MyMetrics.InitFloat("zph2.c.aux.power.consumer", SM_STALE_MID, 0, Watts); + mt_aux_power_ptc = MyMetrics.InitFloat("zph2.c.aux.power.ptc", SM_STALE_MID, 0, Watts); + mt_inv_hv_voltage = MyMetrics.InitFloat("zph2.m.inverter.voltage", SM_STALE_MID, 0, Volts); + mt_inv_hv_current = MyMetrics.InitFloat("zph2.m.inverter.current", SM_STALE_MID, 0, Amps); + mt_bat_max_charge_power = MyMetrics.InitFloat("zph2.b.max.charge.power", SM_STALE_MID, 0, kW); + // init commands: cmd_zoe = MyCommandApp.RegisterCommand("zoe-ph2", "Renault Zoe Ph2"); @@ -247,6 +264,28 @@ void OvmsVehicleRenaultZoePh2::IncomingINV(uint16_t type, uint16_t pid, const ch ESP_LOGD(TAG, "7010 INV mt_mot_temp_stator2: %f", float((CAN_UINT(0) - 40))); break; } + case 0x2001: { // Motor rpm + StandardMetrics.ms_v_mot_rpm->SetValue(float(CAN_UINT(0) - 16000)); + ESP_LOGD(TAG, "2001 INV ms_v_mot_rpm: %f", float(CAN_UINT(0) - 16000)); + break; + } + case 0x7090: { // Water temperature + mt_inv_temp_water->SetValue(float(CAN_UINT(0))); + ESP_LOGD(TAG, "7090 INV mt_inv_temp_water: %f", float(CAN_UINT(0))); + break; + } + case 0x2004: { // Battery voltage sense + mt_inv_hv_voltage->SetValue(float(CAN_UINT(0)), Volts); + ESP_LOGD(TAG, "2004 INV mt_inv_hv_voltage: %f", float(CAN_UINT(0))); + StandardMetrics.ms_v_inv_power->SetValue(float (mt_inv_hv_voltage->AsFloat() * mt_inv_hv_current->AsFloat())); + break; + } + case 0x7049: { // Battery current sense + mt_inv_hv_current->SetValue(float(CAN_UINT(0) - 500), Amps); + ESP_LOGD(TAG, "7049 INV mt_inv_hv_current: %f", float(CAN_UINT(0) - 500)); + StandardMetrics.ms_v_inv_power->SetValue(float (mt_inv_hv_current->AsFloat() * mt_inv_hv_voltage->AsFloat())); + break; + } } } /** @@ -268,9 +307,9 @@ void OvmsVehicleRenaultZoePh2::IncomingEVC(uint16_t type, uint16_t pid, const ch break; } case 0x29FD: { - StandardMetrics.ms_v_charge_12v_current->SetValue((float) (CAN_UINT(0) * 0.01 - 327.675), Amps); + StandardMetrics.ms_v_charge_12v_current->SetValue((float) (CAN_UINT(0) - 327.675), Amps); ESP_LOGD(TAG, "29FD EVC ms_v_charge_12v_current: %d", CAN_UINT(0)); - ESP_LOGD(TAG, "29FD EVC ms_v_charge_12v_current: %f", CAN_UINT(0) * 0.01 - 327.675); + ESP_LOGD(TAG, "29FD EVC ms_v_charge_12v_current: %f", CAN_UINT(0) - 327.675); break; } case 0x2005: { @@ -300,15 +339,20 @@ void OvmsVehicleRenaultZoePh2::IncomingEVC(uint16_t type, uint16_t pid, const ch } break; } - case 0x33F6: { - // ,7ec,24,31,1,40,0,°C,33F6,6233F6,ff,Temperature of the inverter given by PEB (CAN ETS) - ESP_LOGD(TAG, "7ec inv temp: %d", CAN_BYTE(0) - 40); - break; - } case 0xF446: { // Ambient temperature StandardMetrics.ms_v_env_temp->SetValue((float) (CAN_UINT(0) - 40) * 0.01, Celcius); ESP_LOGD(TAG, "F446 EVC ms_v_env_temp: %f", (CAN_UINT(0) - 40) * 0.01); break; + } + case 0x2A09: { // Power consumption by consumer + mt_aux_power_consumer->SetValue((float) CAN_UINT(0) * 10, Watts); + ESP_LOGD(TAG, "2A09 EVC mt_aux_power_consumer: %d", CAN_UINT(0) * 10); + break; + } + case 0x2191: { // Power consumption by ptc + mt_aux_power_ptc->SetValue((float) CAN_UINT(0) * 10, Watts); + ESP_LOGD(TAG, "2191 EVC mt_aux_power_ptc: %d", CAN_UINT(0) * 10); + break; } } } @@ -409,6 +453,31 @@ void OvmsVehicleRenaultZoePh2::IncomingLBC(uint16_t type, uint16_t pid, const ch ESP_LOGD(TAG, "9246 LBC ms_v_bat_energy_recd: %f", CAN_UINT32(0) * 0.001); break; } + case 0x9007: { //Cell Max Voltage + StandardMetrics.ms_v_bat_pack_vmax->SetValue((float) (CAN_UINT(0) * 0.001), Volts); + ESP_LOGD(TAG, "9007 LBC ms_v_bat_pack_vmax: %f", CAN_UINT(0) * 0.001); + break; + } + case 0x9009: { //Cell Min Voltage + StandardMetrics.ms_v_bat_pack_vmin->SetValue((float) (CAN_UINT(0) * 0.001), Volts); + ESP_LOGD(TAG, "9009 LBC ms_v_bat_pack_vmin: %f", CAN_UINT(0) * 0.001); + break; + } + case 0x9014: { //Cell Max Temp + StandardMetrics.ms_v_bat_pack_tmax->SetValue((float) (CAN_UINT(0) - 40), Celcius); + ESP_LOGD(TAG, "9014 LBC ms_v_bat_pack_tmax: %d", CAN_UINT(0) - 40); + break; + } + case 0x9013: { //Cell Min Temp + StandardMetrics.ms_v_bat_pack_tmin->SetValue((float) (CAN_UINT(0) - 40), Celcius); + ESP_LOGD(TAG, "9013 LBC ms_v_bat_pack_tmin: %d", CAN_UINT(0) - 40); + break; + } + case 0x9018: { //Max charge power + mt_bat_max_charge_power->SetValue((float) (CAN_UINT(0) * 0.01), kW); + ESP_LOGD(TAG, "9018 LBC mt_bat_max_charge_power: %f", CAN_UINT(0) * 0.01); + break; + } case 0x04: { for(int i=2; i<36; i+=3){ BmsSetCellTemperature( (i-2)/3, (INT)CAN_BYTE(i)-40 ); 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 f4b2d1c..747a2b3 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 @@ -95,13 +95,19 @@ class OvmsVehicleRenaultZoePh2 : public OvmsVehicle { OvmsCommand *cmd_zoe; // Renault ZOE specific metrics - OvmsMetricFloat *mt_pos_odometer_start; // ODOmeter at Start - OvmsMetricBool *mt_bus_awake; // can-bus awake status - OvmsMetricFloat *mt_available_energy; // Available Energy - OvmsMetricFloat *mt_main_power_consumed; // Mains active power consumed - OvmsMetricString *mt_inv_status; //Inverter status string + OvmsMetricFloat *mt_pos_odometer_start; // ODOmeter at Start + OvmsMetricBool *mt_bus_awake; // can-bus awake status + OvmsMetricFloat *mt_available_energy; // Available Energy + OvmsMetricFloat *mt_main_power_consumed; // Mains active power consumed + OvmsMetricString *mt_inv_status; //Inverter status string OvmsMetricFloat *mt_mot_temp_stator1; OvmsMetricFloat *mt_mot_temp_stator2; + OvmsMetricFloat *mt_inv_temp_water; + OvmsMetricFloat *mt_aux_power_consumer; //Power usage by consumer + OvmsMetricFloat *mt_aux_power_ptc; //Power usage by PTCs + OvmsMetricFloat *mt_inv_hv_voltage; //Battery voltage sense + OvmsMetricFloat *mt_inv_hv_current; //Battery current sense + OvmsMetricFloat *mt_bat_max_charge_power; //Battery max charge power public: void WebInit();