1
mirror of https://github.com/home-assistant/core synced 2024-09-15 17:29:45 +02:00

Use enums in smartthings (#62198)

This commit is contained in:
Robert Hillis 2021-12-20 03:46:33 -05:00 committed by GitHub
parent a5c39e6fe4
commit 31c0440b25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 79 additions and 99 deletions

View File

@ -6,16 +6,10 @@ from collections.abc import Sequence
from pysmartthings import Attribute, Capability
from homeassistant.components.binary_sensor import (
DEVICE_CLASS_MOISTURE,
DEVICE_CLASS_MOTION,
DEVICE_CLASS_MOVING,
DEVICE_CLASS_OPENING,
DEVICE_CLASS_PRESENCE,
DEVICE_CLASS_PROBLEM,
DEVICE_CLASS_SOUND,
BinarySensorDeviceClass,
BinarySensorEntity,
)
from homeassistant.const import ENTITY_CATEGORY_DIAGNOSTIC
from homeassistant.helpers.entity import EntityCategory
from . import SmartThingsEntity
from .const import DATA_BROKERS, DOMAIN
@ -32,18 +26,18 @@ CAPABILITY_TO_ATTRIB = {
Capability.water_sensor: Attribute.water,
}
ATTRIB_TO_CLASS = {
Attribute.acceleration: DEVICE_CLASS_MOVING,
Attribute.contact: DEVICE_CLASS_OPENING,
Attribute.filter_status: DEVICE_CLASS_PROBLEM,
Attribute.motion: DEVICE_CLASS_MOTION,
Attribute.presence: DEVICE_CLASS_PRESENCE,
Attribute.sound: DEVICE_CLASS_SOUND,
Attribute.tamper: DEVICE_CLASS_PROBLEM,
Attribute.valve: DEVICE_CLASS_OPENING,
Attribute.water: DEVICE_CLASS_MOISTURE,
Attribute.acceleration: BinarySensorDeviceClass.MOVING,
Attribute.contact: BinarySensorDeviceClass.OPENING,
Attribute.filter_status: BinarySensorDeviceClass.PROBLEM,
Attribute.motion: BinarySensorDeviceClass.MOTION,
Attribute.presence: BinarySensorDeviceClass.PRESENCE,
Attribute.sound: BinarySensorDeviceClass.SOUND,
Attribute.tamper: BinarySensorDeviceClass.PROBLEM,
Attribute.valve: BinarySensorDeviceClass.OPENING,
Attribute.water: BinarySensorDeviceClass.MOISTURE,
}
ATTRIB_TO_ENTTIY_CATEGORY = {
Attribute.tamper: ENTITY_CATEGORY_DIAGNOSTIC,
Attribute.tamper: EntityCategory.DIAGNOSTIC,
}

View File

@ -7,9 +7,6 @@ from pysmartthings import Attribute, Capability
from homeassistant.components.cover import (
ATTR_POSITION,
DEVICE_CLASS_DOOR,
DEVICE_CLASS_GARAGE,
DEVICE_CLASS_SHADE,
DOMAIN as COVER_DOMAIN,
STATE_CLOSED,
STATE_CLOSING,
@ -18,6 +15,7 @@ from homeassistant.components.cover import (
SUPPORT_CLOSE,
SUPPORT_OPEN,
SUPPORT_SET_POSITION,
CoverDeviceClass,
CoverEntity,
)
from homeassistant.const import ATTR_BATTERY_LEVEL
@ -103,13 +101,13 @@ class SmartThingsCover(SmartThingsEntity, CoverEntity):
"""Update the attrs of the cover."""
value = None
if Capability.door_control in self._device.capabilities:
self._device_class = DEVICE_CLASS_DOOR
self._device_class = CoverDeviceClass.DOOR
value = self._device.status.door
elif Capability.window_shade in self._device.capabilities:
self._device_class = DEVICE_CLASS_SHADE
self._device_class = CoverDeviceClass.SHADE
value = self._device.status.window_shade
elif Capability.garage_door_control in self._device.capabilities:
self._device_class = DEVICE_CLASS_GARAGE
self._device_class = CoverDeviceClass.GARAGE
value = self._device.status.door
self._state = VALUE_TO_STATE.get(value)

View File

@ -8,28 +8,15 @@ from pysmartthings import Attribute, Capability
from pysmartthings.device import DeviceEntity
from homeassistant.components.sensor import (
STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING,
SensorDeviceClass,
SensorEntity,
SensorStateClass,
)
from homeassistant.const import (
AREA_SQUARE_METERS,
CONCENTRATION_PARTS_PER_MILLION,
DEVICE_CLASS_BATTERY,
DEVICE_CLASS_CO,
DEVICE_CLASS_CO2,
DEVICE_CLASS_ENERGY,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_ILLUMINANCE,
DEVICE_CLASS_POWER,
DEVICE_CLASS_SIGNAL_STRENGTH,
DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_TIMESTAMP,
DEVICE_CLASS_VOLTAGE,
ELECTRIC_POTENTIAL_VOLT,
ENERGY_KILO_WATT_HOUR,
ENTITY_CATEGORY_CONFIG,
ENTITY_CATEGORY_DIAGNOSTIC,
LIGHT_LUX,
MASS_KILOGRAMS,
PERCENTAGE,
@ -38,6 +25,7 @@ from homeassistant.const import (
TEMP_FAHRENHEIT,
VOLUME_CUBIC_METERS,
)
from homeassistant.helpers.entity import EntityCategory
from homeassistant.util import dt as dt_util
from . import SmartThingsEntity
@ -55,7 +43,7 @@ CAPABILITY_TO_SENSORS = {
None,
None,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.air_conditioner_mode: [
@ -65,7 +53,7 @@ CAPABILITY_TO_SENSORS = {
None,
None,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.air_quality_sensor: [
@ -74,7 +62,7 @@ CAPABILITY_TO_SENSORS = {
"Air Quality",
"CAQI",
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -87,9 +75,9 @@ CAPABILITY_TO_SENSORS = {
Attribute.battery,
"Battery",
PERCENTAGE,
DEVICE_CLASS_BATTERY,
SensorDeviceClass.BATTERY,
None,
ENTITY_CATEGORY_DIAGNOSTIC,
EntityCategory.DIAGNOSTIC,
)
],
Capability.body_mass_index_measurement: [
@ -98,7 +86,7 @@ CAPABILITY_TO_SENSORS = {
"Body Mass Index",
f"{MASS_KILOGRAMS}/{AREA_SQUARE_METERS}",
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -108,7 +96,7 @@ CAPABILITY_TO_SENSORS = {
"Body Weight",
MASS_KILOGRAMS,
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -117,8 +105,8 @@ CAPABILITY_TO_SENSORS = {
Attribute.carbon_dioxide,
"Carbon Dioxide Measurement",
CONCENTRATION_PARTS_PER_MILLION,
DEVICE_CLASS_CO2,
STATE_CLASS_MEASUREMENT,
SensorDeviceClass.CO2,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -137,8 +125,8 @@ CAPABILITY_TO_SENSORS = {
Attribute.carbon_monoxide_level,
"Carbon Monoxide Measurement",
CONCENTRATION_PARTS_PER_MILLION,
DEVICE_CLASS_CO,
STATE_CLASS_MEASUREMENT,
SensorDeviceClass.CO,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -158,7 +146,7 @@ CAPABILITY_TO_SENSORS = {
Attribute.completion_time,
"Dishwasher Completion Time",
None,
DEVICE_CLASS_TIMESTAMP,
SensorDeviceClass.TIMESTAMP,
None,
None,
),
@ -170,7 +158,7 @@ CAPABILITY_TO_SENSORS = {
None,
None,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.dryer_operating_state: [
@ -180,7 +168,7 @@ CAPABILITY_TO_SENSORS = {
Attribute.completion_time,
"Dryer Completion Time",
None,
DEVICE_CLASS_TIMESTAMP,
SensorDeviceClass.TIMESTAMP,
None,
None,
),
@ -191,7 +179,7 @@ CAPABILITY_TO_SENSORS = {
"Fine Dust Level",
None,
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
),
Map(
@ -199,7 +187,7 @@ CAPABILITY_TO_SENSORS = {
"Dust Level",
None,
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
),
],
@ -208,8 +196,8 @@ CAPABILITY_TO_SENSORS = {
Attribute.energy,
"Energy Meter",
ENERGY_KILO_WATT_HOUR,
DEVICE_CLASS_ENERGY,
STATE_CLASS_TOTAL_INCREASING,
SensorDeviceClass.ENERGY,
SensorStateClass.TOTAL_INCREASING,
None,
)
],
@ -219,7 +207,7 @@ CAPABILITY_TO_SENSORS = {
"Equivalent Carbon Dioxide Measurement",
CONCENTRATION_PARTS_PER_MILLION,
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -229,7 +217,7 @@ CAPABILITY_TO_SENSORS = {
"Formaldehyde Measurement",
CONCENTRATION_PARTS_PER_MILLION,
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -239,7 +227,7 @@ CAPABILITY_TO_SENSORS = {
"Gas Meter",
ENERGY_KILO_WATT_HOUR,
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
),
Map(
@ -249,7 +237,7 @@ CAPABILITY_TO_SENSORS = {
Attribute.gas_meter_time,
"Gas Meter Time",
None,
DEVICE_CLASS_TIMESTAMP,
SensorDeviceClass.TIMESTAMP,
None,
None,
),
@ -258,7 +246,7 @@ CAPABILITY_TO_SENSORS = {
"Gas Meter Volume",
VOLUME_CUBIC_METERS,
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
),
],
@ -267,8 +255,8 @@ CAPABILITY_TO_SENSORS = {
Attribute.illuminance,
"Illuminance",
LIGHT_LUX,
DEVICE_CLASS_ILLUMINANCE,
STATE_CLASS_MEASUREMENT,
SensorDeviceClass.ILLUMINANCE,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -278,7 +266,7 @@ CAPABILITY_TO_SENSORS = {
"Infrared Level",
PERCENTAGE,
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -313,7 +301,7 @@ CAPABILITY_TO_SENSORS = {
None,
None,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.oven_operating_state: [
@ -330,8 +318,8 @@ CAPABILITY_TO_SENSORS = {
Attribute.power,
"Power Meter",
POWER_WATT,
DEVICE_CLASS_POWER,
STATE_CLASS_MEASUREMENT,
SensorDeviceClass.POWER,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -342,7 +330,7 @@ CAPABILITY_TO_SENSORS = {
None,
None,
None,
ENTITY_CATEGORY_DIAGNOSTIC,
EntityCategory.DIAGNOSTIC,
)
],
Capability.refrigeration_setpoint: [
@ -350,7 +338,7 @@ CAPABILITY_TO_SENSORS = {
Attribute.refrigeration_setpoint,
"Refrigeration Setpoint",
None,
DEVICE_CLASS_TEMPERATURE,
SensorDeviceClass.TEMPERATURE,
None,
None,
)
@ -360,8 +348,8 @@ CAPABILITY_TO_SENSORS = {
Attribute.humidity,
"Relative Humidity Measurement",
PERCENTAGE,
DEVICE_CLASS_HUMIDITY,
STATE_CLASS_MEASUREMENT,
SensorDeviceClass.HUMIDITY,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -372,7 +360,7 @@ CAPABILITY_TO_SENSORS = {
None,
None,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.robot_cleaner_movement: [
@ -392,7 +380,7 @@ CAPABILITY_TO_SENSORS = {
None,
None,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.signal_strength: [
@ -401,16 +389,16 @@ CAPABILITY_TO_SENSORS = {
"LQI Signal Strength",
None,
None,
STATE_CLASS_MEASUREMENT,
ENTITY_CATEGORY_DIAGNOSTIC,
SensorStateClass.MEASUREMENT,
EntityCategory.DIAGNOSTIC,
),
Map(
Attribute.rssi,
"RSSI Signal Strength",
None,
DEVICE_CLASS_SIGNAL_STRENGTH,
STATE_CLASS_MEASUREMENT,
ENTITY_CATEGORY_DIAGNOSTIC,
SensorDeviceClass.SIGNAL_STRENGTH,
SensorStateClass.MEASUREMENT,
EntityCategory.DIAGNOSTIC,
),
],
Capability.smoke_detector: [
@ -421,8 +409,8 @@ CAPABILITY_TO_SENSORS = {
Attribute.temperature,
"Temperature Measurement",
None,
DEVICE_CLASS_TEMPERATURE,
STATE_CLASS_MEASUREMENT,
SensorDeviceClass.TEMPERATURE,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -431,7 +419,7 @@ CAPABILITY_TO_SENSORS = {
Attribute.cooling_setpoint,
"Thermostat Cooling Setpoint",
None,
DEVICE_CLASS_TEMPERATURE,
SensorDeviceClass.TEMPERATURE,
None,
None,
)
@ -443,7 +431,7 @@ CAPABILITY_TO_SENSORS = {
None,
None,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.thermostat_heating_setpoint: [
@ -451,9 +439,9 @@ CAPABILITY_TO_SENSORS = {
Attribute.heating_setpoint,
"Thermostat Heating Setpoint",
None,
DEVICE_CLASS_TEMPERATURE,
SensorDeviceClass.TEMPERATURE,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.thermostat_mode: [
@ -463,7 +451,7 @@ CAPABILITY_TO_SENSORS = {
None,
None,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.thermostat_operating_state: [
@ -481,9 +469,9 @@ CAPABILITY_TO_SENSORS = {
Attribute.thermostat_setpoint,
"Thermostat Setpoint",
None,
DEVICE_CLASS_TEMPERATURE,
SensorDeviceClass.TEMPERATURE,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.three_axis: [],
@ -497,7 +485,7 @@ CAPABILITY_TO_SENSORS = {
"Tvoc Measurement",
CONCENTRATION_PARTS_PER_MILLION,
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -507,7 +495,7 @@ CAPABILITY_TO_SENSORS = {
"Ultraviolet Index",
None,
None,
STATE_CLASS_MEASUREMENT,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -516,8 +504,8 @@ CAPABILITY_TO_SENSORS = {
Attribute.voltage,
"Voltage Measurement",
ELECTRIC_POTENTIAL_VOLT,
DEVICE_CLASS_VOLTAGE,
STATE_CLASS_MEASUREMENT,
SensorDeviceClass.VOLTAGE,
SensorStateClass.MEASUREMENT,
None,
)
],
@ -528,7 +516,7 @@ CAPABILITY_TO_SENSORS = {
None,
None,
None,
ENTITY_CATEGORY_CONFIG,
EntityCategory.CONFIG,
)
],
Capability.washer_operating_state: [
@ -538,7 +526,7 @@ CAPABILITY_TO_SENSORS = {
Attribute.completion_time,
"Washer Completion Time",
None,
DEVICE_CLASS_TIMESTAMP,
SensorDeviceClass.TIMESTAMP,
None,
None,
),
@ -659,7 +647,7 @@ class SmartThingsSensor(SmartThingsEntity, SensorEntity):
"""Return the state of the sensor."""
value = self._device.status.attributes[self._attribute].value
if self._device_class != DEVICE_CLASS_TIMESTAMP:
if self._device_class != SensorDeviceClass.TIMESTAMP:
return value
return dt_util.parse_datetime(value)
@ -715,9 +703,9 @@ class SmartThingsPowerConsumptionSensor(SmartThingsEntity, SensorEntity):
"""Init the class."""
super().__init__(device)
self.report_name = report_name
self._attr_state_class = STATE_CLASS_MEASUREMENT
self._attr_state_class = SensorStateClass.MEASUREMENT
if self.report_name != "power":
self._attr_state_class = STATE_CLASS_TOTAL_INCREASING
self._attr_state_class = SensorStateClass.TOTAL_INCREASING
@property
def name(self) -> str:
@ -743,8 +731,8 @@ class SmartThingsPowerConsumptionSensor(SmartThingsEntity, SensorEntity):
def device_class(self):
"""Return the device class of the sensor."""
if self.report_name == "power":
return DEVICE_CLASS_POWER
return DEVICE_CLASS_ENERGY
return SensorDeviceClass.POWER
return SensorDeviceClass.ENERGY
@property
def native_unit_of_measurement(self):