Adjust charging_power unit (#56167)

This commit is contained in:
epenet 2021-09-15 07:54:56 +02:00 committed by GitHub
parent 30c25d4448
commit 0d842a8f01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 7 deletions

View File

@ -20,9 +20,11 @@ from homeassistant.components.sensor import (
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
DEVICE_CLASS_BATTERY,
DEVICE_CLASS_CURRENT,
DEVICE_CLASS_ENERGY,
DEVICE_CLASS_POWER,
DEVICE_CLASS_TEMPERATURE,
ELECTRIC_CURRENT_AMPERE,
ENERGY_KILO_WATT_HOUR,
LENGTH_KILOMETERS,
PERCENTAGE,
@ -39,6 +41,7 @@ from .const import DEVICE_CLASS_CHARGE_STATE, DEVICE_CLASS_PLUG_STATE, DOMAIN
from .renault_coordinator import T
from .renault_entities import RenaultDataEntity, RenaultEntityDescription
from .renault_hub import RenaultHub
from .renault_vehicle import RenaultVehicleProxy
@dataclass
@ -56,6 +59,7 @@ class RenaultSensorEntityDescription(
"""Class describing Renault sensor entities."""
icon_lambda: Callable[[RenaultSensor[T]], str] | None = None
condition_lambda: Callable[[RenaultVehicleProxy], bool] | None = None
requires_fuel: bool = False
value_lambda: Callable[[RenaultSensor[T]], StateType] | None = None
@ -73,6 +77,7 @@ async def async_setup_entry(
for description in SENSOR_TYPES
if description.coordinator in vehicle.coordinators
and (not description.requires_fuel or vehicle.details.uses_fuel())
and (not description.condition_lambda or description.condition_lambda(vehicle))
]
async_add_entities(entities)
@ -106,9 +111,7 @@ class RenaultSensor(RenaultDataEntity[T], SensorEntity):
def _get_charging_power(entity: RenaultSensor[T]) -> StateType:
"""Return the charging_power of this entity."""
if entity.vehicle.details.reports_charging_power_in_watts():
return cast(float, entity.data) / 1000
return entity.data
return cast(float, entity.data) / 1000
def _get_charge_state_formatted(entity: RenaultSensor[T]) -> str | None:
@ -177,6 +180,18 @@ SENSOR_TYPES: tuple[RenaultSensorEntityDescription, ...] = (
),
RenaultSensorEntityDescription(
key="charging_power",
condition_lambda=lambda a: not a.details.reports_charging_power_in_watts(),
coordinator="battery",
data_key="chargingInstantaneousPower",
device_class=DEVICE_CLASS_CURRENT,
entity_class=RenaultSensor[KamereonVehicleBatteryStatusData],
name="Charging Power",
native_unit_of_measurement=ELECTRIC_CURRENT_AMPERE,
state_class=STATE_CLASS_MEASUREMENT,
),
RenaultSensorEntityDescription(
key="charging_power",
condition_lambda=lambda a: a.details.reports_charging_power_in_watts(),
coordinator="battery",
data_key="chargingInstantaneousPower",
device_class=DEVICE_CLASS_POWER,

View File

@ -29,9 +29,11 @@ from homeassistant.const import (
CONF_PASSWORD,
CONF_USERNAME,
DEVICE_CLASS_BATTERY,
DEVICE_CLASS_CURRENT,
DEVICE_CLASS_ENERGY,
DEVICE_CLASS_POWER,
DEVICE_CLASS_TEMPERATURE,
ELECTRIC_CURRENT_AMPERE,
ENERGY_KILO_WATT_HOUR,
LENGTH_KILOMETERS,
PERCENTAGE,
@ -313,10 +315,10 @@ MOCK_VEHICLES = {
"entity_id": "sensor.charging_power",
"unique_id": "vf1aaaaa555777999_charging_power",
"result": STATE_UNKNOWN,
ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER,
ATTR_DEVICE_CLASS: DEVICE_CLASS_CURRENT,
ATTR_LAST_UPDATE: "2020-11-17T08:06:48+00:00",
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_UNIT_OF_MEASUREMENT: POWER_KILO_WATT,
ATTR_UNIT_OF_MEASUREMENT: ELECTRIC_CURRENT_AMPERE,
},
{
"entity_id": "sensor.charging_remaining_time",
@ -450,10 +452,10 @@ MOCK_VEHICLES = {
"entity_id": "sensor.charging_power",
"unique_id": "vf1aaaaa555777123_charging_power",
"result": "27.0",
ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER,
ATTR_DEVICE_CLASS: DEVICE_CLASS_CURRENT,
ATTR_LAST_UPDATE: "2020-01-12T21:40:16+00:00",
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
ATTR_UNIT_OF_MEASUREMENT: POWER_KILO_WATT,
ATTR_UNIT_OF_MEASUREMENT: ELECTRIC_CURRENT_AMPERE,
},
{
"entity_id": "sensor.charging_remaining_time",