Fix Wallbox charger status (#68708)

Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
hesselonline 2022-04-06 12:05:50 +02:00 committed by GitHub
parent a5b919ec6b
commit ef14ae85c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 0 deletions

View file

@ -29,6 +29,8 @@ from .const import (
CONF_SERIAL_NUMBER_KEY,
CONF_SOFTWARE_KEY,
CONF_STATION,
CONF_STATUS_DESCRIPTION_KEY,
CONF_STATUS_ID_KEY,
DOMAIN,
)
@ -37,6 +39,39 @@ _LOGGER = logging.getLogger(__name__)
PLATFORMS = [Platform.SENSOR, Platform.NUMBER, Platform.LOCK]
UPDATE_INTERVAL = 30
# Translation of StatusId based on Wallbox portal code:
# https://my.wallbox.com/src/utilities/charger/chargerStatuses.js
CHARGER_STATUS: dict[int, str] = {
0: "Disconnected",
14: "Error",
15: "Error",
161: "Ready",
162: "Ready",
163: "Disconnected",
164: "Waiting",
165: "Locked",
166: "Updating",
177: "Scheduled",
178: "Paused",
179: "Scheduled",
180: "Waiting for car demand",
181: "Waiting for car demand",
182: "Paused",
183: "Waiting in queue by Power Sharing",
184: "Waiting in queue by Power Sharing",
185: "Waiting in queue by Power Boost",
186: "Waiting in queue by Power Boost",
187: "Waiting MID failed",
188: "Waiting MID safety margin exceeded",
189: "Waiting in queue by Eco-Smart",
193: "Charging",
194: "Charging",
195: "Charging",
196: "Discharging",
209: "Locked",
210: "Locked",
}
class WallboxCoordinator(DataUpdateCoordinator[dict[str, Any]]):
"""Wallbox Coordinator class."""
@ -86,6 +121,9 @@ class WallboxCoordinator(DataUpdateCoordinator[dict[str, Any]]):
data[CONF_LOCKED_UNLOCKED_KEY] = data[CONF_DATA_KEY][
CONF_LOCKED_UNLOCKED_KEY
]
data[CONF_STATUS_DESCRIPTION_KEY] = CHARGER_STATUS.get(
data[CONF_STATUS_ID_KEY], "Unknown"
)
return data

View file

@ -21,5 +21,6 @@ CONF_MAX_CHARGING_CURRENT_KEY = "max_charging_current"
CONF_LOCKED_UNLOCKED_KEY = "locked"
CONF_NAME_KEY = "name"
CONF_STATE_OF_CHARGE_KEY = "state_of_charge"
CONF_STATUS_ID_KEY = "status_id"
CONF_STATUS_DESCRIPTION_KEY = "status_description"
CONF_CONNECTIONS = "connections"

View file

@ -20,6 +20,7 @@ from homeassistant.components.wallbox.const import (
CONF_SERIAL_NUMBER_KEY,
CONF_SOFTWARE_KEY,
CONF_STATION,
CONF_STATUS_ID_KEY,
DOMAIN,
)
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
@ -33,6 +34,7 @@ test_response = json.loads(
json.dumps(
{
CONF_CHARGING_POWER_KEY: 0,
CONF_STATUS_ID_KEY: 161,
CONF_MAX_AVAILABLE_POWER_KEY: 25.2,
CONF_CHARGING_SPEED_KEY: 0,
CONF_ADDED_RANGE_KEY: 150,