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):
Install mitmproxy.
Start mitmproxy at least once to generate the certificates: mitmproxy –listen-port 8090.
Install the mitmproxy certificate as Trusted Root Certificate (you can find it in the .mitmproxy folder in your User Account).
Start mitmproxy mitmproxy –listen-port 8090 –insecure and set it as the OS Global Proxy using Internet Options.
If all is configured properly, you can now start the Service Installer and login using your Service Account.
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.
Configure these credentials as specified above.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.