Migrate Mazda to new entity naming style (#74939)

This commit is contained in:
Brandon Rothweiler 2022-07-11 00:04:54 -04:00 committed by GitHub
parent d0f71d2e53
commit 53502eb662
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 51 additions and 67 deletions

View File

@ -222,6 +222,8 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
class MazdaEntity(CoordinatorEntity):
"""Defines a base Mazda entity."""
_attr_has_entity_name = True
def __init__(self, client, coordinator, index):
"""Initialize the Mazda entity."""
super().__init__(coordinator)

View File

@ -22,9 +22,6 @@ from .const import DATA_CLIENT, DATA_COORDINATOR, DOMAIN
class MazdaBinarySensorRequiredKeysMixin:
"""Mixin for required keys."""
# Suffix to be appended to the vehicle name to obtain the binary sensor name
name_suffix: str
# Function to determine the value for this binary sensor, given the coordinator data
value_fn: Callable[[dict[str, Any]], bool]
@ -49,49 +46,49 @@ def _plugged_in_supported(data):
BINARY_SENSOR_ENTITIES = [
MazdaBinarySensorEntityDescription(
key="driver_door",
name_suffix="Driver Door",
name="Driver door",
icon="mdi:car-door",
device_class=BinarySensorDeviceClass.DOOR,
value_fn=lambda data: data["status"]["doors"]["driverDoorOpen"],
),
MazdaBinarySensorEntityDescription(
key="passenger_door",
name_suffix="Passenger Door",
name="Passenger door",
icon="mdi:car-door",
device_class=BinarySensorDeviceClass.DOOR,
value_fn=lambda data: data["status"]["doors"]["passengerDoorOpen"],
),
MazdaBinarySensorEntityDescription(
key="rear_left_door",
name_suffix="Rear Left Door",
name="Rear left door",
icon="mdi:car-door",
device_class=BinarySensorDeviceClass.DOOR,
value_fn=lambda data: data["status"]["doors"]["rearLeftDoorOpen"],
),
MazdaBinarySensorEntityDescription(
key="rear_right_door",
name_suffix="Rear Right Door",
name="Rear right door",
icon="mdi:car-door",
device_class=BinarySensorDeviceClass.DOOR,
value_fn=lambda data: data["status"]["doors"]["rearRightDoorOpen"],
),
MazdaBinarySensorEntityDescription(
key="trunk",
name_suffix="Trunk",
name="Trunk",
icon="mdi:car-back",
device_class=BinarySensorDeviceClass.DOOR,
value_fn=lambda data: data["status"]["doors"]["trunkOpen"],
),
MazdaBinarySensorEntityDescription(
key="hood",
name_suffix="Hood",
name="Hood",
icon="mdi:car",
device_class=BinarySensorDeviceClass.DOOR,
value_fn=lambda data: data["status"]["doors"]["hoodOpen"],
),
MazdaBinarySensorEntityDescription(
key="ev_plugged_in",
name_suffix="Plugged In",
name="Plugged in",
device_class=BinarySensorDeviceClass.PLUG,
is_supported=_plugged_in_supported,
value_fn=lambda data: data["evStatus"]["chargeInfo"]["pluggedIn"],
@ -126,7 +123,6 @@ class MazdaBinarySensorEntity(MazdaEntity, BinarySensorEntity):
super().__init__(client, coordinator, index)
self.entity_description = description
self._attr_name = f"{self.vehicle_name} {description.name_suffix}"
self._attr_unique_id = f"{self.vin}_{description.key}"
@property

View File

@ -61,17 +61,7 @@ async def handle_refresh_vehicle_status(
@dataclass
class MazdaButtonRequiredKeysMixin:
"""Mixin for required keys."""
# Suffix to be appended to the vehicle name to obtain the button name
name_suffix: str
@dataclass
class MazdaButtonEntityDescription(
ButtonEntityDescription, MazdaButtonRequiredKeysMixin
):
class MazdaButtonEntityDescription(ButtonEntityDescription):
"""Describes a Mazda button entity."""
# Function to determine whether the vehicle supports this button, given the coordinator data
@ -85,27 +75,27 @@ class MazdaButtonEntityDescription(
BUTTON_ENTITIES = [
MazdaButtonEntityDescription(
key="start_engine",
name_suffix="Start Engine",
name="Start engine",
icon="mdi:engine",
),
MazdaButtonEntityDescription(
key="stop_engine",
name_suffix="Stop Engine",
name="Stop engine",
icon="mdi:engine-off",
),
MazdaButtonEntityDescription(
key="turn_on_hazard_lights",
name_suffix="Turn On Hazard Lights",
name="Turn on hazard lights",
icon="mdi:hazard-lights",
),
MazdaButtonEntityDescription(
key="turn_off_hazard_lights",
name_suffix="Turn Off Hazard Lights",
name="Turn off hazard lights",
icon="mdi:hazard-lights",
),
MazdaButtonEntityDescription(
key="refresh_vehicle_status",
name_suffix="Refresh Status",
name="Refresh status",
icon="mdi:refresh",
async_press=handle_refresh_vehicle_status,
is_supported=lambda data: data["isElectric"],
@ -146,7 +136,6 @@ class MazdaButtonEntity(MazdaEntity, ButtonEntity):
super().__init__(client, coordinator, index)
self.entity_description = description
self._attr_name = f"{self.vehicle_name} {description.name_suffix}"
self._attr_unique_id = f"{self.vin}_{description.key}"
async def async_press(self) -> None:

View File

@ -29,6 +29,7 @@ async def async_setup_entry(
class MazdaDeviceTracker(MazdaEntity, TrackerEntity):
"""Class for the device tracker."""
_attr_name = "Device tracker"
_attr_icon = "mdi:car"
_attr_force_update = False
@ -36,7 +37,6 @@ class MazdaDeviceTracker(MazdaEntity, TrackerEntity):
"""Initialize Mazda device tracker."""
super().__init__(client, coordinator, index)
self._attr_name = f"{self.vehicle_name} Device Tracker"
self._attr_unique_id = self.vin
@property

View File

@ -32,11 +32,12 @@ async def async_setup_entry(
class MazdaLock(MazdaEntity, LockEntity):
"""Class for the lock."""
_attr_name = "Lock"
def __init__(self, client, coordinator, index) -> None:
"""Initialize Mazda lock."""
super().__init__(client, coordinator, index)
self._attr_name = f"{self.vehicle_name} Lock"
self._attr_unique_id = self.vin
@property

View File

@ -32,9 +32,6 @@ from .const import DATA_CLIENT, DATA_COORDINATOR, DOMAIN
class MazdaSensorRequiredKeysMixin:
"""Mixin for required keys."""
# Suffix to be appended to the vehicle name to obtain the sensor name
name_suffix: str
# Function to determine the value for this sensor, given the coordinator data and the configured unit system
value: Callable[[dict[str, Any], UnitSystem], StateType]
@ -159,7 +156,7 @@ def _ev_remaining_range_value(data, unit_system):
SENSOR_ENTITIES = [
MazdaSensorEntityDescription(
key="fuel_remaining_percentage",
name_suffix="Fuel Remaining Percentage",
name="Fuel remaining percentage",
icon="mdi:gas-station",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
@ -168,7 +165,7 @@ SENSOR_ENTITIES = [
),
MazdaSensorEntityDescription(
key="fuel_distance_remaining",
name_suffix="Fuel Distance Remaining",
name="Fuel distance remaining",
icon="mdi:gas-station",
unit=_get_distance_unit,
state_class=SensorStateClass.MEASUREMENT,
@ -177,7 +174,7 @@ SENSOR_ENTITIES = [
),
MazdaSensorEntityDescription(
key="odometer",
name_suffix="Odometer",
name="Odometer",
icon="mdi:speedometer",
unit=_get_distance_unit,
state_class=SensorStateClass.TOTAL_INCREASING,
@ -186,7 +183,7 @@ SENSOR_ENTITIES = [
),
MazdaSensorEntityDescription(
key="front_left_tire_pressure",
name_suffix="Front Left Tire Pressure",
name="Front left tire pressure",
icon="mdi:car-tire-alert",
device_class=SensorDeviceClass.PRESSURE,
native_unit_of_measurement=PRESSURE_PSI,
@ -196,7 +193,7 @@ SENSOR_ENTITIES = [
),
MazdaSensorEntityDescription(
key="front_right_tire_pressure",
name_suffix="Front Right Tire Pressure",
name="Front right tire pressure",
icon="mdi:car-tire-alert",
device_class=SensorDeviceClass.PRESSURE,
native_unit_of_measurement=PRESSURE_PSI,
@ -206,7 +203,7 @@ SENSOR_ENTITIES = [
),
MazdaSensorEntityDescription(
key="rear_left_tire_pressure",
name_suffix="Rear Left Tire Pressure",
name="Rear left tire pressure",
icon="mdi:car-tire-alert",
device_class=SensorDeviceClass.PRESSURE,
native_unit_of_measurement=PRESSURE_PSI,
@ -216,7 +213,7 @@ SENSOR_ENTITIES = [
),
MazdaSensorEntityDescription(
key="rear_right_tire_pressure",
name_suffix="Rear Right Tire Pressure",
name="Rear right tire pressure",
icon="mdi:car-tire-alert",
device_class=SensorDeviceClass.PRESSURE,
native_unit_of_measurement=PRESSURE_PSI,
@ -226,7 +223,7 @@ SENSOR_ENTITIES = [
),
MazdaSensorEntityDescription(
key="ev_charge_level",
name_suffix="Charge Level",
name="Charge level",
device_class=SensorDeviceClass.BATTERY,
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
@ -235,7 +232,7 @@ SENSOR_ENTITIES = [
),
MazdaSensorEntityDescription(
key="ev_remaining_range",
name_suffix="Remaining Range",
name="Remaining range",
icon="mdi:ev-station",
unit=_get_distance_unit,
state_class=SensorStateClass.MEASUREMENT,
@ -276,7 +273,6 @@ class MazdaSensorEntity(MazdaEntity, SensorEntity):
super().__init__(client, coordinator, index)
self.entity_description = description
self._attr_name = f"{self.vehicle_name} {description.name_suffix}"
self._attr_unique_id = f"{self.vin}_{description.key}"
@property

View File

@ -30,6 +30,7 @@ async def async_setup_entry(
class MazdaChargingSwitch(MazdaEntity, SwitchEntity):
"""Class for the charging switch."""
_attr_name = "Charging"
_attr_icon = "mdi:ev-station"
def __init__(
@ -41,7 +42,6 @@ class MazdaChargingSwitch(MazdaEntity, SwitchEntity):
"""Initialize Mazda charging switch."""
super().__init__(client, coordinator, index)
self._attr_name = f"{self.vehicle_name} Charging"
self._attr_unique_id = self.vin
@property

View File

@ -16,7 +16,7 @@ async def test_binary_sensors(hass):
# Driver Door
state = hass.states.get("binary_sensor.my_mazda3_driver_door")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Driver Door"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Driver door"
assert state.attributes.get(ATTR_ICON) == "mdi:car-door"
assert state.attributes.get(ATTR_DEVICE_CLASS) == BinarySensorDeviceClass.DOOR
assert state.state == "off"
@ -27,7 +27,7 @@ async def test_binary_sensors(hass):
# Passenger Door
state = hass.states.get("binary_sensor.my_mazda3_passenger_door")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Passenger Door"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Passenger door"
assert state.attributes.get(ATTR_ICON) == "mdi:car-door"
assert state.attributes.get(ATTR_DEVICE_CLASS) == BinarySensorDeviceClass.DOOR
assert state.state == "on"
@ -38,7 +38,7 @@ async def test_binary_sensors(hass):
# Rear Left Door
state = hass.states.get("binary_sensor.my_mazda3_rear_left_door")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Rear Left Door"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Rear left door"
assert state.attributes.get(ATTR_ICON) == "mdi:car-door"
assert state.attributes.get(ATTR_DEVICE_CLASS) == BinarySensorDeviceClass.DOOR
assert state.state == "off"
@ -49,7 +49,7 @@ async def test_binary_sensors(hass):
# Rear Right Door
state = hass.states.get("binary_sensor.my_mazda3_rear_right_door")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Rear Right Door"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Rear right door"
assert state.attributes.get(ATTR_ICON) == "mdi:car-door"
assert state.attributes.get(ATTR_DEVICE_CLASS) == BinarySensorDeviceClass.DOOR
assert state.state == "off"
@ -90,7 +90,7 @@ async def test_electric_vehicle_binary_sensors(hass):
# Plugged In
state = hass.states.get("binary_sensor.my_mazda3_plugged_in")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Plugged In"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Plugged in"
assert state.attributes.get(ATTR_DEVICE_CLASS) == BinarySensorDeviceClass.PLUG
assert state.state == "on"
entry = entity_registry.async_get("binary_sensor.my_mazda3_plugged_in")

View File

@ -22,7 +22,7 @@ async def test_button_setup_non_electric_vehicle(hass) -> None:
assert entry.unique_id == "JM000000000000000_start_engine"
state = hass.states.get("button.my_mazda3_start_engine")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Start Engine"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Start engine"
assert state.attributes.get(ATTR_ICON) == "mdi:engine"
entry = entity_registry.async_get("button.my_mazda3_stop_engine")
@ -30,7 +30,7 @@ async def test_button_setup_non_electric_vehicle(hass) -> None:
assert entry.unique_id == "JM000000000000000_stop_engine"
state = hass.states.get("button.my_mazda3_stop_engine")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Stop Engine"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Stop engine"
assert state.attributes.get(ATTR_ICON) == "mdi:engine-off"
entry = entity_registry.async_get("button.my_mazda3_turn_on_hazard_lights")
@ -38,7 +38,7 @@ async def test_button_setup_non_electric_vehicle(hass) -> None:
assert entry.unique_id == "JM000000000000000_turn_on_hazard_lights"
state = hass.states.get("button.my_mazda3_turn_on_hazard_lights")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Turn On Hazard Lights"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Turn on hazard lights"
assert state.attributes.get(ATTR_ICON) == "mdi:hazard-lights"
entry = entity_registry.async_get("button.my_mazda3_turn_off_hazard_lights")
@ -47,7 +47,7 @@ async def test_button_setup_non_electric_vehicle(hass) -> None:
state = hass.states.get("button.my_mazda3_turn_off_hazard_lights")
assert state
assert (
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Turn Off Hazard Lights"
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Turn off hazard lights"
)
assert state.attributes.get(ATTR_ICON) == "mdi:hazard-lights"
@ -69,7 +69,7 @@ async def test_button_setup_electric_vehicle(hass) -> None:
assert entry.unique_id == "JM000000000000000_start_engine"
state = hass.states.get("button.my_mazda3_start_engine")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Start Engine"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Start engine"
assert state.attributes.get(ATTR_ICON) == "mdi:engine"
entry = entity_registry.async_get("button.my_mazda3_stop_engine")
@ -77,7 +77,7 @@ async def test_button_setup_electric_vehicle(hass) -> None:
assert entry.unique_id == "JM000000000000000_stop_engine"
state = hass.states.get("button.my_mazda3_stop_engine")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Stop Engine"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Stop engine"
assert state.attributes.get(ATTR_ICON) == "mdi:engine-off"
entry = entity_registry.async_get("button.my_mazda3_turn_on_hazard_lights")
@ -85,7 +85,7 @@ async def test_button_setup_electric_vehicle(hass) -> None:
assert entry.unique_id == "JM000000000000000_turn_on_hazard_lights"
state = hass.states.get("button.my_mazda3_turn_on_hazard_lights")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Turn On Hazard Lights"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Turn on hazard lights"
assert state.attributes.get(ATTR_ICON) == "mdi:hazard-lights"
entry = entity_registry.async_get("button.my_mazda3_turn_off_hazard_lights")
@ -94,7 +94,7 @@ async def test_button_setup_electric_vehicle(hass) -> None:
state = hass.states.get("button.my_mazda3_turn_off_hazard_lights")
assert state
assert (
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Turn Off Hazard Lights"
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Turn off hazard lights"
)
assert state.attributes.get(ATTR_ICON) == "mdi:hazard-lights"
@ -103,7 +103,7 @@ async def test_button_setup_electric_vehicle(hass) -> None:
assert entry.unique_id == "JM000000000000000_refresh_vehicle_status"
state = hass.states.get("button.my_mazda3_refresh_status")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Refresh Status"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Refresh status"
assert state.attributes.get(ATTR_ICON) == "mdi:refresh"

View File

@ -20,7 +20,7 @@ async def test_device_tracker(hass):
state = hass.states.get("device_tracker.my_mazda3_device_tracker")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Device Tracker"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Device tracker"
assert state.attributes.get(ATTR_ICON) == "mdi:car"
assert state.attributes.get(ATTR_LATITUDE) == 1.234567
assert state.attributes.get(ATTR_LONGITUDE) == -2.345678

View File

@ -32,7 +32,7 @@ async def test_sensors(hass):
assert state
assert (
state.attributes.get(ATTR_FRIENDLY_NAME)
== "My Mazda3 Fuel Remaining Percentage"
== "My Mazda3 Fuel remaining percentage"
)
assert state.attributes.get(ATTR_ICON) == "mdi:gas-station"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
@ -46,7 +46,7 @@ async def test_sensors(hass):
state = hass.states.get("sensor.my_mazda3_fuel_distance_remaining")
assert state
assert (
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Fuel Distance Remaining"
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Fuel distance remaining"
)
assert state.attributes.get(ATTR_ICON) == "mdi:gas-station"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == LENGTH_KILOMETERS
@ -72,7 +72,7 @@ async def test_sensors(hass):
state = hass.states.get("sensor.my_mazda3_front_left_tire_pressure")
assert state
assert (
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Front Left Tire Pressure"
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Front left tire pressure"
)
assert state.attributes.get(ATTR_ICON) == "mdi:car-tire-alert"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.PRESSURE
@ -88,7 +88,7 @@ async def test_sensors(hass):
assert state
assert (
state.attributes.get(ATTR_FRIENDLY_NAME)
== "My Mazda3 Front Right Tire Pressure"
== "My Mazda3 Front right tire pressure"
)
assert state.attributes.get(ATTR_ICON) == "mdi:car-tire-alert"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.PRESSURE
@ -103,7 +103,7 @@ async def test_sensors(hass):
state = hass.states.get("sensor.my_mazda3_rear_left_tire_pressure")
assert state
assert (
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Rear Left Tire Pressure"
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Rear left tire pressure"
)
assert state.attributes.get(ATTR_ICON) == "mdi:car-tire-alert"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.PRESSURE
@ -118,7 +118,7 @@ async def test_sensors(hass):
state = hass.states.get("sensor.my_mazda3_rear_right_tire_pressure")
assert state
assert (
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Rear Right Tire Pressure"
state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Rear right tire pressure"
)
assert state.attributes.get(ATTR_ICON) == "mdi:car-tire-alert"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.PRESSURE
@ -167,7 +167,7 @@ async def test_electric_vehicle_sensors(hass):
# Charge Level
state = hass.states.get("sensor.my_mazda3_charge_level")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Charge Level"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Charge level"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.BATTERY
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
assert state.attributes.get(ATTR_STATE_CLASS) == SensorStateClass.MEASUREMENT
@ -179,7 +179,7 @@ async def test_electric_vehicle_sensors(hass):
# Remaining Range
state = hass.states.get("sensor.my_mazda3_remaining_range")
assert state
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Remaining Range"
assert state.attributes.get(ATTR_FRIENDLY_NAME) == "My Mazda3 Remaining range"
assert state.attributes.get(ATTR_ICON) == "mdi:ev-station"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == LENGTH_KILOMETERS
assert state.attributes.get(ATTR_STATE_CLASS) == SensorStateClass.MEASUREMENT