Correct and add more PIDs

This commit is contained in:
Carsten Schmiemann 2022-04-12 23:30:29 +02:00
parent 9548b95ee0
commit d904badf77
2 changed files with 53 additions and 61 deletions

View file

@ -66,7 +66,7 @@ static const OvmsVehicle::poll_pid_t renault_zoe_polls[] = {
{ 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, 0x900D, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // Battery Current
{ 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, 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
@ -79,9 +79,10 @@ static const OvmsVehicle::poll_pid_t renault_zoe_polls[] = {
{ 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, 0x21CB, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // DCDC Activation
{ 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_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
@ -131,7 +132,7 @@ OvmsVehicleRenaultZoePh2::OvmsVehicleRenaultZoePh2() {
mt_bus_awake = MyMetrics.InitBool("zph2.v.bus.awake", SM_STALE_MIN, true);
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_navi_volume = MyMetrics.InitFloat("zph2.c.radio.volume", SM_STALE_MID, 0, Percentage);
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);
@ -242,10 +243,15 @@ void OvmsVehicleRenaultZoePh2::IncomingPollReply(canbus* bus, uint16_t type, uin
void OvmsVehicleRenaultZoePh2::IncomingINV(uint16_t type, uint16_t pid, const char* data, uint16_t len) {
switch (pid) {
case 0x700F: { // Motor temperature
StandardMetrics.ms_v_mot_temp->SetValue(CAN_UINT(0), Celcius);
ESP_LOGD(TAG, "700F INV ms_v_mot_temp: %d", CAN_UINT(0));
StandardMetrics.ms_v_mot_temp->SetValue(float((CAN_UINT(0) - 40) * 0.001953125), Celcius);
mt_mot_temp_stator1->SetValue(float((CAN_UINT(0) - 40) * 0.001953125), Celcius);
ESP_LOGD(TAG, "700F INV ms_v_mot_temp: %f", float((CAN_UINT(0) - 40) * 0.001953125));
break;
}
case 0x7010: {
mt_mot_temp_stator2->SetValue(float((CAN_UINT(0) - 40) * 0.001953125), Celcius);
ESP_LOGD(TAG, "7010 INV mt_mot_temp_stator2: %f", float((CAN_UINT(0) - 40) * 0.001953125));
break;
}
}
/**
@ -255,27 +261,45 @@ void OvmsVehicleRenaultZoePh2::IncomingEVC(uint16_t type, uint16_t pid, const ch
switch (pid) {
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_UINT(0));
ESP_LOGD(TAG, "2006 EVC ms_v_pos_odometer: %d", CAN_UINT24(0));
break;
}
case 0x21DF: {
StandardMetrics.ms_v_charge_12v_current->SetValue((float) (CAN_UINT(0)));
ESP_LOGD(TAG, "21DF EVC ms_v_charge_12v_current: %d", CAN_UINT(0));
case 0x29FD: {
StandardMetrics.ms_v_charge_12v_current->SetValue((float) (CAN_UINT(0) * 0.01 - 327.675));
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);
break;
}
case 0x2005: {
StandardMetrics.ms_v_charge_12v_voltage->SetValue((float) (CAN_UINT(0)));
ESP_LOGD(TAG, "2005 EVC ms_v_charge_12v_voltage: %d", CAN_UINT(0));
StandardMetrics.ms_v_charge_12v_voltage->SetValue((float) (CAN_UINT(0) * 0.01));
ESP_LOGD(TAG, "2005 EVC ms_v_charge_12v_voltage: %f", CAN_UINT(0) * 0.01);
break;
}
case 0x21D0: {
StandardMetrics.ms_v_gen_temp->SetValue((float) (CAN_UINT(0)));
ESP_LOGD(TAG, "21D0 EVC ms_v_gen_temp: %d", CAN_UINT(0));
StandardMetrics.ms_v_charge_12v_temp->SetValue((float) (CAN_UINT(0) - 40));
ESP_LOGD(TAG, "21D0 EVC ms_v_charge_12v_temp: %d", CAN_UINT(0) - 40));
break;
}
case 0x21CB: {
StandardMetrics.ms_v_gen_state->SetValue((char*) (CAN_BYTE(0)));
ESP_LOGD(TAG, "21CB EVC ms_v_gen_state: %d", CAN_UINT(0));
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 {
mt_inv_status->SetValue("Inverter off");
} else if CAN_UINT(0)) == 2 {
mt_inv_status->SetValue("Inverter on");
} else if CAN_UINT(0)) == 3 {
mt_inv_status->SetValue("Inverter decharging");
} else if CAN_UINT(0)) == 4 {
mt_inv_status->SetValue("Inverter alternator mode");
} else if CAN_UINT(0)) == 5 {
mt_inv_status->SetValue("Inverter ready to sleep");
} else {
mt_inv_status->SetValue("Inverter state unknown");
}
break;
}
case 0x33F6: {
@ -283,9 +307,9 @@ void OvmsVehicleRenaultZoePh2::IncomingEVC(uint16_t type, uint16_t pid, const ch
ESP_LOGD(TAG, "7ec inv temp: %d", CAN_BYTE(0) - 40);
break;
}
case 0x33dc: {
// 7ec,24,47,0.001,1,0,kWh,33dc,6233dc,ff\n" // Consumed domestic energy
//StdMetrics.ms_v_charge_kwh->SetValue(CAN_UINT24(0)*0.001);
case 0xF446: {
StandardMetrics.ms_v_env_temp->SetValue((float) (CAN_UINT(0) - 40));
ESP_LOGD(TAG, "F446 EVC ms_v_env_temp: %d", CAN_UINT(0));
break;
}
}
@ -347,23 +371,24 @@ void OvmsVehicleRenaultZoePh2::IncomingBCB(uint16_t type, uint16_t pid, const ch
void OvmsVehicleRenaultZoePh2::IncomingLBC(uint16_t type, uint16_t pid, const char* data, uint16_t len) {
switch (pid) {
case 0x9005: {
StandardMetrics.ms_v_bat_voltage->SetValue((float) (CAN_UINT(0)));
ESP_LOGD(TAG, "20B6 LBC ms_v_bat_voltage: %d", CAN_UINT(0));
StandardMetrics.ms_v_bat_voltage->SetValue((float) (CAN_UINT(0) * 0.1));
ESP_LOGD(TAG, "9005 LBC ms_v_bat_voltage: %f", CAN_UINT(0) * 0.1);
break;
}
case 0x900D: {
StandardMetrics.ms_v_bat_current->SetValue((float) (CAN_UINT(0)));
ESP_LOGD(TAG, "900D LBC ms_v_bat_current: %d", CAN_UINT(0));
case 0x925D: {
StandardMetrics.ms_v_bat_current->SetValue((float) ((CAN_UINT(0) - 1020) * 0.03125));
ESP_LOGD(TAG, "925D LBC ms_v_bat_current: %d", CAN_UINT(0));
ESP_LOGD(TAG, "925D LBC ms_v_bat_current: %f", ((CAN_UINT(0) - 1020) * 0.03125));
break;
}
case 0x9002: {
StandardMetrics.ms_v_bat_soc->SetValue((float) (CAN_UINT(0)) * 0.01);
ESP_LOGD(TAG, "9001 LBC ms_v_bat_soc: %f", CAN_UINT(0) * 0.01);
ESP_LOGD(TAG, "9002 LBC ms_v_bat_soc: %f", CAN_UINT(0) * 0.01);
break;
}
case 0x9003: {
StandardMetrics.ms_v_bat_soh->SetValue((float) (CAN_UINT(0) * 0.01));
ESP_LOGD(TAG, "91BC LBC ms_v_bat_soh: %f", CAN_UINT(0) * 0.01);
ESP_LOGD(TAG, "9003 LBC ms_v_bat_soh: %f", CAN_UINT(0) * 0.01);
break;
}
case 0x9243: {
@ -423,7 +448,7 @@ void OvmsVehicleRenaultZoePh2::IncomingLBC(uint16_t type, uint16_t pid, const ch
}
/**
* Handle incoming polls from the UBP Computer
* Handle incoming polls from the UCH Computer
*/
void OvmsVehicleRenaultZoePh2::IncomingUCH(uint16_t type, uint16_t pid, const char* data, uint16_t len) {
switch (pid) {
@ -440,39 +465,6 @@ void OvmsVehicleRenaultZoePh2::IncomingUCH(uint16_t type, uint16_t pid, const ch
}
}
/**
* Handle incoming polls from the PEB Computer
*/
void OvmsVehicleRenaultZoePh2::IncomingPEB(uint16_t type, uint16_t pid, const char* data, uint16_t len) {
switch (pid) {
case 0x3018: {
// 77e,24,39,0.015625,0,2,ºC,3018,623018,ff\n" // DCDC converter temperature
// zoe_dcdc_temp=CAN_UINT(4);
break;
}
case 0x302b: {
// 77e,24,31,0.015625,0,2,°C,302b,62302b,ff\n" // inverter temperature
// 77e,24,39,1,0,0,°C,302B,62302B,ff,InverterTempOrder
ESP_LOGI(TAG, "77e inv temp: %f", CAN_BYTE(0) * 0.015625);
ESP_LOGI(TAG, "77e inv temp: %d", CAN_UINT(0));
break;
}
}
}
/**
* Handle incoming polls from the navigation cluster
*/
void OvmsVehicleRenaultZoePh2::IncomingUCC(uint16_t type, uint16_t pid, const char* data, uint16_t len) {
switch (pid) {
case 0x2109: {
mt_navi_volume->SetValue((float(CAN_UINT(0))));
ESP_LOGD(TAG, "2109 navigation volume: %d", CAN_UINT(0));
break;
}
}
}
/**
* Takes care of setting all the state appropriate when the car is on

View file

@ -99,7 +99,7 @@ class OvmsVehicleRenaultZoePh2 : public OvmsVehicle {
OvmsMetricBool *mt_bus_awake; // can-bus awake status
OvmsMetricFloat *mt_available_energy; // Available Energy
OvmsMetricFloat *mt_main_power_consumed; // Mains active power consumed
OvmsMetricFloat *mt_navi_volume; //Radio volume for debug only
OvmsMetricString *mt_inv_status; //Inverter status string
OvmsMetricFloat *mt_mot_temp_stator1;
OvmsMetricFloat *mt_mot_temp_stator2;