Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- 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
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
.. _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.
|
||||
Reference in New Issue
Block a user