Migrate VeSync to has entity name (#96772)
* Migrate VeSync to has entity name * Fix tests
This commit is contained in:
parent
560e0cc7e0
commit
e99b6b2a03
11 changed files with 123 additions and 97 deletions
|
@ -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,
|
||||
|
|
|
@ -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."""
|
||||
|
|
|
@ -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."""
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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': '%',
|
||||
}),
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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'>,
|
||||
}),
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Reference in a new issue