Use DeviceClass Enums in homekit (#62218)
This commit is contained in:
parent
6cf9f1a0cc
commit
168fefad88
6 changed files with 54 additions and 53 deletions
|
@ -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",
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
)
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue