Skip to main content

Module for interacting with Wallbox EV charger api

Project description

wallbox

Python Module interface for Wallbox EV chargers api

Requirements

Python 3.7 or older Python modules "requests>=2.22.0", "simplejson>=3.16.0"

Python module "aenum>=3.1.8"

Installation

pip install wallbox

Implemented methods

authenticate()

  • authenticates to the wallbox api.

getChargersList()

  • returns a list of chargers available to the account

getChargerStatus(chargerID)

  • returns a dictionary containing the charger status data

unlockCharger(chargerId)

  • unlocks charger

lockCharger(chargerId)

  • locks charger

setMaxChargingCurrent(chargerId, chargingCurrentValue)

  • sets charger Maximum Charging Current (Amps)

pauseChargingSession(chargerId)

  • pauses a charging session

resumeChargingSession(chargerId)

  • resumes a charging session

resumeSchedule(chargerId)

  • revert charger back to default schedule after manually starting a charging session, it reverts the charger back into "Eco Smart and Scheduled" charing mode, if used.

getSessionList(chargerId, startDate, endDate)

  • provides the list of charging sessions between startDate and endDate
  • startDate and endDate are provided in Python datetime format (i.e. 2021-05-04 08:41:12.765644)

setEnergyCost(chargerId, energyCost)

  • sets the energy cost for the charger per kWh

restartCharger(chargerId)

  • restarts (reboots) charger
  • a full charger reboot can take a few minutes. Charger status will be slow to update (ie: READY (10s) -> DISCONNECTED (90s) -> READY) CAUTION: use this method with care!! Check if the charger is not in the middle of a firmware upgrade as this can brick your charger.

setIcpMaxCurrent(chargerId, newIcpMaxCurrentValue)

  • sets charger Maximum ICP Current available (Amps).

Please note that the wallbox may refuse this action if not setup properly of if not supported by your model

getChargerSchedules(chargerId)

  • gets the currently configured schedules for that charger.

Response is a JSON structure like the following:

{
    'schedules': [{
        'chargerId': 42,
        'enable': 1,
        'max_current': 1,
        'max_energy': 0,
        'days': {'friday': true, 'monday': true, 'saturday': true, 'sunday': true, 'thursday': true,
                    'tuesday': true, 'wednesday': true},
        'start': '2100',
        'stop': '0500'
    }]
}

setChargerSchedules(chargerId, newSchedules)

  • Create or replace an existing schedule.

newSchedules is a dictionary like the following:

{
    'schedules': [{
        'id': 0,
        'chargerId': 42,
        'enable': 1,
        'max_current': 1,
        'max_energy': 0,
        'days': {'friday': true, 'monday': true, 'saturday': true, 'sunday': true, 'thursday': true,
                    'tuesday': true, 'wednesday': true},
        'start': '2100',
        'stop': '0500'
    }]
}

As schedules returned by getChargerSchedules are positional, the id field in the payload represents the position of the schedule to add/replace.

Simple example

from wallbox import Wallbox, Statuses
import time
import datetime

w = Wallbox("user@email", "password")

# Authenticate with the credentials above
w.authenticate()

# Print a list of chargers in the account
print(w.getChargersList())

# Get charger data for all chargers in the list, then lock and unlock chargers
for chargerId in w.getChargersList():
    chargerStatus = w.getChargerStatus(chargerId)
    print(f"Charger Status: {chargerStatus}")
    print(f"Lock Charger {chargerId}")
    endDate = datetime.datetime.now()
    startDate = endDate - datetime.timedelta(days = 30)
    sessionList = w.getSessionList(chargerId, startDate, endDate)
    print(f"Session List: {sessionList}")
    w.lockCharger(chargerId)
    time.sleep(10)
    chargerStatus = w.getChargerStatus(chargerId)
    print(f"Charger {chargerId} lock status {chargerStatus['config_data']['locked']}")
    print(f"Unlock Charger {chargerId}")
    w.unlockCharger(chargerId)
    time.sleep(10)
    chargerStatus = w.getChargerStatus(chargerId)
    print(f"Charger {chargerId} lock status {chargerStatus['config_data']['locked']}")
    # Set charger Energy Cost to 0.1€/kWh
    energyCost = w.setEnergyCost(chargerId, 0.1)
    print(f"Charger {chargerId} energy cost {energyCost['energy_price']} {energyCost['currency']['symbol']}")

    # Print the status the charger is currently in using the status id
    print(f"Charger Mode: {Statuses(chargerStatus['status_id']).name}")

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

wallbox-0.7.0.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

wallbox-0.7.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file wallbox-0.7.0.tar.gz.

File metadata

  • Download URL: wallbox-0.7.0.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for wallbox-0.7.0.tar.gz
Algorithm Hash digest
SHA256 f2d699a42d4de59b15bab875d16a2c66f83b5839a8addf8f0df847a5195fa811
MD5 a67b70a02a03411f9de75242a1e18650
BLAKE2b-256 5bb3168bcb6126e3027a801cccfc47102fb020e006503c632a70925bbf0846aa

See more details on using hashes here.

File details

Details for the file wallbox-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: wallbox-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for wallbox-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8946c77830cc7bc943313fb339d75876977fe4a68ed35fafb16780e27ed213f2
MD5 ac97079b768dab59c193e839cb57fd21
BLAKE2b-256 fd7329473f645b0a11f602fa413448c6a1a048ebc3e38587783988b3d2a8d103

See more details on using hashes here.

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