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

View file

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

View file

@ -8,10 +8,7 @@ from pyhap.accessory_driver import AccessoryDriver
import pytest import pytest
from homeassistant.components import camera, ffmpeg from homeassistant.components import camera, ffmpeg
from homeassistant.components.binary_sensor import ( from homeassistant.components.binary_sensor import BinarySensorDeviceClass
DEVICE_CLASS_MOTION,
DEVICE_CLASS_OCCUPANCY,
)
from homeassistant.components.camera.img_util import TurboJPEGSingleton from homeassistant.components.camera.img_util import TurboJPEGSingleton
from homeassistant.components.homekit.accessories import HomeBridge from homeassistant.components.homekit.accessories import HomeBridge
from homeassistant.components.homekit.const import ( 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" motion_entity_id = "binary_sensor.motion"
hass.states.async_set( 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() await hass.async_block_till_done()
entity_id = "camera.demo_camera" 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 assert char.value is True
hass.states.async_set( 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() await hass.async_block_till_done()
assert char.value is False assert char.value is False
char.set_value(True) char.set_value(True)
hass.states.async_set( 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() await hass.async_block_till_done()
assert char.value is True 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" doorbell_entity_id = "binary_sensor.doorbell"
hass.states.async_set( 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() await hass.async_block_till_done()
entity_id = "camera.demo_camera" 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 assert char2.value is None
hass.states.async_set( 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() await hass.async_block_till_done()
assert char.value is None 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) char.set_value(True)
char2.set_value(True) char2.set_value(True)
hass.states.async_set( 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() await hass.async_block_till_done()
assert char.value is None assert char.value is None

View file

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

View file

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

View file

@ -1,5 +1,6 @@
"""Test different accessory types: Sensors.""" """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 import get_accessory
from homeassistant.components.homekit.const import ( from homeassistant.components.homekit.const import (
PROP_CELSIUS, PROP_CELSIUS,
@ -269,7 +270,7 @@ async def test_motion_uses_bool(hass, hk_driver):
entity_id = "binary_sensor.motion" entity_id = "binary_sensor.motion"
hass.states.async_set( 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() 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 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() await hass.async_block_till_done()
assert acc.char_detected.value is True assert acc.char_detected.value is True
hass.states.async_set( 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() await hass.async_block_till_done()
assert acc.char_detected.value is False assert acc.char_detected.value is False
hass.states.async_set( 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() await hass.async_block_till_done()
assert acc.char_detected.value is True assert acc.char_detected.value is True
hass.states.async_set( 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() await hass.async_block_till_done()
assert acc.char_detected.value is False assert acc.char_detected.value is False