Clean up and fix inverter pids
This commit is contained in:
parent
d81f43481b
commit
3e086fc99b
|
@ -32,7 +32,7 @@
|
|||
*/
|
||||
|
||||
#include "ovms_log.h"
|
||||
static const char *TAG = "v-zoe-ph2";
|
||||
//static const char *TAG = "v-zoe-ph2";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string>
|
||||
|
|
|
@ -97,7 +97,6 @@ static const OvmsVehicle::poll_pid_t renault_zoe_polls[] = {
|
|||
{ 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
|
||||
|
||||
|
@ -151,7 +150,6 @@ OvmsVehicleRenaultZoePh2::OvmsVehicleRenaultZoePh2() {
|
|||
mt_inv_status = MyMetrics.InitString("zph2.m.inverter.status", SM_STALE_MID, 0);
|
||||
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);
|
||||
|
@ -190,7 +188,7 @@ 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 (data[0] == 0x83 && data[1] == 0xc0 && mt_bus_awake->AsBool()) {
|
||||
if (data[0] == 0x83 && data[1] == 0xc0 && mt_bus_awake) {
|
||||
ESP_LOGI(TAG,"Zoe has gone to sleep (CAN Gateway NAK response)");
|
||||
mt_bus_awake->SetValue(false);
|
||||
StandardMetrics.ms_v_env_awake->SetValue(false);
|
||||
|
@ -204,16 +202,9 @@ void OvmsVehicleRenaultZoePh2::IncomingFrameCan1(CAN_frame_t* p_frame) {
|
|||
*/
|
||||
void OvmsVehicleRenaultZoePh2::IncomingPollReply(canbus* bus, uint16_t type, uint16_t pid, uint8_t* data, uint8_t length, uint16_t remain) {
|
||||
string& rxbuf = zoe_obd_rxbuf;
|
||||
static uint32_t last_pid = -1;
|
||||
|
||||
ESP_LOGV(TAG, "pid: %04x length: %d m_poll_ml_remain: %d m_poll_ml_frame: %d", pid, length, m_poll_ml_remain, m_poll_ml_frame);
|
||||
|
||||
if (pid != last_pid) {
|
||||
ESP_LOGD(TAG, "pid: %04x length: %d m_poll_ml_remain: %d m_poll_ml_frame: %d", pid, length, m_poll_ml_remain, m_poll_ml_frame);
|
||||
last_pid = pid;
|
||||
m_poll_ml_frame=0;
|
||||
}
|
||||
|
||||
// init / fill rx buffer:
|
||||
if (m_poll_ml_frame == 0) {
|
||||
rxbuf.clear();
|
||||
|
@ -254,41 +245,36 @@ 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 0x700C: { // Inverter temperature
|
||||
StandardMetrics.ms_v_inv_temp->SetValue(float((CAN_UINT(0) - 40)), Celcius);
|
||||
ESP_LOGD(TAG, "700C INV ms_v_inv_temp: %f", float((CAN_UINT(0) - 40)));
|
||||
StandardMetrics.ms_v_inv_temp->SetValue(float((CAN_UINT(0) - 40) * 0.1953125), Celcius);
|
||||
ESP_LOGD(TAG, "700C INV ms_v_inv_temp: %f", float((CAN_UINT(0) - 40) * 0.1953125));
|
||||
break;
|
||||
}
|
||||
case 0x700F: { // Motor, Stator1 temperature
|
||||
StandardMetrics.ms_v_mot_temp->SetValue(float((CAN_UINT(0) - 40)), Celcius);
|
||||
StandardMetrics.ms_v_mot_temp->SetValue(float((CAN_UINT(0) - 40) * 0.1953125), Celcius);
|
||||
mt_mot_temp_stator1->SetValue(float((CAN_UINT(0) - 40)), Celcius);
|
||||
ESP_LOGD(TAG, "700F INV ms_v_mot_temp: %f", float((CAN_UINT(0) - 40)));
|
||||
ESP_LOGD(TAG, "700F INV ms_v_mot_temp: %f", float((CAN_UINT(0) - 40) * 0.1953125));
|
||||
break;
|
||||
}
|
||||
case 0x7010: { // Stator 2 temperature
|
||||
mt_mot_temp_stator2->SetValue(float((CAN_UINT(0) - 40)), Celcius);
|
||||
ESP_LOGD(TAG, "7010 INV mt_mot_temp_stator2: %f", float((CAN_UINT(0) - 40)));
|
||||
mt_mot_temp_stator2->SetValue(float((CAN_UINT(0) - 40) * 0.1953125), Celcius);
|
||||
ESP_LOGD(TAG, "7010 INV mt_mot_temp_stator2: %f", float((CAN_UINT(0) - 40) * 0.1953125));
|
||||
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)));
|
||||
StandardMetrics.ms_v_mot_rpm->SetValue(float(CAN_UINT(0) - 16000) * 0.5);
|
||||
ESP_LOGD(TAG, "2001 INV ms_v_mot_rpm: %f", float(CAN_UINT(0) - 16000) * 0.5);
|
||||
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()));
|
||||
mt_inv_hv_voltage->SetValue(float(CAN_UINT(0) * 0.03125), Volts);
|
||||
ESP_LOGD(TAG, "2004 INV mt_inv_hv_voltage: %f", float(CAN_UINT(0) * 0.03125));
|
||||
StandardMetrics.ms_v_inv_power->SetValue(float (mt_inv_hv_voltage->AsFloat() * mt_inv_hv_current->AsFloat() / 1000));
|
||||
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()));
|
||||
mt_inv_hv_current->SetValue(float((CAN_UINT(0) - 500) * 0.003125), Amps);
|
||||
ESP_LOGD(TAG, "7049 INV mt_inv_hv_current: %f", float(CAN_UINT(0) - 500) * 0.003125);
|
||||
StandardMetrics.ms_v_inv_power->SetValue(float (mt_inv_hv_current->AsFloat() * mt_inv_hv_voltage->AsFloat() / 1000));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -302,7 +288,7 @@ void OvmsVehicleRenaultZoePh2::IncomingEVC(uint16_t type, uint16_t pid, const ch
|
|||
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)) {
|
||||
if (!mt_bus_awake) {
|
||||
ESP_LOGI(TAG,"Zoe woke up (Successful poll on odometer)");
|
||||
mt_bus_awake->SetValue(true);
|
||||
StandardMetrics.ms_v_env_awake->SetValue(true);
|
||||
|
|
|
@ -102,7 +102,6 @@ class OvmsVehicleRenaultZoePh2 : public OvmsVehicle {
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue