Compare commits
No commits in common. "5bf9c60a4797958c0dffdf226d3f46ec4fa50ac8" and "848429860c71cf66d0fb117c3a6755082c9435a1" have entirely different histories.
5bf9c60a47
...
848429860c
2 changed files with 22 additions and 41 deletions
|
@ -58,10 +58,8 @@ OvmsVehicleRenaultZoePh2CAN::OvmsVehicleRenaultZoePh2CAN() {
|
||||||
MyConfig.RegisterParam("xrz2c", "Renault Zoe Ph2 (CAN) configuration", true, true);
|
MyConfig.RegisterParam("xrz2c", "Renault Zoe Ph2 (CAN) configuration", true, true);
|
||||||
ConfigChanged(NULL);
|
ConfigChanged(NULL);
|
||||||
|
|
||||||
// CAN1: Init Zoe Ph2 M-CAN Interface
|
// Init Zoe Ph2 OBD Connection (CAN Gateway)
|
||||||
RegisterCanBus(1, CAN_MODE_ACTIVE, CAN_SPEED_500KBPS);
|
RegisterCanBus(1, CAN_MODE_ACTIVE, CAN_SPEED_500KBPS);
|
||||||
// CAN1: Init Zoe Ph2 V1-CAN Interface
|
|
||||||
RegisterCanBus(2, CAN_MODE_LISTEN, CAN_SPEED_500KBPS);
|
|
||||||
|
|
||||||
POLLSTATE_OFF;
|
POLLSTATE_OFF;
|
||||||
ESP_LOGI(TAG, "Pollstate switched to OFF");
|
ESP_LOGI(TAG, "Pollstate switched to OFF");
|
||||||
|
@ -141,28 +139,32 @@ void OvmsVehicleRenaultZoePh2CAN::ZoeWakeUp() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles incoming CAN-frames on bus 1, connected to M-CAN
|
* Handles incoming CAN-frames on bus 1
|
||||||
*/
|
*/
|
||||||
void OvmsVehicleRenaultZoePh2CAN::IncomingFrameCan1(CAN_frame_t* p_frame) {
|
void OvmsVehicleRenaultZoePh2CAN::IncomingFrameCan1(CAN_frame_t* p_frame) {
|
||||||
uint8_t *data = p_frame->data.u8;
|
uint8_t *data = p_frame->data.u8;
|
||||||
ESP_LOGI(TAG, "M-CAN: 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]);
|
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]);
|
||||||
|
//ESP_LOGD(TAG, "Status CAN Bus: %s", mt_bus_awake->AsBool() ? "true" : "false");
|
||||||
|
|
||||||
//If a CAN message comes in, start polling
|
// Poll reply gives 0x83 0xc0 that means zoe is sleeping and CAN gateway does not respond to anything
|
||||||
if (!mt_bus_awake->AsBool()) {
|
if (mt_bus_awake->AsBool() && data[0] == 0x83 && data[1] == 0xc0) {
|
||||||
|
ESP_LOGI(TAG,"Zoe has gone to sleep (CAN Gateway NAK response)");
|
||||||
|
mt_bus_awake->SetValue(false);
|
||||||
|
StandardMetrics.ms_v_env_awake->SetValue(false);
|
||||||
|
StandardMetrics.ms_v_env_charging12v->SetValue(false);
|
||||||
|
StandardMetrics.ms_v_pos_speed->SetValue( 0 );
|
||||||
|
StandardMetrics.ms_v_bat_12v_current->SetValue( 0 );
|
||||||
|
StandardMetrics.ms_v_charge_12v_current->SetValue( 0 );
|
||||||
|
StandardMetrics.ms_v_bat_current->SetValue( 0 );
|
||||||
|
POLLSTATE_OFF;
|
||||||
|
ESP_LOGI(TAG, "Pollstate switched to OFF");
|
||||||
|
//Check if car is locked, if not send notify
|
||||||
|
if (!StandardMetrics.ms_v_env_locked->AsBool()) {
|
||||||
|
MyNotify.NotifyString("alert", "vehicle.lock", "Vehicle is not locked");
|
||||||
|
}
|
||||||
|
} else if (!mt_bus_awake->AsBool()) {
|
||||||
ZoeWakeUp();
|
ZoeWakeUp();
|
||||||
}
|
}
|
||||||
//Reset CAN1 inactivity timer, inactivity after 5 sec detected to stop polling
|
|
||||||
m_can1_activity_timer = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles incoming CAN-frames on bus 2, connected to V1-CAN
|
|
||||||
*/
|
|
||||||
void OvmsVehicleRenaultZoePh2CAN::IncomingFrameCan2(CAN_frame_t* p_frame) {
|
|
||||||
uint8_t *data = p_frame->data.u8;
|
|
||||||
ESP_LOGI(TAG, "V1-CAN: 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]);
|
|
||||||
|
|
||||||
//ToDo: Analyse PIDs and copy data to useful metrics
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -311,25 +313,6 @@ void OvmsVehicleRenaultZoePh2CAN::Ticker10(uint32_t ticker) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OvmsVehicleRenaultZoePh2CAN::Ticker1(uint32_t ticker) {
|
void OvmsVehicleRenaultZoePh2CAN::Ticker1(uint32_t ticker) {
|
||||||
//Stop polling after 5 seconds of inactivity on CAN1 (M-CAN)
|
|
||||||
if (m_can1_activity_timer > 0) {
|
|
||||||
if (--m_can1_activity_timer == 0) {
|
|
||||||
ESP_LOGI(TAG,"Zoe has gone to sleep (No messages on M-CAN for 10 seconds)");
|
|
||||||
mt_bus_awake->SetValue(false);
|
|
||||||
StandardMetrics.ms_v_env_awake->SetValue(false);
|
|
||||||
StandardMetrics.ms_v_env_charging12v->SetValue(false);
|
|
||||||
StandardMetrics.ms_v_pos_speed->SetValue( 0 );
|
|
||||||
StandardMetrics.ms_v_bat_12v_current->SetValue( 0 );
|
|
||||||
StandardMetrics.ms_v_charge_12v_current->SetValue( 0 );
|
|
||||||
StandardMetrics.ms_v_bat_current->SetValue( 0 );
|
|
||||||
POLLSTATE_OFF;
|
|
||||||
ESP_LOGI(TAG, "Pollstate switched to OFF");
|
|
||||||
//Check if car is locked, if not send notify
|
|
||||||
if (!StandardMetrics.ms_v_env_locked->AsBool()) {
|
|
||||||
MyNotify.NotifyString("alert", "vehicle.lock", "Vehicle is not locked");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (StandardMetrics.ms_v_env_on->AsBool() && !CarIsDriving) {
|
if (StandardMetrics.ms_v_env_on->AsBool() && !CarIsDriving) {
|
||||||
CarIsDriving = true;
|
CarIsDriving = true;
|
||||||
//Start trip after power on
|
//Start trip after power on
|
||||||
|
|
|
@ -100,8 +100,6 @@ class OvmsVehicleRenaultZoePh2CAN : public OvmsVehicle {
|
||||||
virtual void Ticker10(uint32_t ticker);//Handle charge, energy statistics
|
virtual void Ticker10(uint32_t ticker);//Handle charge, energy statistics
|
||||||
virtual void Ticker1(uint32_t ticker); //Handle trip counter
|
virtual void Ticker1(uint32_t ticker); //Handle trip counter
|
||||||
|
|
||||||
private:
|
|
||||||
unsigned int m_can1_activity_timer;
|
|
||||||
|
|
||||||
// Renault ZOE specific metrics
|
// Renault ZOE specific metrics
|
||||||
OvmsMetricBool *mt_bus_awake; //CAN bus awake status
|
OvmsMetricBool *mt_bus_awake; //CAN bus awake status
|
||||||
|
|
Loading…
Reference in a new issue