Compare commits

...

3 Commits

2 changed files with 58 additions and 5 deletions

View File

@ -166,8 +166,46 @@ void OvmsVehicleRenaultZoePh2CAN::shell_can_request(int verbosity, OvmsWriter* w
}
OvmsVehicle::vehicle_command_t OvmsVehicleRenaultZoePh2CAN::CommandPreHeat(bool climatecontrolon) {
//ToDo: Sniff TCU packets for preheat/cool, OVMS is connected on TCU port
return NotImplemented;
//Wake Up Packet
uint8_t data[8] = {0x83, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
canbus *obd;
obd = m_can1;
for (int i=0; i<40; i++)
{
obd->WriteStandard(0x55C, 8, data);
}
obd->WriteStandard(0x6f9, 8, data);
data[0] = 0x40;
data[1] = 0x80;
vTaskDelay(50 / portTICK_PERIOD_MS);
obd->WriteStandard(0x43c, 8, data);
data = {0xe4, 0x64, 0x70, 0x00, 0x28, 0x84, 0x07, 0x10};
obd->WriteStandard(0x46f, 8, data);
data = {0x84, 0xc7, 0x07, 0x55, 0xe0, 0x0d, 0x00, 0xc4};
obd->WriteStandard(0x47d, 8, data);
data = {0x03, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00};
obd->WriteStandard(0x46a, 8, data);
data = {0x03, 0x02, 0x04, 0x02, 0x06, 0x00, 0x20, 0x08};
obd->WriteStandard(0x46c, 8, data);
data = {0x10, 0xc9, 0x50, 0x21, 0x01, 0x20, 0x00, 0x00};
obd->WriteStandard(0x482, 8, data);
data = {0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00};
obd->WriteStandard(0x5b1, 8, data);
data = {0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00};
obd->WriteStandard(0x5ba, 8, data);
return Success;
}
OvmsVehicle::vehicle_command_t OvmsVehicleRenaultZoePh2CAN::CommandWakeup() {

View File

@ -63,6 +63,9 @@ OvmsVehicleRenaultZoePh2CAN::OvmsVehicleRenaultZoePh2CAN() {
// CAN3: Init Zoe Ph2 V1-CAN bus
RegisterCanBus(3, CAN_MODE_LISTEN, CAN_SPEED_500KBPS);
cmd_zoe_ph2 = MyCommandApp.RegisterCommand("xrz2c", "Renault Zoe Phase 2");
CanInit();
POLLSTATE_OFF;
ESP_LOGI(TAG, "Pollstate switched to OFF");
@ -144,7 +147,7 @@ void OvmsVehicleRenaultZoePh2CAN::ZoeWakeUp() {
* Handles incoming CAN-frames on bus 1, connected to M-CAN
*/
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]);
//tooooooo many packets, OVMS will crash with logging
@ -160,7 +163,7 @@ void OvmsVehicleRenaultZoePh2CAN::IncomingFrameCan1(CAN_frame_t* p_frame) {
* Handles incoming CAN-frames on bus 2, connected to EXT-CAN
*/
void OvmsVehicleRenaultZoePh2CAN::IncomingFrameCan2(CAN_frame_t* p_frame) {
uint8_t *data = p_frame->data.u8;
//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]);
//tooooooo many packets, OVMS will crash with logging
@ -171,7 +174,7 @@ void OvmsVehicleRenaultZoePh2CAN::IncomingFrameCan2(CAN_frame_t* p_frame) {
* Handles incoming CAN-frames on bus 3, connected to V1-CAN
*/
void OvmsVehicleRenaultZoePh2CAN::IncomingFrameCan3(CAN_frame_t* p_frame) {
uint8_t *data = p_frame->data.u8;
//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]);
//tooooooo many packets, OVMS will crash with logging
@ -395,6 +398,18 @@ void OvmsVehicleRenaultZoePh2CAN::Ticker1(uint32_t ticker) {
}
OvmsVehicleRenaultZoePh2CAN* OvmsVehicleRenaultZoePh2CAN::GetInstance(OvmsWriter* writer /*=NULL*/)
{
OvmsVehicleRenaultZoePh2CAN* zoe_ph2_can = (OvmsVehicleRenaultZoePh2CAN*) MyVehicleFactory.ActiveVehicle();
string type = StdMetrics.ms_v_type->AsString();
if (!zoe_ph2_can || type != "RZ2C") {
if (writer)
writer->puts("Error: Renault Zoe Ph2 (CAN) vehicle module not selected");
return NULL;
}
return zoe_ph2_can;
}
class OvmsVehicleRenaultZoePh2CANInit {
public: OvmsVehicleRenaultZoePh2CANInit();
} MyOvmsVehicleRenaultZoePh2CANInit __attribute__ ((init_priority (9000)));