mirror of
https://github.com/home-assistant/core.git
synced 2025-07-28 15:47:12 +00:00
Add lock ultra and lock lite for switchbot integration (#145373)
This commit is contained in:
parent
3ada93b293
commit
630c438834
@ -80,6 +80,16 @@ PLATFORMS_BY_TYPE = {
|
|||||||
SupportedModels.K10_PRO_VACUUM.value: [Platform.VACUUM, Platform.SENSOR],
|
SupportedModels.K10_PRO_VACUUM.value: [Platform.VACUUM, Platform.SENSOR],
|
||||||
SupportedModels.K10_PRO_COMBO_VACUUM.value: [Platform.VACUUM, Platform.SENSOR],
|
SupportedModels.K10_PRO_COMBO_VACUUM.value: [Platform.VACUUM, Platform.SENSOR],
|
||||||
SupportedModels.HUB3.value: [Platform.SENSOR, Platform.BINARY_SENSOR],
|
SupportedModels.HUB3.value: [Platform.SENSOR, Platform.BINARY_SENSOR],
|
||||||
|
SupportedModels.LOCK_LITE.value: [
|
||||||
|
Platform.BINARY_SENSOR,
|
||||||
|
Platform.LOCK,
|
||||||
|
Platform.SENSOR,
|
||||||
|
],
|
||||||
|
SupportedModels.LOCK_ULTRA.value: [
|
||||||
|
Platform.BINARY_SENSOR,
|
||||||
|
Platform.LOCK,
|
||||||
|
Platform.SENSOR,
|
||||||
|
],
|
||||||
}
|
}
|
||||||
CLASS_BY_DEVICE = {
|
CLASS_BY_DEVICE = {
|
||||||
SupportedModels.CEILING_LIGHT.value: switchbot.SwitchbotCeilingLight,
|
SupportedModels.CEILING_LIGHT.value: switchbot.SwitchbotCeilingLight,
|
||||||
@ -101,6 +111,8 @@ CLASS_BY_DEVICE = {
|
|||||||
SupportedModels.K10_VACUUM.value: switchbot.SwitchbotVacuum,
|
SupportedModels.K10_VACUUM.value: switchbot.SwitchbotVacuum,
|
||||||
SupportedModels.K10_PRO_VACUUM.value: switchbot.SwitchbotVacuum,
|
SupportedModels.K10_PRO_VACUUM.value: switchbot.SwitchbotVacuum,
|
||||||
SupportedModels.K10_PRO_COMBO_VACUUM.value: switchbot.SwitchbotVacuum,
|
SupportedModels.K10_PRO_COMBO_VACUUM.value: switchbot.SwitchbotVacuum,
|
||||||
|
SupportedModels.LOCK_LITE.value: switchbot.SwitchbotLock,
|
||||||
|
SupportedModels.LOCK_ULTRA.value: switchbot.SwitchbotLock,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,6 +44,8 @@ class SupportedModels(StrEnum):
|
|||||||
K10_PRO_VACUUM = "k10_pro_vacuum"
|
K10_PRO_VACUUM = "k10_pro_vacuum"
|
||||||
K10_PRO_COMBO_VACUUM = "k10_pro_combo_vacumm"
|
K10_PRO_COMBO_VACUUM = "k10_pro_combo_vacumm"
|
||||||
HUB3 = "hub3"
|
HUB3 = "hub3"
|
||||||
|
LOCK_LITE = "lock_lite"
|
||||||
|
LOCK_ULTRA = "lock_ultra"
|
||||||
|
|
||||||
|
|
||||||
CONNECTABLE_SUPPORTED_MODEL_TYPES = {
|
CONNECTABLE_SUPPORTED_MODEL_TYPES = {
|
||||||
@ -67,6 +69,8 @@ CONNECTABLE_SUPPORTED_MODEL_TYPES = {
|
|||||||
SwitchbotModel.K10_VACUUM: SupportedModels.K10_VACUUM,
|
SwitchbotModel.K10_VACUUM: SupportedModels.K10_VACUUM,
|
||||||
SwitchbotModel.K10_PRO_VACUUM: SupportedModels.K10_PRO_VACUUM,
|
SwitchbotModel.K10_PRO_VACUUM: SupportedModels.K10_PRO_VACUUM,
|
||||||
SwitchbotModel.K10_PRO_COMBO_VACUUM: SupportedModels.K10_PRO_COMBO_VACUUM,
|
SwitchbotModel.K10_PRO_COMBO_VACUUM: SupportedModels.K10_PRO_COMBO_VACUUM,
|
||||||
|
SwitchbotModel.LOCK_LITE: SupportedModels.LOCK_LITE,
|
||||||
|
SwitchbotModel.LOCK_ULTRA: SupportedModels.LOCK_ULTRA,
|
||||||
}
|
}
|
||||||
|
|
||||||
NON_CONNECTABLE_SUPPORTED_MODEL_TYPES = {
|
NON_CONNECTABLE_SUPPORTED_MODEL_TYPES = {
|
||||||
@ -91,6 +95,8 @@ ENCRYPTED_MODELS = {
|
|||||||
SwitchbotModel.RELAY_SWITCH_1PM,
|
SwitchbotModel.RELAY_SWITCH_1PM,
|
||||||
SwitchbotModel.LOCK,
|
SwitchbotModel.LOCK,
|
||||||
SwitchbotModel.LOCK_PRO,
|
SwitchbotModel.LOCK_PRO,
|
||||||
|
SwitchbotModel.LOCK_LITE,
|
||||||
|
SwitchbotModel.LOCK_ULTRA,
|
||||||
}
|
}
|
||||||
|
|
||||||
ENCRYPTED_SWITCHBOT_MODEL_TO_CLASS: dict[
|
ENCRYPTED_SWITCHBOT_MODEL_TO_CLASS: dict[
|
||||||
@ -100,6 +106,8 @@ ENCRYPTED_SWITCHBOT_MODEL_TO_CLASS: dict[
|
|||||||
SwitchbotModel.LOCK_PRO: switchbot.SwitchbotLock,
|
SwitchbotModel.LOCK_PRO: switchbot.SwitchbotLock,
|
||||||
SwitchbotModel.RELAY_SWITCH_1PM: switchbot.SwitchbotRelaySwitch,
|
SwitchbotModel.RELAY_SWITCH_1PM: switchbot.SwitchbotRelaySwitch,
|
||||||
SwitchbotModel.RELAY_SWITCH_1: switchbot.SwitchbotRelaySwitch,
|
SwitchbotModel.RELAY_SWITCH_1: switchbot.SwitchbotRelaySwitch,
|
||||||
|
SwitchbotModel.LOCK_LITE: switchbot.SwitchbotLock,
|
||||||
|
SwitchbotModel.LOCK_ULTRA: switchbot.SwitchbotLock,
|
||||||
}
|
}
|
||||||
|
|
||||||
HASS_SENSOR_TYPE_TO_SWITCHBOT_MODEL = {
|
HASS_SENSOR_TYPE_TO_SWITCHBOT_MODEL = {
|
||||||
|
@ -715,3 +715,47 @@ HUB3_SERVICE_INFO = BluetoothServiceInfoBleak(
|
|||||||
connectable=True,
|
connectable=True,
|
||||||
tx_power=-127,
|
tx_power=-127,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
LOCK_LITE_SERVICE_INFO = BluetoothServiceInfoBleak(
|
||||||
|
name="Lock Lite",
|
||||||
|
manufacturer_data={2409: b"\xe9\xd5\x11\xb2kS\x17\x93\x08 "},
|
||||||
|
service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": b"-\x80d"},
|
||||||
|
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
|
||||||
|
address="AA:BB:CC:DD:EE:FF",
|
||||||
|
rssi=-60,
|
||||||
|
source="local",
|
||||||
|
advertisement=generate_advertisement_data(
|
||||||
|
local_name="Lock Lite",
|
||||||
|
manufacturer_data={2409: b"\xe9\xd5\x11\xb2kS\x17\x93\x08 "},
|
||||||
|
service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": b"-\x80d"},
|
||||||
|
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
|
||||||
|
),
|
||||||
|
device=generate_ble_device("AA:BB:CC:DD:EE:FF", "Lock Lite"),
|
||||||
|
time=0,
|
||||||
|
connectable=True,
|
||||||
|
tx_power=-127,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
LOCK_ULTRA_SERVICE_INFO = BluetoothServiceInfoBleak(
|
||||||
|
name="Lock Ultra",
|
||||||
|
manufacturer_data={2409: b"\xb0\xe9\xfe\xb6j=%\x8204\x00\x04"},
|
||||||
|
service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": b"\x00\x804\x00\x10\xa5\xb8"},
|
||||||
|
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
|
||||||
|
address="AA:BB:CC:DD:EE:FF",
|
||||||
|
rssi=-60,
|
||||||
|
source="local",
|
||||||
|
advertisement=generate_advertisement_data(
|
||||||
|
local_name="Lock Ultra",
|
||||||
|
manufacturer_data={2409: b"\xb0\xe9\xfe\xb6j=%\x8204\x00\x04"},
|
||||||
|
service_data={
|
||||||
|
"0000fd3d-0000-1000-8000-00805f9b34fb": b"\x00\x804\x00\x10\xa5\xb8"
|
||||||
|
},
|
||||||
|
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
|
||||||
|
),
|
||||||
|
device=generate_ble_device("AA:BB:CC:DD:EE:FF", "Lock Ultra"),
|
||||||
|
time=0,
|
||||||
|
connectable=True,
|
||||||
|
tx_power=-127,
|
||||||
|
)
|
||||||
|
@ -17,7 +17,12 @@ from homeassistant.const import (
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
|
|
||||||
from . import LOCK_SERVICE_INFO, WOLOCKPRO_SERVICE_INFO
|
from . import (
|
||||||
|
LOCK_LITE_SERVICE_INFO,
|
||||||
|
LOCK_SERVICE_INFO,
|
||||||
|
LOCK_ULTRA_SERVICE_INFO,
|
||||||
|
WOLOCKPRO_SERVICE_INFO,
|
||||||
|
)
|
||||||
|
|
||||||
from tests.common import MockConfigEntry
|
from tests.common import MockConfigEntry
|
||||||
from tests.components.bluetooth import inject_bluetooth_service_info
|
from tests.components.bluetooth import inject_bluetooth_service_info
|
||||||
@ -25,7 +30,12 @@ from tests.components.bluetooth import inject_bluetooth_service_info
|
|||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("sensor_type", "service_info"),
|
("sensor_type", "service_info"),
|
||||||
[("lock_pro", WOLOCKPRO_SERVICE_INFO), ("lock", LOCK_SERVICE_INFO)],
|
[
|
||||||
|
("lock_pro", WOLOCKPRO_SERVICE_INFO),
|
||||||
|
("lock", LOCK_SERVICE_INFO),
|
||||||
|
("lock_lite", LOCK_LITE_SERVICE_INFO),
|
||||||
|
("lock_ultra", LOCK_ULTRA_SERVICE_INFO),
|
||||||
|
],
|
||||||
)
|
)
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("service", "mock_method"),
|
("service", "mock_method"),
|
||||||
@ -44,8 +54,8 @@ async def test_lock_services(
|
|||||||
|
|
||||||
entry = mock_entry_encrypted_factory(sensor_type=sensor_type)
|
entry = mock_entry_encrypted_factory(sensor_type=sensor_type)
|
||||||
entry.add_to_hass(hass)
|
entry.add_to_hass(hass)
|
||||||
|
|
||||||
mocked_instance = AsyncMock(return_value=True)
|
mocked_instance = AsyncMock(return_value=True)
|
||||||
|
|
||||||
with patch.multiple(
|
with patch.multiple(
|
||||||
"homeassistant.components.switchbot.lock.switchbot.SwitchbotLock",
|
"homeassistant.components.switchbot.lock.switchbot.SwitchbotLock",
|
||||||
update=AsyncMock(return_value=None),
|
update=AsyncMock(return_value=None),
|
||||||
@ -68,7 +78,12 @@ async def test_lock_services(
|
|||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("sensor_type", "service_info"),
|
("sensor_type", "service_info"),
|
||||||
[("lock_pro", WOLOCKPRO_SERVICE_INFO), ("lock", LOCK_SERVICE_INFO)],
|
[
|
||||||
|
("lock_pro", WOLOCKPRO_SERVICE_INFO),
|
||||||
|
("lock", LOCK_SERVICE_INFO),
|
||||||
|
("lock_lite", LOCK_LITE_SERVICE_INFO),
|
||||||
|
("lock_ultra", LOCK_ULTRA_SERVICE_INFO),
|
||||||
|
],
|
||||||
)
|
)
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("service", "mock_method"),
|
("service", "mock_method"),
|
||||||
@ -87,7 +102,6 @@ async def test_lock_services_with_night_latch_enabled(
|
|||||||
|
|
||||||
entry = mock_entry_encrypted_factory(sensor_type=sensor_type)
|
entry = mock_entry_encrypted_factory(sensor_type=sensor_type)
|
||||||
entry.add_to_hass(hass)
|
entry.add_to_hass(hass)
|
||||||
|
|
||||||
mocked_instance = AsyncMock(return_value=True)
|
mocked_instance = AsyncMock(return_value=True)
|
||||||
|
|
||||||
with patch.multiple(
|
with patch.multiple(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user