Skip to main content

API Client for Alfen Eve EV charging units.

Project description

API Client for Alfen Eve EV charging units.

Installation

As a CLI tool:

$ pip install alfeneve[cli]

As a library:

$ pip install alfeneve

Configuration

The CLI tool uses omniconf . This allows you to provide any CLI argument using a file or through the environment (or a combination).

Directly as arguments:

$ alfen-eve --alfen-endpoint https://192.168.1.23 --alfen-username admin --alfen-password foo

Using a YAML file (make sure to install PyYAML, or use omniconf[yaml]):

$ cat settings.yaml
alfen:
  endpoint: https://192.168.1.23
  username: admin
  password: foo

 $ alfen-eve --yaml-filename settings.yaml

Using environment variables:

$ ALFEN_ENDPOINT=https://192.168.1.23 ALFEN_USERNAME=admin ALFEN_PASSWORD=foo alfen-eve

API Credentials

Alfen ships a tool to allow you to configure your Alfen charging unit called ACE Service Installer (or just Service Installer). This tool requires a Service Account that you can request from Alfen.

The API doesn’t actually use this account directly though. It seems that the API credentials are hard-coded, and the Service Installer either ships with this password, or can infer or request this password from Alfen. Regardless, you can use the Service Installer tool to sniff out the credentials.

At this time this process is a bit involved, and requires you to know how to insert yourself as a proxy between the Service Installer and your charging unit on Windows. The broad steps are as follows (using mitmproxy):

  1. Install mitmproxy.

  2. Start mitmproxy at least once to generate the certificates: mitmproxy –listen-port 8090.

  3. Install the mitmproxy certificate as Trusted Root Certificate (you can find it in the .mitmproxy folder in your User Account).

  4. Start mitmproxy mitmproxy –listen-port 8090 –insecure and set it as the OS Global Proxy using Internet Options.

  5. If all is configured properly, you can now start the Service Installer and login using your Service Account.

  6. Connect to your Alfen charger, and look in the mitmproxy window. There should be a request to /api/login. You can find the username and password in this request.

  7. Configure these credentials as specified above.

  8. Make sure to remove mitmproxy as your OS Global Proxy.

Examples

Use as a CLI tool:

$ alfen-eve --mode categories
category
----------
generic
generic2
accelero
temp
states
meter1
meter4
leds
ocpp
display
comm
MbusTCP

$ alfen-eve --mode properties --properties-category meter4
name                                   value  id       cat
-----------------------------  -------------  -------  ------
OD_sensOptionalEnergyMeter4      5            5217_0   meter4
OD_sensEnergyMeterType4          1            5218_0   meter4
meter4_voltageL1N              225.1          5221_3   meter4
meter4_voltageL2N              225.7          5221_4   meter4
meter4_voltageL3N              228.6          5221_5   meter4
...

Use as a library:

from alfeneve.alfen import Alfen
from pprint import pprint

with Alfen("https://192.168.1.23", ("admin", "foo")) as eve:

    cats = eve.categories()
    pprint(cats)
    # ['generic',
    #  'generic2',
    #  'accelero',
    #  'temp',
    #  'states',
    #  'meter1',
    #  'meter4',
    #  'leds',
    #  'ocpp',
    #  'display',
    #  'comm',
    #  'MbusTCP']

    properties = eve.properties(category="generic")
    pprint(list(properties))
    # [<AlfenProperty(name=OD_manufacturerDeviceName, value=NG910, id=1008_0, cat=generic)>,
    #  <AlfenProperty(name=OD_manufacturerHardwareVersion, value=G0, id=1009_0, cat=generic)>,
    #  <AlfenProperty(name=OD_manufacturerSoftwareVersion, value=4.8.0-3168, id=100A_0, cat=generic)>,
    #  ... ]

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

alfeneve-0.6.1.tar.gz (15.6 kB view hashes)

Uploaded Source

Built Distribution

alfeneve-0.6.1-py3-none-any.whl (13.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page