CLI and data exporter for the myEKZ customer portal.
Project description
ekzexport
Exporter for EKZ data provided on the http://my.ekz.ch customer portal.
Installing
Get it from PyPI:
$ python -m pip install ekzexport
You can then use the ekzexport CLI.
Example Usage
To authenticate, you can either put your credentials into a JSON file
ekzexport.json in your home directory:
{
"user": "myusername",
"password": "mypassword"
}
If you're using a TOTP token via an authenticator app, you can create a dedicated token to use. Click on the "can't scan QR code" link to get the code to manually enter and put it in the JSON file so it looks similar to this:
{
"user": "myusername",
"password": "mypassword",
"otp": "AAAA BBBB CCCC DDDD EEEE FFFF GGGG HHHH"
}
Instead of the JSON config file, you can also use the --user and --password (and --otp)
CLI options directly. The following examples use a JSON file.
[!IMPORTANT] If you have enabled SMS as a second factor authentication, myEKZ will send you a code each time you run ekzexport. While you can enter it each time, it is more convenient to disable SMS authentication in the account settings or use a TOTP authenticator app.
First, list your contracts to find the installation ID of interest:
$ ekzexport overview
Contracts
╷ ╷ ╷
Installation ID │ Address │ Move-in Date │ Move-out Date
╺━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━╸
123 │ Somestreet 1, 8000 Someplace │ 2010-01-01 │ 2020-01-01
456 │ Some Other Street 2, 8001 Otherplace │ 2020-01-02 │
╵ ╵ ╵
With the installation ID, we can then figure out what kind of data is available for your account:
$ ekzexport installation 456 properties
Properties
╷ ╷
Property │ From │ Until
╺━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━┿━━━━━━━━━━━━╸
CONTRACT │ 2020-01-02 │ 2024-05-01
SMART_METER │ 2020-01-02 │ 2024-05-01
VERB_15MIN │ 2020-01-02 │ 2024-05-01
VERB_TAG_EDM │ 2020-01-02 │ 2024-05-01
VERB_TAG_METER │ 2020-01-02 │ 2024-05-01
╵ ╵
If you do not see any entry for 15 minute values, you likely have to enable granular data on myEKZ first.
You can print consumption data to get an idea what is available:
$ ekzexport installation 456 data --type PK_VERB_TAG_EDM --from 2024-04-01 --to 2024-04-02 show
Consumption Data
╷ ╷ ╷
Time │ kWh │ Tariff │ Status
╺━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━┿━━━━━━━━┿━━━━━━━━╸
2024-04-01 00:00:00 │ 12.123 │ NT │ VALID
2024-04-01 00:00:00 │ 10.123 │ HT │ VALID
2024-04-02 00:00:00 │ 12.678 │ NT │ VALID
2024-04-02 00:00:00 │ 8.678 │ HT │ VALID
╵ ╵ ╵
But the more interesting use-case is to export data. Available exporters are:
csvto sync data to a CSV file in the same format as myEKZ offersinfluxdbto sync data to an InfluxDB 2.x server
The CLI's help command will provide further detail on the exporter-specific options, for example:
$ ekzexport installation 456 data export csv --help
Running Exports Periodically
If you're using a Linux distribution using systemd, you can create a service
and trigger to run the export periodically. To do so, create
/etc/systemd/system/ekzexport.service with something like:
[Unit]
Description=Pull EKZ data
[Service]
Type=oneshot
ExecStart=/path/to/ekzexport/venv/bin/ekzexport installation 456 data export csv -f data.csv
WorkingDirectory=/path/to/ekzexport
This example assumes you created a Python virtualenv to install ekzexport
in (which keeps the dependencies local in the venv). You can also
set up an OnFailure hook to send emails in case the export fails.
A corresponding timer can look something like this in /etc/systemd/system/ekzexport.timer:
[Unit]
Description=Run ekzexport once a day
[Timer]
OnCalendar=*-*-* 04:00:00
RandomizedDelaySec=30m
Persistent=true
[Install]
WantedBy=timers.target
Please keep the randomized delay to avoid myEKZ getting a flood of requests at exactly 04:00 every night. Remember to enable and start the timer.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ekzexport-0.2.0.tar.gz.
File metadata
- Download URL: ekzexport-0.2.0.tar.gz
- Upload date:
- Size: 32.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8aedf0f599d4edd811705aa64e9b34e4cd05ee1c9fe7bb3efedba0e148307c0
|
|
| MD5 |
7f6e1a770d8fc7e0846224f673298378
|
|
| BLAKE2b-256 |
8bbe9e7e5dadbf0984636b657106d17ddf6eb0edb28dd9465c54c04320f14b5f
|
File details
Details for the file ekzexport-0.2.0-py3-none-any.whl.
File metadata
- Download URL: ekzexport-0.2.0-py3-none-any.whl
- Upload date:
- Size: 20.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
652ae9b79fc6d55ba4cf34ff51a050b7780023c553013162fb62db2624088a12
|
|
| MD5 |
bf7c4a9a8fd01581f698037b12375f3d
|
|
| BLAKE2b-256 |
049198838dcb25ad8bc29f44b448831abccd210f6c1c7d777ff4a82b3b89e6a7
|