diff --git a/modules/EvseManager/Charger.cpp b/modules/EvseManager/Charger.cpp index 9fc2c4f2e7..ab5c8844ae 100644 --- a/modules/EvseManager/Charger.cpp +++ b/modules/EvseManager/Charger.cpp @@ -617,15 +617,6 @@ void Charger::processEvent(CPEvent cp_event) { case CPEvent::EFtoBCD: session_log.car(false, fmt::format("Event {}", cpevent_to_string(cp_event))); break; - case CPEvent::ErrorOverCurrent: - case CPEvent::ErrorRelais: - case CPEvent::ErrorVentilationNotAvailable: - case CPEvent::PermanentFault: - case CPEvent::PowerOff: - case CPEvent::PowerOn: - case CPEvent::EvseReplugStarted: - case CPEvent::EvseReplugFinished: - default: session_log.evse(false, fmt::format("Event {}", cpevent_to_string(cp_event))); break; @@ -742,53 +733,90 @@ void Charger::processCPEventsIndependent(CPEvent cp_event) { currentState = EvseState::Error; errorState = types::evse_manager::ErrorEnum::CarDiodeFault; break; - case CPEvent::ErrorRelais: - currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::Relais; - break; + case CPEvent::ErrorVentilationNotAvailable: currentState = EvseState::Error; errorState = types::evse_manager::ErrorEnum::VentilationNotAvailable; break; - case CPEvent::ErrorOverCurrent: + + case CPEvent::ErrorBrownOut: currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::OverCurrent; + errorState = types::evse_manager::ErrorEnum::BrownOut; break; - case CPEvent::ErrorOverVoltage: + + case CPEvent::ErrorEnergyManagement: currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::OverVoltage; + errorState = types::evse_manager::ErrorEnum::EnergyManagement; break; - case CPEvent::ErrorUnderVoltage: + + case CPEvent::MREC_1_ConnectorLockFailure: currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::UnderVoltage; + errorState = types::evse_manager::ErrorEnum::MREC_1_ConnectorLockFailure; break; - case CPEvent::ErrorMotorLock: + case CPEvent::MREC_3_HighTemperature: currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::MotorLock; + errorState = types::evse_manager::ErrorEnum::MREC_3_HighTemperature; break; - case CPEvent::ErrorOverTemperature: + case CPEvent::MREC_4_OverCurrentFailure: currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::OverTemperature; + errorState = types::evse_manager::ErrorEnum::MREC_4_OverCurrentFailure; break; - case CPEvent::ErrorBrownOut: + case CPEvent::MREC_5_OverVoltage: currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::BrownOut; + errorState = types::evse_manager::ErrorEnum::MREC_5_OverVoltage; break; - case CPEvent::ErrorCablePP: + case CPEvent::MREC_6_UnderVoltage: currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::CablePP; + errorState = types::evse_manager::ErrorEnum::MREC_6_UnderVoltage; break; - case CPEvent::ErrorEnergyManagement: + case CPEvent::MREC_8_EmergencyStop: currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::EnergyManagement; + errorState = types::evse_manager::ErrorEnum::MREC_8_EmergencyStop; + break; + + case CPEvent::MREC_10_InvalidVehicleMode: + currentState = EvseState::Error; + errorState = types::evse_manager::ErrorEnum::MREC_10_InvalidVehicleMode; + break; + case CPEvent::MREC_14_PilotFault: + currentState = EvseState::Error; + errorState = types::evse_manager::ErrorEnum::MREC_14_PilotFault; + break; + case CPEvent::MREC_15_PowerLoss: + currentState = EvseState::Error; + errorState = types::evse_manager::ErrorEnum::MREC_15_PowerLoss; + break; + case CPEvent::MREC_17_EVSEContactorFault: + currentState = EvseState::Error; + errorState = types::evse_manager::ErrorEnum::MREC_17_EVSEContactorFault; + break; + case CPEvent::MREC_18_CableOverTempDerate: + // This is a non fatal error, issue a warning with the new fault handling + errorState = types::evse_manager::ErrorEnum::MREC_18_CableOverTempDerate; + break; + case CPEvent::MREC_19_CableOverTempStop: + currentState = EvseState::Error; + errorState = types::evse_manager::ErrorEnum::MREC_19_CableOverTempStop; + break; + case CPEvent::MREC_20_PartialInsertion: + currentState = EvseState::Error; + errorState = types::evse_manager::ErrorEnum::MREC_20_PartialInsertion; + break; + case CPEvent::MREC_23_ProximityFault: + currentState = EvseState::Error; + errorState = types::evse_manager::ErrorEnum::MREC_23_ProximityFault; + break; + case CPEvent::MREC_24_ConnectorVoltageHigh: + currentState = EvseState::Error; + errorState = types::evse_manager::ErrorEnum::MREC_24_ConnectorVoltageHigh; break; - case CPEvent::ErrorNeutralPEN: + case CPEvent::MREC_25_BrokenLatch: currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::NeutralPEN; + errorState = types::evse_manager::ErrorEnum::MREC_25_BrokenLatch; break; - case CPEvent::ErrorCpDriver: + case CPEvent::MREC_26_CutCable: currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::CpDriver; + errorState = types::evse_manager::ErrorEnum::MREC_26_CutCable; break; default: break; @@ -1282,7 +1310,7 @@ void Charger::checkSoftOverCurrent() { currentDrawnByVehicle[0], currentDrawnByVehicle[1], currentDrawnByVehicle[2], limit)); currentState = EvseState::Error; - errorState = types::evse_manager::ErrorEnum::OverCurrent; + errorState = types::evse_manager::ErrorEnum::MREC_4_OverCurrentFailure; } } diff --git a/modules/EvseManager/EvseManager.cpp b/modules/EvseManager/EvseManager.cpp index e70496a4b9..f961d23440 100644 --- a/modules/EvseManager/EvseManager.cpp +++ b/modules/EvseManager/EvseManager.cpp @@ -533,7 +533,6 @@ void EvseManager::ready() { } bsp->signal_event.connect([this](const CPEvent event) { - // Forward events from BSP to SLAC module before we process the events in the charger if (slac_enabled) { if (event == CPEvent::EFtoBCD) { @@ -578,18 +577,25 @@ void EvseManager::ready() { } } - if (event == CPEvent::ErrorRelais) { + if (event == CPEvent::MREC_17_EVSEContactorFault) { session_log.evse(false, "Error Relais"); r_hlc[0]->call_set_FAILED_ContactorError(true); } - if (event == CPEvent::PermanentFault) { - session_log.evse(false, "Error Permanent Fault"); + if (event == CPEvent::PermanentFault || event == CPEvent::MREC_26_CutCable || + event == CPEvent::MREC_25_BrokenLatch) { + session_log.evse(false, "Error Permanent Fault: " + cpevent_to_string(event)); r_hlc[0]->call_set_EVSE_Malfunction(true); } - if (event == CPEvent::ErrorOverCurrent) { - session_log.evse(false, "Error Over Current"); + if (event == CPEvent::MREC_2_GroundFailure || event == CPEvent::MREC_4_OverCurrentFailure || + event == CPEvent::MREC_5_OverVoltage || event == CPEvent::MREC_6_UnderVoltage || + event == CPEvent::MREC_8_EmergencyStop || event == CPEvent::MREC_19_CableOverTempStop || + event == CPEvent::MREC_10_InvalidVehicleMode || event == CPEvent::MREC_14_PilotFault || + event == CPEvent::MREC_15_PowerLoss || event == CPEvent::MREC_17_EVSEContactorFault || + event == CPEvent::MREC_19_CableOverTempStop || event == CPEvent::MREC_20_PartialInsertion || + event == CPEvent::MREC_23_ProximityFault || event == CPEvent::MREC_24_ConnectorVoltageHigh) { + session_log.evse(false, "Fatal error, emergency stop: " + cpevent_to_string(event)); r_hlc[0]->call_set_EVSE_EmergencyShutdown(true); } diff --git a/modules/EvseManager/IECStateMachine.cpp b/modules/EvseManager/IECStateMachine.cpp index 2f06b37b58..2a189156c8 100644 --- a/modules/EvseManager/IECStateMachine.cpp +++ b/modules/EvseManager/IECStateMachine.cpp @@ -35,39 +35,54 @@ static std::variant from_bsp_event(types::board_support_com return CPEvent::PowerOff; case types::board_support_common::Event::ErrorDF: return CPEvent::ErrorDF; - case types::board_support_common::Event::ErrorRelais: - return CPEvent::ErrorRelais; case types::board_support_common::Event::ErrorVentilationNotAvailable: return CPEvent::ErrorVentilationNotAvailable; - case types::board_support_common::Event::ErrorOverCurrent: - return CPEvent::ErrorOverCurrent; - case types::board_support_common::Event::ErrorOverVoltage: - return CPEvent::ErrorOverVoltage; - case types::board_support_common::Event::ErrorUnderVoltage: - return CPEvent::ErrorUnderVoltage; - case types::board_support_common::Event::ErrorMotorLock: - return CPEvent::ErrorMotorLock; - case types::board_support_common::Event::ErrorOverTemperature: - return CPEvent::ErrorOverTemperature; case types::board_support_common::Event::ErrorBrownOut: return CPEvent::ErrorBrownOut; - case types::board_support_common::Event::ErrorCablePP: - return CPEvent::ErrorCablePP; case types::board_support_common::Event::ErrorEnergyManagement: return CPEvent::ErrorEnergyManagement; - case types::board_support_common::Event::ErrorNeutralPEN: - return CPEvent::ErrorNeutralPEN; - case types::board_support_common::Event::ErrorCpDriver: - return CPEvent::ErrorCpDriver; case types::board_support_common::Event::PermanentFault: return CPEvent::PermanentFault; case types::board_support_common::Event::EvseReplugStarted: return CPEvent::EvseReplugStarted; case types::board_support_common::Event::EvseReplugFinished: return CPEvent::EvseReplugFinished; - case types::board_support_common::Event::EmergencyStopButtonPressed: - return CPEvent::EmergencyStopButtonPressed; - + case types::board_support_common::Event::MREC_1_ConnectorLockFailure: + return CPEvent::MREC_1_ConnectorLockFailure; + case types::board_support_common::Event::MREC_2_GroundFailure: + return CPEvent::MREC_2_GroundFailure; + case types::board_support_common::Event::MREC_3_HighTemperature: + return CPEvent::MREC_3_HighTemperature; + case types::board_support_common::Event::MREC_4_OverCurrentFailure: + return CPEvent::MREC_4_OverCurrentFailure; + case types::board_support_common::Event::MREC_5_OverVoltage: + return CPEvent::MREC_5_OverVoltage; + case types::board_support_common::Event::MREC_6_UnderVoltage: + return CPEvent::MREC_6_UnderVoltage; + case types::board_support_common::Event::MREC_8_EmergencyStop: + return CPEvent::MREC_8_EmergencyStop; + case types::board_support_common::Event::MREC_10_InvalidVehicleMode: + return CPEvent::MREC_10_InvalidVehicleMode; + case types::board_support_common::Event::MREC_14_PilotFault: + return CPEvent::MREC_14_PilotFault; + case types::board_support_common::Event::MREC_15_PowerLoss: + return CPEvent::MREC_15_PowerLoss; + case types::board_support_common::Event::MREC_17_EVSEContactorFault: + return CPEvent::MREC_17_EVSEContactorFault; + case types::board_support_common::Event::MREC_18_CableOverTempDerate: + return CPEvent::MREC_18_CableOverTempDerate; + case types::board_support_common::Event::MREC_19_CableOverTempStop: + return CPEvent::MREC_19_CableOverTempStop; + case types::board_support_common::Event::MREC_20_PartialInsertion: + return CPEvent::MREC_20_PartialInsertion; + case types::board_support_common::Event::MREC_23_ProximityFault: + return CPEvent::MREC_23_ProximityFault; + case types::board_support_common::Event::MREC_24_ConnectorVoltageHigh: + return CPEvent::MREC_24_ConnectorVoltageHigh; + case types::board_support_common::Event::MREC_25_BrokenLatch: + return CPEvent::MREC_25_BrokenLatch; + case types::board_support_common::Event::MREC_26_CutCable: + return CPEvent::MREC_26_CutCable; default: return RawCPState::Disabled; } @@ -93,30 +108,12 @@ const std::string cpevent_to_string(CPEvent e) { return "ErrorE"; case CPEvent::ErrorDF: return "ErrorDF"; - case CPEvent::ErrorRelais: - return "ErrorRelais"; case CPEvent::ErrorVentilationNotAvailable: return "ErrorVentilationNotAvailable"; - case CPEvent::ErrorOverCurrent: - return "ErrorOverCurrent"; - case CPEvent::ErrorOverVoltage: - return "ErrorOverVoltage"; - case CPEvent::ErrorUnderVoltage: - return "ErrorUnderVoltage"; - case CPEvent::ErrorMotorLock: - return "ErrorMotorLock"; - case CPEvent::ErrorOverTemperature: - return "ErrorOverTemperature"; case CPEvent::ErrorBrownOut: return "ErrorBrownOut"; - case CPEvent::ErrorCablePP: - return "ErrorCablePP"; case CPEvent::ErrorEnergyManagement: return "ErrorEnergyManagement"; - case CPEvent::ErrorNeutralPEN: - return "ErrorNeutralPEN"; - case CPEvent::ErrorCpDriver: - return "ErrorCpDriver"; case CPEvent::EFtoBCD: return "EFtoBCD"; case CPEvent::BCDtoEF: @@ -127,8 +124,40 @@ const std::string cpevent_to_string(CPEvent e) { return "EvseReplugStarted"; case CPEvent::EvseReplugFinished: return "EvseReplugFinished"; + case CPEvent::MREC_1_ConnectorLockFailure: + return "MREC_1_ConnectorLockFailure"; + case CPEvent::MREC_2_GroundFailure: + return "MREC_2_GroundFailure"; + case CPEvent::MREC_3_HighTemperature: + return "MREC_3_HighTemperature"; + case CPEvent::MREC_4_OverCurrentFailure: + return "MREC_4_OverCurrentFailure"; + case CPEvent::MREC_5_OverVoltage: + return "MREC_5_OverVoltage"; + case CPEvent::MREC_6_UnderVoltage: + return "MREC_6_UnderVoltage"; + case CPEvent::MREC_8_EmergencyStop: + return "MREC_8_EmergencyStop"; + case CPEvent::MREC_15_PowerLoss: + return "MREC_15_PowerLoss"; + case CPEvent::MREC_17_EVSEContactorFault: + return "MREC_17_EVSEContactorFault"; + case CPEvent::MREC_18_CableOverTempDerate: + return "MREC_18_CableOverTempDerate"; + case CPEvent::MREC_19_CableOverTempStop: + return "MREC_19_CableOverTempStop"; + case CPEvent::MREC_20_PartialInsertion: + return "MREC_20_PartialInsertion"; + return "MREC_19_CableOverTempStop"; + case CPEvent::MREC_23_ProximityFault: + return "MREC_23_ProximityFault"; + case CPEvent::MREC_24_ConnectorVoltageHigh: + return "MREC_24_ConnectorVoltageHigh"; + case CPEvent::MREC_25_BrokenLatch: + return "MREC_25_BrokenLatch"; + case CPEvent::MREC_26_CutCable: + return "MREC_26_CutCable"; } - throw std::out_of_range("No known string conversion for provided enum of type CPEvent"); } @@ -369,8 +398,8 @@ void IECStateMachine::call_allow_power_on_bsp(bool value) { } // High level state machine requests reading PP ampacity value. -// We forware this request to the BSP driver. The high level state machine will never call this if it is not used (e.g. -// in DC or AC tethered charging) +// We forware this request to the BSP driver. The high level state machine will never call this if it is not used +// (e.g. in DC or AC tethered charging) double IECStateMachine::read_pp_ampacity() { auto a = r_bsp->call_ac_read_pp_ampacity(); switch (a.ampacity) { @@ -392,8 +421,8 @@ void IECStateMachine::evse_replug(int ms) { r_bsp->call_evse_replug(ms); } -// Forward special request to switch the number of phases during charging. BSP will need to implement a special sequence -// to not destroy cars. +// Forward special request to switch the number of phases during charging. BSP will need to implement a special +// sequence to not destroy cars. void IECStateMachine::switch_three_phases_while_charging(bool n) { r_bsp->call_ac_switch_three_phases_while_charging(n); } @@ -404,8 +433,8 @@ void IECStateMachine::setup(bool three_phases, bool has_ventilation, std::string this->has_ventilation = has_ventilation; } -// Force an unlock now. This can be sent from OCPP. As locking/unlocking is handled in the BSP the BSP MCU will need to -// decide how and when to fulfill this request in a safe manner. +// Force an unlock now. This can be sent from OCPP. As locking/unlocking is handled in the BSP the BSP MCU will need +// to decide how and when to fulfill this request in a safe manner. bool IECStateMachine::force_unlock() { return r_bsp->call_force_unlock(); } @@ -415,9 +444,9 @@ void IECStateMachine::enable(bool en) { r_bsp->call_enable(en); } -// Forward the over current detection limit to the BSP. Many BSP MCUs monitor the charge current and trigger a fault in -// case of over current. This sets the target charging current value to be used in OC detection. It cannot be derived -// from the PWM duty cycle, use this value instead. +// Forward the over current detection limit to the BSP. Many BSP MCUs monitor the charge current and trigger a fault +// in case of over current. This sets the target charging current value to be used in OC detection. It cannot be +// derived from the PWM duty cycle, use this value instead. void IECStateMachine::set_overcurrent_limit(double amps) { if (amps != last_amps) { r_bsp->call_ac_set_overcurrent_limit_A(amps); diff --git a/modules/EvseManager/IECStateMachine.hpp b/modules/EvseManager/IECStateMachine.hpp index 56f5dd303b..acb66b4f20 100644 --- a/modules/EvseManager/IECStateMachine.hpp +++ b/modules/EvseManager/IECStateMachine.hpp @@ -42,26 +42,34 @@ enum class CPEvent { PowerOff, CarRequestedStopPower, CarUnplugged, + EFtoBCD, + BCDtoEF, + EvseReplugStarted, + EvseReplugFinished, ErrorE, ErrorDF, - ErrorRelais, ErrorVentilationNotAvailable, - ErrorOverCurrent, - ErrorOverVoltage, - ErrorUnderVoltage, - ErrorMotorLock, - ErrorOverTemperature, ErrorBrownOut, - ErrorCablePP, ErrorEnergyManagement, - ErrorNeutralPEN, - ErrorCpDriver, - EFtoBCD, - BCDtoEF, PermanentFault, - EvseReplugStarted, - EvseReplugFinished, - EmergencyStopButtonPressed, + MREC_1_ConnectorLockFailure, + MREC_2_GroundFailure, + MREC_3_HighTemperature, + MREC_4_OverCurrentFailure, + MREC_5_OverVoltage, + MREC_6_UnderVoltage, + MREC_8_EmergencyStop, + MREC_10_InvalidVehicleMode, + MREC_14_PilotFault, + MREC_15_PowerLoss, + MREC_17_EVSEContactorFault, + MREC_18_CableOverTempDerate, + MREC_19_CableOverTempStop, + MREC_20_PartialInsertion, + MREC_23_ProximityFault, + MREC_24_ConnectorVoltageHigh, + MREC_25_BrokenLatch, + MREC_26_CutCable, }; // Just a helper for log printing diff --git a/types/board_support_common.yaml b/types/board_support_common.yaml index d532139dc7..6d4f27145d 100644 --- a/types/board_support_common.yaml +++ b/types/board_support_common.yaml @@ -1,7 +1,52 @@ description: EV and EVSE board support types types: BspEvent: - description: Event stream from ControlPilot signal/Relais + description: >- + Event stream from ControlPilot signal/Relais. + + A-F: CP states as defined in IEC61851-1 + PowerOn: Hardware confirms that contactors switched on correctly (typically mirror contacts indicated successful switch on) + PowerOff: Hardware confirms that contactors switched off correctly and are not welded (typically mirror contacts indicated successful switch off) + + ErrorDF: The CP diode in the EV is shorted. + ErrorVentilationNotAvailable: EV requested state D but no ventilation is available. + ErrorBrownOut: The hardware/MCU detected a brown out. + ErrorEnergyManagement: Energy could not be delivered because an (external) energy management failed. + PermanentFault: The EVSE is permanently broken and requires repair. + EvseReplugStarted: Special testing sequence: virtual replugging started + EvseReplugFinished: Special testing sequence: virtual replugging stopped + Disconnected: Only used on EV side: Not connected to a charging station + + All error codes that begin with MREC needs to be implemented to fulfill the Minimum Required Error Codes defined by the ChargeX consortium: + + https://inl.gov/content/uploads/2023/07/ChargeX_MREC_Rev5_09.12.23.pdf + + MREC_1_ConnectorLockFailure: Failure to lock or unlock connector on the vehicle side. + How should that be implemented? We can only find out about locking on the EVSE side, + so we will use this error to report EVSE side lock failures. + MREC_2_GroundFailure: Ground fault circuit interrupter has been activated. + MREC_3_HighTemperature: High temperature inside the EVSE is derating power delivery. + MREC_4_OverCurrentFailure: Over current protection device has tripped. + MREC_5_OverVoltage: Input voltage to the vehicle has risen above an acceptable level. + MREC_6_UnderVoltage: Input voltage to the vehicle has dropped below an acceptable level. + MREC_7 does not apply here + MREC_8_EmergencyStop: Emergency stop is pressed by the user (required if equipped). + MREC_9 does not apply here + MREC_10_InvalidVehicleMode: The vehicle is in an invalid mode for charging. This error can also be emitted by other modules, e.g. ISO communication. + MREC_11/12/13 do not apply here + MREC_14_PilotFault: The control pilot voltage is out of range. + MREC_15_PowerLoss: The EVSE is unable to supply any power due to mains failure + MREC_16 does not apply here, that is for ISO protocol + MREC_17_EVSEContactorFault: Contactors fail to open or close on EVSE's side. May also include welding related errors. + MREC_18_CableOverTempDerate: Temperature of charging cable or connector assembly is too high, resulting in reduced power operation. + MREC_19_CableOverTempStop: Temperature of charging cable or connector assembly is too high, resulting in a stopped charging session. + MREC_20_PartialInsertion: Cable latch is raised due to incomplete insertion into the vehicle charging port. + MREC_21/22 does not apply here + MREC_23_ProximityFault: The proximity voltage is out of range. + MREC_24_ConnectorVoltageHigh: The output voltage of EVSE is high before charging starts or after charging ends. + MREC_25_BrokenLatch: The latch on the connector is broken. + MREC_26_CutCable: The output cable has been severed from the EVSE. + type: object additionalProperties: false required: @@ -19,23 +64,31 @@ types: - 'PowerOn' - 'PowerOff' - 'ErrorDF' - - 'ErrorRelais' - 'ErrorVentilationNotAvailable' - - 'ErrorOverCurrent' - - 'ErrorOverVoltage' - - 'ErrorUnderVoltage' - - 'ErrorMotorLock' - - 'ErrorOverTemperature' - 'ErrorBrownOut' - - 'ErrorCablePP' - 'ErrorEnergyManagement' - - 'ErrorNeutralPEN' - - 'ErrorCpDriver' - 'PermanentFault' - 'EvseReplugStarted' - 'EvseReplugFinished' - 'Disconnected' - - 'EmergencyStopButtonPressed' + - 'MREC_1_ConnectorLockFailure' + - 'MREC_2_GroundFailure' + - 'MREC_3_HighTemperature' + - 'MREC_4_OverCurrentFailure' + - 'MREC_5_OverVoltage' + - 'MREC_6_UnderVoltage' + - 'MREC_8_EmergencyStop' + - 'MREC_10_InvalidVehicleMode' + - 'MREC_14_PilotFault' + - 'MREC_15_PowerLoss' + - 'MREC_17_EVSEContactorFault' + - 'MREC_18_CableOverTempDerate' + - 'MREC_19_CableOverTempStop' + - 'MREC_20_PartialInsertion' + - 'MREC_23_ProximityFault' + - 'MREC_24_ConnectorVoltageHigh' + - 'MREC_25_BrokenLatch' + - 'MREC_26_CutCable' ProximityPilot: description: Current capability (ampacity) of the cable type: object diff --git a/types/evse_manager.yaml b/types/evse_manager.yaml index acc4783af6..289084cd24 100644 --- a/types/evse_manager.yaml +++ b/types/evse_manager.yaml @@ -236,24 +236,38 @@ types: enum: - Car - CarDiodeFault - - Relais - RCD - RCDDC - VentilationNotAvailable - - OverCurrent - - OverVoltage - - UnderVoltage - Internal - SLAC - HLC - Other - - MotorLock - - OverTemperature - BrownOut - - CablePP - EnergyManagement - - NeutralPEN - - CpDriver + - MREC_1_ConnectorLockFailure + - MREC_2_GroundFailure + - MREC_3_HighTemperature + - MREC_4_OverCurrentFailure + - MREC_5_OverVoltage + - MREC_6_UnderVoltage + - MREC_8_EmergencyStop + - MREC_10_InvalidVehicleMode + - MREC_11_CableCheckFailure + - MREC_12_PreChargeFailure + - MREC_14_PilotFault + - MREC_15_PowerLoss + - MREC_16_EVContactorFault + - MREC_17_EVSEContactorFault + - MREC_18_CableOverTempDerate + - MREC_19_CableOverTempStop + - MREC_20_PartialInsertion + - MREC_21_CapacitanceFault + - MREC_22_ResistanceFault + - MREC_23_ProximityFault + - MREC_24_ConnectorVoltageHigh + - MREC_25_BrokenLatch + - MREC_26_CutCable Error: description: >- Error object that contains information about the error and optional vendor error information