From d904badf774d285a6437e593f269247af6d89fa7 Mon Sep 17 00:00:00 2001 From: Carsten Schmiemann Date: Tue, 12 Apr 2022 23:30:29 +0200 Subject: [PATCH] Correct and add more PIDs --- .../src/vehicle_renaultzoe_ph2.cpp | 112 ++++++++---------- .../src/vehicle_renaultzoe_ph2.h | 2 +- 2 files changed, 53 insertions(+), 61 deletions(-) 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 d8939d8..84fa18d 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 @@ -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 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 e92e864..74c51dc 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 @@ -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;