Inline primary integration (#119860)
This commit is contained in:
parent
4be3b53143
commit
eb89ce47ea
74 changed files with 787 additions and 1416 deletions
|
@ -58,7 +58,7 @@ def _async_config_entries_for_ids(
|
||||||
dev_reg = dr.async_get(hass)
|
dev_reg = dr.async_get(hass)
|
||||||
for device_id in device_ids:
|
for device_id in device_ids:
|
||||||
if (device := dev_reg.async_get(device_id)) and device.config_entries:
|
if (device := dev_reg.async_get(device_id)) and device.config_entries:
|
||||||
config_entry_ids |= device.config_entries
|
config_entry_ids.update(device.config_entries)
|
||||||
return config_entry_ids
|
return config_entry_ids
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -337,7 +337,7 @@ class ProtectData:
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_ufp_instance_for_config_entry_ids(
|
def async_ufp_instance_for_config_entry_ids(
|
||||||
hass: HomeAssistant, config_entry_ids: set[str]
|
hass: HomeAssistant, config_entry_ids: list[str]
|
||||||
) -> ProtectApiClient | None:
|
) -> ProtectApiClient | None:
|
||||||
"""Find the UFP instance for the config entry ids."""
|
"""Find the UFP instance for the config entry ids."""
|
||||||
return next(
|
return next(
|
||||||
|
|
|
@ -244,11 +244,10 @@ class DeviceEntry:
|
||||||
"""Device Registry Entry."""
|
"""Device Registry Entry."""
|
||||||
|
|
||||||
area_id: str | None = attr.ib(default=None)
|
area_id: str | None = attr.ib(default=None)
|
||||||
config_entries: set[str] = attr.ib(converter=set, factory=set)
|
config_entries: list[str] = attr.ib(factory=list)
|
||||||
configuration_url: str | None = attr.ib(default=None)
|
configuration_url: str | None = attr.ib(default=None)
|
||||||
connections: set[tuple[str, str]] = attr.ib(converter=set, factory=set)
|
connections: set[tuple[str, str]] = attr.ib(converter=set, factory=set)
|
||||||
disabled_by: DeviceEntryDisabler | None = attr.ib(default=None)
|
disabled_by: DeviceEntryDisabler | None = attr.ib(default=None)
|
||||||
primary_integration: str | None = attr.ib(default=None)
|
|
||||||
entry_type: DeviceEntryType | None = attr.ib(default=None)
|
entry_type: DeviceEntryType | None = attr.ib(default=None)
|
||||||
hw_version: str | None = attr.ib(default=None)
|
hw_version: str | None = attr.ib(default=None)
|
||||||
id: str = attr.ib(factory=uuid_util.random_uuid_hex)
|
id: str = attr.ib(factory=uuid_util.random_uuid_hex)
|
||||||
|
@ -279,7 +278,7 @@ class DeviceEntry:
|
||||||
return {
|
return {
|
||||||
"area_id": self.area_id,
|
"area_id": self.area_id,
|
||||||
"configuration_url": self.configuration_url,
|
"configuration_url": self.configuration_url,
|
||||||
"config_entries": list(self.config_entries),
|
"config_entries": self.config_entries,
|
||||||
"connections": list(self.connections),
|
"connections": list(self.connections),
|
||||||
"disabled_by": self.disabled_by,
|
"disabled_by": self.disabled_by,
|
||||||
"entry_type": self.entry_type,
|
"entry_type": self.entry_type,
|
||||||
|
@ -291,7 +290,6 @@ class DeviceEntry:
|
||||||
"model": self.model,
|
"model": self.model,
|
||||||
"name_by_user": self.name_by_user,
|
"name_by_user": self.name_by_user,
|
||||||
"name": self.name,
|
"name": self.name,
|
||||||
"primary_integration": self.primary_integration,
|
|
||||||
"serial_number": self.serial_number,
|
"serial_number": self.serial_number,
|
||||||
"sw_version": self.sw_version,
|
"sw_version": self.sw_version,
|
||||||
"via_device_id": self.via_device_id,
|
"via_device_id": self.via_device_id,
|
||||||
|
@ -320,7 +318,7 @@ class DeviceEntry:
|
||||||
json_bytes(
|
json_bytes(
|
||||||
{
|
{
|
||||||
"area_id": self.area_id,
|
"area_id": self.area_id,
|
||||||
"config_entries": list(self.config_entries),
|
"config_entries": self.config_entries,
|
||||||
"configuration_url": self.configuration_url,
|
"configuration_url": self.configuration_url,
|
||||||
"connections": list(self.connections),
|
"connections": list(self.connections),
|
||||||
"disabled_by": self.disabled_by,
|
"disabled_by": self.disabled_by,
|
||||||
|
@ -345,7 +343,7 @@ class DeviceEntry:
|
||||||
class DeletedDeviceEntry:
|
class DeletedDeviceEntry:
|
||||||
"""Deleted Device Registry Entry."""
|
"""Deleted Device Registry Entry."""
|
||||||
|
|
||||||
config_entries: set[str] = attr.ib()
|
config_entries: list[str] = attr.ib()
|
||||||
connections: set[tuple[str, str]] = attr.ib()
|
connections: set[tuple[str, str]] = attr.ib()
|
||||||
identifiers: set[tuple[str, str]] = attr.ib()
|
identifiers: set[tuple[str, str]] = attr.ib()
|
||||||
id: str = attr.ib()
|
id: str = attr.ib()
|
||||||
|
@ -360,7 +358,7 @@ class DeletedDeviceEntry:
|
||||||
"""Create DeviceEntry from DeletedDeviceEntry."""
|
"""Create DeviceEntry from DeletedDeviceEntry."""
|
||||||
return DeviceEntry(
|
return DeviceEntry(
|
||||||
# type ignores: likely https://github.com/python/mypy/issues/8625
|
# type ignores: likely https://github.com/python/mypy/issues/8625
|
||||||
config_entries={config_entry_id}, # type: ignore[arg-type]
|
config_entries=[config_entry_id],
|
||||||
connections=self.connections & connections, # type: ignore[arg-type]
|
connections=self.connections & connections, # type: ignore[arg-type]
|
||||||
identifiers=self.identifiers & identifiers, # type: ignore[arg-type]
|
identifiers=self.identifiers & identifiers, # type: ignore[arg-type]
|
||||||
id=self.id,
|
id=self.id,
|
||||||
|
@ -373,7 +371,7 @@ class DeletedDeviceEntry:
|
||||||
return json_fragment(
|
return json_fragment(
|
||||||
json_bytes(
|
json_bytes(
|
||||||
{
|
{
|
||||||
"config_entries": list(self.config_entries),
|
"config_entries": self.config_entries,
|
||||||
"connections": list(self.connections),
|
"connections": list(self.connections),
|
||||||
"identifiers": list(self.identifiers),
|
"identifiers": list(self.identifiers),
|
||||||
"id": self.id,
|
"id": self.id,
|
||||||
|
@ -647,7 +645,6 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
|
||||||
default_name: str | None | UndefinedType = UNDEFINED,
|
default_name: str | None | UndefinedType = UNDEFINED,
|
||||||
# To disable a device if it gets created
|
# To disable a device if it gets created
|
||||||
disabled_by: DeviceEntryDisabler | None | UndefinedType = UNDEFINED,
|
disabled_by: DeviceEntryDisabler | None | UndefinedType = UNDEFINED,
|
||||||
domain: str | UndefinedType = UNDEFINED,
|
|
||||||
entry_type: DeviceEntryType | None | UndefinedType = UNDEFINED,
|
entry_type: DeviceEntryType | None | UndefinedType = UNDEFINED,
|
||||||
hw_version: str | None | UndefinedType = UNDEFINED,
|
hw_version: str | None | UndefinedType = UNDEFINED,
|
||||||
identifiers: set[tuple[str, str]] | None | UndefinedType = UNDEFINED,
|
identifiers: set[tuple[str, str]] | None | UndefinedType = UNDEFINED,
|
||||||
|
@ -766,7 +763,6 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
|
||||||
configuration_url=configuration_url,
|
configuration_url=configuration_url,
|
||||||
device_info_type=device_info_type,
|
device_info_type=device_info_type,
|
||||||
disabled_by=disabled_by,
|
disabled_by=disabled_by,
|
||||||
domain=domain,
|
|
||||||
entry_type=entry_type,
|
entry_type=entry_type,
|
||||||
hw_version=hw_version,
|
hw_version=hw_version,
|
||||||
manufacturer=manufacturer,
|
manufacturer=manufacturer,
|
||||||
|
@ -794,7 +790,6 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
|
||||||
area_id: str | None | UndefinedType = UNDEFINED,
|
area_id: str | None | UndefinedType = UNDEFINED,
|
||||||
configuration_url: str | URL | None | UndefinedType = UNDEFINED,
|
configuration_url: str | URL | None | UndefinedType = UNDEFINED,
|
||||||
device_info_type: str | UndefinedType = UNDEFINED,
|
device_info_type: str | UndefinedType = UNDEFINED,
|
||||||
domain: str | UndefinedType = UNDEFINED,
|
|
||||||
disabled_by: DeviceEntryDisabler | None | UndefinedType = UNDEFINED,
|
disabled_by: DeviceEntryDisabler | None | UndefinedType = UNDEFINED,
|
||||||
entry_type: DeviceEntryType | None | UndefinedType = UNDEFINED,
|
entry_type: DeviceEntryType | None | UndefinedType = UNDEFINED,
|
||||||
hw_version: str | None | UndefinedType = UNDEFINED,
|
hw_version: str | None | UndefinedType = UNDEFINED,
|
||||||
|
@ -858,21 +853,32 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
|
||||||
area = ar.async_get(self.hass).async_get_or_create(suggested_area)
|
area = ar.async_get(self.hass).async_get_or_create(suggested_area)
|
||||||
area_id = area.id
|
area_id = area.id
|
||||||
|
|
||||||
if (
|
if add_config_entry_id is not UNDEFINED:
|
||||||
add_config_entry_id is not UNDEFINED
|
# primary ones have to be at the start.
|
||||||
and add_config_entry_id not in old.config_entries
|
if device_info_type == "primary":
|
||||||
):
|
# Move entry to first spot
|
||||||
config_entries = old.config_entries | {add_config_entry_id}
|
if not config_entries or config_entries[0] != add_config_entry_id:
|
||||||
|
config_entries = [add_config_entry_id] + [
|
||||||
|
entry
|
||||||
|
for entry in config_entries
|
||||||
|
if entry != add_config_entry_id
|
||||||
|
]
|
||||||
|
|
||||||
|
# Not primary, append
|
||||||
|
elif add_config_entry_id not in config_entries:
|
||||||
|
config_entries = [*config_entries, add_config_entry_id]
|
||||||
|
|
||||||
if (
|
if (
|
||||||
remove_config_entry_id is not UNDEFINED
|
remove_config_entry_id is not UNDEFINED
|
||||||
and remove_config_entry_id in config_entries
|
and remove_config_entry_id in config_entries
|
||||||
):
|
):
|
||||||
if config_entries == {remove_config_entry_id}:
|
if config_entries == [remove_config_entry_id]:
|
||||||
self.async_remove_device(device_id)
|
self.async_remove_device(device_id)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
config_entries = config_entries - {remove_config_entry_id}
|
config_entries = [
|
||||||
|
entry for entry in config_entries if entry != remove_config_entry_id
|
||||||
|
]
|
||||||
|
|
||||||
if config_entries != old.config_entries:
|
if config_entries != old.config_entries:
|
||||||
new_values["config_entries"] = config_entries
|
new_values["config_entries"] = config_entries
|
||||||
|
@ -919,10 +925,6 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
|
||||||
new_values[attr_name] = value
|
new_values[attr_name] = value
|
||||||
old_values[attr_name] = getattr(old, attr_name)
|
old_values[attr_name] = getattr(old, attr_name)
|
||||||
|
|
||||||
if device_info_type == "primary" and domain is not UNDEFINED:
|
|
||||||
new_values["primary_integration"] = domain
|
|
||||||
old_values["primary_integration"] = old.primary_integration
|
|
||||||
|
|
||||||
if old.is_new:
|
if old.is_new:
|
||||||
new_values["is_new"] = False
|
new_values["is_new"] = False
|
||||||
|
|
||||||
|
@ -989,7 +991,7 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
|
||||||
for device in data["devices"]:
|
for device in data["devices"]:
|
||||||
devices[device["id"]] = DeviceEntry(
|
devices[device["id"]] = DeviceEntry(
|
||||||
area_id=device["area_id"],
|
area_id=device["area_id"],
|
||||||
config_entries=set(device["config_entries"]),
|
config_entries=device["config_entries"],
|
||||||
configuration_url=device["configuration_url"],
|
configuration_url=device["configuration_url"],
|
||||||
# type ignores (if tuple arg was cast): likely https://github.com/python/mypy/issues/8625
|
# type ignores (if tuple arg was cast): likely https://github.com/python/mypy/issues/8625
|
||||||
connections={
|
connections={
|
||||||
|
@ -1024,7 +1026,7 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
|
||||||
# Introduced in 0.111
|
# Introduced in 0.111
|
||||||
for device in data["deleted_devices"]:
|
for device in data["deleted_devices"]:
|
||||||
deleted_devices[device["id"]] = DeletedDeviceEntry(
|
deleted_devices[device["id"]] = DeletedDeviceEntry(
|
||||||
config_entries=set(device["config_entries"]),
|
config_entries=device["config_entries"],
|
||||||
connections={tuple(conn) for conn in device["connections"]},
|
connections={tuple(conn) for conn in device["connections"]},
|
||||||
identifiers={tuple(iden) for iden in device["identifiers"]},
|
identifiers={tuple(iden) for iden in device["identifiers"]},
|
||||||
id=device["id"],
|
id=device["id"],
|
||||||
|
@ -1055,13 +1057,15 @@ class DeviceRegistry(BaseRegistry[dict[str, list[dict[str, Any]]]]):
|
||||||
config_entries = deleted_device.config_entries
|
config_entries = deleted_device.config_entries
|
||||||
if config_entry_id not in config_entries:
|
if config_entry_id not in config_entries:
|
||||||
continue
|
continue
|
||||||
if config_entries == {config_entry_id}:
|
if config_entries == [config_entry_id]:
|
||||||
# Add a time stamp when the deleted device became orphaned
|
# Add a time stamp when the deleted device became orphaned
|
||||||
self.deleted_devices[deleted_device.id] = attr.evolve(
|
self.deleted_devices[deleted_device.id] = attr.evolve(
|
||||||
deleted_device, orphaned_timestamp=now_time, config_entries=set()
|
deleted_device, orphaned_timestamp=now_time, config_entries=[]
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
config_entries = config_entries - {config_entry_id}
|
config_entries = [
|
||||||
|
entry for entry in config_entries if entry != config_entry_id
|
||||||
|
]
|
||||||
# No need to reindex here since we currently
|
# No need to reindex here since we currently
|
||||||
# do not have a lookup by config entry
|
# do not have a lookup by config entry
|
||||||
self.deleted_devices[deleted_device.id] = attr.evolve(
|
self.deleted_devices[deleted_device.id] = attr.evolve(
|
||||||
|
@ -1167,8 +1171,8 @@ def async_config_entry_disabled_by_changed(
|
||||||
if device.disabled:
|
if device.disabled:
|
||||||
# Device already disabled, do not overwrite
|
# Device already disabled, do not overwrite
|
||||||
continue
|
continue
|
||||||
if len(device.config_entries) > 1 and device.config_entries.intersection(
|
if len(device.config_entries) > 1 and any(
|
||||||
enabled_config_entries
|
entry_id in enabled_config_entries for entry_id in device.config_entries
|
||||||
):
|
):
|
||||||
continue
|
continue
|
||||||
registry.async_update_device(
|
registry.async_update_device(
|
||||||
|
|
|
@ -771,7 +771,6 @@ class EntityPlatform:
|
||||||
try:
|
try:
|
||||||
device = dev_reg.async_get(self.hass).async_get_or_create(
|
device = dev_reg.async_get(self.hass).async_get_or_create(
|
||||||
config_entry_id=self.config_entry.entry_id,
|
config_entry_id=self.config_entry.entry_id,
|
||||||
domain=self.platform_name,
|
|
||||||
**device_info,
|
**device_info,
|
||||||
)
|
)
|
||||||
except dev_reg.DeviceInfoError as exc:
|
except dev_reg.DeviceInfoError as exc:
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': 'I-9PSL',
|
'model': 'I-9PSL',
|
||||||
'name': 'Airgradient',
|
'name': 'Airgradient',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': '84fce612f5b8',
|
'serial_number': '84fce612f5b8',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '3.1.1',
|
'sw_version': '3.1.1',
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': 'HPTS-50 200 202172000',
|
'model': 'HPTS-50 200 202172000',
|
||||||
'name': 'My water heater',
|
'name': 'My water heater',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': 'serial',
|
'serial_number': 'serial',
|
||||||
'suggested_area': 'Basement',
|
'suggested_area': 'Basement',
|
||||||
'sw_version': '2.14',
|
'sw_version': '2.14',
|
||||||
|
|
|
@ -70,7 +70,6 @@ async def test_list_devices(
|
||||||
"model": "model",
|
"model": "model",
|
||||||
"name_by_user": None,
|
"name_by_user": None,
|
||||||
"name": None,
|
"name": None,
|
||||||
"primary_integration": None,
|
|
||||||
"serial_number": None,
|
"serial_number": None,
|
||||||
"sw_version": None,
|
"sw_version": None,
|
||||||
"via_device_id": None,
|
"via_device_id": None,
|
||||||
|
@ -89,7 +88,6 @@ async def test_list_devices(
|
||||||
"model": "model",
|
"model": "model",
|
||||||
"name_by_user": None,
|
"name_by_user": None,
|
||||||
"name": None,
|
"name": None,
|
||||||
"primary_integration": None,
|
|
||||||
"serial_number": None,
|
"serial_number": None,
|
||||||
"sw_version": None,
|
"sw_version": None,
|
||||||
"via_device_id": dev1,
|
"via_device_id": dev1,
|
||||||
|
@ -121,7 +119,6 @@ async def test_list_devices(
|
||||||
"model": "model",
|
"model": "model",
|
||||||
"name_by_user": None,
|
"name_by_user": None,
|
||||||
"name": None,
|
"name": None,
|
||||||
"primary_integration": None,
|
|
||||||
"serial_number": None,
|
"serial_number": None,
|
||||||
"sw_version": None,
|
"sw_version": None,
|
||||||
"via_device_id": None,
|
"via_device_id": None,
|
||||||
|
@ -277,7 +274,7 @@ async def test_remove_config_entry_from_device(
|
||||||
config_entry_id=entry_2.entry_id,
|
config_entry_id=entry_2.entry_id,
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
||||||
)
|
)
|
||||||
assert device_entry.config_entries == {entry_1.entry_id, entry_2.entry_id}
|
assert device_entry.config_entries == [entry_1.entry_id, entry_2.entry_id]
|
||||||
|
|
||||||
# Try removing a config entry from the device, it should fail because
|
# Try removing a config entry from the device, it should fail because
|
||||||
# async_remove_config_entry_device returns False
|
# async_remove_config_entry_device returns False
|
||||||
|
@ -296,9 +293,9 @@ async def test_remove_config_entry_from_device(
|
||||||
assert response["result"]["config_entries"] == [entry_2.entry_id]
|
assert response["result"]["config_entries"] == [entry_2.entry_id]
|
||||||
|
|
||||||
# Check that the config entry was removed from the device
|
# Check that the config entry was removed from the device
|
||||||
assert device_registry.async_get(device_entry.id).config_entries == {
|
assert device_registry.async_get(device_entry.id).config_entries == [
|
||||||
entry_2.entry_id
|
entry_2.entry_id
|
||||||
}
|
]
|
||||||
|
|
||||||
# Remove the 2nd config entry
|
# Remove the 2nd config entry
|
||||||
response = await ws_client.remove_device(device_entry.id, entry_2.entry_id)
|
response = await ws_client.remove_device(device_entry.id, entry_2.entry_id)
|
||||||
|
@ -368,11 +365,11 @@ async def test_remove_config_entry_from_device_fails(
|
||||||
config_entry_id=entry_3.entry_id,
|
config_entry_id=entry_3.entry_id,
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
||||||
)
|
)
|
||||||
assert device_entry.config_entries == {
|
assert device_entry.config_entries == [
|
||||||
entry_1.entry_id,
|
entry_1.entry_id,
|
||||||
entry_2.entry_id,
|
entry_2.entry_id,
|
||||||
entry_3.entry_id,
|
entry_3.entry_id,
|
||||||
}
|
]
|
||||||
|
|
||||||
fake_entry_id = "abc123"
|
fake_entry_id = "abc123"
|
||||||
assert entry_1.entry_id != fake_entry_id
|
assert entry_1.entry_id != fake_entry_id
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
'model': 'dLAN pro 1200+ WiFi ac',
|
'model': 'dLAN pro 1200+ WiFi ac',
|
||||||
'name': 'Mock Title',
|
'name': 'Mock Title',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'devolo_home_network',
|
|
||||||
'serial_number': '1234567890',
|
'serial_number': '1234567890',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '5.6.1',
|
'sw_version': '5.6.1',
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': 'DEEBOT OZMO 950 Series',
|
'model': 'DEEBOT OZMO 950 Series',
|
||||||
'name': 'Ozmo 950',
|
'name': 'Ozmo 950',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'ecovacs',
|
|
||||||
'serial_number': 'E1234567890000000001',
|
'serial_number': 'E1234567890000000001',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -74,7 +74,6 @@
|
||||||
'model': 'Elgato Key Light Mini',
|
'model': 'Elgato Key Light Mini',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'GW24L1A02987',
|
'serial_number': 'GW24L1A02987',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.4 (229)',
|
'sw_version': '1.0.4 (229)',
|
||||||
|
@ -156,7 +155,6 @@
|
||||||
'model': 'Elgato Key Light Mini',
|
'model': 'Elgato Key Light Mini',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'GW24L1A02987',
|
'serial_number': 'GW24L1A02987',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.4 (229)',
|
'sw_version': '1.0.4 (229)',
|
||||||
|
|
|
@ -106,7 +106,6 @@
|
||||||
'model': 'Elgato Key Light',
|
'model': 'Elgato Key Light',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'CN11A1A00001',
|
'serial_number': 'CN11A1A00001',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.3 (192)',
|
'sw_version': '1.0.3 (192)',
|
||||||
|
@ -222,7 +221,6 @@
|
||||||
'model': 'Elgato Light Strip',
|
'model': 'Elgato Light Strip',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'CN11A1A00001',
|
'serial_number': 'CN11A1A00001',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.3 (192)',
|
'sw_version': '1.0.3 (192)',
|
||||||
|
@ -338,7 +336,6 @@
|
||||||
'model': 'Elgato Light Strip',
|
'model': 'Elgato Light Strip',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'CN11A1A00001',
|
'serial_number': 'CN11A1A00001',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.3 (192)',
|
'sw_version': '1.0.3 (192)',
|
||||||
|
|
|
@ -81,7 +81,6 @@
|
||||||
'model': 'Elgato Key Light Mini',
|
'model': 'Elgato Key Light Mini',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'GW24L1A02987',
|
'serial_number': 'GW24L1A02987',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.4 (229)',
|
'sw_version': '1.0.4 (229)',
|
||||||
|
@ -173,7 +172,6 @@
|
||||||
'model': 'Elgato Key Light Mini',
|
'model': 'Elgato Key Light Mini',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'GW24L1A02987',
|
'serial_number': 'GW24L1A02987',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.4 (229)',
|
'sw_version': '1.0.4 (229)',
|
||||||
|
@ -265,7 +263,6 @@
|
||||||
'model': 'Elgato Key Light Mini',
|
'model': 'Elgato Key Light Mini',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'GW24L1A02987',
|
'serial_number': 'GW24L1A02987',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.4 (229)',
|
'sw_version': '1.0.4 (229)',
|
||||||
|
@ -354,7 +351,6 @@
|
||||||
'model': 'Elgato Key Light Mini',
|
'model': 'Elgato Key Light Mini',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'GW24L1A02987',
|
'serial_number': 'GW24L1A02987',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.4 (229)',
|
'sw_version': '1.0.4 (229)',
|
||||||
|
@ -446,7 +442,6 @@
|
||||||
'model': 'Elgato Key Light Mini',
|
'model': 'Elgato Key Light Mini',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'GW24L1A02987',
|
'serial_number': 'GW24L1A02987',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.4 (229)',
|
'sw_version': '1.0.4 (229)',
|
||||||
|
|
|
@ -73,7 +73,6 @@
|
||||||
'model': 'Elgato Key Light Mini',
|
'model': 'Elgato Key Light Mini',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'GW24L1A02987',
|
'serial_number': 'GW24L1A02987',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.4 (229)',
|
'sw_version': '1.0.4 (229)',
|
||||||
|
@ -154,7 +153,6 @@
|
||||||
'model': 'Elgato Key Light Mini',
|
'model': 'Elgato Key Light Mini',
|
||||||
'name': 'Frenck',
|
'name': 'Frenck',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'elgato',
|
|
||||||
'serial_number': 'GW24L1A02987',
|
'serial_number': 'GW24L1A02987',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.0.4 (229)',
|
'sw_version': '1.0.4 (229)',
|
||||||
|
|
|
@ -64,7 +64,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Energy market price',
|
'name': 'Energy market price',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'energyzero',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -139,7 +138,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Energy market price',
|
'name': 'Energy market price',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'energyzero',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -211,7 +209,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Energy market price',
|
'name': 'Energy market price',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'energyzero',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -283,7 +280,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Energy market price',
|
'name': 'Energy market price',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'energyzero',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -355,7 +351,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Energy market price',
|
'name': 'Energy market price',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'energyzero',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -430,7 +425,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Gas market price',
|
'name': 'Gas market price',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'energyzero',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -48,7 +48,6 @@
|
||||||
'model': 'Envoy, phases: 3, phase mode: three, net-consumption CT, production CT, storage CT',
|
'model': 'Envoy, phases: 3, phase mode: three, net-consumption CT, production CT, storage CT',
|
||||||
'name': 'Envoy <<envoyserial>>',
|
'name': 'Envoy <<envoyserial>>',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'enphase_envoy',
|
|
||||||
'serial_number': '<<envoyserial>>',
|
'serial_number': '<<envoyserial>>',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '7.1.2',
|
'sw_version': '7.1.2',
|
||||||
|
@ -3773,7 +3772,6 @@
|
||||||
'model': 'Inverter',
|
'model': 'Inverter',
|
||||||
'name': 'Inverter 1',
|
'name': 'Inverter 1',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'enphase_envoy',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': 'Mock Model',
|
'model': 'Mock Model',
|
||||||
'name': 'Mock Title',
|
'name': 'Mock Title',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'gardena_bluetooth',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.2.3',
|
'sw_version': '1.2.3',
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -118,7 +118,7 @@ async def test_migrate_device_id_no_serial_skip_if_other_owner(
|
||||||
bridge = device_registry.async_get(bridge.id)
|
bridge = device_registry.async_get(bridge.id)
|
||||||
|
|
||||||
assert bridge.identifiers == variant.before
|
assert bridge.identifiers == variant.before
|
||||||
assert bridge.config_entries == {entry.entry_id}
|
assert bridge.config_entries == [entry.entry_id]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("variant", DEVICE_MIGRATION_TESTS)
|
@pytest.mark.parametrize("variant", DEVICE_MIGRATION_TESTS)
|
||||||
|
|
|
@ -74,7 +74,6 @@
|
||||||
'model': 'HWE-P1',
|
'model': 'HWE-P1',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '4.19',
|
'sw_version': '4.19',
|
||||||
|
|
|
@ -83,7 +83,6 @@
|
||||||
'model': 'HWE-SKT',
|
'model': 'HWE-SKT',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '3.03',
|
'sw_version': '3.03',
|
||||||
|
@ -174,7 +173,6 @@
|
||||||
'model': 'HWE-SKT',
|
'model': 'HWE-SKT',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '4.07',
|
'sw_version': '4.07',
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -73,7 +73,6 @@
|
||||||
'model': 'HWE-KWH1',
|
'model': 'HWE-KWH1',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '3.06',
|
'sw_version': '3.06',
|
||||||
|
@ -154,7 +153,6 @@
|
||||||
'model': 'HWE-KWH3',
|
'model': 'HWE-KWH3',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '3.06',
|
'sw_version': '3.06',
|
||||||
|
@ -236,7 +234,6 @@
|
||||||
'model': 'HWE-SKT',
|
'model': 'HWE-SKT',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '3.03',
|
'sw_version': '3.03',
|
||||||
|
@ -317,7 +314,6 @@
|
||||||
'model': 'HWE-SKT',
|
'model': 'HWE-SKT',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '3.03',
|
'sw_version': '3.03',
|
||||||
|
@ -398,7 +394,6 @@
|
||||||
'model': 'HWE-SKT',
|
'model': 'HWE-SKT',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '3.03',
|
'sw_version': '3.03',
|
||||||
|
@ -480,7 +475,6 @@
|
||||||
'model': 'HWE-SKT',
|
'model': 'HWE-SKT',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '4.07',
|
'sw_version': '4.07',
|
||||||
|
@ -561,7 +555,6 @@
|
||||||
'model': 'HWE-SKT',
|
'model': 'HWE-SKT',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '4.07',
|
'sw_version': '4.07',
|
||||||
|
@ -642,7 +635,6 @@
|
||||||
'model': 'HWE-SKT',
|
'model': 'HWE-SKT',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '4.07',
|
'sw_version': '4.07',
|
||||||
|
@ -723,7 +715,6 @@
|
||||||
'model': 'HWE-WTR',
|
'model': 'HWE-WTR',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '2.03',
|
'sw_version': '2.03',
|
||||||
|
@ -804,7 +795,6 @@
|
||||||
'model': 'SDM230-wifi',
|
'model': 'SDM230-wifi',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '3.06',
|
'sw_version': '3.06',
|
||||||
|
@ -885,7 +875,6 @@
|
||||||
'model': 'SDM630-wifi',
|
'model': 'SDM630-wifi',
|
||||||
'name': 'Device',
|
'name': 'Device',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'homewizard',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '3.06',
|
'sw_version': '3.06',
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': '450XH-TEST',
|
'model': '450XH-TEST',
|
||||||
'name': 'Test Mower 1',
|
'name': 'Test Mower 1',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'husqvarna_automower',
|
|
||||||
'serial_number': 123,
|
'serial_number': 123,
|
||||||
'suggested_area': 'Garden',
|
'suggested_area': 'Garden',
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -198,7 +198,7 @@ async def test_device_info(
|
||||||
|
|
||||||
device = device_registry.async_get_device(identifiers={(DOMAIN, device_id)})
|
device = device_registry.async_get_device(identifiers={(DOMAIN, device_id)})
|
||||||
assert device
|
assert device
|
||||||
assert device.config_entries == {TEST_CONFIG_ENTRY_ID}
|
assert device.config_entries == [TEST_CONFIG_ENTRY_ID]
|
||||||
assert device.identifiers == {(DOMAIN, device_id)}
|
assert device.identifiers == {(DOMAIN, device_id)}
|
||||||
assert device.manufacturer == HYPERION_MANUFACTURER_NAME
|
assert device.manufacturer == HYPERION_MANUFACTURER_NAME
|
||||||
assert device.model == HYPERION_MODEL_NAME
|
assert device.model == HYPERION_MODEL_NAME
|
||||||
|
|
|
@ -803,7 +803,7 @@ async def test_device_info(
|
||||||
|
|
||||||
device = device_registry.async_get_device(identifiers={(DOMAIN, device_id)})
|
device = device_registry.async_get_device(identifiers={(DOMAIN, device_id)})
|
||||||
assert device
|
assert device
|
||||||
assert device.config_entries == {TEST_CONFIG_ENTRY_ID}
|
assert device.config_entries == [TEST_CONFIG_ENTRY_ID]
|
||||||
assert device.identifiers == {(DOMAIN, device_id)}
|
assert device.identifiers == {(DOMAIN, device_id)}
|
||||||
assert device.manufacturer == HYPERION_MANUFACTURER_NAME
|
assert device.manufacturer == HYPERION_MANUFACTURER_NAME
|
||||||
assert device.model == HYPERION_MODEL_NAME
|
assert device.model == HYPERION_MODEL_NAME
|
||||||
|
|
|
@ -66,7 +66,7 @@ async def test_device_info(
|
||||||
|
|
||||||
device = device_registry.async_get_device(identifiers={(DOMAIN, device_identifer)})
|
device = device_registry.async_get_device(identifiers={(DOMAIN, device_identifer)})
|
||||||
assert device
|
assert device
|
||||||
assert device.config_entries == {TEST_CONFIG_ENTRY_ID}
|
assert device.config_entries == [TEST_CONFIG_ENTRY_ID]
|
||||||
assert device.identifiers == {(DOMAIN, device_identifer)}
|
assert device.identifiers == {(DOMAIN, device_identifer)}
|
||||||
assert device.manufacturer == HYPERION_MANUFACTURER_NAME
|
assert device.manufacturer == HYPERION_MANUFACTURER_NAME
|
||||||
assert device.model == HYPERION_MODEL_NAME
|
assert device.model == HYPERION_MODEL_NAME
|
||||||
|
|
|
@ -170,7 +170,7 @@ async def test_device_info(
|
||||||
|
|
||||||
device = device_registry.async_get_device(identifiers={(DOMAIN, device_identifer)})
|
device = device_registry.async_get_device(identifiers={(DOMAIN, device_identifer)})
|
||||||
assert device
|
assert device
|
||||||
assert device.config_entries == {TEST_CONFIG_ENTRY_ID}
|
assert device.config_entries == [TEST_CONFIG_ENTRY_ID]
|
||||||
assert device.identifiers == {(DOMAIN, device_identifer)}
|
assert device.identifiers == {(DOMAIN, device_identifer)}
|
||||||
assert device.manufacturer == HYPERION_MANUFACTURER_NAME
|
assert device.manufacturer == HYPERION_MANUFACTURER_NAME
|
||||||
assert device.model == HYPERION_MODEL_NAME
|
assert device.model == HYPERION_MODEL_NAME
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': 'ista EcoTrend',
|
'model': 'ista EcoTrend',
|
||||||
'name': 'Luxemburger Str. 1',
|
'name': 'Luxemburger Str. 1',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'ista_ecotrend',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -54,7 +53,6 @@
|
||||||
'model': 'ista EcoTrend',
|
'model': 'ista EcoTrend',
|
||||||
'name': 'Bahnhofsstr. 1A',
|
'name': 'Bahnhofsstr. 1A',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'ista_ecotrend',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -69,7 +69,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Outlet 1',
|
'name': 'Outlet 1',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'kitchen_sink',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -100,7 +99,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Power strip with 2 sockets',
|
'name': 'Power strip with 2 sockets',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -177,7 +175,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Outlet 2',
|
'name': 'Outlet 2',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'kitchen_sink',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -208,7 +205,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Power strip with 2 sockets',
|
'name': 'Power strip with 2 sockets',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -115,7 +115,6 @@
|
||||||
'model': <MachineModel.GS3_AV: 'GS3 AV'>,
|
'model': <MachineModel.GS3_AV: 'GS3 AV'>,
|
||||||
'name': 'GS01234',
|
'name': 'GS01234',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'lamarzocco',
|
|
||||||
'serial_number': 'GS01234',
|
'serial_number': 'GS01234',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.40',
|
'sw_version': '1.40',
|
||||||
|
|
|
@ -65,7 +65,7 @@ async def test_migration_device_online_end_to_end(
|
||||||
|
|
||||||
assert migrated_entry is not None
|
assert migrated_entry is not None
|
||||||
|
|
||||||
assert device.config_entries == {migrated_entry.entry_id}
|
assert device.config_entries == [migrated_entry.entry_id]
|
||||||
assert light_entity_reg.config_entry_id == migrated_entry.entry_id
|
assert light_entity_reg.config_entry_id == migrated_entry.entry_id
|
||||||
assert er.async_entries_for_config_entry(entity_reg, config_entry) == []
|
assert er.async_entries_for_config_entry(entity_reg, config_entry) == []
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ async def test_migration_device_online_end_to_end_after_downgrade(
|
||||||
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(minutes=20))
|
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(minutes=20))
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert device.config_entries == {config_entry.entry_id}
|
assert device.config_entries == [config_entry.entry_id]
|
||||||
assert light_entity_reg.config_entry_id == config_entry.entry_id
|
assert light_entity_reg.config_entry_id == config_entry.entry_id
|
||||||
assert er.async_entries_for_config_entry(entity_reg, config_entry) == []
|
assert er.async_entries_for_config_entry(entity_reg, config_entry) == []
|
||||||
|
|
||||||
|
@ -276,7 +276,7 @@ async def test_migration_device_online_end_to_end_ignores_other_devices(
|
||||||
assert new_entry is not None
|
assert new_entry is not None
|
||||||
assert legacy_entry is None
|
assert legacy_entry is None
|
||||||
|
|
||||||
assert device.config_entries == {legacy_config_entry.entry_id}
|
assert device.config_entries == [legacy_config_entry.entry_id]
|
||||||
assert light_entity_reg.config_entry_id == legacy_config_entry.entry_id
|
assert light_entity_reg.config_entry_id == legacy_config_entry.entry_id
|
||||||
assert ignored_entity_reg.config_entry_id == other_domain_config_entry.entry_id
|
assert ignored_entity_reg.config_entry_id == other_domain_config_entry.entry_id
|
||||||
assert garbage_entity_reg.config_entry_id == legacy_config_entry.entry_id
|
assert garbage_entity_reg.config_entry_id == legacy_config_entry.entry_id
|
||||||
|
|
|
@ -111,7 +111,7 @@ async def test_humanify_lutron_caseta_button_event_integration_not_loaded(
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
for device in device_registry.devices.values():
|
for device in device_registry.devices.values():
|
||||||
if device.config_entries == {config_entry.entry_id}:
|
if device.config_entries == [config_entry.entry_id]:
|
||||||
dr_device_id = device.id
|
dr_device_id = device.id
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
|
@ -339,7 +339,7 @@ async def test_device_info(
|
||||||
|
|
||||||
device = device_registry.async_get_device(identifiers={device_identifier})
|
device = device_registry.async_get_device(identifiers={device_identifier})
|
||||||
assert device
|
assert device
|
||||||
assert device.config_entries == {TEST_CONFIG_ENTRY_ID}
|
assert device.config_entries == [TEST_CONFIG_ENTRY_ID]
|
||||||
assert device.identifiers == {device_identifier}
|
assert device.identifiers == {device_identifier}
|
||||||
assert device.manufacturer == MOTIONEYE_MANUFACTURER
|
assert device.manufacturer == MOTIONEYE_MANUFACTURER
|
||||||
assert device.model == MOTIONEYE_MANUFACTURER
|
assert device.model == MOTIONEYE_MANUFACTURER
|
||||||
|
|
|
@ -976,10 +976,10 @@ async def test_cleanup_device_multiple_config_entries(
|
||||||
connections={("mac", "12:34:56:AB:CD:EF")}
|
connections={("mac", "12:34:56:AB:CD:EF")}
|
||||||
)
|
)
|
||||||
assert device_entry is not None
|
assert device_entry is not None
|
||||||
assert device_entry.config_entries == {
|
assert device_entry.config_entries == [
|
||||||
mqtt_config_entry.entry_id,
|
|
||||||
config_entry.entry_id,
|
config_entry.entry_id,
|
||||||
}
|
mqtt_config_entry.entry_id,
|
||||||
|
]
|
||||||
entity_entry = entity_registry.async_get("sensor.none_mqtt_sensor")
|
entity_entry = entity_registry.async_get("sensor.none_mqtt_sensor")
|
||||||
assert entity_entry is not None
|
assert entity_entry is not None
|
||||||
|
|
||||||
|
@ -1002,7 +1002,7 @@ async def test_cleanup_device_multiple_config_entries(
|
||||||
)
|
)
|
||||||
assert device_entry is not None
|
assert device_entry is not None
|
||||||
entity_entry = entity_registry.async_get("sensor.none_mqtt_sensor")
|
entity_entry = entity_registry.async_get("sensor.none_mqtt_sensor")
|
||||||
assert device_entry.config_entries == {config_entry.entry_id}
|
assert device_entry.config_entries == [config_entry.entry_id]
|
||||||
assert entity_entry is None
|
assert entity_entry is None
|
||||||
|
|
||||||
# Verify state is removed
|
# Verify state is removed
|
||||||
|
@ -1070,10 +1070,10 @@ async def test_cleanup_device_multiple_config_entries_mqtt(
|
||||||
connections={("mac", "12:34:56:AB:CD:EF")}
|
connections={("mac", "12:34:56:AB:CD:EF")}
|
||||||
)
|
)
|
||||||
assert device_entry is not None
|
assert device_entry is not None
|
||||||
assert device_entry.config_entries == {
|
assert device_entry.config_entries == [
|
||||||
mqtt_config_entry.entry_id,
|
|
||||||
config_entry.entry_id,
|
config_entry.entry_id,
|
||||||
}
|
mqtt_config_entry.entry_id,
|
||||||
|
]
|
||||||
entity_entry = entity_registry.async_get("sensor.none_mqtt_sensor")
|
entity_entry = entity_registry.async_get("sensor.none_mqtt_sensor")
|
||||||
assert entity_entry is not None
|
assert entity_entry is not None
|
||||||
|
|
||||||
|
@ -1094,7 +1094,7 @@ async def test_cleanup_device_multiple_config_entries_mqtt(
|
||||||
)
|
)
|
||||||
assert device_entry is not None
|
assert device_entry is not None
|
||||||
entity_entry = entity_registry.async_get("sensor.none_mqtt_sensor")
|
entity_entry = entity_registry.async_get("sensor.none_mqtt_sensor")
|
||||||
assert device_entry.config_entries == {config_entry.entry_id}
|
assert device_entry.config_entries == [config_entry.entry_id]
|
||||||
assert entity_entry is None
|
assert entity_entry is None
|
||||||
|
|
||||||
# Verify state is removed
|
# Verify state is removed
|
||||||
|
|
|
@ -587,7 +587,7 @@ async def test_cleanup_tag(
|
||||||
identifiers={("mqtt", "helloworld")}
|
identifiers={("mqtt", "helloworld")}
|
||||||
)
|
)
|
||||||
assert device_entry1 is not None
|
assert device_entry1 is not None
|
||||||
assert device_entry1.config_entries == {config_entry.entry_id, mqtt_entry.entry_id}
|
assert device_entry1.config_entries == [config_entry.entry_id, mqtt_entry.entry_id]
|
||||||
device_entry2 = device_registry.async_get_device(identifiers={("mqtt", "hejhopp")})
|
device_entry2 = device_registry.async_get_device(identifiers={("mqtt", "hejhopp")})
|
||||||
assert device_entry2 is not None
|
assert device_entry2 is not None
|
||||||
|
|
||||||
|
@ -599,7 +599,7 @@ async def test_cleanup_tag(
|
||||||
identifiers={("mqtt", "helloworld")}
|
identifiers={("mqtt", "helloworld")}
|
||||||
)
|
)
|
||||||
assert device_entry1 is not None
|
assert device_entry1 is not None
|
||||||
assert device_entry1.config_entries == {mqtt_entry.entry_id}
|
assert device_entry1.config_entries == [mqtt_entry.entry_id]
|
||||||
device_entry2 = device_registry.async_get_device(identifiers={("mqtt", "hejhopp")})
|
device_entry2 = device_registry.async_get_device(identifiers={("mqtt", "hejhopp")})
|
||||||
assert device_entry2 is not None
|
assert device_entry2 is not None
|
||||||
mqtt_mock.async_publish.assert_not_called()
|
mqtt_mock.async_publish.assert_not_called()
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': 'Roller Shutter',
|
'model': 'Roller Shutter',
|
||||||
'name': 'Entrance Blinds',
|
'name': 'Entrance Blinds',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -54,7 +53,6 @@
|
||||||
'model': 'Orientable Shutter',
|
'model': 'Orientable Shutter',
|
||||||
'name': 'Bubendorff blind',
|
'name': 'Bubendorff blind',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -85,7 +83,6 @@
|
||||||
'model': '2 wire light switch/dimmer',
|
'model': '2 wire light switch/dimmer',
|
||||||
'name': 'Unknown 00:11:22:33:00:11:45:fe',
|
'name': 'Unknown 00:11:22:33:00:11:45:fe',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -116,7 +113,6 @@
|
||||||
'model': 'Smarther with Netatmo',
|
'model': 'Smarther with Netatmo',
|
||||||
'name': 'Corridor',
|
'name': 'Corridor',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': 'Corridor',
|
'suggested_area': 'Corridor',
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -147,7 +143,6 @@
|
||||||
'model': 'Connected Energy Meter',
|
'model': 'Connected Energy Meter',
|
||||||
'name': 'Consumption meter',
|
'name': 'Consumption meter',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -178,7 +173,6 @@
|
||||||
'model': 'Light switch/dimmer with neutral',
|
'model': 'Light switch/dimmer with neutral',
|
||||||
'name': 'Bathroom light',
|
'name': 'Bathroom light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -209,7 +203,6 @@
|
||||||
'model': 'Connected Ecometer',
|
'model': 'Connected Ecometer',
|
||||||
'name': 'Line 1',
|
'name': 'Line 1',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -240,7 +233,6 @@
|
||||||
'model': 'Connected Ecometer',
|
'model': 'Connected Ecometer',
|
||||||
'name': 'Line 2',
|
'name': 'Line 2',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -271,7 +263,6 @@
|
||||||
'model': 'Connected Ecometer',
|
'model': 'Connected Ecometer',
|
||||||
'name': 'Line 3',
|
'name': 'Line 3',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -302,7 +293,6 @@
|
||||||
'model': 'Connected Ecometer',
|
'model': 'Connected Ecometer',
|
||||||
'name': 'Line 4',
|
'name': 'Line 4',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -333,7 +323,6 @@
|
||||||
'model': 'Connected Ecometer',
|
'model': 'Connected Ecometer',
|
||||||
'name': 'Line 5',
|
'name': 'Line 5',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -364,7 +353,6 @@
|
||||||
'model': 'Connected Ecometer',
|
'model': 'Connected Ecometer',
|
||||||
'name': 'Total',
|
'name': 'Total',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -395,7 +383,6 @@
|
||||||
'model': 'Connected Ecometer',
|
'model': 'Connected Ecometer',
|
||||||
'name': 'Gas',
|
'name': 'Gas',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -426,7 +413,6 @@
|
||||||
'model': 'Connected Ecometer',
|
'model': 'Connected Ecometer',
|
||||||
'name': 'Hot water',
|
'name': 'Hot water',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -457,7 +443,6 @@
|
||||||
'model': 'Connected Ecometer',
|
'model': 'Connected Ecometer',
|
||||||
'name': 'Cold water',
|
'name': 'Cold water',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -488,7 +473,6 @@
|
||||||
'model': 'Connected Ecometer',
|
'model': 'Connected Ecometer',
|
||||||
'name': 'Écocompteur',
|
'name': 'Écocompteur',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -519,7 +503,6 @@
|
||||||
'model': 'Smart Indoor Camera',
|
'model': 'Smart Indoor Camera',
|
||||||
'name': 'Hall',
|
'name': 'Hall',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -550,7 +533,6 @@
|
||||||
'model': 'Smart Anemometer',
|
'model': 'Smart Anemometer',
|
||||||
'name': 'Villa Garden',
|
'name': 'Villa Garden',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -581,7 +563,6 @@
|
||||||
'model': 'Smart Outdoor Camera',
|
'model': 'Smart Outdoor Camera',
|
||||||
'name': 'Front',
|
'name': 'Front',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -612,7 +593,6 @@
|
||||||
'model': 'Smart Video Doorbell',
|
'model': 'Smart Video Doorbell',
|
||||||
'name': 'Netatmo-Doorbell',
|
'name': 'Netatmo-Doorbell',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -643,7 +623,6 @@
|
||||||
'model': 'Smart Indoor Air Quality Monitor',
|
'model': 'Smart Indoor Air Quality Monitor',
|
||||||
'name': 'Kitchen',
|
'name': 'Kitchen',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -674,7 +653,6 @@
|
||||||
'model': 'Smart Indoor Air Quality Monitor',
|
'model': 'Smart Indoor Air Quality Monitor',
|
||||||
'name': 'Livingroom',
|
'name': 'Livingroom',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -705,7 +683,6 @@
|
||||||
'model': 'Smart Indoor Air Quality Monitor',
|
'model': 'Smart Indoor Air Quality Monitor',
|
||||||
'name': 'Baby Bedroom',
|
'name': 'Baby Bedroom',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -736,7 +713,6 @@
|
||||||
'model': 'Smart Indoor Air Quality Monitor',
|
'model': 'Smart Indoor Air Quality Monitor',
|
||||||
'name': 'Bedroom',
|
'name': 'Bedroom',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -767,7 +743,6 @@
|
||||||
'model': 'Smart Indoor Air Quality Monitor',
|
'model': 'Smart Indoor Air Quality Monitor',
|
||||||
'name': 'Parents Bedroom',
|
'name': 'Parents Bedroom',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -798,7 +773,6 @@
|
||||||
'model': 'Plug',
|
'model': 'Plug',
|
||||||
'name': 'Prise',
|
'name': 'Prise',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -829,7 +803,6 @@
|
||||||
'model': 'Smart Outdoor Module',
|
'model': 'Smart Outdoor Module',
|
||||||
'name': 'Villa Outdoor',
|
'name': 'Villa Outdoor',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -860,7 +833,6 @@
|
||||||
'model': 'Smart Indoor Module',
|
'model': 'Smart Indoor Module',
|
||||||
'name': 'Villa Bedroom',
|
'name': 'Villa Bedroom',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -891,7 +863,6 @@
|
||||||
'model': 'Smart Indoor Module',
|
'model': 'Smart Indoor Module',
|
||||||
'name': 'Villa Bathroom',
|
'name': 'Villa Bathroom',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -922,7 +893,6 @@
|
||||||
'model': 'Smart Home Weather station',
|
'model': 'Smart Home Weather station',
|
||||||
'name': 'Villa',
|
'name': 'Villa',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -953,7 +923,6 @@
|
||||||
'model': 'Smart Rain Gauge',
|
'model': 'Smart Rain Gauge',
|
||||||
'name': 'Villa Rain',
|
'name': 'Villa Rain',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -984,7 +953,6 @@
|
||||||
'model': 'OpenTherm Modulating Thermostat',
|
'model': 'OpenTherm Modulating Thermostat',
|
||||||
'name': 'Bureau Modulate',
|
'name': 'Bureau Modulate',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': 'Bureau',
|
'suggested_area': 'Bureau',
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1015,7 +983,6 @@
|
||||||
'model': 'Smart Thermostat',
|
'model': 'Smart Thermostat',
|
||||||
'name': 'Livingroom',
|
'name': 'Livingroom',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': 'Livingroom',
|
'suggested_area': 'Livingroom',
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1046,7 +1013,6 @@
|
||||||
'model': 'Smart Valve',
|
'model': 'Smart Valve',
|
||||||
'name': 'Valve1',
|
'name': 'Valve1',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': 'Entrada',
|
'suggested_area': 'Entrada',
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1077,7 +1043,6 @@
|
||||||
'model': 'Smart Valve',
|
'model': 'Smart Valve',
|
||||||
'name': 'Valve2',
|
'name': 'Valve2',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': 'Cocina',
|
'suggested_area': 'Cocina',
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1108,7 +1073,6 @@
|
||||||
'model': 'Climate',
|
'model': 'Climate',
|
||||||
'name': 'MYHOME',
|
'name': 'MYHOME',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1139,7 +1103,6 @@
|
||||||
'model': 'Public Weather station',
|
'model': 'Public Weather station',
|
||||||
'name': 'Home avg',
|
'name': 'Home avg',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1170,7 +1133,6 @@
|
||||||
'model': 'Public Weather station',
|
'model': 'Public Weather station',
|
||||||
'name': 'Home max',
|
'name': 'Home max',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netatmo',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': 'LM1200',
|
'model': 'LM1200',
|
||||||
'name': 'Netgear LM1200',
|
'name': 'Netgear LM1200',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'netgear_lte',
|
|
||||||
'serial_number': 'FFFFFFFFFFFFF',
|
'serial_number': 'FFFFFFFFFFFFF',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'EC25AFFDR07A09M4G',
|
'sw_version': 'EC25AFFDR07A09M4G',
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': 'ICO',
|
'model': 'ICO',
|
||||||
'name': 'Pool 1',
|
'name': 'Pool 1',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'ondilo_ico',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.7.1-stable',
|
'sw_version': '1.7.1-stable',
|
||||||
|
@ -54,7 +53,6 @@
|
||||||
'model': 'ICO',
|
'model': 'ICO',
|
||||||
'name': 'Pool 2',
|
'name': 'Pool 2',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'ondilo_ico',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '1.7.1-stable',
|
'sw_version': '1.7.1-stable',
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
'model': 'DS2405',
|
'model': 'DS2405',
|
||||||
'name': '05.111111111111',
|
'name': '05.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -77,7 +76,6 @@
|
||||||
'model': 'DS18S20',
|
'model': 'DS18S20',
|
||||||
'name': '10.111111111111',
|
'name': '10.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -118,7 +116,6 @@
|
||||||
'model': 'DS2406',
|
'model': 'DS2406',
|
||||||
'name': '12.111111111111',
|
'name': '12.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -259,7 +256,6 @@
|
||||||
'model': 'DS2423',
|
'model': 'DS2423',
|
||||||
'name': '1D.111111111111',
|
'name': '1D.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -300,7 +296,6 @@
|
||||||
'model': 'DS2409',
|
'model': 'DS2409',
|
||||||
'name': '1F.111111111111',
|
'name': '1F.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -329,7 +324,6 @@
|
||||||
'model': 'DS2423',
|
'model': 'DS2423',
|
||||||
'name': '1D.111111111111',
|
'name': '1D.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -370,7 +364,6 @@
|
||||||
'model': 'DS1822',
|
'model': 'DS1822',
|
||||||
'name': '22.111111111111',
|
'name': '22.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -411,7 +404,6 @@
|
||||||
'model': 'DS2438',
|
'model': 'DS2438',
|
||||||
'name': '26.111111111111',
|
'name': '26.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -452,7 +444,6 @@
|
||||||
'model': 'DS18B20',
|
'model': 'DS18B20',
|
||||||
'name': '28.111111111111',
|
'name': '28.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -493,7 +484,6 @@
|
||||||
'model': 'DS18B20',
|
'model': 'DS18B20',
|
||||||
'name': '28.222222222222',
|
'name': '28.222222222222',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -534,7 +524,6 @@
|
||||||
'model': 'DS18B20',
|
'model': 'DS18B20',
|
||||||
'name': '28.222222222223',
|
'name': '28.222222222223',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -575,7 +564,6 @@
|
||||||
'model': 'DS2408',
|
'model': 'DS2408',
|
||||||
'name': '29.111111111111',
|
'name': '29.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -968,7 +956,6 @@
|
||||||
'model': 'DS2760',
|
'model': 'DS2760',
|
||||||
'name': '30.111111111111',
|
'name': '30.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1009,7 +996,6 @@
|
||||||
'model': 'DS2413',
|
'model': 'DS2413',
|
||||||
'name': '3A.111111111111',
|
'name': '3A.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1138,7 +1124,6 @@
|
||||||
'model': 'DS1825',
|
'model': 'DS1825',
|
||||||
'name': '3B.111111111111',
|
'name': '3B.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1179,7 +1164,6 @@
|
||||||
'model': 'DS28EA00',
|
'model': 'DS28EA00',
|
||||||
'name': '42.111111111111',
|
'name': '42.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1220,7 +1204,6 @@
|
||||||
'model': 'EDS0068',
|
'model': 'EDS0068',
|
||||||
'name': '7E.111111111111',
|
'name': '7E.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1261,7 +1244,6 @@
|
||||||
'model': 'EDS0066',
|
'model': 'EDS0066',
|
||||||
'name': '7E.222222222222',
|
'name': '7E.222222222222',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1302,7 +1284,6 @@
|
||||||
'model': 'DS2438',
|
'model': 'DS2438',
|
||||||
'name': 'A6.111111111111',
|
'name': 'A6.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1343,7 +1324,6 @@
|
||||||
'model': 'HobbyBoards_EF',
|
'model': 'HobbyBoards_EF',
|
||||||
'name': 'EF.111111111111',
|
'name': 'EF.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1384,7 +1364,6 @@
|
||||||
'model': 'HB_MOISTURE_METER',
|
'model': 'HB_MOISTURE_METER',
|
||||||
'name': 'EF.111111111112',
|
'name': 'EF.111111111112',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1425,7 +1404,6 @@
|
||||||
'model': 'HB_HUB',
|
'model': 'HB_HUB',
|
||||||
'name': 'EF.111111111113',
|
'name': 'EF.111111111113',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
'model': 'DS2405',
|
'model': 'DS2405',
|
||||||
'name': '05.111111111111',
|
'name': '05.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -77,7 +76,6 @@
|
||||||
'model': 'DS18S20',
|
'model': 'DS18S20',
|
||||||
'name': '10.111111111111',
|
'name': '10.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -167,7 +165,6 @@
|
||||||
'model': 'DS2406',
|
'model': 'DS2406',
|
||||||
'name': '12.111111111111',
|
'name': '12.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -318,7 +315,6 @@
|
||||||
'model': 'DS2423',
|
'model': 'DS2423',
|
||||||
'name': '1D.111111111111',
|
'name': '1D.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -455,7 +451,6 @@
|
||||||
'model': 'DS2409',
|
'model': 'DS2409',
|
||||||
'name': '1F.111111111111',
|
'name': '1F.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -484,7 +479,6 @@
|
||||||
'model': 'DS2423',
|
'model': 'DS2423',
|
||||||
'name': '1D.111111111111',
|
'name': '1D.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -621,7 +615,6 @@
|
||||||
'model': 'DS1822',
|
'model': 'DS1822',
|
||||||
'name': '22.111111111111',
|
'name': '22.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -711,7 +704,6 @@
|
||||||
'model': 'DS2438',
|
'model': 'DS2438',
|
||||||
'name': '26.111111111111',
|
'name': '26.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1291,7 +1283,6 @@
|
||||||
'model': 'DS18B20',
|
'model': 'DS18B20',
|
||||||
'name': '28.111111111111',
|
'name': '28.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1381,7 +1372,6 @@
|
||||||
'model': 'DS18B20',
|
'model': 'DS18B20',
|
||||||
'name': '28.222222222222',
|
'name': '28.222222222222',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1471,7 +1461,6 @@
|
||||||
'model': 'DS18B20',
|
'model': 'DS18B20',
|
||||||
'name': '28.222222222223',
|
'name': '28.222222222223',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1561,7 +1550,6 @@
|
||||||
'model': 'DS2408',
|
'model': 'DS2408',
|
||||||
'name': '29.111111111111',
|
'name': '29.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1602,7 +1590,6 @@
|
||||||
'model': 'DS2760',
|
'model': 'DS2760',
|
||||||
'name': '30.111111111111',
|
'name': '30.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1839,7 +1826,6 @@
|
||||||
'model': 'DS2413',
|
'model': 'DS2413',
|
||||||
'name': '3A.111111111111',
|
'name': '3A.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1880,7 +1866,6 @@
|
||||||
'model': 'DS1825',
|
'model': 'DS1825',
|
||||||
'name': '3B.111111111111',
|
'name': '3B.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1970,7 +1955,6 @@
|
||||||
'model': 'DS28EA00',
|
'model': 'DS28EA00',
|
||||||
'name': '42.111111111111',
|
'name': '42.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -2060,7 +2044,6 @@
|
||||||
'model': 'EDS0068',
|
'model': 'EDS0068',
|
||||||
'name': '7E.111111111111',
|
'name': '7E.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -2297,7 +2280,6 @@
|
||||||
'model': 'EDS0066',
|
'model': 'EDS0066',
|
||||||
'name': '7E.222222222222',
|
'name': '7E.222222222222',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -2436,7 +2418,6 @@
|
||||||
'model': 'DS2438',
|
'model': 'DS2438',
|
||||||
'name': 'A6.111111111111',
|
'name': 'A6.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -3016,7 +2997,6 @@
|
||||||
'model': 'HobbyBoards_EF',
|
'model': 'HobbyBoards_EF',
|
||||||
'name': 'EF.111111111111',
|
'name': 'EF.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -3204,7 +3184,6 @@
|
||||||
'model': 'HB_MOISTURE_METER',
|
'model': 'HB_MOISTURE_METER',
|
||||||
'name': 'EF.111111111112',
|
'name': 'EF.111111111112',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -3441,7 +3420,6 @@
|
||||||
'model': 'HB_HUB',
|
'model': 'HB_HUB',
|
||||||
'name': 'EF.111111111113',
|
'name': 'EF.111111111113',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
'model': 'DS2405',
|
'model': 'DS2405',
|
||||||
'name': '05.111111111111',
|
'name': '05.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -121,7 +120,6 @@
|
||||||
'model': 'DS18S20',
|
'model': 'DS18S20',
|
||||||
'name': '10.111111111111',
|
'name': '10.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -162,7 +160,6 @@
|
||||||
'model': 'DS2406',
|
'model': 'DS2406',
|
||||||
'name': '12.111111111111',
|
'name': '12.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -391,7 +388,6 @@
|
||||||
'model': 'DS2423',
|
'model': 'DS2423',
|
||||||
'name': '1D.111111111111',
|
'name': '1D.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -432,7 +428,6 @@
|
||||||
'model': 'DS2409',
|
'model': 'DS2409',
|
||||||
'name': '1F.111111111111',
|
'name': '1F.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -461,7 +456,6 @@
|
||||||
'model': 'DS2423',
|
'model': 'DS2423',
|
||||||
'name': '1D.111111111111',
|
'name': '1D.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -502,7 +496,6 @@
|
||||||
'model': 'DS1822',
|
'model': 'DS1822',
|
||||||
'name': '22.111111111111',
|
'name': '22.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -543,7 +536,6 @@
|
||||||
'model': 'DS2438',
|
'model': 'DS2438',
|
||||||
'name': '26.111111111111',
|
'name': '26.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -628,7 +620,6 @@
|
||||||
'model': 'DS18B20',
|
'model': 'DS18B20',
|
||||||
'name': '28.111111111111',
|
'name': '28.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -669,7 +660,6 @@
|
||||||
'model': 'DS18B20',
|
'model': 'DS18B20',
|
||||||
'name': '28.222222222222',
|
'name': '28.222222222222',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -710,7 +700,6 @@
|
||||||
'model': 'DS18B20',
|
'model': 'DS18B20',
|
||||||
'name': '28.222222222223',
|
'name': '28.222222222223',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -751,7 +740,6 @@
|
||||||
'model': 'DS2408',
|
'model': 'DS2408',
|
||||||
'name': '29.111111111111',
|
'name': '29.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1496,7 +1484,6 @@
|
||||||
'model': 'DS2760',
|
'model': 'DS2760',
|
||||||
'name': '30.111111111111',
|
'name': '30.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1537,7 +1524,6 @@
|
||||||
'model': 'DS2413',
|
'model': 'DS2413',
|
||||||
'name': '3A.111111111111',
|
'name': '3A.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1666,7 +1652,6 @@
|
||||||
'model': 'DS1825',
|
'model': 'DS1825',
|
||||||
'name': '3B.111111111111',
|
'name': '3B.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1707,7 +1692,6 @@
|
||||||
'model': 'DS28EA00',
|
'model': 'DS28EA00',
|
||||||
'name': '42.111111111111',
|
'name': '42.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1748,7 +1732,6 @@
|
||||||
'model': 'EDS0068',
|
'model': 'EDS0068',
|
||||||
'name': '7E.111111111111',
|
'name': '7E.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1789,7 +1772,6 @@
|
||||||
'model': 'EDS0066',
|
'model': 'EDS0066',
|
||||||
'name': '7E.222222222222',
|
'name': '7E.222222222222',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1830,7 +1812,6 @@
|
||||||
'model': 'DS2438',
|
'model': 'DS2438',
|
||||||
'name': 'A6.111111111111',
|
'name': 'A6.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1915,7 +1896,6 @@
|
||||||
'model': 'HobbyBoards_EF',
|
'model': 'HobbyBoards_EF',
|
||||||
'name': 'EF.111111111111',
|
'name': 'EF.111111111111',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1956,7 +1936,6 @@
|
||||||
'model': 'HB_MOISTURE_METER',
|
'model': 'HB_MOISTURE_METER',
|
||||||
'name': 'EF.111111111112',
|
'name': 'EF.111111111112',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -2349,7 +2328,6 @@
|
||||||
'model': 'HB_HUB',
|
'model': 'HB_HUB',
|
||||||
'name': 'EF.111111111113',
|
'name': 'EF.111111111113',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'onewire',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -323,7 +322,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -708,7 +706,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X101VE',
|
'sw_version': 'X101VE',
|
||||||
|
@ -877,7 +874,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X102VE',
|
'sw_version': 'X102VE',
|
||||||
|
@ -1304,7 +1300,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -1603,7 +1598,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -1988,7 +1982,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X101VE',
|
'sw_version': 'X101VE',
|
||||||
|
@ -2157,7 +2150,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X102VE',
|
'sw_version': 'X102VE',
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -107,7 +106,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -274,7 +272,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X101VE',
|
'sw_version': 'X101VE',
|
||||||
|
@ -441,7 +438,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X102VE',
|
'sw_version': 'X102VE',
|
||||||
|
@ -608,7 +604,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -691,7 +686,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -858,7 +852,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X101VE',
|
'sw_version': 'X101VE',
|
||||||
|
@ -1025,7 +1018,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X102VE',
|
'sw_version': 'X102VE',
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -108,7 +107,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -192,7 +190,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X101VE',
|
'sw_version': 'X101VE',
|
||||||
|
@ -233,7 +230,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X102VE',
|
'sw_version': 'X102VE',
|
||||||
|
@ -317,7 +313,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -404,7 +399,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -491,7 +485,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X101VE',
|
'sw_version': 'X101VE',
|
||||||
|
@ -532,7 +525,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X102VE',
|
'sw_version': 'X102VE',
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -65,7 +64,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -161,7 +159,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X101VE',
|
'sw_version': 'X101VE',
|
||||||
|
@ -257,7 +254,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X102VE',
|
'sw_version': 'X102VE',
|
||||||
|
@ -353,7 +349,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -394,7 +389,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -490,7 +484,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X101VE',
|
'sw_version': 'X101VE',
|
||||||
|
@ -586,7 +579,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X102VE',
|
'sw_version': 'X102VE',
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -333,7 +332,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -1087,7 +1085,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X101VE',
|
'sw_version': 'X101VE',
|
||||||
|
@ -1837,7 +1834,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X102VE',
|
'sw_version': 'X102VE',
|
||||||
|
@ -2630,7 +2626,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -2939,7 +2934,6 @@
|
||||||
'model': 'Captur ii',
|
'model': 'Captur ii',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'XJB1SU',
|
'sw_version': 'XJB1SU',
|
||||||
|
@ -3693,7 +3687,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X101VE',
|
'sw_version': 'X101VE',
|
||||||
|
@ -4443,7 +4436,6 @@
|
||||||
'model': 'Zoe',
|
'model': 'Zoe',
|
||||||
'name': 'REG-NUMBER',
|
'name': 'REG-NUMBER',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'renault',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'X102VE',
|
'sw_version': 'X102VE',
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': '8381BE 13',
|
'name': '8381BE 13',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'rova',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'NB6VAC-FXC-r0',
|
'model': 'NB6VAC-FXC-r0',
|
||||||
'name': 'SFR Box',
|
'name': 'SFR Box',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'NB6VAC-MAIN-R4.0.44k',
|
'sw_version': 'NB6VAC-MAIN-R4.0.44k',
|
||||||
|
@ -151,7 +150,6 @@
|
||||||
'model': 'NB6VAC-FXC-r0',
|
'model': 'NB6VAC-FXC-r0',
|
||||||
'name': 'SFR Box',
|
'name': 'SFR Box',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'NB6VAC-MAIN-R4.0.44k',
|
'sw_version': 'NB6VAC-MAIN-R4.0.44k',
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'NB6VAC-FXC-r0',
|
'model': 'NB6VAC-FXC-r0',
|
||||||
'name': 'SFR Box',
|
'name': 'SFR Box',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'NB6VAC-MAIN-R4.0.44k',
|
'sw_version': 'NB6VAC-MAIN-R4.0.44k',
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'NB6VAC-FXC-r0',
|
'model': 'NB6VAC-FXC-r0',
|
||||||
'name': 'SFR Box',
|
'name': 'SFR Box',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': 'NB6VAC-MAIN-R4.0.44k',
|
'sw_version': 'NB6VAC-MAIN-R4.0.44k',
|
||||||
|
|
|
@ -70,7 +70,6 @@
|
||||||
'model': 'iQ3',
|
'model': 'iQ3',
|
||||||
'name': 'Door 1',
|
'name': 'Door 1',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'tailwind',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '10.10',
|
'sw_version': '10.10',
|
||||||
|
@ -148,7 +147,6 @@
|
||||||
'model': 'iQ3',
|
'model': 'iQ3',
|
||||||
'name': 'Door 2',
|
'name': 'Door 2',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'tailwind',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '10.10',
|
'sw_version': '10.10',
|
||||||
|
|
|
@ -74,7 +74,6 @@
|
||||||
'model': 'iQ3',
|
'model': 'iQ3',
|
||||||
'name': 'Tailwind iQ3',
|
'name': 'Tailwind iQ3',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '10.10',
|
'sw_version': '10.10',
|
||||||
|
|
|
@ -71,7 +71,6 @@
|
||||||
'model': 'iQ3',
|
'model': 'iQ3',
|
||||||
'name': 'Door 1',
|
'name': 'Door 1',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'tailwind',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '10.10',
|
'sw_version': '10.10',
|
||||||
|
@ -150,7 +149,6 @@
|
||||||
'model': 'iQ3',
|
'model': 'iQ3',
|
||||||
'name': 'Door 2',
|
'name': 'Door 2',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'tailwind',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '10.10',
|
'sw_version': '10.10',
|
||||||
|
|
|
@ -83,7 +83,6 @@
|
||||||
'model': 'iQ3',
|
'model': 'iQ3',
|
||||||
'name': 'Tailwind iQ3',
|
'name': 'Tailwind iQ3',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '10.10',
|
'sw_version': '10.10',
|
||||||
|
|
|
@ -340,7 +340,7 @@ async def test_device_remove_multiple_config_entries_1(
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, mac)}
|
connections={(dr.CONNECTION_NETWORK_MAC, mac)}
|
||||||
)
|
)
|
||||||
assert device_entry is not None
|
assert device_entry is not None
|
||||||
assert device_entry.config_entries == {tasmota_entry.entry_id, mock_entry.entry_id}
|
assert device_entry.config_entries == [tasmota_entry.entry_id, mock_entry.entry_id]
|
||||||
|
|
||||||
async_fire_mqtt_message(
|
async_fire_mqtt_message(
|
||||||
hass,
|
hass,
|
||||||
|
@ -354,7 +354,7 @@ async def test_device_remove_multiple_config_entries_1(
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, mac)}
|
connections={(dr.CONNECTION_NETWORK_MAC, mac)}
|
||||||
)
|
)
|
||||||
assert device_entry is not None
|
assert device_entry is not None
|
||||||
assert device_entry.config_entries == {mock_entry.entry_id}
|
assert device_entry.config_entries == [mock_entry.entry_id]
|
||||||
|
|
||||||
|
|
||||||
async def test_device_remove_multiple_config_entries_2(
|
async def test_device_remove_multiple_config_entries_2(
|
||||||
|
@ -396,7 +396,7 @@ async def test_device_remove_multiple_config_entries_2(
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, mac)}
|
connections={(dr.CONNECTION_NETWORK_MAC, mac)}
|
||||||
)
|
)
|
||||||
assert device_entry is not None
|
assert device_entry is not None
|
||||||
assert device_entry.config_entries == {tasmota_entry.entry_id, mock_entry.entry_id}
|
assert device_entry.config_entries == [tasmota_entry.entry_id, mock_entry.entry_id]
|
||||||
assert other_device_entry.id != device_entry.id
|
assert other_device_entry.id != device_entry.id
|
||||||
|
|
||||||
# Remove other config entry from the device
|
# Remove other config entry from the device
|
||||||
|
@ -410,7 +410,7 @@ async def test_device_remove_multiple_config_entries_2(
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, mac)}
|
connections={(dr.CONNECTION_NETWORK_MAC, mac)}
|
||||||
)
|
)
|
||||||
assert device_entry is not None
|
assert device_entry is not None
|
||||||
assert device_entry.config_entries == {tasmota_entry.entry_id}
|
assert device_entry.config_entries == [tasmota_entry.entry_id]
|
||||||
mqtt_mock.async_publish.assert_not_called()
|
mqtt_mock.async_publish.assert_not_called()
|
||||||
|
|
||||||
# Remove other config entry from the other device - Tasmota should not do any cleanup
|
# Remove other config entry from the other device - Tasmota should not do any cleanup
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': 'Bridge',
|
'model': 'Bridge',
|
||||||
'name': 'Bridge-AB1C',
|
'name': 'Bridge-AB1C',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': None,
|
|
||||||
'serial_number': '0000-0000',
|
'serial_number': '0000-0000',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -70,7 +70,6 @@
|
||||||
'model': 'Tedee PRO',
|
'model': 'Tedee PRO',
|
||||||
'name': 'Lock-1A2B',
|
'name': 'Lock-1A2B',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'tedee',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -148,7 +147,6 @@
|
||||||
'model': 'Tedee GO',
|
'model': 'Tedee GO',
|
||||||
'name': 'Lock-2C3D',
|
'name': 'Lock-2C3D',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'tedee',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
'model': 'Powerwall 2, Tesla Backup Gateway 2',
|
'model': 'Powerwall 2, Tesla Backup Gateway 2',
|
||||||
'name': 'Energy Site',
|
'name': 'Energy Site',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'teslemetry',
|
|
||||||
'serial_number': '123456',
|
'serial_number': '123456',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -54,7 +53,6 @@
|
||||||
'model': 'Model X',
|
'model': 'Model X',
|
||||||
'name': 'Test',
|
'name': 'Test',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'teslemetry',
|
|
||||||
'serial_number': 'LRWXF7EK4KC700000',
|
'serial_number': 'LRWXF7EK4KC700000',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -85,7 +83,6 @@
|
||||||
'model': 'Gen 3 Wall Connector',
|
'model': 'Gen 3 Wall Connector',
|
||||||
'name': 'Wall Connector',
|
'name': 'Wall Connector',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'teslemetry',
|
|
||||||
'serial_number': '123',
|
'serial_number': '123',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -116,7 +113,6 @@
|
||||||
'model': 'Gen 3 Wall Connector',
|
'model': 'Gen 3 Wall Connector',
|
||||||
'name': 'Wall Connector',
|
'name': 'Wall Connector',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'teslemetry',
|
|
||||||
'serial_number': '234',
|
'serial_number': '234',
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -101,7 +101,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Twente Milieu',
|
'name': 'Twente Milieu',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'twentemilieu',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -70,7 +70,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Twente Milieu',
|
'name': 'Twente Milieu',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'twentemilieu',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -148,7 +147,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Twente Milieu',
|
'name': 'Twente Milieu',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'twentemilieu',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -226,7 +224,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Twente Milieu',
|
'name': 'Twente Milieu',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'twentemilieu',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -304,7 +301,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Twente Milieu',
|
'name': 'Twente Milieu',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'twentemilieu',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -382,7 +378,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Twente Milieu',
|
'name': 'Twente Milieu',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'twentemilieu',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -63,7 +63,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'Uptime',
|
'name': 'Uptime',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'uptime',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'LV-PUR131S',
|
'model': 'LV-PUR131S',
|
||||||
'name': 'Air Purifier 131s',
|
'name': 'Air Purifier 131s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -115,7 +114,6 @@
|
||||||
'model': 'Core200S',
|
'model': 'Core200S',
|
||||||
'name': 'Air Purifier 200s',
|
'name': 'Air Purifier 200s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -211,7 +209,6 @@
|
||||||
'model': 'LAP-C401S-WJP',
|
'model': 'LAP-C401S-WJP',
|
||||||
'name': 'Air Purifier 400s',
|
'name': 'Air Purifier 400s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -309,7 +306,6 @@
|
||||||
'model': 'LAP-C601S-WUS',
|
'model': 'LAP-C601S-WUS',
|
||||||
'name': 'Air Purifier 600s',
|
'name': 'Air Purifier 600s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -407,7 +403,6 @@
|
||||||
'model': 'ESL100',
|
'model': 'ESL100',
|
||||||
'name': 'Dimmable Light',
|
'name': 'Dimmable Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -444,7 +439,6 @@
|
||||||
'model': 'ESWD16',
|
'model': 'ESWD16',
|
||||||
'name': 'Dimmer Switch',
|
'name': 'Dimmer Switch',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -497,7 +491,6 @@
|
||||||
'model': 'wifi-switch-1.3',
|
'model': 'wifi-switch-1.3',
|
||||||
'name': 'Outlet',
|
'name': 'Outlet',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -534,7 +527,6 @@
|
||||||
'model': 'ESL100CW',
|
'model': 'ESL100CW',
|
||||||
'name': 'Temperature Light',
|
'name': 'Temperature Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -571,7 +563,6 @@
|
||||||
'model': 'ESWL01',
|
'model': 'ESWL01',
|
||||||
'name': 'Wall Switch',
|
'name': 'Wall Switch',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'LV-PUR131S',
|
'model': 'LV-PUR131S',
|
||||||
'name': 'Air Purifier 131s',
|
'name': 'Air Purifier 131s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -61,7 +60,6 @@
|
||||||
'model': 'Core200S',
|
'model': 'Core200S',
|
||||||
'name': 'Air Purifier 200s',
|
'name': 'Air Purifier 200s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -98,7 +96,6 @@
|
||||||
'model': 'LAP-C401S-WJP',
|
'model': 'LAP-C401S-WJP',
|
||||||
'name': 'Air Purifier 400s',
|
'name': 'Air Purifier 400s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -135,7 +132,6 @@
|
||||||
'model': 'LAP-C601S-WUS',
|
'model': 'LAP-C601S-WUS',
|
||||||
'name': 'Air Purifier 600s',
|
'name': 'Air Purifier 600s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -172,7 +168,6 @@
|
||||||
'model': 'ESL100',
|
'model': 'ESL100',
|
||||||
'name': 'Dimmable Light',
|
'name': 'Dimmable Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -261,7 +256,6 @@
|
||||||
'model': 'ESWD16',
|
'model': 'ESWD16',
|
||||||
'name': 'Dimmer Switch',
|
'name': 'Dimmer Switch',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -368,7 +362,6 @@
|
||||||
'model': 'wifi-switch-1.3',
|
'model': 'wifi-switch-1.3',
|
||||||
'name': 'Outlet',
|
'name': 'Outlet',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -405,7 +398,6 @@
|
||||||
'model': 'ESL100CW',
|
'model': 'ESL100CW',
|
||||||
'name': 'Temperature Light',
|
'name': 'Temperature Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -509,7 +501,6 @@
|
||||||
'model': 'ESWL01',
|
'model': 'ESWL01',
|
||||||
'name': 'Wall Switch',
|
'name': 'Wall Switch',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'LV-PUR131S',
|
'model': 'LV-PUR131S',
|
||||||
'name': 'Air Purifier 131s',
|
'name': 'Air Purifier 131s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -153,7 +152,6 @@
|
||||||
'model': 'Core200S',
|
'model': 'Core200S',
|
||||||
'name': 'Air Purifier 200s',
|
'name': 'Air Purifier 200s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -238,7 +236,6 @@
|
||||||
'model': 'LAP-C401S-WJP',
|
'model': 'LAP-C401S-WJP',
|
||||||
'name': 'Air Purifier 400s',
|
'name': 'Air Purifier 400s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -416,7 +413,6 @@
|
||||||
'model': 'LAP-C601S-WUS',
|
'model': 'LAP-C601S-WUS',
|
||||||
'name': 'Air Purifier 600s',
|
'name': 'Air Purifier 600s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -594,7 +590,6 @@
|
||||||
'model': 'ESL100',
|
'model': 'ESL100',
|
||||||
'name': 'Dimmable Light',
|
'name': 'Dimmable Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -631,7 +626,6 @@
|
||||||
'model': 'ESWD16',
|
'model': 'ESWD16',
|
||||||
'name': 'Dimmer Switch',
|
'name': 'Dimmer Switch',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -684,7 +678,6 @@
|
||||||
'model': 'wifi-switch-1.3',
|
'model': 'wifi-switch-1.3',
|
||||||
'name': 'Outlet',
|
'name': 'Outlet',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1015,7 +1008,6 @@
|
||||||
'model': 'ESL100CW',
|
'model': 'ESL100CW',
|
||||||
'name': 'Temperature Light',
|
'name': 'Temperature Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -1052,7 +1044,6 @@
|
||||||
'model': 'ESWL01',
|
'model': 'ESWL01',
|
||||||
'name': 'Wall Switch',
|
'name': 'Wall Switch',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
'model': 'LV-PUR131S',
|
'model': 'LV-PUR131S',
|
||||||
'name': 'Air Purifier 131s',
|
'name': 'Air Purifier 131s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -61,7 +60,6 @@
|
||||||
'model': 'Core200S',
|
'model': 'Core200S',
|
||||||
'name': 'Air Purifier 200s',
|
'name': 'Air Purifier 200s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -98,7 +96,6 @@
|
||||||
'model': 'LAP-C401S-WJP',
|
'model': 'LAP-C401S-WJP',
|
||||||
'name': 'Air Purifier 400s',
|
'name': 'Air Purifier 400s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -135,7 +132,6 @@
|
||||||
'model': 'LAP-C601S-WUS',
|
'model': 'LAP-C601S-WUS',
|
||||||
'name': 'Air Purifier 600s',
|
'name': 'Air Purifier 600s',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -172,7 +168,6 @@
|
||||||
'model': 'ESL100',
|
'model': 'ESL100',
|
||||||
'name': 'Dimmable Light',
|
'name': 'Dimmable Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -209,7 +204,6 @@
|
||||||
'model': 'ESWD16',
|
'model': 'ESWD16',
|
||||||
'name': 'Dimmer Switch',
|
'name': 'Dimmer Switch',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -262,7 +256,6 @@
|
||||||
'model': 'wifi-switch-1.3',
|
'model': 'wifi-switch-1.3',
|
||||||
'name': 'Outlet',
|
'name': 'Outlet',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -343,7 +336,6 @@
|
||||||
'model': 'ESL100CW',
|
'model': 'ESL100CW',
|
||||||
'name': 'Temperature Light',
|
'name': 'Temperature Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -380,7 +372,6 @@
|
||||||
'model': 'ESWL01',
|
'model': 'ESWL01',
|
||||||
'name': 'Wall Switch',
|
'name': 'Wall Switch',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'vesync',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -69,7 +69,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'home-assistant.io',
|
'name': 'home-assistant.io',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'whois',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -147,7 +146,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'home-assistant.io',
|
'name': 'home-assistant.io',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'whois',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -229,7 +227,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'home-assistant.io',
|
'name': 'home-assistant.io',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'whois',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -307,7 +304,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'home-assistant.io',
|
'name': 'home-assistant.io',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'whois',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -385,7 +381,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'home-assistant.io',
|
'name': 'home-assistant.io',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'whois',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -462,7 +457,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'home-assistant.io',
|
'name': 'home-assistant.io',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'whois',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -539,7 +533,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'home-assistant.io',
|
'name': 'home-assistant.io',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'whois',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -616,7 +609,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'home-assistant.io',
|
'name': 'home-assistant.io',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'whois',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
@ -693,7 +685,6 @@
|
||||||
'model': None,
|
'model': None,
|
||||||
'name': 'home-assistant.io',
|
'name': 'home-assistant.io',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'whois',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': None,
|
'sw_version': None,
|
||||||
|
|
|
@ -74,7 +74,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGB Light',
|
'name': 'WLED RGB Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.5',
|
'sw_version': '0.8.5',
|
||||||
|
|
|
@ -74,7 +74,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGB Light',
|
'name': 'WLED RGB Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.5',
|
'sw_version': '0.8.5',
|
||||||
|
|
|
@ -82,7 +82,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGB Light',
|
'name': 'WLED RGB Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.5',
|
'sw_version': '0.8.5',
|
||||||
|
@ -172,7 +171,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGB Light',
|
'name': 'WLED RGB Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.5',
|
'sw_version': '0.8.5',
|
||||||
|
|
|
@ -84,7 +84,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGB Light',
|
'name': 'WLED RGB Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.5',
|
'sw_version': '0.8.5',
|
||||||
|
@ -270,7 +269,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGB Light',
|
'name': 'WLED RGB Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.5',
|
'sw_version': '0.8.5',
|
||||||
|
@ -360,7 +358,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGBW Light',
|
'name': 'WLED RGBW Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.6b4',
|
'sw_version': '0.8.6b4',
|
||||||
|
@ -450,7 +447,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGBW Light',
|
'name': 'WLED RGBW Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.6b4',
|
'sw_version': '0.8.6b4',
|
||||||
|
|
|
@ -76,7 +76,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGB Light',
|
'name': 'WLED RGB Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.5',
|
'sw_version': '0.8.5',
|
||||||
|
@ -157,7 +156,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGB Light',
|
'name': 'WLED RGB Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.5',
|
'sw_version': '0.8.5',
|
||||||
|
@ -239,7 +237,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGB Light',
|
'name': 'WLED RGB Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.5',
|
'sw_version': '0.8.5',
|
||||||
|
@ -321,7 +318,6 @@
|
||||||
'model': 'DIY light',
|
'model': 'DIY light',
|
||||||
'name': 'WLED RGB Light',
|
'name': 'WLED RGB Light',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
'primary_integration': 'wled',
|
|
||||||
'serial_number': None,
|
'serial_number': None,
|
||||||
'suggested_area': None,
|
'suggested_area': None,
|
||||||
'sw_version': '0.8.5',
|
'sw_version': '0.8.5',
|
||||||
|
|
|
@ -90,7 +90,7 @@ async def test_get_or_create_returns_same_entry(
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
# Only 2 update events. The third entry did not generate any changes.
|
# Only 2 update events. The third entry did not generate any changes.
|
||||||
assert len(update_events) == 2
|
assert len(update_events) == 2, update_events
|
||||||
assert update_events[0].data == {
|
assert update_events[0].data == {
|
||||||
"action": "create",
|
"action": "create",
|
||||||
"device_id": entry.id,
|
"device_id": entry.id,
|
||||||
|
@ -170,7 +170,9 @@ async def test_multiple_config_entries(
|
||||||
assert len(device_registry.devices) == 1
|
assert len(device_registry.devices) == 1
|
||||||
assert entry.id == entry2.id
|
assert entry.id == entry2.id
|
||||||
assert entry.id == entry3.id
|
assert entry.id == entry3.id
|
||||||
assert entry2.config_entries == {config_entry_1.entry_id, config_entry_2.entry_id}
|
assert entry2.config_entries == [config_entry_2.entry_id, config_entry_1.entry_id]
|
||||||
|
# the 3rd get_or_create was a primary update, so that's now first config entry
|
||||||
|
assert entry3.config_entries == [config_entry_1.entry_id, config_entry_2.entry_id]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("load_registries", [False])
|
@pytest.mark.parametrize("load_registries", [False])
|
||||||
|
@ -231,7 +233,7 @@ async def test_loading_from_storage(
|
||||||
)
|
)
|
||||||
assert entry == dr.DeviceEntry(
|
assert entry == dr.DeviceEntry(
|
||||||
area_id="12345A",
|
area_id="12345A",
|
||||||
config_entries={mock_config_entry.entry_id},
|
config_entries=[mock_config_entry.entry_id],
|
||||||
configuration_url="https://example.com/config",
|
configuration_url="https://example.com/config",
|
||||||
connections={("Zigbee", "01.23.45.67.89")},
|
connections={("Zigbee", "01.23.45.67.89")},
|
||||||
disabled_by=dr.DeviceEntryDisabler.USER,
|
disabled_by=dr.DeviceEntryDisabler.USER,
|
||||||
|
@ -248,7 +250,7 @@ async def test_loading_from_storage(
|
||||||
suggested_area=None, # Not stored
|
suggested_area=None, # Not stored
|
||||||
sw_version="version",
|
sw_version="version",
|
||||||
)
|
)
|
||||||
assert isinstance(entry.config_entries, set)
|
assert isinstance(entry.config_entries, list)
|
||||||
assert isinstance(entry.connections, set)
|
assert isinstance(entry.connections, set)
|
||||||
assert isinstance(entry.identifiers, set)
|
assert isinstance(entry.identifiers, set)
|
||||||
|
|
||||||
|
@ -261,7 +263,7 @@ async def test_loading_from_storage(
|
||||||
model="model",
|
model="model",
|
||||||
)
|
)
|
||||||
assert entry == dr.DeviceEntry(
|
assert entry == dr.DeviceEntry(
|
||||||
config_entries={mock_config_entry.entry_id},
|
config_entries=[mock_config_entry.entry_id],
|
||||||
connections={("Zigbee", "23.45.67.89.01")},
|
connections={("Zigbee", "23.45.67.89.01")},
|
||||||
id="bcdefghijklmn",
|
id="bcdefghijklmn",
|
||||||
identifiers={("serial", "3456ABCDEF12")},
|
identifiers={("serial", "3456ABCDEF12")},
|
||||||
|
@ -269,7 +271,7 @@ async def test_loading_from_storage(
|
||||||
model="model",
|
model="model",
|
||||||
)
|
)
|
||||||
assert entry.id == "bcdefghijklmn"
|
assert entry.id == "bcdefghijklmn"
|
||||||
assert isinstance(entry.config_entries, set)
|
assert isinstance(entry.config_entries, list)
|
||||||
assert isinstance(entry.connections, set)
|
assert isinstance(entry.connections, set)
|
||||||
assert isinstance(entry.identifiers, set)
|
assert isinstance(entry.identifiers, set)
|
||||||
|
|
||||||
|
@ -816,7 +818,7 @@ async def test_removing_config_entries(
|
||||||
assert len(device_registry.devices) == 2
|
assert len(device_registry.devices) == 2
|
||||||
assert entry.id == entry2.id
|
assert entry.id == entry2.id
|
||||||
assert entry.id != entry3.id
|
assert entry.id != entry3.id
|
||||||
assert entry2.config_entries == {config_entry_1.entry_id, config_entry_2.entry_id}
|
assert entry2.config_entries == [config_entry_2.entry_id, config_entry_1.entry_id]
|
||||||
|
|
||||||
device_registry.async_clear_config_entry(config_entry_1.entry_id)
|
device_registry.async_clear_config_entry(config_entry_1.entry_id)
|
||||||
entry = device_registry.async_get_device(identifiers={("bridgeid", "0123")})
|
entry = device_registry.async_get_device(identifiers={("bridgeid", "0123")})
|
||||||
|
@ -824,7 +826,7 @@ async def test_removing_config_entries(
|
||||||
identifiers={("bridgeid", "4567")}
|
identifiers={("bridgeid", "4567")}
|
||||||
)
|
)
|
||||||
|
|
||||||
assert entry.config_entries == {config_entry_2.entry_id}
|
assert entry.config_entries == [config_entry_2.entry_id]
|
||||||
assert entry3_removed is None
|
assert entry3_removed is None
|
||||||
|
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
@ -837,7 +839,7 @@ async def test_removing_config_entries(
|
||||||
assert update_events[1].data == {
|
assert update_events[1].data == {
|
||||||
"action": "update",
|
"action": "update",
|
||||||
"device_id": entry.id,
|
"device_id": entry.id,
|
||||||
"changes": {"config_entries": {config_entry_1.entry_id}},
|
"changes": {"config_entries": [config_entry_1.entry_id]},
|
||||||
}
|
}
|
||||||
assert update_events[2].data == {
|
assert update_events[2].data == {
|
||||||
"action": "create",
|
"action": "create",
|
||||||
|
@ -847,7 +849,7 @@ async def test_removing_config_entries(
|
||||||
"action": "update",
|
"action": "update",
|
||||||
"device_id": entry.id,
|
"device_id": entry.id,
|
||||||
"changes": {
|
"changes": {
|
||||||
"config_entries": {config_entry_1.entry_id, config_entry_2.entry_id}
|
"config_entries": [config_entry_2.entry_id, config_entry_1.entry_id]
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
assert update_events[4].data == {
|
assert update_events[4].data == {
|
||||||
|
@ -892,7 +894,7 @@ async def test_deleted_device_removing_config_entries(
|
||||||
assert len(device_registry.deleted_devices) == 0
|
assert len(device_registry.deleted_devices) == 0
|
||||||
assert entry.id == entry2.id
|
assert entry.id == entry2.id
|
||||||
assert entry.id != entry3.id
|
assert entry.id != entry3.id
|
||||||
assert entry2.config_entries == {config_entry_1.entry_id, config_entry_2.entry_id}
|
assert entry2.config_entries == [config_entry_2.entry_id, config_entry_1.entry_id]
|
||||||
|
|
||||||
device_registry.async_remove_device(entry.id)
|
device_registry.async_remove_device(entry.id)
|
||||||
device_registry.async_remove_device(entry3.id)
|
device_registry.async_remove_device(entry3.id)
|
||||||
|
@ -909,7 +911,7 @@ async def test_deleted_device_removing_config_entries(
|
||||||
assert update_events[1].data == {
|
assert update_events[1].data == {
|
||||||
"action": "update",
|
"action": "update",
|
||||||
"device_id": entry2.id,
|
"device_id": entry2.id,
|
||||||
"changes": {"config_entries": {config_entry_1.entry_id}},
|
"changes": {"config_entries": [config_entry_1.entry_id]},
|
||||||
}
|
}
|
||||||
assert update_events[2].data == {
|
assert update_events[2].data == {
|
||||||
"action": "create",
|
"action": "create",
|
||||||
|
@ -1288,7 +1290,7 @@ async def test_update(
|
||||||
assert updated_entry != entry
|
assert updated_entry != entry
|
||||||
assert updated_entry == dr.DeviceEntry(
|
assert updated_entry == dr.DeviceEntry(
|
||||||
area_id="12345A",
|
area_id="12345A",
|
||||||
config_entries={mock_config_entry.entry_id},
|
config_entries=[mock_config_entry.entry_id],
|
||||||
configuration_url="https://example.com/config",
|
configuration_url="https://example.com/config",
|
||||||
connections={("mac", "65:43:21:fe:dc:ba")},
|
connections={("mac", "65:43:21:fe:dc:ba")},
|
||||||
disabled_by=dr.DeviceEntryDisabler.USER,
|
disabled_by=dr.DeviceEntryDisabler.USER,
|
||||||
|
@ -1497,7 +1499,7 @@ async def test_update_remove_config_entries(
|
||||||
assert len(device_registry.devices) == 2
|
assert len(device_registry.devices) == 2
|
||||||
assert entry.id == entry2.id
|
assert entry.id == entry2.id
|
||||||
assert entry.id != entry3.id
|
assert entry.id != entry3.id
|
||||||
assert entry2.config_entries == {config_entry_1.entry_id, config_entry_2.entry_id}
|
assert entry2.config_entries == [config_entry_2.entry_id, config_entry_1.entry_id]
|
||||||
|
|
||||||
updated_entry = device_registry.async_update_device(
|
updated_entry = device_registry.async_update_device(
|
||||||
entry2.id, remove_config_entry_id=config_entry_1.entry_id
|
entry2.id, remove_config_entry_id=config_entry_1.entry_id
|
||||||
|
@ -1506,7 +1508,7 @@ async def test_update_remove_config_entries(
|
||||||
entry3.id, remove_config_entry_id=config_entry_1.entry_id
|
entry3.id, remove_config_entry_id=config_entry_1.entry_id
|
||||||
)
|
)
|
||||||
|
|
||||||
assert updated_entry.config_entries == {config_entry_2.entry_id}
|
assert updated_entry.config_entries == [config_entry_2.entry_id]
|
||||||
assert removed_entry is None
|
assert removed_entry is None
|
||||||
|
|
||||||
removed_entry = device_registry.async_get_device(identifiers={("bridgeid", "4567")})
|
removed_entry = device_registry.async_get_device(identifiers={("bridgeid", "4567")})
|
||||||
|
@ -1523,7 +1525,7 @@ async def test_update_remove_config_entries(
|
||||||
assert update_events[1].data == {
|
assert update_events[1].data == {
|
||||||
"action": "update",
|
"action": "update",
|
||||||
"device_id": entry2.id,
|
"device_id": entry2.id,
|
||||||
"changes": {"config_entries": {config_entry_1.entry_id}},
|
"changes": {"config_entries": [config_entry_1.entry_id]},
|
||||||
}
|
}
|
||||||
assert update_events[2].data == {
|
assert update_events[2].data == {
|
||||||
"action": "create",
|
"action": "create",
|
||||||
|
@ -1533,7 +1535,7 @@ async def test_update_remove_config_entries(
|
||||||
"action": "update",
|
"action": "update",
|
||||||
"device_id": entry.id,
|
"device_id": entry.id,
|
||||||
"changes": {
|
"changes": {
|
||||||
"config_entries": {config_entry_1.entry_id, config_entry_2.entry_id}
|
"config_entries": [config_entry_2.entry_id, config_entry_1.entry_id]
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
assert update_events[4].data == {
|
assert update_events[4].data == {
|
||||||
|
@ -1766,7 +1768,7 @@ async def test_restore_device(
|
||||||
assert len(device_registry.devices) == 2
|
assert len(device_registry.devices) == 2
|
||||||
assert len(device_registry.deleted_devices) == 0
|
assert len(device_registry.deleted_devices) == 0
|
||||||
|
|
||||||
assert isinstance(entry3.config_entries, set)
|
assert isinstance(entry3.config_entries, list)
|
||||||
assert isinstance(entry3.connections, set)
|
assert isinstance(entry3.connections, set)
|
||||||
assert isinstance(entry3.identifiers, set)
|
assert isinstance(entry3.identifiers, set)
|
||||||
|
|
||||||
|
@ -1898,7 +1900,7 @@ async def test_restore_shared_device(
|
||||||
assert len(device_registry.devices) == 1
|
assert len(device_registry.devices) == 1
|
||||||
assert len(device_registry.deleted_devices) == 0
|
assert len(device_registry.deleted_devices) == 0
|
||||||
|
|
||||||
assert isinstance(entry2.config_entries, set)
|
assert isinstance(entry2.config_entries, list)
|
||||||
assert isinstance(entry2.connections, set)
|
assert isinstance(entry2.connections, set)
|
||||||
assert isinstance(entry2.identifiers, set)
|
assert isinstance(entry2.identifiers, set)
|
||||||
|
|
||||||
|
@ -1916,7 +1918,7 @@ async def test_restore_shared_device(
|
||||||
assert len(device_registry.devices) == 1
|
assert len(device_registry.devices) == 1
|
||||||
assert len(device_registry.deleted_devices) == 0
|
assert len(device_registry.deleted_devices) == 0
|
||||||
|
|
||||||
assert isinstance(entry3.config_entries, set)
|
assert isinstance(entry3.config_entries, list)
|
||||||
assert isinstance(entry3.connections, set)
|
assert isinstance(entry3.connections, set)
|
||||||
assert isinstance(entry3.identifiers, set)
|
assert isinstance(entry3.identifiers, set)
|
||||||
|
|
||||||
|
@ -1932,7 +1934,7 @@ async def test_restore_shared_device(
|
||||||
assert len(device_registry.devices) == 1
|
assert len(device_registry.devices) == 1
|
||||||
assert len(device_registry.deleted_devices) == 0
|
assert len(device_registry.deleted_devices) == 0
|
||||||
|
|
||||||
assert isinstance(entry4.config_entries, set)
|
assert isinstance(entry4.config_entries, list)
|
||||||
assert isinstance(entry4.connections, set)
|
assert isinstance(entry4.connections, set)
|
||||||
assert isinstance(entry4.identifiers, set)
|
assert isinstance(entry4.identifiers, set)
|
||||||
|
|
||||||
|
@ -1947,7 +1949,7 @@ async def test_restore_shared_device(
|
||||||
"action": "update",
|
"action": "update",
|
||||||
"device_id": entry.id,
|
"device_id": entry.id,
|
||||||
"changes": {
|
"changes": {
|
||||||
"config_entries": {config_entry_1.entry_id},
|
"config_entries": [config_entry_1.entry_id],
|
||||||
"identifiers": {("entry_123", "0123")},
|
"identifiers": {("entry_123", "0123")},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -1971,7 +1973,7 @@ async def test_restore_shared_device(
|
||||||
"action": "update",
|
"action": "update",
|
||||||
"device_id": entry.id,
|
"device_id": entry.id,
|
||||||
"changes": {
|
"changes": {
|
||||||
"config_entries": {config_entry_2.entry_id},
|
"config_entries": [config_entry_2.entry_id],
|
||||||
"identifiers": {("entry_234", "2345")},
|
"identifiers": {("entry_234", "2345")},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -2628,39 +2630,3 @@ async def test_async_remove_device_thread_safety(
|
||||||
await hass.async_add_executor_job(
|
await hass.async_add_executor_job(
|
||||||
device_registry.async_remove_device, device.id
|
device_registry.async_remove_device, device.id
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def test_primary_integration(
|
|
||||||
hass: HomeAssistant,
|
|
||||||
device_registry: dr.DeviceRegistry,
|
|
||||||
mock_config_entry: MockConfigEntry,
|
|
||||||
) -> None:
|
|
||||||
"""Test the primary integration field."""
|
|
||||||
# Update existing
|
|
||||||
device = device_registry.async_get_or_create(
|
|
||||||
config_entry_id=mock_config_entry.entry_id,
|
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
|
||||||
identifiers=set(),
|
|
||||||
manufacturer="manufacturer",
|
|
||||||
model="model",
|
|
||||||
)
|
|
||||||
assert device.primary_integration is None
|
|
||||||
|
|
||||||
device = device_registry.async_get_or_create(
|
|
||||||
config_entry_id=mock_config_entry.entry_id,
|
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
|
||||||
model="model 2",
|
|
||||||
domain="test_domain",
|
|
||||||
)
|
|
||||||
assert device.primary_integration == "test_domain"
|
|
||||||
|
|
||||||
# Create new
|
|
||||||
device = device_registry.async_get_or_create(
|
|
||||||
config_entry_id=mock_config_entry.entry_id,
|
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
|
||||||
identifiers=set(),
|
|
||||||
manufacturer="manufacturer",
|
|
||||||
model="model",
|
|
||||||
domain="test_domain",
|
|
||||||
)
|
|
||||||
assert device.primary_integration == "test_domain"
|
|
||||||
|
|
|
@ -1191,7 +1191,6 @@ async def test_device_info_called(
|
||||||
assert device.sw_version == "test-sw"
|
assert device.sw_version == "test-sw"
|
||||||
assert device.hw_version == "test-hw"
|
assert device.hw_version == "test-hw"
|
||||||
assert device.via_device_id == via.id
|
assert device.via_device_id == via.id
|
||||||
assert device.primary_integration == config_entry.domain
|
|
||||||
|
|
||||||
|
|
||||||
async def test_device_info_not_overrides(
|
async def test_device_info_not_overrides(
|
||||||
|
|
|
@ -1106,10 +1106,10 @@ async def test_remove_config_entry_from_device_removes_entities(
|
||||||
config_entry_id=config_entry_2.entry_id,
|
config_entry_id=config_entry_2.entry_id,
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
||||||
)
|
)
|
||||||
assert device_entry.config_entries == {
|
assert device_entry.config_entries == [
|
||||||
config_entry_1.entry_id,
|
config_entry_1.entry_id,
|
||||||
config_entry_2.entry_id,
|
config_entry_2.entry_id,
|
||||||
}
|
]
|
||||||
|
|
||||||
# Create one entity for each config entry
|
# Create one entity for each config entry
|
||||||
entry_1 = entity_registry.async_get_or_create(
|
entry_1 = entity_registry.async_get_or_create(
|
||||||
|
@ -1174,10 +1174,10 @@ async def test_remove_config_entry_from_device_removes_entities_2(
|
||||||
config_entry_id=config_entry_2.entry_id,
|
config_entry_id=config_entry_2.entry_id,
|
||||||
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
connections={(dr.CONNECTION_NETWORK_MAC, "12:34:56:AB:CD:EF")},
|
||||||
)
|
)
|
||||||
assert device_entry.config_entries == {
|
assert device_entry.config_entries == [
|
||||||
config_entry_1.entry_id,
|
config_entry_1.entry_id,
|
||||||
config_entry_2.entry_id,
|
config_entry_2.entry_id,
|
||||||
}
|
]
|
||||||
|
|
||||||
# Create one entity for each config entry
|
# Create one entity for each config entry
|
||||||
entry_1 = entity_registry.async_get_or_create(
|
entry_1 = entity_registry.async_get_or_create(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue