diff --git a/homeassistant/components/wallbox/__init__.py b/homeassistant/components/wallbox/__init__.py index 9b27b9c4bd1..4db217d0a54 100644 --- a/homeassistant/components/wallbox/__init__.py +++ b/homeassistant/components/wallbox/__init__.py @@ -246,6 +246,8 @@ class InvalidAuth(HomeAssistantError): class WallboxEntity(CoordinatorEntity[WallboxCoordinator]): """Defines a base Wallbox entity.""" + _attr_has_entity_name = True + @property def device_info(self) -> DeviceInfo: """Return device information about this Wallbox device.""" @@ -256,7 +258,7 @@ class WallboxEntity(CoordinatorEntity[WallboxCoordinator]): self.coordinator.data[CHARGER_DATA_KEY][CHARGER_SERIAL_NUMBER_KEY], ) }, - name=f"Wallbox - {self.coordinator.data[CHARGER_NAME_KEY]}", + name=f"Wallbox {self.coordinator.data[CHARGER_NAME_KEY]}", manufacturer="Wallbox", model=self.coordinator.data[CHARGER_DATA_KEY][CHARGER_PART_NUMBER_KEY], sw_version=self.coordinator.data[CHARGER_DATA_KEY][CHARGER_SOFTWARE_KEY][ diff --git a/homeassistant/components/wallbox/lock.py b/homeassistant/components/wallbox/lock.py index 7b5dca58010..04a587ae34d 100644 --- a/homeassistant/components/wallbox/lock.py +++ b/homeassistant/components/wallbox/lock.py @@ -20,7 +20,7 @@ from .const import ( LOCK_TYPES: dict[str, LockEntityDescription] = { CHARGER_LOCKED_UNLOCKED_KEY: LockEntityDescription( key=CHARGER_LOCKED_UNLOCKED_KEY, - name="Locked/Unlocked", + translation_key="lock", ), } @@ -42,7 +42,7 @@ async def async_setup_entry( async_add_entities( [ - WallboxLock(coordinator, entry, description) + WallboxLock(coordinator, description) for ent in coordinator.data if (description := LOCK_TYPES.get(ent)) ] @@ -55,14 +55,12 @@ class WallboxLock(WallboxEntity, LockEntity): def __init__( self, coordinator: WallboxCoordinator, - entry: ConfigEntry, description: LockEntityDescription, ) -> None: """Initialize a Wallbox lock.""" super().__init__(coordinator) self.entity_description = description - self._attr_name = f"{entry.title} {description.name}" self._attr_unique_id = f"{description.key}-{coordinator.data[CHARGER_DATA_KEY][CHARGER_SERIAL_NUMBER_KEY]}" @property diff --git a/homeassistant/components/wallbox/number.py b/homeassistant/components/wallbox/number.py index 58d4a5e6afb..b8ce331146d 100644 --- a/homeassistant/components/wallbox/number.py +++ b/homeassistant/components/wallbox/number.py @@ -33,7 +33,7 @@ class WallboxNumberEntityDescription(NumberEntityDescription): NUMBER_TYPES: dict[str, WallboxNumberEntityDescription] = { CHARGER_MAX_CHARGING_CURRENT_KEY: WallboxNumberEntityDescription( key=CHARGER_MAX_CHARGING_CURRENT_KEY, - name="Max. Charging Current", + translation_key="maximum_charging_current", ), } @@ -77,7 +77,6 @@ class WallboxNumber(WallboxEntity, NumberEntity): super().__init__(coordinator) self.entity_description = description self._coordinator = coordinator - self._attr_name = f"{entry.title} {description.name}" self._attr_unique_id = f"{description.key}-{coordinator.data[CHARGER_DATA_KEY][CHARGER_SERIAL_NUMBER_KEY]}" self._is_bidirectional = ( coordinator.data[CHARGER_DATA_KEY][CHARGER_PART_NUMBER_KEY][0:3] diff --git a/homeassistant/components/wallbox/sensor.py b/homeassistant/components/wallbox/sensor.py index afd2b13f790..56d9e0be735 100644 --- a/homeassistant/components/wallbox/sensor.py +++ b/homeassistant/components/wallbox/sensor.py @@ -60,7 +60,7 @@ class WallboxSensorEntityDescription(SensorEntityDescription): SENSOR_TYPES: dict[str, WallboxSensorEntityDescription] = { CHARGER_CHARGING_POWER_KEY: WallboxSensorEntityDescription( key=CHARGER_CHARGING_POWER_KEY, - name="Charging Power", + translation_key=CHARGER_CHARGING_POWER_KEY, precision=2, native_unit_of_measurement=UnitOfPower.KILO_WATT, device_class=SensorDeviceClass.POWER, @@ -68,7 +68,7 @@ SENSOR_TYPES: dict[str, WallboxSensorEntityDescription] = { ), CHARGER_MAX_AVAILABLE_POWER_KEY: WallboxSensorEntityDescription( key=CHARGER_MAX_AVAILABLE_POWER_KEY, - name="Max Available Power", + translation_key=CHARGER_MAX_AVAILABLE_POWER_KEY, precision=0, native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, @@ -76,15 +76,15 @@ SENSOR_TYPES: dict[str, WallboxSensorEntityDescription] = { ), CHARGER_CHARGING_SPEED_KEY: WallboxSensorEntityDescription( key=CHARGER_CHARGING_SPEED_KEY, + translation_key=CHARGER_CHARGING_SPEED_KEY, icon="mdi:speedometer", - name="Charging Speed", precision=0, state_class=SensorStateClass.MEASUREMENT, ), CHARGER_ADDED_RANGE_KEY: WallboxSensorEntityDescription( key=CHARGER_ADDED_RANGE_KEY, + translation_key=CHARGER_ADDED_RANGE_KEY, icon="mdi:map-marker-distance", - name="Added Range", precision=0, native_unit_of_measurement=UnitOfLength.KILOMETERS, device_class=SensorDeviceClass.DISTANCE, @@ -92,7 +92,7 @@ SENSOR_TYPES: dict[str, WallboxSensorEntityDescription] = { ), CHARGER_ADDED_ENERGY_KEY: WallboxSensorEntityDescription( key=CHARGER_ADDED_ENERGY_KEY, - name="Added Energy", + translation_key=CHARGER_ADDED_ENERGY_KEY, precision=2, native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, @@ -100,7 +100,7 @@ SENSOR_TYPES: dict[str, WallboxSensorEntityDescription] = { ), CHARGER_ADDED_DISCHARGED_ENERGY_KEY: WallboxSensorEntityDescription( key=CHARGER_ADDED_DISCHARGED_ENERGY_KEY, - name="Discharged Energy", + translation_key=CHARGER_ADDED_DISCHARGED_ENERGY_KEY, precision=2, native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, @@ -108,44 +108,44 @@ SENSOR_TYPES: dict[str, WallboxSensorEntityDescription] = { ), CHARGER_COST_KEY: WallboxSensorEntityDescription( key=CHARGER_COST_KEY, + translation_key=CHARGER_COST_KEY, icon="mdi:ev-station", - name="Cost", state_class=SensorStateClass.TOTAL_INCREASING, ), CHARGER_STATE_OF_CHARGE_KEY: WallboxSensorEntityDescription( key=CHARGER_STATE_OF_CHARGE_KEY, - name="State of Charge", + translation_key=CHARGER_STATE_OF_CHARGE_KEY, native_unit_of_measurement=PERCENTAGE, device_class=SensorDeviceClass.BATTERY, state_class=SensorStateClass.MEASUREMENT, ), CHARGER_CURRENT_MODE_KEY: WallboxSensorEntityDescription( key=CHARGER_CURRENT_MODE_KEY, + translation_key=CHARGER_CURRENT_MODE_KEY, icon="mdi:ev-station", - name="Current Mode", ), CHARGER_DEPOT_PRICE_KEY: WallboxSensorEntityDescription( key=CHARGER_DEPOT_PRICE_KEY, + translation_key=CHARGER_DEPOT_PRICE_KEY, icon="mdi:ev-station", - name="Depot Price", precision=2, state_class=SensorStateClass.MEASUREMENT, ), CHARGER_ENERGY_PRICE_KEY: WallboxSensorEntityDescription( key=CHARGER_ENERGY_PRICE_KEY, + translation_key=CHARGER_ENERGY_PRICE_KEY, icon="mdi:ev-station", - name="Energy Price", precision=2, state_class=SensorStateClass.MEASUREMENT, ), CHARGER_STATUS_DESCRIPTION_KEY: WallboxSensorEntityDescription( key=CHARGER_STATUS_DESCRIPTION_KEY, + translation_key=CHARGER_STATUS_DESCRIPTION_KEY, icon="mdi:ev-station", - name="Status Description", ), CHARGER_MAX_CHARGING_CURRENT_KEY: WallboxSensorEntityDescription( key=CHARGER_MAX_CHARGING_CURRENT_KEY, - name="Max. Charging Current", + translation_key=CHARGER_MAX_CHARGING_CURRENT_KEY, native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, @@ -161,7 +161,7 @@ async def async_setup_entry( async_add_entities( [ - WallboxSensor(coordinator, entry, description) + WallboxSensor(coordinator, description) for ent in coordinator.data if (description := SENSOR_TYPES.get(ent)) ] @@ -176,13 +176,11 @@ class WallboxSensor(WallboxEntity, SensorEntity): def __init__( self, coordinator: WallboxCoordinator, - entry: ConfigEntry, description: WallboxSensorEntityDescription, ) -> None: """Initialize a Wallbox sensor.""" super().__init__(coordinator) self.entity_description = description - self._attr_name = f"{entry.title} {description.name}" self._attr_unique_id = f"{description.key}-{coordinator.data[CHARGER_DATA_KEY][CHARGER_SERIAL_NUMBER_KEY]}" @property diff --git a/homeassistant/components/wallbox/strings.json b/homeassistant/components/wallbox/strings.json index 4cde9c6d255..69db4bb97e3 100644 --- a/homeassistant/components/wallbox/strings.json +++ b/homeassistant/components/wallbox/strings.json @@ -25,5 +25,63 @@ "already_configured": "[%key:common::config_flow::abort::already_configured_device%]", "reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]" } + }, + "entity": { + "lock": { + "lock": { + "name": "[%key:component::lock::title%]" + } + }, + "number": { + "maximum_charging_current": { + "name": "Maximum charging current" + } + }, + "sensor": { + "charging_power": { + "name": "Charging power" + }, + "max_available_power": { + "name": "Max available power" + }, + "charging_speed": { + "name": "Charging speed" + }, + "added_range": { + "name": "Added range" + }, + "added_energy": { + "name": "Added energy" + }, + "added_discharged_energy": { + "name": "Discharged energy" + }, + "cost": { + "name": "Cost" + }, + "state_of_charge": { + "name": "State of charge" + }, + "current_mode": { + "name": "Current mode" + }, + "depot_price": { + "name": "Depot price" + }, + "energy_price": { + "name": "Energy price" + }, + "status_description": { + "name": "Status description" + }, + "max_charging_current": { + "name": "Max charging current" + } + }, + "switch": { + "pause_resume": { + "name": "Pause/resume" + } + } } } diff --git a/homeassistant/components/wallbox/switch.py b/homeassistant/components/wallbox/switch.py index 7a0736f59e7..b101ffe1c09 100644 --- a/homeassistant/components/wallbox/switch.py +++ b/homeassistant/components/wallbox/switch.py @@ -21,7 +21,7 @@ from .const import ( SWITCH_TYPES: dict[str, SwitchEntityDescription] = { CHARGER_PAUSE_RESUME_KEY: SwitchEntityDescription( key=CHARGER_PAUSE_RESUME_KEY, - name="Pause/Resume", + translation_key="pause_resume", ), } @@ -32,7 +32,7 @@ async def async_setup_entry( """Create wallbox sensor entities in HASS.""" coordinator: WallboxCoordinator = hass.data[DOMAIN][entry.entry_id] async_add_entities( - [WallboxSwitch(coordinator, entry, SWITCH_TYPES[CHARGER_PAUSE_RESUME_KEY])] + [WallboxSwitch(coordinator, SWITCH_TYPES[CHARGER_PAUSE_RESUME_KEY])] ) @@ -42,13 +42,11 @@ class WallboxSwitch(WallboxEntity, SwitchEntity): def __init__( self, coordinator: WallboxCoordinator, - entry: ConfigEntry, description: SwitchEntityDescription, ) -> None: """Initialize a Wallbox switch.""" super().__init__(coordinator) self.entity_description = description - self._attr_name = f"{entry.title} {description.name}" self._attr_unique_id = f"{description.key}-{coordinator.data[CHARGER_DATA_KEY][CHARGER_SERIAL_NUMBER_KEY]}" @property diff --git a/tests/components/wallbox/const.py b/tests/components/wallbox/const.py index 1f052643696..477fb10d292 100644 --- a/tests/components/wallbox/const.py +++ b/tests/components/wallbox/const.py @@ -5,9 +5,9 @@ TTL = "ttl" ERROR = "error" STATUS = "status" -MOCK_NUMBER_ENTITY_ID = "number.mock_title_max_charging_current" -MOCK_LOCK_ENTITY_ID = "lock.mock_title_locked_unlocked" -MOCK_SENSOR_CHARGING_SPEED_ID = "sensor.mock_title_charging_speed" -MOCK_SENSOR_CHARGING_POWER_ID = "sensor.mock_title_charging_power" -MOCK_SENSOR_MAX_AVAILABLE_POWER = "sensor.mock_title_max_available_power" -MOCK_SWITCH_ENTITY_ID = "switch.mock_title_pause_resume" +MOCK_NUMBER_ENTITY_ID = "number.wallbox_wallboxname_maximum_charging_current" +MOCK_LOCK_ENTITY_ID = "lock.wallbox_wallboxname_lock" +MOCK_SENSOR_CHARGING_SPEED_ID = "sensor.wallbox_wallboxname_charging_speed" +MOCK_SENSOR_CHARGING_POWER_ID = "sensor.wallbox_wallboxname_charging_power" +MOCK_SENSOR_MAX_AVAILABLE_POWER = "sensor.wallbox_wallboxname_max_available_power" +MOCK_SWITCH_ENTITY_ID = "switch.wallbox_wallboxname_pause_resume" diff --git a/tests/components/wallbox/test_sensor.py b/tests/components/wallbox/test_sensor.py index a6bda688997..ca12e1d9ac3 100644 --- a/tests/components/wallbox/test_sensor.py +++ b/tests/components/wallbox/test_sensor.py @@ -21,11 +21,11 @@ async def test_wallbox_sensor_class( state = hass.states.get(MOCK_SENSOR_CHARGING_POWER_ID) assert state.attributes[CONF_UNIT_OF_MEASUREMENT] == UnitOfPower.KILO_WATT - assert state.name == "Mock Title Charging Power" + assert state.name == "Wallbox WallboxName Charging power" state = hass.states.get(MOCK_SENSOR_CHARGING_SPEED_ID) assert state.attributes[CONF_ICON] == "mdi:speedometer" - assert state.name == "Mock Title Charging Speed" + assert state.name == "Wallbox WallboxName Charging speed" # Test round with precision '0' works state = hass.states.get(MOCK_SENSOR_MAX_AVAILABLE_POWER)