Inline primary integration (#119860)

This commit is contained in:
Paulus Schoutsen 2024-06-18 02:08:08 -04:00 committed by GitHub
parent 4be3b53143
commit eb89ce47ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
74 changed files with 787 additions and 1416 deletions

View file

@ -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

View file

@ -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(

View file

@ -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(

View file

@ -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:

View file

@ -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',

View file

@ -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',

View file

@ -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

View file

@ -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',

View file

@ -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,

View file

@ -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)',

View file

@ -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)',

View file

@ -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)',

View file

@ -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)',

View file

@ -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,

View file

@ -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,

View file

@ -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

View file

@ -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)

View file

@ -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',

View file

@ -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

View file

@ -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',

View file

@ -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,

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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,

View file

@ -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,

View file

@ -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',

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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()

View file

@ -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,

View file

@ -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',

View file

@ -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',

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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,

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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"

View file

@ -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(

View file

@ -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(