Use DeviceClass Enums in homekit (#62218)

This commit is contained in:
Dave T 2021-12-20 18:53:44 +00:00 committed by GitHub
parent 6cf9f1a0cc
commit 168fefad88
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 54 additions and 53 deletions

View file

@ -18,6 +18,7 @@ from homeassistant.components.homekit.const import (
TYPE_VALVE,
)
import homeassistant.components.media_player.const as media_player_c
from homeassistant.components.sensor import SensorDeviceClass
import homeassistant.components.vacuum as vacuum
from homeassistant.const import (
ATTR_CODE,
@ -26,8 +27,6 @@ from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
CONF_NAME,
CONF_TYPE,
DEVICE_CLASS_CO,
DEVICE_CLASS_CO2,
LIGHT_LUX,
PERCENTAGE,
STATE_UNKNOWN,
@ -219,14 +218,14 @@ def test_type_media_player(type_name, entity_id, state, attrs, config):
"CarbonMonoxideSensor",
"sensor.co",
"2",
{ATTR_DEVICE_CLASS: DEVICE_CLASS_CO},
{ATTR_DEVICE_CLASS: SensorDeviceClass.CO},
),
("CarbonDioxideSensor", "sensor.airmeter_co2", "500", {}),
(
"CarbonDioxideSensor",
"sensor.co2",
"500",
{ATTR_DEVICE_CLASS: DEVICE_CLASS_CO2},
{ATTR_DEVICE_CLASS: SensorDeviceClass.CO2},
),
(
"HumiditySensor",

View file

@ -11,10 +11,7 @@ import pytest
from homeassistant import config as hass_config
from homeassistant.components import homekit as homekit_base, zeroconf
from homeassistant.components.binary_sensor import (
DEVICE_CLASS_BATTERY_CHARGING,
DEVICE_CLASS_MOTION,
)
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
from homeassistant.components.homekit import (
MAX_DEVICES,
STATUS_READY,
@ -37,6 +34,7 @@ from homeassistant.components.homekit.const import (
)
from homeassistant.components.homekit.type_triggers import DeviceTriggerAccessory
from homeassistant.components.homekit.util import get_persist_fullpath_for_entry_id
from homeassistant.components.sensor import SensorDeviceClass
from homeassistant.config_entries import SOURCE_IMPORT
from homeassistant.const import (
ATTR_DEVICE_CLASS,
@ -45,8 +43,6 @@ from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
CONF_NAME,
CONF_PORT,
DEVICE_CLASS_BATTERY,
DEVICE_CLASS_HUMIDITY,
EVENT_HOMEASSISTANT_STARTED,
PERCENTAGE,
SERVICE_RELOAD,
@ -1118,14 +1114,14 @@ async def test_homekit_finds_linked_batteries(
"powerwall",
"battery_charging",
device_id=device_entry.id,
original_device_class=DEVICE_CLASS_BATTERY_CHARGING,
original_device_class=BinarySensorDeviceClass.BATTERY_CHARGING,
)
battery_sensor = entity_reg.async_get_or_create(
"sensor",
"powerwall",
"battery",
device_id=device_entry.id,
original_device_class=DEVICE_CLASS_BATTERY,
original_device_class=SensorDeviceClass.BATTERY,
)
light = entity_reg.async_get_or_create(
"light", "powerwall", "demo", device_id=device_entry.id
@ -1134,10 +1130,10 @@ async def test_homekit_finds_linked_batteries(
hass.states.async_set(
binary_charging_sensor.entity_id,
STATE_ON,
{ATTR_DEVICE_CLASS: DEVICE_CLASS_BATTERY_CHARGING},
{ATTR_DEVICE_CLASS: BinarySensorDeviceClass.BATTERY_CHARGING},
)
hass.states.async_set(
battery_sensor.entity_id, 30, {ATTR_DEVICE_CLASS: DEVICE_CLASS_BATTERY}
battery_sensor.entity_id, 30, {ATTR_DEVICE_CLASS: SensorDeviceClass.BATTERY}
)
hass.states.async_set(light.entity_id, STATE_ON)
@ -1187,14 +1183,14 @@ async def test_homekit_async_get_integration_fails(
"invalid_integration_does_not_exist",
"battery_charging",
device_id=device_entry.id,
original_device_class=DEVICE_CLASS_BATTERY_CHARGING,
original_device_class=BinarySensorDeviceClass.BATTERY_CHARGING,
)
battery_sensor = entity_reg.async_get_or_create(
"sensor",
"invalid_integration_does_not_exist",
"battery",
device_id=device_entry.id,
original_device_class=DEVICE_CLASS_BATTERY,
original_device_class=SensorDeviceClass.BATTERY,
)
light = entity_reg.async_get_or_create(
"light", "invalid_integration_does_not_exist", "demo", device_id=device_entry.id
@ -1203,10 +1199,10 @@ async def test_homekit_async_get_integration_fails(
hass.states.async_set(
binary_charging_sensor.entity_id,
STATE_ON,
{ATTR_DEVICE_CLASS: DEVICE_CLASS_BATTERY_CHARGING},
{ATTR_DEVICE_CLASS: BinarySensorDeviceClass.BATTERY_CHARGING},
)
hass.states.async_set(
battery_sensor.entity_id, 30, {ATTR_DEVICE_CLASS: DEVICE_CLASS_BATTERY}
battery_sensor.entity_id, 30, {ATTR_DEVICE_CLASS: SensorDeviceClass.BATTERY}
)
hass.states.async_set(light.entity_id, STATE_ON)
@ -1334,14 +1330,14 @@ async def test_homekit_ignored_missing_devices(
"powerwall",
"battery_charging",
device_id=device_entry.id,
original_device_class=DEVICE_CLASS_BATTERY_CHARGING,
original_device_class=BinarySensorDeviceClass.BATTERY_CHARGING,
)
entity_reg.async_get_or_create(
"sensor",
"powerwall",
"battery",
device_id=device_entry.id,
original_device_class=DEVICE_CLASS_BATTERY,
original_device_class=SensorDeviceClass.BATTERY,
)
light = entity_reg.async_get_or_create(
"light", "powerwall", "demo", device_id=device_entry.id
@ -1404,7 +1400,7 @@ async def test_homekit_finds_linked_motion_sensors(
"camera",
"motion_sensor",
device_id=device_entry.id,
original_device_class=DEVICE_CLASS_MOTION,
original_device_class=BinarySensorDeviceClass.MOTION,
)
camera = entity_reg.async_get_or_create(
"camera", "camera", "demo", device_id=device_entry.id
@ -1413,7 +1409,7 @@ async def test_homekit_finds_linked_motion_sensors(
hass.states.async_set(
binary_motion_sensor.entity_id,
STATE_ON,
{ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION},
{ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION},
)
hass.states.async_set(camera.entity_id, STATE_ON)
@ -1466,7 +1462,7 @@ async def test_homekit_finds_linked_humidity_sensors(
"humidifier",
"humidity_sensor",
device_id=device_entry.id,
original_device_class=DEVICE_CLASS_HUMIDITY,
original_device_class=SensorDeviceClass.HUMIDITY,
)
humidifier = entity_reg.async_get_or_create(
"humidifier", "humidifier", "demo", device_id=device_entry.id
@ -1476,7 +1472,7 @@ async def test_homekit_finds_linked_humidity_sensors(
humidity_sensor.entity_id,
"42",
{
ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY,
ATTR_DEVICE_CLASS: SensorDeviceClass.HUMIDITY,
ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE,
},
)

View file

@ -8,10 +8,7 @@ from pyhap.accessory_driver import AccessoryDriver
import pytest
from homeassistant.components import camera, ffmpeg
from homeassistant.components.binary_sensor import (
DEVICE_CLASS_MOTION,
DEVICE_CLASS_OCCUPANCY,
)
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
from homeassistant.components.camera.img_util import TurboJPEGSingleton
from homeassistant.components.homekit.accessories import HomeBridge
from homeassistant.components.homekit.const import (
@ -610,7 +607,7 @@ async def test_camera_with_linked_motion_sensor(hass, run_driver, events):
motion_entity_id = "binary_sensor.motion"
hass.states.async_set(
motion_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
motion_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION}
)
await hass.async_block_till_done()
entity_id = "camera.demo_camera"
@ -647,14 +644,14 @@ async def test_camera_with_linked_motion_sensor(hass, run_driver, events):
assert char.value is True
hass.states.async_set(
motion_entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
motion_entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION}
)
await hass.async_block_till_done()
assert char.value is False
char.set_value(True)
hass.states.async_set(
motion_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
motion_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION}
)
await hass.async_block_till_done()
assert char.value is True
@ -708,7 +705,9 @@ async def test_camera_with_linked_doorbell_sensor(hass, run_driver, events):
doorbell_entity_id = "binary_sensor.doorbell"
hass.states.async_set(
doorbell_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_OCCUPANCY}
doorbell_entity_id,
STATE_ON,
{ATTR_DEVICE_CLASS: BinarySensorDeviceClass.OCCUPANCY},
)
await hass.async_block_till_done()
entity_id = "camera.demo_camera"
@ -752,7 +751,9 @@ async def test_camera_with_linked_doorbell_sensor(hass, run_driver, events):
assert char2.value is None
hass.states.async_set(
doorbell_entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: DEVICE_CLASS_OCCUPANCY}
doorbell_entity_id,
STATE_OFF,
{ATTR_DEVICE_CLASS: BinarySensorDeviceClass.OCCUPANCY},
)
await hass.async_block_till_done()
assert char.value is None
@ -761,7 +762,9 @@ async def test_camera_with_linked_doorbell_sensor(hass, run_driver, events):
char.set_value(True)
char2.set_value(True)
hass.states.async_set(
doorbell_entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_OCCUPANCY}
doorbell_entity_id,
STATE_ON,
{ATTR_DEVICE_CLASS: BinarySensorDeviceClass.OCCUPANCY},
)
await hass.async_block_till_done()
assert char.value is None

View file

@ -27,11 +27,11 @@ from homeassistant.components.humidifier.const import (
DOMAIN,
SERVICE_SET_HUMIDITY,
)
from homeassistant.components.sensor import SensorDeviceClass
from homeassistant.const import (
ATTR_DEVICE_CLASS,
ATTR_ENTITY_ID,
ATTR_UNIT_OF_MEASUREMENT,
DEVICE_CLASS_HUMIDITY,
PERCENTAGE,
SERVICE_TURN_OFF,
SERVICE_TURN_ON,
@ -313,7 +313,7 @@ async def test_humidifier_with_linked_humidity_sensor(hass, hk_driver):
humidity_sensor_entity_id,
"42.0",
{
ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY,
ATTR_DEVICE_CLASS: SensorDeviceClass.HUMIDITY,
ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE,
},
)
@ -341,7 +341,7 @@ async def test_humidifier_with_linked_humidity_sensor(hass, hk_driver):
humidity_sensor_entity_id,
"43.0",
{
ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY,
ATTR_DEVICE_CLASS: SensorDeviceClass.HUMIDITY,
ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE,
},
)
@ -353,7 +353,7 @@ async def test_humidifier_with_linked_humidity_sensor(hass, hk_driver):
humidity_sensor_entity_id,
STATE_UNAVAILABLE,
{
ATTR_DEVICE_CLASS: DEVICE_CLASS_HUMIDITY,
ATTR_DEVICE_CLASS: SensorDeviceClass.HUMIDITY,
ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE,
},
)

View file

@ -18,7 +18,7 @@ from homeassistant.components.homekit.type_media_players import (
MediaPlayer,
TelevisionMediaPlayer,
)
from homeassistant.components.media_player import DEVICE_CLASS_TV
from homeassistant.components.media_player import MediaPlayerDeviceClass
from homeassistant.components.media_player.const import (
ATTR_INPUT_SOURCE,
ATTR_INPUT_SOURCE_LIST,
@ -181,7 +181,7 @@ async def test_media_player_television(hass, hk_driver, events, caplog):
entity_id,
None,
{
ATTR_DEVICE_CLASS: DEVICE_CLASS_TV,
ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV,
ATTR_SUPPORTED_FEATURES: 3469,
ATTR_MEDIA_VOLUME_MUTED: False,
ATTR_INPUT_SOURCE_LIST: ["HDMI 1", "HDMI 2", "HDMI 3", "HDMI 4"],
@ -358,7 +358,7 @@ async def test_media_player_television_basic(hass, hk_driver, events, caplog):
hass.states.async_set(
entity_id,
None,
{ATTR_DEVICE_CLASS: DEVICE_CLASS_TV, ATTR_SUPPORTED_FEATURES: 384},
{ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV, ATTR_SUPPORTED_FEATURES: 384},
)
await hass.async_block_till_done()
acc = TelevisionMediaPlayer(hass, hk_driver, "MediaPlayer", entity_id, 2, None)
@ -394,7 +394,7 @@ async def test_media_player_television_supports_source_select_no_sources(
hass.states.async_set(
entity_id,
None,
{ATTR_DEVICE_CLASS: DEVICE_CLASS_TV, ATTR_SUPPORTED_FEATURES: 3469},
{ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV, ATTR_SUPPORTED_FEATURES: 3469},
)
await hass.async_block_till_done()
acc = TelevisionMediaPlayer(hass, hk_driver, "MediaPlayer", entity_id, 2, None)
@ -415,7 +415,7 @@ async def test_tv_restore(hass, hk_driver, events):
"generic",
"1234",
suggested_object_id="simple",
original_device_class=DEVICE_CLASS_TV,
original_device_class=MediaPlayerDeviceClass.TV,
)
registry.async_get_or_create(
"media_player",
@ -426,7 +426,7 @@ async def test_tv_restore(hass, hk_driver, events):
ATTR_INPUT_SOURCE_LIST: ["HDMI 1", "HDMI 2", "HDMI 3", "HDMI 4"],
},
supported_features=3469,
original_device_class=DEVICE_CLASS_TV,
original_device_class=MediaPlayerDeviceClass.TV,
)
hass.bus.async_fire(EVENT_HOMEASSISTANT_START, {})
@ -465,7 +465,7 @@ async def test_media_player_television_max_sources(hass, hk_driver, events, capl
entity_id,
None,
{
ATTR_DEVICE_CLASS: DEVICE_CLASS_TV,
ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV,
ATTR_SUPPORTED_FEATURES: 3469,
ATTR_MEDIA_VOLUME_MUTED: False,
ATTR_INPUT_SOURCE: "HDMI 3",
@ -489,7 +489,7 @@ async def test_media_player_television_max_sources(hass, hk_driver, events, capl
entity_id,
None,
{
ATTR_DEVICE_CLASS: DEVICE_CLASS_TV,
ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV,
ATTR_SUPPORTED_FEATURES: 3469,
ATTR_MEDIA_VOLUME_MUTED: False,
ATTR_INPUT_SOURCE: "HDMI 90",
@ -503,7 +503,7 @@ async def test_media_player_television_max_sources(hass, hk_driver, events, capl
entity_id,
None,
{
ATTR_DEVICE_CLASS: DEVICE_CLASS_TV,
ATTR_DEVICE_CLASS: MediaPlayerDeviceClass.TV,
ATTR_SUPPORTED_FEATURES: 3469,
ATTR_MEDIA_VOLUME_MUTED: False,
ATTR_INPUT_SOURCE: "HDMI 91",

View file

@ -1,5 +1,6 @@
"""Test different accessory types: Sensors."""
from homeassistant.components.binary_sensor import DEVICE_CLASS_MOTION
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
from homeassistant.components.homekit import get_accessory
from homeassistant.components.homekit.const import (
PROP_CELSIUS,
@ -269,7 +270,7 @@ async def test_motion_uses_bool(hass, hk_driver):
entity_id = "binary_sensor.motion"
hass.states.async_set(
entity_id, STATE_UNKNOWN, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
entity_id, STATE_UNKNOWN, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION}
)
await hass.async_block_till_done()
@ -282,24 +283,26 @@ async def test_motion_uses_bool(hass, hk_driver):
assert acc.char_detected.value is False
hass.states.async_set(entity_id, STATE_ON, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION})
hass.states.async_set(
entity_id, STATE_ON, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION}
)
await hass.async_block_till_done()
assert acc.char_detected.value is True
hass.states.async_set(
entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
entity_id, STATE_OFF, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION}
)
await hass.async_block_till_done()
assert acc.char_detected.value is False
hass.states.async_set(
entity_id, STATE_HOME, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
entity_id, STATE_HOME, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION}
)
await hass.async_block_till_done()
assert acc.char_detected.value is True
hass.states.async_set(
entity_id, STATE_NOT_HOME, {ATTR_DEVICE_CLASS: DEVICE_CLASS_MOTION}
entity_id, STATE_NOT_HOME, {ATTR_DEVICE_CLASS: BinarySensorDeviceClass.MOTION}
)
await hass.async_block_till_done()
assert acc.char_detected.value is False