Add wallbox Energy Price (#82039)

fixes undefined
This commit is contained in:
Hessel 2022-11-18 17:36:38 +01:00 committed by GitHub
parent ca6376488d
commit f7badfe441
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 0 deletions

View file

@ -21,8 +21,10 @@ from homeassistant.helpers.update_coordinator import (
)
from .const import (
CHARGER_CURRENCY_KEY,
CHARGER_CURRENT_VERSION_KEY,
CHARGER_DATA_KEY,
CHARGER_ENERGY_PRICE_KEY,
CHARGER_LOCKED_UNLOCKED_KEY,
CHARGER_MAX_CHARGING_CURRENT_KEY,
CHARGER_NAME_KEY,
@ -124,6 +126,12 @@ class WallboxCoordinator(DataUpdateCoordinator[dict[str, Any]]):
data[CHARGER_LOCKED_UNLOCKED_KEY] = data[CHARGER_DATA_KEY][
CHARGER_LOCKED_UNLOCKED_KEY
]
data[CHARGER_ENERGY_PRICE_KEY] = data[CHARGER_DATA_KEY][
CHARGER_ENERGY_PRICE_KEY
]
data[CHARGER_CURRENCY_KEY] = data[CHARGER_DATA_KEY][CHARGER_CURRENCY_KEY][
"code"
]
data[CHARGER_STATUS_DESCRIPTION_KEY] = CHARGER_STATUS.get(
data[CHARGER_STATUS_ID_KEY], ChargerStatus.UNKNOWN
)

View file

@ -15,8 +15,10 @@ CHARGER_CHARGING_TIME_KEY = "charging_time"
CHARGER_COST_KEY = "cost"
CHARGER_CURRENT_MODE_KEY = "current_mode"
CHARGER_CURRENT_VERSION_KEY = "currentVersion"
CHARGER_CURRENCY_KEY = "currency"
CHARGER_DATA_KEY = "config_data"
CHARGER_DEPOT_PRICE_KEY = "depot_price"
CHARGER_ENERGY_PRICE_KEY = "energy_price"
CHARGER_SERIAL_NUMBER_KEY = "serial_number"
CHARGER_PART_NUMBER_KEY = "part_number"
CHARGER_SOFTWARE_KEY = "software"

View file

@ -31,9 +31,11 @@ from .const import (
CHARGER_CHARGING_POWER_KEY,
CHARGER_CHARGING_SPEED_KEY,
CHARGER_COST_KEY,
CHARGER_CURRENCY_KEY,
CHARGER_CURRENT_MODE_KEY,
CHARGER_DATA_KEY,
CHARGER_DEPOT_PRICE_KEY,
CHARGER_ENERGY_PRICE_KEY,
CHARGER_MAX_AVAILABLE_POWER_KEY,
CHARGER_MAX_CHARGING_CURRENT_KEY,
CHARGER_SERIAL_NUMBER_KEY,
@ -127,6 +129,16 @@ SENSOR_TYPES: dict[str, WallboxSensorEntityDescription] = {
icon="mdi:ev-station",
name="Depot Price",
precision=2,
device_class=SensorDeviceClass.MONETARY,
state_class=SensorStateClass.MEASUREMENT,
),
CHARGER_ENERGY_PRICE_KEY: WallboxSensorEntityDescription(
key=CHARGER_ENERGY_PRICE_KEY,
icon="mdi:ev-station",
name="Energy Price",
precision=2,
device_class=SensorDeviceClass.MONETARY,
state_class=SensorStateClass.MEASUREMENT,
),
CHARGER_STATUS_DESCRIPTION_KEY: WallboxSensorEntityDescription(
key=CHARGER_STATUS_DESCRIPTION_KEY,
@ -188,3 +200,10 @@ class WallboxSensor(WallboxEntity, SensorEntity):
round(self.coordinator.data[self.entity_description.key], sensor_round),
)
return cast(StateType, self.coordinator.data[self.entity_description.key])
@property
def native_unit_of_measurement(self) -> str | None:
"""Return the unit of measurement of the sensor. When monetary, get the value from the api."""
if self.entity_description.device_class == SensorDeviceClass.MONETARY:
return cast(str, self.coordinator.data[CHARGER_CURRENCY_KEY])
return cast(str, self.entity_description.native_unit_of_measurement)

View file

@ -10,8 +10,10 @@ from homeassistant.components.wallbox.const import (
CHARGER_ADDED_RANGE_KEY,
CHARGER_CHARGING_POWER_KEY,
CHARGER_CHARGING_SPEED_KEY,
CHARGER_CURRENCY_KEY,
CHARGER_CURRENT_VERSION_KEY,
CHARGER_DATA_KEY,
CHARGER_ENERGY_PRICE_KEY,
CHARGER_LOCKED_UNLOCKED_KEY,
CHARGER_MAX_AVAILABLE_POWER_KEY,
CHARGER_MAX_CHARGING_CURRENT_KEY,
@ -42,10 +44,12 @@ test_response = json.loads(
CHARGER_NAME_KEY: "WallboxName",
CHARGER_DATA_KEY: {
CHARGER_MAX_CHARGING_CURRENT_KEY: 24,
CHARGER_ENERGY_PRICE_KEY: 0.4,
CHARGER_LOCKED_UNLOCKED_KEY: False,
CHARGER_SERIAL_NUMBER_KEY: "20000",
CHARGER_PART_NUMBER_KEY: "PLP1-0-2-4-9-002-E",
CHARGER_SOFTWARE_KEY: {CHARGER_CURRENT_VERSION_KEY: "5.5.10"},
CHARGER_CURRENCY_KEY: {"code": ""},
},
}
)