Skip to main content

A Python package for remotely controlling Vattenfall EV charging stations

Project description

PyInCharge Logo

⚡ PyInCharge

An unofficial Python library for controlling your Vattenfall InCharge charging stations 🔌

Because manually walking to your EV charger is so 2024 🚗💨

Welcome to this unofficial, half-baked but working (on my machine) Python package for controlling your Vattenfall InCharge charging stations. In essence, this is a Python wrapper around the Vattenfall InCharge web application.

It is born out of the frustration of not being able to control my charging station via Home Assistant, so I set out to develop a Python package with which you at least have some control over your station.

Right now, it has these features:

  • Automatic-Login: Automates the login process in a not so neat but working way
  • Remote Start: Start charging your EV without leaving your computer
  • Remote Stop: Stop charging your EV without leaving your computer either
  • Remote Unlock: Automatically unlock your EV charging cable
  • Set light intensity: Useless but hey why not
  • Reset: Reset your charging station

🏗️ Installation

pip install py-incharge

Or from source:

git clone https://github.com/Swopper050/py-incharge.git
cd py-incharge
pip install -e .

🎮 Quick Start

Usage (commands)

import logging
from py_incharge import InChargesend_remote_start

# Optional, to see the logging and what's going on
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
)

client = InCharge(email="your@email.com", password="your_password")
client.login()  # Required for other calls to work

# Charge your car like it's 2025
client.start_transaction(station_name="EVB-12345678", rfid="123456abcdef")

# Other commands
client.unlock_connector(station_name="EVB-12345678")
client.stop_transaction(station_name="EVB-12345678", transaction_id=1)
client.set_light_intensity(station_name="EVB-12345678", "90")
client.trigger_status_notification(station_name="EVB-12345678")
client.reset(mode="Soft")  # Careful with this one

# Logout to finish the session
client.logout()

🕵️ Find the information you need in Vattenfall

In order to work with this library you need 4 things:

  1. Your email. I really hope you know this one.
  2. Your password. Same.

These are your credentials you use to login at the Vattenvall InCharge portal:

Vattenfall InCharge Login Page

  1. The name of your charging station, something like EVB-P1234567. After logging in to the portal you can find that here: Find station name

  2. The RFID of your charging card. The RFID is something like 12345AB12345C67 (not the same as your card number, which is something like for example NL-NUO-A01234567-A). You can your RFID here: Find RFID

With these 4 variables (email, password, station name and RFID), you can use the package!

🌟 How It Works

  1. Login: Mimics the login flow to obtain a 'bearer token', used to authenticate further requests.

  2. Send Commands: Now you can send commands like start_transaction(...) or unlock_connector(...). For every call roughly the following steps are executed:

    • A new ticket ID is requested.
    • Via a websocket connection this ticket is validated.
    • The command with specific parameters (station_name, connector_id, transaction_id, etc.) is send to the websocket.
    • The reponse status is validated.
  3. Profit: Your car starts (or stops, or something else) charging! 🎉

🚨 Important Notes

  • Chrome Required: This package uses Chrome for authentication
  • Credentials: Keep your credentials safe and never commit them to version control
  • Rate Limits: Don't spam the API (be nice to the servers), especially take time between commands!
  • Testing: Always test in a safe environment first

🤝 Contributing

Found a bug? Want to add a feature? PRs are welcome! Just make sure to:

  1. Write clean, documented code
  2. Follow the existing code style
  3. Add tests (not really, but when you're at it, feel free to test my code too ;) )
  4. Update this README if needed

📄 License

MIT License - feel free to use this for your own EV charging projects


Disclaimer: This is an unofficial tool and is not affiliated with Vattenfall. Use at your own risk and always follow local regulations regarding EV charging.

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

py_incharge-0.2.0.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_incharge-0.2.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file py_incharge-0.2.0.tar.gz.

File metadata

  • Download URL: py_incharge-0.2.0.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for py_incharge-0.2.0.tar.gz
Algorithm Hash digest
SHA256 194537db27e2c4ec73e41b96a0b45fe567ed72f911e78eb584bbdf354ca3fe56
MD5 49f45c4222b6da08f525ca984fc2e75f
BLAKE2b-256 494430d270ca92fbe17465da91ede8dc0d265a30fb1a31d8c5590fbd8c1cc4f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_incharge-0.2.0.tar.gz:

Publisher: publish.yml on Swopper050/py-incharge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file py_incharge-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: py_incharge-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for py_incharge-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c17db1e54110d472d81d7c84afbde3cebb4a89b9a1af3076a3201f8643885ee3
MD5 60ae97737ae6e3682c5e5e482277d7e6
BLAKE2b-256 c1101f4c545899a3b2bfa7b726511420b99d0c4e43ef41e569930d5dc4747613

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_incharge-0.2.0-py3-none-any.whl:

Publisher: publish.yml on Swopper050/py-incharge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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