- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
123 lines
4.8 KiB
ReStructuredText
123 lines
4.8 KiB
ReStructuredText
.. _everest_modules_handwritten_Iso15118InternetVas:
|
|
|
|
.. *******************************************
|
|
.. Iso15118InternetVas
|
|
.. *******************************************
|
|
|
|
.. warning::
|
|
This module and its helper scripts are **examples** and not intended for
|
|
production use without modification. The provided ``vas-internet-setup.sh``
|
|
script is a starting point and may not cover all edge cases for your
|
|
specific hardware and network environment. It is the user's responsibility
|
|
to ensure the configuration is secure and robust.
|
|
|
|
This module implements the ISO 15118-2 Value Added Service (VAS) for providing
|
|
internet access to a connected electric vehicle (EV). When an EV requests this
|
|
service, the module configures the charger's networking to share its internet
|
|
connection with the EV over the power line communication (PLC) interface.
|
|
|
|
How it works
|
|
============
|
|
|
|
1. **Service Announcement**: The module advertises the availability of the
|
|
Internet Access service (Service ID 3) to the EV, offering HTTP and/or HTTPS
|
|
access based on the module's configuration.
|
|
2. **Service Selection**: If the EV selects this service, the module initiates
|
|
the network setup.
|
|
3. **Network Setup**: The module executes a helper script,
|
|
``vas-internet-setup.sh``, to configure all necessary networking components.
|
|
The script's behavior depends on the configuration and the services selected
|
|
by the EV:
|
|
|
|
- It enables IPv6 forwarding and sets up NAT using ``ip6tables``.
|
|
- If IPv4 support is enabled in the configuration, it also:
|
|
|
|
- Starts a DHCPv4 server (``udhcpd``) on the EV-facing network
|
|
interface (``ev_interface``). This DHCP server provides the EV with an
|
|
IPv4 address and DNS server information.
|
|
- Enables IPv4 forwarding and NAT using ``iptables``.
|
|
|
|
- It starts a Router Advertisement Daemon (``radvd``) on the
|
|
``ev_interface`` to enable the EV to configure an IPv6 address using SLAAC.
|
|
This also includes advertising Recursive DNS Servers (RDNSS) for IPv6.
|
|
- The module determines which ports to open based on the parameter sets
|
|
(HTTP, HTTPS) selected by the EV. The forwarding is then restricted to
|
|
allow only TCP traffic on the selected ports (80 for HTTP, 443 for HTTPS).
|
|
- The example script uses public DNS servers (Google's 8.8.8.8 for IPv4
|
|
and 2001:4860:4860::8888 for IPv6). This can be changed in the script.
|
|
4. **Session Teardown**: When the charging session ends (signaled by the
|
|
``evse_manager``), the module calls the same script to automatically tear
|
|
down the network configuration, stopping the services and removing all
|
|
forwarding and NAT rules.
|
|
|
|
Requirements
|
|
============
|
|
|
|
Software
|
|
--------
|
|
|
|
The module relies on the ``vas-internet-setup.sh`` script, which requires the
|
|
following external tools to be available in the system's PATH:
|
|
|
|
- ``radvd``: For IPv6 Router Advertisements.
|
|
- ``ip6tables``: For setting up IPv6 NAT and forwarding rules.
|
|
- ``ip`` (from the ``iproute2`` package): For network interface configuration.
|
|
- ``iptables`` (optional, for IPv4): For IPv4 NAT and forwarding rules.
|
|
- ``udhcpd`` (optional, for IPv4): For the DHCPv4 server (typically provided by
|
|
BusyBox).
|
|
|
|
The EVerest framework must be run with sufficient privileges to allow these
|
|
tools to modify network settings. This typically means running as the ``root``
|
|
user.
|
|
|
|
Hardware
|
|
--------
|
|
|
|
- A working internet connection on the charging station.
|
|
- A network interface that is connected to the internet (e.g., ``eth0``, ``wwan0``).
|
|
- A network interface for the Power Line Communication (PLC) modem that
|
|
communicates with the EV (e.g., a HomePlug Green PHY modem connected via
|
|
Ethernet).
|
|
|
|
Configuration
|
|
=============
|
|
|
|
.. list-table::
|
|
:widths: 25 75
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Description
|
|
* - ``ev_interface``
|
|
- The name of the network interface connected to the EV via the PLC modem.
|
|
* - ``modem_interface``
|
|
- The name of the network interface connected to the internet.
|
|
* - ``http_support``
|
|
- (boolean) Whether to announce support for HTTP (Port 80). Defaults to `true`.
|
|
* - ``https_support``
|
|
- (boolean) Whether to announce support for HTTPS (Port 443). Defaults to `true`.
|
|
|
|
Example Configuration
|
|
---------------------
|
|
|
|
.. code-block:: yaml
|
|
|
|
- module: Iso15118InternetVas
|
|
config:
|
|
ev_interface: eth1
|
|
modem_interface: eth0
|
|
http_support: true
|
|
https_support: true
|
|
|
|
Provided Interfaces
|
|
===================
|
|
|
|
- **iso15118_vas**: Implements the ``ISO15118_vas`` interface to handle service
|
|
discovery and selection from the EV.
|
|
|
|
Required Interfaces
|
|
===================
|
|
|
|
- **evse_manager**: The module optionally connects to an ``evse_manager`` to
|
|
monitor the charging session. When the session finishes, it triggers the
|
|
teardown of the internet connection for the EV. |