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
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.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2d699a42d4de59b15bab875d16a2c66f83b5839a8addf8f0df847a5195fa811 |
|
MD5 | a67b70a02a03411f9de75242a1e18650 |
|
BLAKE2b-256 | 5bb3168bcb6126e3027a801cccfc47102fb020e006503c632a70925bbf0846aa |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8946c77830cc7bc943313fb339d75876977fe4a68ed35fafb16780e27ed213f2 |
|
MD5 | ac97079b768dab59c193e839cb57fd21 |
|
BLAKE2b-256 | fd7329473f645b0a11f602fa413448c6a1a048ebc3e38587783988b3d2a8d103 |