evcc package¶
Subpackages¶
- evcc.states package
- Submodules
- evcc.states.ev_state module
- evcc.states.wait_for_authorization_response module
- evcc.states.wait_for_authorization_setup_response module
- evcc.states.wait_for_dc_cable_check_response module
- evcc.states.wait_for_dc_charge_loop_response module
- evcc.states.wait_for_dc_charge_parameter_discovery_response module
- evcc.states.wait_for_dc_pre_charge_response module
- evcc.states.wait_for_dc_welding_detection_response module
- evcc.states.wait_for_power_delivery_response module
- evcc.states.wait_for_schedule_exchange_response module
- evcc.states.wait_for_service_detail_response module
- evcc.states.wait_for_service_discovery_response module
- evcc.states.wait_for_service_selection_response module
- evcc.states.wait_for_session_setup_response module
- evcc.states.wait_for_session_stop_response module
- evcc.states.wait_for_supported_app_protocol_response module
- Module contents
Submodules¶
evcc.ev_controller module¶
- class evcc.ev_controller.DcEVDataModel(_observers: List[shared.gui.GUI] = <factory>, notification_type: str = None, supported_app_protocols: List[shared.xml_classes.app_protocol.v2_g_ci_app_protocol.AppProtocolType] = None, evccid: Union[bytes, NoneType] = None, authorization_services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType] = None, selected_authorization_service: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType, NoneType] = None, eim_areq_authorization_mode: Union[object, NoneType] = None, pn_c_areq_authorization_mode: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.PnCAreqAuthorizationModeType, NoneType] = None, supported_service_ids: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceIdlistType, NoneType] = None, service_id: Union[int, NoneType] = None, selected_energy_transfer_service: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.SelectedServiceType, NoneType] = None, selected_vaslist: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.SelectedServiceListType, NoneType] = None, evprocessing: Union[shared.xml_classes.dc.v2_g_ci_common_types.ProcessingType, NoneType] = None, charge_progress: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ChargeProgressType, NoneType] = None, evpower_profile: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.EvpowerProfileType, NoneType] = None, bpt_channel_selection: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ChannelSelectionType, NoneType] = None, bpt_dc_cpdreq_energy_transfer_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptDcCpdreqEnergyTransferMode, NoneType] = None, dc_cpdreq_energy_transfer_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.DcCpdreqEnergyTransferMode, NoneType] = None, evtarget_voltage: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evpresent_voltage: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, bpt_dynamic_dc_clreq_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptDynamicDcClreqControlMode, NoneType] = None, dynamic_dc_clreq_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.DynamicDcClreqControlMode, NoneType] = None, bpt_scheduled_dc_clreq_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptScheduledDcClreqControlMode, NoneType] = None, scheduled_dc_clreq_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.ScheduledDcClreqControlMode, NoneType] = None, clreq_control_mode: Union[shared.xml_classes.dc.v2_g_ci_common_types.ClreqControlMode, NoneType] = None)¶
Bases:
evcc.ev_controller.EVDataModel
- bpt_dc_cpdreq_energy_transfer_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.BptDcCpdreqEnergyTransferMode] = None¶
- bpt_dynamic_dc_clreq_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.BptDynamicDcClreqControlMode] = None¶
- bpt_scheduled_dc_clreq_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.BptScheduledDcClreqControlMode] = None¶
- clreq_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_common_types.ClreqControlMode] = None¶
- dc_cpdreq_energy_transfer_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.DcCpdreqEnergyTransferMode] = None¶
- dynamic_dc_clreq_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.DynamicDcClreqControlMode] = None¶
- evpresent_voltage: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- evprocessing: Optional[shared.xml_classes.dc.v2_g_ci_common_types.ProcessingType] = None¶
- evtarget_voltage: Optional[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType] = None¶
- scheduled_dc_clreq_control_mode: Optional[shared.xml_classes.dc.v2_g_ci_dc.ScheduledDcClreqControlMode] = None¶
- class evcc.ev_controller.EVDataModel(_observers: List[shared.gui.GUI] = <factory>, notification_type: Optional[str] = None, supported_app_protocols: Optional[List[shared.xml_classes.app_protocol.v2_g_ci_app_protocol.AppProtocolType]] = None, evccid: Optional[bytes] = None, authorization_services: Optional[List[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType]] = None, selected_authorization_service: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType] = None, eim_areq_authorization_mode: Optional[object] = None, pn_c_areq_authorization_mode: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.PnCAreqAuthorizationModeType] = None, supported_service_ids: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceIdlistType] = None, service_id: Optional[int] = None, selected_energy_transfer_service: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.SelectedServiceType] = None, selected_vaslist: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.SelectedServiceListType] = None, evprocessing: Optional[shared.xml_classes.common_messages.v2_g_ci_common_types.ProcessingType] = None, charge_progress: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ChargeProgressType] = None, evpower_profile: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.EvpowerProfileType] = None, bpt_channel_selection: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ChannelSelectionType] = None)¶
Bases:
object
Data model containing anything related to the EV.
- attach(observer)¶
- authorization_services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType] = None¶
- bpt_channel_selection: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ChannelSelectionType] = None¶
- charge_progress: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ChargeProgressType] = None¶
- eim_areq_authorization_mode: Optional[object] = None¶
- evccid: Optional[bytes] = None¶
- evpower_profile: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.EvpowerProfileType] = None¶
- evprocessing: Optional[shared.xml_classes.common_messages.v2_g_ci_common_types.ProcessingType] = None¶
- notification_type: str = None¶
- notify()¶
- pn_c_areq_authorization_mode: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.PnCAreqAuthorizationModeType] = None¶
- selected_authorization_service: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType] = None¶
- selected_energy_transfer_service: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.SelectedServiceType] = None¶
- selected_vaslist: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.SelectedServiceListType] = None¶
- service_id: Optional[int] = None¶
- supported_app_protocols: List[shared.xml_classes.app_protocol.v2_g_ci_app_protocol.AppProtocolType] = None¶
- supported_service_ids: Optional[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceIdlistType] = None¶
- class evcc.ev_controller.IDcEVController¶
- class evcc.ev_controller.IEVController(data_model: <function dataclass at 0x7f2b29136ee0>, virtual_mode: bool = None, state_machine: shared.physical_interface.PhysicalInterface = <shared.physical_interface.PhysicalInterface object at 0x7f2b291cd8b0>, udp_port: int = None)¶
Bases:
shared.controller.ControllerInterface
- get_config()¶
- set_network_parameters()¶
- udp_port: int = None¶
evcc.ev_dummy_controller module¶
- class evcc.ev_dummy_controller.EVDummyController¶
Bases:
evcc.ev_controller.IEVController
Class that implements the DcBptDynamic EV controller.
- data_model: dataclass¶
- set_machine()¶
Configures the 61851 state machine.
- Returns
- class evcc.ev_dummy_controller.EVEmulator(_observers: List[shared.gui.GUI] = <factory>, notification_type: str = None, supported_app_protocols: List[shared.xml_classes.app_protocol.v2_g_ci_app_protocol.AppProtocolType] = None, evccid: Union[bytes, NoneType] = None, authorization_services: List[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType] = None, selected_authorization_service: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.AuthorizationType, NoneType] = None, eim_areq_authorization_mode: Union[object, NoneType] = None, pn_c_areq_authorization_mode: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.PnCAreqAuthorizationModeType, NoneType] = None, supported_service_ids: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ServiceIdlistType, NoneType] = None, service_id: Union[int, NoneType] = None, selected_energy_transfer_service: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.SelectedServiceType, NoneType] = None, selected_vaslist: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.SelectedServiceListType, NoneType] = None, evprocessing: Union[shared.xml_classes.dc.v2_g_ci_common_types.ProcessingType, NoneType] = None, charge_progress: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ChargeProgressType, NoneType] = None, evpower_profile: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.EvpowerProfileType, NoneType] = None, bpt_channel_selection: Union[shared.xml_classes.common_messages.v2_g_ci_common_messages.ChannelSelectionType, NoneType] = None, bpt_dc_cpdreq_energy_transfer_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptDcCpdreqEnergyTransferMode, NoneType] = None, dc_cpdreq_energy_transfer_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.DcCpdreqEnergyTransferMode, NoneType] = None, evtarget_voltage: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = None, evpresent_voltage: shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType = None, bpt_dynamic_dc_clreq_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptDynamicDcClreqControlMode, NoneType] = None, dynamic_dc_clreq_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.DynamicDcClreqControlMode, NoneType] = None, bpt_scheduled_dc_clreq_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.BptScheduledDcClreqControlMode, NoneType] = None, scheduled_dc_clreq_control_mode: Union[shared.xml_classes.dc.v2_g_ci_dc.ScheduledDcClreqControlMode, NoneType] = None, clreq_control_mode: Union[shared.xml_classes.dc.v2_g_ci_common_types.ClreqControlMode, NoneType] = None, timestamp: float = 0, timestep: float = 0, minimum_soc: int = 0, maximum_soc: int = 100, departure_time: int = <property object at 0x7f2b24112a90>, _departure_time: int = 0, battery_capacity: shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType = <property object at 0x7f2b24112900>, target_soc: int = <property object at 0x7f2b24112ae0>, _target_soc: int = 0, present_soc: int = <property object at 0x7f2b241128b0>, evmaximum_voltage: shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType = None, evminimum_voltage: shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType = None, current_energy: Union[float, NoneType] = None, soc: <built-in function array> = None, max_charge_power: <built-in function array> = None, max_discharge_power: <built-in function array> = None, elapsed_time: float = 0, state: str = <property object at 0x7f2b24112a40>, consumed_energy: int = 0, provided_energy: int = 0, total_energy: int = 0, evsemaximum_discharge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = <property object at 0x7f2b24112b80>, _evsemaximum_discharge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = RationalNumberType(exponent=0, value=0), evsemaximum_charge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = <property object at 0x7f2b24112b30>, evmaximum_discharge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = <property object at 0x7f2b24112c20>, _evmaximum_discharge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = RationalNumberType(exponent=0, value=0), evmaximum_charge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = <property object at 0x7f2b24112bd0>, _evmaximum_charge_power: Union[shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType, NoneType] = RationalNumberType(exponent=0, value=0))¶
Bases:
evcc.ev_controller.DcEVDataModel
- property battery_capacity¶
- consumed_energy: int = 0¶
- current_energy: Optional[float] = None¶
- property departure_time¶
- elapsed_time: float = 0¶
- energy_evolution = [0]¶
- property evmaximum_charge_power¶
- property evmaximum_discharge_power¶
- evmaximum_voltage: shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType = None¶
- evminimum_voltage: shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType = None¶
- evpresent_voltage: shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType = None¶
- property evsemaximum_charge_power¶
- property evsemaximum_discharge_power¶
- get_bpt_dc_cpdreq_energy_transfer_mode() shared.xml_classes.dc.v2_g_ci_dc.BptDcCpdreqEnergyTransferMode ¶
Returns BptDcCpdreqEnergyTransferMode request.
- Returns
BptDcCpdreqEnergyTransferMode – the request.
- get_bpt_dynamic_dc_clreq_control_mode() shared.xml_classes.dc.v2_g_ci_dc.BptDynamicDcClreqControlMode ¶
Returns BptDynamicDcClreqControlMode request.
- Returns
BptDynamicDcClreqControlMode – the request
- get_current_energy() float ¶
Gets the current energy value.
- Returns
float - current energy.
- get_dynamic_sereq_control_mode() shared.xml_classes.common_messages.v2_g_ci_common_messages.DynamicSereqControlModeType ¶
Returns DynamicSereqControlModeType request.
- Returns
DynamicSereqControlModeType – the message.
- get_max_charge_parameters() -> (<class 'shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType'>, <class 'shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType'>)¶
Gets max charge power and max current from a vehicle’s charging data.
- Returns
(DcRationalNumberType, DcRationalNumberType) – max charge power and max current.
- get_max_discharge_parameters() -> (<class 'shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType'>, <class 'shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType'>)¶
Gets max discharge power and max discharge current from a vehicle’s charging data.
- Returns
(DcRationalNumberType, DcRationalNumberType) – max discharge power and max discharge current.
- get_max_energy() float ¶
Gets max energy.
- Returns
float - max energy.
- get_min_charge_parameters() -> (<class 'shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType'>, <class 'shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType'>)¶
Gets min charge power and min current from a vehicle’s charging data.
- Returns
(DcRationalNumberType, DcRationalNumberType) – min charge power and min current.
- get_min_discharge_parameters() -> (<class 'shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType'>, <class 'shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType'>)¶
Gets min discharge power and min discharge current from a vehicle’s charging data.
- Returns
(DcRationalNumberType, DcRationalNumberType) – min discharge power and min discharge current.
- get_min_energy() float ¶
Gets min energy.
- Returns
float - min energy.
- get_target_energy() float ¶
Gets target energy.
- Returns
float - target energy.
- get_voltage_limits() -> (<class 'shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType'>, <class 'shared.xml_classes.dc.v2_g_ci_common_types.RationalNumberType'>)¶
Returns the EV voltage limits.
- Returns
(DcRationalNumberType, DcRationalNumberType) – max and min limits.
- max_charge_power: numpy.array = None¶
- max_discharge_power: numpy.array = None¶
- maximum_soc: int = 100¶
- minimum_soc: int = 0¶
- power_evolution = [0]¶
- property present_soc¶
- provided_energy: int = 0¶
- soc: numpy.array = None¶
- soc_evolution = [0]¶
- property state¶
- property target_soc¶
- timestamp: float = 0¶
- timestep: float = 0¶
- total_energy: int = 0¶
- update_charging_status(present_current, present_voltage, time_step)¶
Updates the battery values.
- Parameters
present_current – The present current.
present_voltage – The present voltage.
time_step – The time spent between two ticks of charge.
- Returns
- evcc.ev_dummy_controller.battery_voltage_profile(soc) float ¶
The battery profile.
- Parameters
soc – State of charge
- Returns
float – the present voltage.
evcc.ev_gui module¶
- class evcc.ev_gui.EVMainWindow¶
Bases:
shared.gui.GUI
- check_state_box(state)¶
Checks the boxes depending on the current state.
- Returns
- connect_signals()¶
Connects data to their respective widgets.
- Returns
- reset_check_boxes() None ¶
Resets state checkboxes.
- Returns
- retranslate_ui(main_window)¶
Retranslates some texts.
- Parameters
main_window – The window containing all the widgets.
- Returns
- run_ev() None ¶
Runs charging session from EV side.
- Returns
- set_ev_settings()¶
Sets EV settings.
- Returns
- setup_ui(main_window)¶
Sets the UI.
- Parameters
main_window – The window containing all the widgets.
- Returns
- startup_ev()¶
- stop_ev() None ¶
Stops the EV.
- Returns
- update(subject)¶
Updates the UI.
- Returns
- update_soc() None ¶
Updates the present soc.
- Returns
- update_timer()¶
Updates the departure time timer.
- Returns
evcc.ev_session module¶
- class evcc.ev_session.EVSession(controller)¶
Bases:
shared.session.CommunicationSession
Represents a EV side communication session. Built with a state machine.
- charging()¶
- is_state_exitable(state)¶
- processing()¶
- stop_loop()¶
- stop_session()¶
- class evcc.ev_session.EVSessionParameters(session_id: bytes = None, ip_address: str = None, port: int = None, charging: bool = False, stop_session: bool = False, processing: bool = False)¶
Bases:
shared.session.SessionParameters
- charge_param_discovery_req = None¶
- charging: bool = False¶
- chosen_app_protocol = None¶
- evse_id = None¶
- processing: bool = False¶
- reaction = None¶
- selected_authorization_service = None¶
- selected_payment_option = None¶
- stop_session: bool = False¶
evcc.ev_session_handler module¶
- class evcc.ev_session_handler.EVSessionHandler¶
Bases:
shared.session_handler.SessionHandler
This is a class that represents EV’s session handler.
- get_config()¶
Gets the needed configuration to run a SessionHandler.
- Returns
- set_network_parameters()¶
Sets the settings according to the configuration file.
- Returns
- start_new_session(controller)¶
Starts a new communication session.
- Parameters
controller – The controller that will handle the data.
- Returns
- property udp_port¶
evcc.event_handler module¶
evcc.start_ev module¶
- evcc.start_ev.start_ev(controller) None ¶
Starts an EV session.
- Parameters
controller – The controller that will handle the data.
- Returns
evcc.tcp_client module¶
- class evcc.tcp_client.TCPClientProtocol(session_handler)¶
Bases:
asyncio.protocols.Protocol
This is the TCP protocol used by EV client to communicate with the SECC.
- async ainput() None ¶
Awaits the ‘return’ key press to stop a session.
- Returns
- build_session_stop_message() shared.messages.EXIMessage ¶
Builds a SessionStopMessage.
- Returns
SessionStopMessage – the message to stop a session.
- build_supported_app_protocol_message() shared.messages.SupportedAppMessage ¶
Builds the SupportedAppProtocolMessage.
- Returns
SupportedAppMessage – the actual message.
- connection_lost(exc: Optional[Exception]) None ¶
Called when the connection is lost or closed.
The argument is an exception object or None (the latter meaning a regular EOF is received or the connection was aborted or closed).
- connection_made(transport: asyncio.transports.BaseTransport) None ¶
Called when a connection is made.
The argument is the transport representing the pipe connection. To receive data, wait for data_received() calls. When the connection is closed, connection_lost() is called.
- data_received(data: bytes) None ¶
Called when some data is received.
The argument is a bytes object.
- eof_received() Optional[bool] ¶
Called when the other end calls write_eof() or equivalent.
If this returns a false value (including None), the transport will close itself. If it returns a true value, closing the transport is up to the protocol.
- get_current_state() str ¶
Returns the current 15118 state.
- Returns
str - the current state.
- process_incoming_message(v2gtp_message: shared.messages.V2GTPMessage) None ¶
Processes the incoming message.
- Parameters
v2gtp_message – The incoming message
- Returns
- process_reaction(reaction) None ¶
Depending on the reaction generated by the incoming message, will send an answer to the server.
- Parameters
reaction – The reaction resulting from the incoming message.
- Returns
- send(xml_string, message, request)¶
Sends a message and decorates it logger messages about the contents.
- Parameters
xml_string – The XML string.
message – The bytes type message.
request – The XML object.
- Returns
- evcc.tcp_client.get_ssl_context() ssl.SSLContext ¶
Returns an SSL context suitable for 15118 communication.
- Returns
ssl.SSLContext – the security context.
- evcc.tcp_client.get_tcp_client(tcp_server_address: str, tcp_server_port: int, session_handler: shared.session_handler.SessionHandler)¶
Returns the TCP client used in the 15118 communication.
- Parameters
tcp_server_address – The TCP server address.
tcp_server_port – The TCP server port.
session_handler – The session handler that manages the sessions.
- Returns
transport, protocol – the objects associated with the TCP connection.
evcc.udp_client module¶
- class evcc.udp_client.UDPClientProtocol¶
Bases:
asyncio.protocols.DatagramProtocol
This is the protocol used by the SECC discovery protocol client.
- connection_lost(exc: Optional[Exception]) None ¶
Called when the connection is lost or closed.
The argument is an exception object or None (the latter meaning a regular EOF is received or the connection was aborted or closed).
- connection_made(transport: asyncio.transports.BaseTransport) None ¶
Called when a connection is made.
The argument is the transport representing the pipe connection. To receive data, wait for data_received() calls. When the connection is closed, connection_lost() is called.
- datagram_received(data: bytes, addr: Tuple[str, int]) None ¶
Called when some datagram is received.
- error_received(exc: Exception) None ¶
Called when a send or receive operation raises an OSError.
(Other than BlockingIOError or InterruptedError.)
- async send_SDP_req()¶
- evcc.udp_client.get_udp_client(udp_port, interface)¶
Returns the UDP client used in 15118 communication.
- Parameters
udp_port – The UDP port for the client.
interface – The interface that will be used for the connection.
- Returns
transport, protocol – the objects associated with the UDP connection.