Migrate VeSync to has entity name (#96772)

* Migrate VeSync to has entity name

* Fix tests
This commit is contained in:
Joost Lekkerkerker 2023-07-17 17:52:53 +02:00 committed by GitHub
parent 560e0cc7e0
commit e99b6b2a03
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 123 additions and 97 deletions

View file

@ -51,11 +51,12 @@ async def async_process_devices(hass, manager):
class VeSyncBaseEntity(Entity):
"""Base class for VeSync Entity Representations."""
_attr_has_entity_name = True
def __init__(self, device: VeSyncBaseDevice) -> None:
"""Initialize the VeSync device."""
self.device = device
self._attr_unique_id = self.base_unique_id
self._attr_name = self.base_name
@property
def base_unique_id(self):
@ -67,12 +68,6 @@ class VeSyncBaseEntity(Entity):
return f"{self.device.cid}{str(self.device.sub_device_no)}"
return self.device.cid
@property
def base_name(self) -> str:
"""Return the name of the device."""
# Same story here as `base_unique_id` above
return self.device.device_name
@property
def available(self) -> bool:
"""Return True if device is available."""
@ -83,7 +78,7 @@ class VeSyncBaseEntity(Entity):
"""Return device information."""
return DeviceInfo(
identifiers={(DOMAIN, self.base_unique_id)},
name=self.base_name,
name=self.device.device_name,
model=self.device.device_type,
manufacturer="VeSync",
sw_version=self.device.current_firm_version,

View file

@ -87,6 +87,7 @@ class VeSyncFanHA(VeSyncDevice, FanEntity):
"""Representation of a VeSync fan."""
_attr_supported_features = FanEntityFeature.SET_SPEED
_attr_name = None
def __init__(self, fan):
"""Initialize the VeSync fan device."""

View file

@ -66,6 +66,8 @@ def _setup_entities(devices, async_add_entities):
class VeSyncBaseLight(VeSyncDevice, LightEntity):
"""Base class for VeSync Light Devices Representations."""
_attr_name = None
@property
def brightness(self) -> int:
"""Get light brightness."""

View file

@ -79,7 +79,7 @@ PM25_SUPPORTED = ["Core300S", "Core400S", "Core600S"]
SENSORS: tuple[VeSyncSensorEntityDescription, ...] = (
VeSyncSensorEntityDescription(
key="filter-life",
name="Filter Life",
translation_key="filter_life",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
@ -88,13 +88,12 @@ SENSORS: tuple[VeSyncSensorEntityDescription, ...] = (
),
VeSyncSensorEntityDescription(
key="air-quality",
name="Air Quality",
translation_key="air_quality",
value_fn=lambda device: device.details["air_quality"],
exists_fn=lambda device: sku_supported(device, AIR_QUALITY_SUPPORTED),
),
VeSyncSensorEntityDescription(
key="pm25",
name="PM2.5",
device_class=SensorDeviceClass.PM25,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
@ -103,7 +102,7 @@ SENSORS: tuple[VeSyncSensorEntityDescription, ...] = (
),
VeSyncSensorEntityDescription(
key="power",
name="current power",
translation_key="current_power",
device_class=SensorDeviceClass.POWER,
native_unit_of_measurement=UnitOfPower.WATT,
state_class=SensorStateClass.MEASUREMENT,
@ -113,7 +112,7 @@ SENSORS: tuple[VeSyncSensorEntityDescription, ...] = (
),
VeSyncSensorEntityDescription(
key="energy",
name="energy use today",
translation_key="energy_today",
device_class=SensorDeviceClass.ENERGY,
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
state_class=SensorStateClass.TOTAL_INCREASING,
@ -123,7 +122,7 @@ SENSORS: tuple[VeSyncSensorEntityDescription, ...] = (
),
VeSyncSensorEntityDescription(
key="energy-weekly",
name="energy use weekly",
translation_key="energy_week",
device_class=SensorDeviceClass.ENERGY,
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
state_class=SensorStateClass.TOTAL_INCREASING,
@ -133,7 +132,7 @@ SENSORS: tuple[VeSyncSensorEntityDescription, ...] = (
),
VeSyncSensorEntityDescription(
key="energy-monthly",
name="energy use monthly",
translation_key="energy_month",
device_class=SensorDeviceClass.ENERGY,
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
state_class=SensorStateClass.TOTAL_INCREASING,
@ -143,7 +142,7 @@ SENSORS: tuple[VeSyncSensorEntityDescription, ...] = (
),
VeSyncSensorEntityDescription(
key="energy-yearly",
name="energy use yearly",
translation_key="energy_year",
device_class=SensorDeviceClass.ENERGY,
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
state_class=SensorStateClass.TOTAL_INCREASING,
@ -153,7 +152,7 @@ SENSORS: tuple[VeSyncSensorEntityDescription, ...] = (
),
VeSyncSensorEntityDescription(
key="voltage",
name="current voltage",
translation_key="current_voltage",
device_class=SensorDeviceClass.VOLTAGE,
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
state_class=SensorStateClass.MEASUREMENT,
@ -207,7 +206,6 @@ class VeSyncSensorEntity(VeSyncBaseEntity, SensorEntity):
"""Initialize the VeSync outlet device."""
super().__init__(device)
self.entity_description = description
self._attr_name = f"{super().name} {description.name}"
self._attr_unique_id = f"{super().unique_id}-{description.key}"
@property

View file

@ -16,6 +16,34 @@
"single_instance_allowed": "[%key:common::config_flow::abort::single_instance_allowed%]"
}
},
"entity": {
"sensor": {
"filter_life": {
"name": "Filter life"
},
"air_quality": {
"name": "Air quality"
},
"current_power": {
"name": "Current power"
},
"energy_today": {
"name": "Energy use today"
},
"energy_week": {
"name": "Energy use weekly"
},
"energy_month": {
"name": "Energy use monthly"
},
"energy_year": {
"name": "Energy use yearly"
},
"current_voltage": {
"name": "Current voltage"
}
}
},
"services": {
"update_devices": {
"name": "Update devices",

View file

@ -54,6 +54,8 @@ def _setup_entities(devices, async_add_entities):
class VeSyncBaseSwitch(VeSyncDevice, SwitchEntity):
"""Base class for VeSync switch Device Representations."""
_attr_name = None
def turn_on(self, **kwargs: Any) -> None:
"""Turn the device on."""
self.device.turn_on()

View file

@ -192,7 +192,7 @@
'name': None,
'original_device_class': None,
'original_icon': None,
'original_name': 'Fan',
'original_name': None,
'state': dict({
'attributes': dict({
'friendly_name': 'Fan',
@ -220,10 +220,10 @@
'name': None,
'original_device_class': None,
'original_icon': None,
'original_name': 'Fan Air Quality',
'original_name': 'Air quality',
'state': dict({
'attributes': dict({
'friendly_name': 'Fan Air Quality',
'friendly_name': 'Fan Air quality',
}),
'entity_id': 'sensor.fan_air_quality',
'last_changed': str,
@ -243,10 +243,10 @@
'name': None,
'original_device_class': None,
'original_icon': None,
'original_name': 'Fan Filter Life',
'original_name': 'Filter life',
'state': dict({
'attributes': dict({
'friendly_name': 'Fan Filter Life',
'friendly_name': 'Fan Filter life',
'state_class': 'measurement',
'unit_of_measurement': '%',
}),

View file

@ -47,7 +47,7 @@
'domain': 'fan',
'entity_category': None,
'entity_id': 'fan.air_purifier_131s',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -56,7 +56,7 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 131s',
'original_name': None,
'platform': 'vesync',
'supported_features': <FanEntityFeature: 1>,
'translation_key': None,
@ -129,7 +129,7 @@
'domain': 'fan',
'entity_category': None,
'entity_id': 'fan.air_purifier_200s',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -138,7 +138,7 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 200s',
'original_name': None,
'platform': 'vesync',
'supported_features': <FanEntityFeature: 1>,
'translation_key': None,
@ -218,7 +218,7 @@
'domain': 'fan',
'entity_category': None,
'entity_id': 'fan.air_purifier_400s',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -227,7 +227,7 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 400s',
'original_name': None,
'platform': 'vesync',
'supported_features': <FanEntityFeature: 1>,
'translation_key': None,
@ -308,7 +308,7 @@
'domain': 'fan',
'entity_category': None,
'entity_id': 'fan.air_purifier_600s',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -317,7 +317,7 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 600s',
'original_name': None,
'platform': 'vesync',
'supported_features': <FanEntityFeature: 1>,
'translation_key': None,

View file

@ -178,7 +178,7 @@
'domain': 'light',
'entity_category': None,
'entity_id': 'light.dimmable_light',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -187,7 +187,7 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Dimmable Light',
'original_name': None,
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
@ -259,7 +259,7 @@
'domain': 'light',
'entity_category': None,
'entity_id': 'light.dimmer_switch',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -268,7 +268,7 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Dimmer Switch',
'original_name': None,
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
@ -395,7 +395,7 @@
'domain': 'light',
'entity_category': None,
'entity_id': 'light.temperature_light',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -404,7 +404,7 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Temperature Light',
'original_name': None,
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,

View file

@ -44,7 +44,7 @@
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.air_purifier_131s_filter_life',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -53,10 +53,10 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 131s Filter Life',
'original_name': 'Filter life',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'filter_life',
'unique_id': 'air-purifier-filter-life',
'unit_of_measurement': '%',
}),
@ -72,7 +72,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.air_purifier_131s_air_quality',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -81,10 +81,10 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 131s Air Quality',
'original_name': 'Air quality',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'air_quality',
'unique_id': 'air-purifier-air-quality',
'unit_of_measurement': None,
}),
@ -93,7 +93,7 @@
# name: test_sensor_state[Air Purifier 131s][sensor.air_purifier_131s_air_quality]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Air Purifier 131s Air Quality',
'friendly_name': 'Air Purifier 131s Air quality',
}),
'context': <ANY>,
'entity_id': 'sensor.air_purifier_131s_air_quality',
@ -105,7 +105,7 @@
# name: test_sensor_state[Air Purifier 131s][sensor.air_purifier_131s_filter_life]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Air Purifier 131s Filter Life',
'friendly_name': 'Air Purifier 131s Filter life',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': '%',
}),
@ -161,7 +161,7 @@
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.air_purifier_200s_filter_life',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -170,10 +170,10 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 200s Filter Life',
'original_name': 'Filter life',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'filter_life',
'unique_id': 'asd_sdfKIHG7IJHGwJGJ7GJ_ag5h3G55-filter-life',
'unit_of_measurement': '%',
}),
@ -182,7 +182,7 @@
# name: test_sensor_state[Air Purifier 200s][sensor.air_purifier_200s_filter_life]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Air Purifier 200s Filter Life',
'friendly_name': 'Air Purifier 200s Filter life',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': '%',
}),
@ -238,7 +238,7 @@
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.air_purifier_400s_filter_life',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -247,10 +247,10 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 400s Filter Life',
'original_name': 'Filter life',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'filter_life',
'unique_id': '400s-purifier-filter-life',
'unit_of_measurement': '%',
}),
@ -266,7 +266,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.air_purifier_400s_air_quality',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -275,10 +275,10 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 400s Air Quality',
'original_name': 'Air quality',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'air_quality',
'unique_id': '400s-purifier-air-quality',
'unit_of_measurement': None,
}),
@ -296,7 +296,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.air_purifier_400s_pm2_5',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -305,7 +305,7 @@
}),
'original_device_class': <SensorDeviceClass.PM25: 'pm25'>,
'original_icon': None,
'original_name': 'Air Purifier 400s PM2.5',
'original_name': 'PM2.5',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
@ -317,7 +317,7 @@
# name: test_sensor_state[Air Purifier 400s][sensor.air_purifier_400s_air_quality]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Air Purifier 400s Air Quality',
'friendly_name': 'Air Purifier 400s Air quality',
}),
'context': <ANY>,
'entity_id': 'sensor.air_purifier_400s_air_quality',
@ -329,7 +329,7 @@
# name: test_sensor_state[Air Purifier 400s][sensor.air_purifier_400s_filter_life]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Air Purifier 400s Filter Life',
'friendly_name': 'Air Purifier 400s Filter life',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': '%',
}),
@ -400,7 +400,7 @@
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.air_purifier_600s_filter_life',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -409,10 +409,10 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 600s Filter Life',
'original_name': 'Filter life',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'filter_life',
'unique_id': '600s-purifier-filter-life',
'unit_of_measurement': '%',
}),
@ -428,7 +428,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.air_purifier_600s_air_quality',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -437,10 +437,10 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Air Purifier 600s Air Quality',
'original_name': 'Air quality',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'air_quality',
'unique_id': '600s-purifier-air-quality',
'unit_of_measurement': None,
}),
@ -458,7 +458,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.air_purifier_600s_pm2_5',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -467,7 +467,7 @@
}),
'original_device_class': <SensorDeviceClass.PM25: 'pm25'>,
'original_icon': None,
'original_name': 'Air Purifier 600s PM2.5',
'original_name': 'PM2.5',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
@ -479,7 +479,7 @@
# name: test_sensor_state[Air Purifier 600s][sensor.air_purifier_600s_air_quality]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Air Purifier 600s Air Quality',
'friendly_name': 'Air Purifier 600s Air quality',
}),
'context': <ANY>,
'entity_id': 'sensor.air_purifier_600s_air_quality',
@ -491,7 +491,7 @@
# name: test_sensor_state[Air Purifier 600s][sensor.air_purifier_600s_filter_life]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'Air Purifier 600s Filter Life',
'friendly_name': 'Air Purifier 600s Filter life',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': '%',
}),
@ -644,7 +644,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.outlet_current_power',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -653,10 +653,10 @@
}),
'original_device_class': <SensorDeviceClass.POWER: 'power'>,
'original_icon': None,
'original_name': 'Outlet current power',
'original_name': 'Current power',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'current_power',
'unique_id': 'outlet-power',
'unit_of_measurement': <UnitOfPower.WATT: 'W'>,
}),
@ -674,7 +674,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.outlet_energy_use_today',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -683,10 +683,10 @@
}),
'original_device_class': <SensorDeviceClass.ENERGY: 'energy'>,
'original_icon': None,
'original_name': 'Outlet energy use today',
'original_name': 'Energy use today',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'energy_today',
'unique_id': 'outlet-energy',
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
@ -704,7 +704,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.outlet_energy_use_weekly',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -713,10 +713,10 @@
}),
'original_device_class': <SensorDeviceClass.ENERGY: 'energy'>,
'original_icon': None,
'original_name': 'Outlet energy use weekly',
'original_name': 'Energy use weekly',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'energy_week',
'unique_id': 'outlet-energy-weekly',
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
@ -734,7 +734,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.outlet_energy_use_monthly',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -743,10 +743,10 @@
}),
'original_device_class': <SensorDeviceClass.ENERGY: 'energy'>,
'original_icon': None,
'original_name': 'Outlet energy use monthly',
'original_name': 'Energy use monthly',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'energy_month',
'unique_id': 'outlet-energy-monthly',
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
@ -764,7 +764,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.outlet_energy_use_yearly',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -773,10 +773,10 @@
}),
'original_device_class': <SensorDeviceClass.ENERGY: 'energy'>,
'original_icon': None,
'original_name': 'Outlet energy use yearly',
'original_name': 'Energy use yearly',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'energy_year',
'unique_id': 'outlet-energy-yearly',
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
@ -794,7 +794,7 @@
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.outlet_current_voltage',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -803,10 +803,10 @@
}),
'original_device_class': <SensorDeviceClass.VOLTAGE: 'voltage'>,
'original_icon': None,
'original_name': 'Outlet current voltage',
'original_name': 'Current voltage',
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
'translation_key': 'current_voltage',
'unique_id': 'outlet-voltage',
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
}),
@ -816,7 +816,7 @@
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'power',
'friendly_name': 'Outlet current power',
'friendly_name': 'Outlet Current power',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfPower.WATT: 'W'>,
}),
@ -831,7 +831,7 @@
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'voltage',
'friendly_name': 'Outlet current voltage',
'friendly_name': 'Outlet Current voltage',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
}),
@ -846,7 +846,7 @@
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'energy',
'friendly_name': 'Outlet energy use monthly',
'friendly_name': 'Outlet Energy use monthly',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
@ -861,7 +861,7 @@
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'energy',
'friendly_name': 'Outlet energy use today',
'friendly_name': 'Outlet Energy use today',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
@ -876,7 +876,7 @@
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'energy',
'friendly_name': 'Outlet energy use weekly',
'friendly_name': 'Outlet Energy use weekly',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),
@ -891,7 +891,7 @@
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'energy',
'friendly_name': 'Outlet energy use yearly',
'friendly_name': 'Outlet Energy use yearly',
'state_class': <SensorStateClass.TOTAL_INCREASING: 'total_increasing'>,
'unit_of_measurement': <UnitOfEnergy.KILO_WATT_HOUR: 'kWh'>,
}),

View file

@ -256,7 +256,7 @@
'domain': 'switch',
'entity_category': None,
'entity_id': 'switch.outlet',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -265,7 +265,7 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Outlet',
'original_name': None,
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,
@ -362,7 +362,7 @@
'domain': 'switch',
'entity_category': None,
'entity_id': 'switch.wall_switch',
'has_entity_name': False,
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
@ -371,7 +371,7 @@
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Wall Switch',
'original_name': None,
'platform': 'vesync',
'supported_features': 0,
'translation_key': None,