mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 12:47:08 +00:00
Add label registry (#110821)
This commit is contained in:
parent
8201ea4b3c
commit
e0a9dcd996
@ -35,6 +35,7 @@ from .helpers import (
|
||||
entity_registry,
|
||||
floor_registry,
|
||||
issue_registry,
|
||||
label_registry,
|
||||
recorder,
|
||||
restore_state,
|
||||
template,
|
||||
@ -304,6 +305,7 @@ async def async_load_base_functionality(hass: core.HomeAssistant) -> None:
|
||||
entity_registry.async_load(hass),
|
||||
floor_registry.async_load(hass),
|
||||
issue_registry.async_load(hass),
|
||||
label_registry.async_load(hass),
|
||||
hass.async_add_executor_job(_cache_uname_processor),
|
||||
template.async_load_custom_templates(hass),
|
||||
restore_state.async_load(hass),
|
||||
|
@ -37,6 +37,7 @@ SECTIONS = (
|
||||
"device_registry",
|
||||
"entity_registry",
|
||||
"floor_registry",
|
||||
"label_registry",
|
||||
"script",
|
||||
"scene",
|
||||
)
|
||||
|
130
homeassistant/components/config/label_registry.py
Normal file
130
homeassistant/components/config/label_registry.py
Normal file
@ -0,0 +1,130 @@
|
||||
"""Websocket API to interact with the label registry."""
|
||||
from typing import Any
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components import websocket_api
|
||||
from homeassistant.components.websocket_api.connection import ActiveConnection
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.helpers.label_registry import LabelEntry, async_get
|
||||
|
||||
|
||||
@callback
|
||||
def async_setup(hass: HomeAssistant) -> bool:
|
||||
"""Register the Label Registry WS commands."""
|
||||
websocket_api.async_register_command(hass, websocket_list_labels)
|
||||
websocket_api.async_register_command(hass, websocket_create_label)
|
||||
websocket_api.async_register_command(hass, websocket_delete_label)
|
||||
websocket_api.async_register_command(hass, websocket_update_label)
|
||||
return True
|
||||
|
||||
|
||||
@websocket_api.websocket_command(
|
||||
{
|
||||
vol.Required("type"): "config/label_registry/list",
|
||||
}
|
||||
)
|
||||
@callback
|
||||
def websocket_list_labels(
|
||||
hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any]
|
||||
) -> None:
|
||||
"""Handle list labels command."""
|
||||
registry = async_get(hass)
|
||||
connection.send_result(
|
||||
msg["id"],
|
||||
[_entry_dict(entry) for entry in registry.async_list_labels()],
|
||||
)
|
||||
|
||||
|
||||
@websocket_api.websocket_command(
|
||||
{
|
||||
vol.Required("type"): "config/label_registry/create",
|
||||
vol.Required("name"): str,
|
||||
vol.Optional("color"): vol.Any(cv.color_hex, None),
|
||||
vol.Optional("description"): vol.Any(str, None),
|
||||
vol.Optional("icon"): vol.Any(cv.icon, None),
|
||||
}
|
||||
)
|
||||
@websocket_api.require_admin
|
||||
@callback
|
||||
def websocket_create_label(
|
||||
hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any]
|
||||
) -> None:
|
||||
"""Create label command."""
|
||||
registry = async_get(hass)
|
||||
|
||||
data = dict(msg)
|
||||
data.pop("type")
|
||||
data.pop("id")
|
||||
|
||||
try:
|
||||
entry = registry.async_create(**data)
|
||||
except ValueError as err:
|
||||
connection.send_error(msg["id"], "invalid_info", str(err))
|
||||
else:
|
||||
connection.send_result(msg["id"], _entry_dict(entry))
|
||||
|
||||
|
||||
@websocket_api.websocket_command(
|
||||
{
|
||||
vol.Required("type"): "config/label_registry/delete",
|
||||
vol.Required("label_id"): str,
|
||||
}
|
||||
)
|
||||
@websocket_api.require_admin
|
||||
@callback
|
||||
def websocket_delete_label(
|
||||
hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any]
|
||||
) -> None:
|
||||
"""Delete label command."""
|
||||
registry = async_get(hass)
|
||||
|
||||
try:
|
||||
registry.async_delete(msg["label_id"])
|
||||
except KeyError:
|
||||
connection.send_error(msg["id"], "invalid_info", "Label ID doesn't exist")
|
||||
else:
|
||||
connection.send_result(msg["id"])
|
||||
|
||||
|
||||
@websocket_api.websocket_command(
|
||||
{
|
||||
vol.Required("type"): "config/label_registry/update",
|
||||
vol.Required("label_id"): str,
|
||||
vol.Optional("color"): vol.Any(cv.color_hex, None),
|
||||
vol.Optional("description"): vol.Any(str, None),
|
||||
vol.Optional("icon"): vol.Any(cv.icon, None),
|
||||
vol.Optional("name"): str,
|
||||
}
|
||||
)
|
||||
@websocket_api.require_admin
|
||||
@callback
|
||||
def websocket_update_label(
|
||||
hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any]
|
||||
) -> None:
|
||||
"""Handle update label websocket command."""
|
||||
registry = async_get(hass)
|
||||
|
||||
data = dict(msg)
|
||||
data.pop("type")
|
||||
data.pop("id")
|
||||
|
||||
try:
|
||||
entry = registry.async_update(**data)
|
||||
except ValueError as err:
|
||||
connection.send_error(msg["id"], "invalid_info", str(err))
|
||||
else:
|
||||
connection.send_result(msg["id"], _entry_dict(entry))
|
||||
|
||||
|
||||
@callback
|
||||
def _entry_dict(entry: LabelEntry) -> dict[str, Any]:
|
||||
"""Convert entry to API format."""
|
||||
return {
|
||||
"color": entry.color,
|
||||
"description": entry.description,
|
||||
"icon": entry.icon,
|
||||
"label_id": entry.label_id,
|
||||
"name": entry.name,
|
||||
}
|
@ -17,7 +17,7 @@ DATA_REGISTRY = "area_registry"
|
||||
EVENT_AREA_REGISTRY_UPDATED = "area_registry_updated"
|
||||
STORAGE_KEY = "core.area_registry"
|
||||
STORAGE_VERSION_MAJOR = 1
|
||||
STORAGE_VERSION_MINOR = 5
|
||||
STORAGE_VERSION_MINOR = 6
|
||||
SAVE_DELAY = 10
|
||||
|
||||
|
||||
@ -36,6 +36,7 @@ class AreaEntry:
|
||||
floor_id: str | None
|
||||
icon: str | None
|
||||
id: str
|
||||
labels: set[str] = dataclasses.field(default_factory=set)
|
||||
name: str
|
||||
normalized_name: str
|
||||
picture: str | None
|
||||
@ -119,6 +120,11 @@ class AreaRegistryStore(Store[dict[str, list[dict[str, Any]]]]):
|
||||
for area in old_data["areas"]:
|
||||
area["floor_id"] = None
|
||||
|
||||
if old_minor_version < 6:
|
||||
# Version 1.6 adds labels
|
||||
for area in old_data["areas"]:
|
||||
area["labels"] = []
|
||||
|
||||
if old_major_version > 1:
|
||||
raise NotImplementedError
|
||||
return old_data
|
||||
@ -175,6 +181,7 @@ class AreaRegistry:
|
||||
aliases: set[str] | None = None,
|
||||
floor_id: str | None = None,
|
||||
icon: str | None = None,
|
||||
labels: set[str] | None = None,
|
||||
picture: str | None = None,
|
||||
) -> AreaEntry:
|
||||
"""Create a new area."""
|
||||
@ -189,6 +196,7 @@ class AreaRegistry:
|
||||
floor_id=floor_id,
|
||||
icon=icon,
|
||||
id=area_id,
|
||||
labels=labels or set(),
|
||||
name=name,
|
||||
normalized_name=normalized_name,
|
||||
picture=picture,
|
||||
@ -225,6 +233,7 @@ class AreaRegistry:
|
||||
aliases: set[str] | UndefinedType = UNDEFINED,
|
||||
floor_id: str | None | UndefinedType = UNDEFINED,
|
||||
icon: str | None | UndefinedType = UNDEFINED,
|
||||
labels: set[str] | UndefinedType = UNDEFINED,
|
||||
name: str | UndefinedType = UNDEFINED,
|
||||
picture: str | None | UndefinedType = UNDEFINED,
|
||||
) -> AreaEntry:
|
||||
@ -234,6 +243,7 @@ class AreaRegistry:
|
||||
aliases=aliases,
|
||||
floor_id=floor_id,
|
||||
icon=icon,
|
||||
labels=labels,
|
||||
name=name,
|
||||
picture=picture,
|
||||
)
|
||||
@ -250,6 +260,7 @@ class AreaRegistry:
|
||||
aliases: set[str] | UndefinedType = UNDEFINED,
|
||||
floor_id: str | None | UndefinedType = UNDEFINED,
|
||||
icon: str | None | UndefinedType = UNDEFINED,
|
||||
labels: set[str] | UndefinedType = UNDEFINED,
|
||||
name: str | UndefinedType = UNDEFINED,
|
||||
picture: str | None | UndefinedType = UNDEFINED,
|
||||
) -> AreaEntry:
|
||||
@ -261,6 +272,7 @@ class AreaRegistry:
|
||||
for attr_name, value in (
|
||||
("aliases", aliases),
|
||||
("icon", icon),
|
||||
("labels", labels),
|
||||
("picture", picture),
|
||||
("floor_id", floor_id),
|
||||
):
|
||||
@ -296,6 +308,7 @@ class AreaRegistry:
|
||||
floor_id=area["floor_id"],
|
||||
icon=area["icon"],
|
||||
id=area["id"],
|
||||
labels=set(area["labels"]),
|
||||
name=area["name"],
|
||||
normalized_name=normalized_name,
|
||||
picture=area["picture"],
|
||||
@ -320,6 +333,7 @@ class AreaRegistry:
|
||||
"floor_id": entry.floor_id,
|
||||
"icon": entry.icon,
|
||||
"id": entry.id,
|
||||
"labels": list(entry.labels),
|
||||
"name": entry.name,
|
||||
"picture": entry.picture,
|
||||
}
|
||||
@ -341,13 +355,16 @@ class AreaRegistry:
|
||||
def _async_setup_cleanup(self) -> None:
|
||||
"""Set up the area registry cleanup."""
|
||||
# pylint: disable-next=import-outside-toplevel
|
||||
from . import floor_registry as fr # Circular dependency
|
||||
from . import ( # Circular dependencies
|
||||
floor_registry as fr,
|
||||
label_registry as lr,
|
||||
)
|
||||
|
||||
@callback
|
||||
def _floor_removed_from_registry_filter(
|
||||
event: fr.EventFloorRegistryUpdated,
|
||||
def _removed_from_registry_filter(
|
||||
event: fr.EventFloorRegistryUpdated | lr.EventLabelRegistryUpdated,
|
||||
) -> bool:
|
||||
"""Filter all except for the remove action from floor registry events."""
|
||||
"""Filter all except for the item removed from registry events."""
|
||||
return event.data["action"] == "remove"
|
||||
|
||||
@callback
|
||||
@ -360,10 +377,26 @@ class AreaRegistry:
|
||||
|
||||
self.hass.bus.async_listen(
|
||||
event_type=fr.EVENT_FLOOR_REGISTRY_UPDATED,
|
||||
event_filter=_floor_removed_from_registry_filter, # type: ignore[arg-type]
|
||||
event_filter=_removed_from_registry_filter, # type: ignore[arg-type]
|
||||
listener=_handle_floor_registry_update, # type: ignore[arg-type]
|
||||
)
|
||||
|
||||
@callback
|
||||
def _handle_label_registry_update(event: lr.EventLabelRegistryUpdated) -> None:
|
||||
"""Update areas that have a label that has been removed."""
|
||||
label_id = event.data["label_id"]
|
||||
for area_id, area in self.areas.items():
|
||||
if label_id in area.labels:
|
||||
labels = area.labels.copy()
|
||||
labels.remove(label_id)
|
||||
self.async_update(area_id, labels=labels)
|
||||
|
||||
self.hass.bus.async_listen(
|
||||
event_type=lr.EVENT_LABEL_REGISTRY_UPDATED,
|
||||
event_filter=_removed_from_registry_filter, # type: ignore[arg-type]
|
||||
listener=_handle_label_registry_update, # type: ignore[arg-type]
|
||||
)
|
||||
|
||||
|
||||
@callback
|
||||
def async_get(hass: HomeAssistant) -> AreaRegistry:
|
||||
@ -380,10 +413,16 @@ async def async_load(hass: HomeAssistant) -> None:
|
||||
|
||||
@callback
|
||||
def async_entries_for_floor(registry: AreaRegistry, floor_id: str) -> list[AreaEntry]:
|
||||
"""Return entries that match an floor."""
|
||||
"""Return entries that match a floor."""
|
||||
return [area for area in registry.areas.values() if floor_id == area.floor_id]
|
||||
|
||||
|
||||
@callback
|
||||
def async_entries_for_label(registry: AreaRegistry, label_id: str) -> list[AreaEntry]:
|
||||
"""Return entries that match a label."""
|
||||
return [area for area in registry.areas.values() if label_id in area.labels]
|
||||
|
||||
|
||||
def normalize_area_name(area_name: str) -> str:
|
||||
"""Normalize an area name by removing whitespace and case folding."""
|
||||
return area_name.casefold().replace(" ", "")
|
||||
|
@ -43,7 +43,7 @@ DATA_REGISTRY = "device_registry"
|
||||
EVENT_DEVICE_REGISTRY_UPDATED = "device_registry_updated"
|
||||
STORAGE_KEY = "core.device_registry"
|
||||
STORAGE_VERSION_MAJOR = 1
|
||||
STORAGE_VERSION_MINOR = 4
|
||||
STORAGE_VERSION_MINOR = 5
|
||||
SAVE_DELAY = 10
|
||||
CLEANUP_DELAY = 10
|
||||
|
||||
@ -238,6 +238,7 @@ class DeviceEntry:
|
||||
hw_version: str | None = attr.ib(default=None)
|
||||
id: str = attr.ib(factory=uuid_util.random_uuid_hex)
|
||||
identifiers: set[tuple[str, str]] = attr.ib(converter=set, factory=set)
|
||||
labels: set[str] = attr.ib(converter=set, factory=set)
|
||||
manufacturer: str | None = attr.ib(default=None)
|
||||
model: str | None = attr.ib(default=None)
|
||||
name_by_user: str | None = attr.ib(default=None)
|
||||
@ -378,6 +379,10 @@ class DeviceRegistryStore(storage.Store[dict[str, list[dict[str, Any]]]]):
|
||||
# Introduced in 2023.11
|
||||
for device in old_data["devices"]:
|
||||
device["serial_number"] = None
|
||||
if old_minor_version < 5:
|
||||
# Introduced in 2024.3
|
||||
for device in old_data["devices"]:
|
||||
device["labels"] = device.get("labels", [])
|
||||
|
||||
if old_major_version > 1:
|
||||
raise NotImplementedError
|
||||
@ -634,6 +639,7 @@ class DeviceRegistry:
|
||||
disabled_by: DeviceEntryDisabler | None | UndefinedType = UNDEFINED,
|
||||
entry_type: DeviceEntryType | None | UndefinedType = UNDEFINED,
|
||||
hw_version: str | None | UndefinedType = UNDEFINED,
|
||||
labels: set[str] | UndefinedType = UNDEFINED,
|
||||
manufacturer: str | None | UndefinedType = UNDEFINED,
|
||||
merge_connections: set[tuple[str, str]] | UndefinedType = UNDEFINED,
|
||||
merge_identifiers: set[tuple[str, str]] | UndefinedType = UNDEFINED,
|
||||
@ -728,6 +734,7 @@ class DeviceRegistry:
|
||||
("disabled_by", disabled_by),
|
||||
("entry_type", entry_type),
|
||||
("hw_version", hw_version),
|
||||
("labels", labels),
|
||||
("manufacturer", manufacturer),
|
||||
("model", model),
|
||||
("name", name),
|
||||
@ -822,6 +829,7 @@ class DeviceRegistry:
|
||||
tuple(iden) # type: ignore[misc]
|
||||
for iden in device["identifiers"]
|
||||
},
|
||||
labels=set(device["labels"]),
|
||||
manufacturer=device["manufacturer"],
|
||||
model=device["model"],
|
||||
name_by_user=device["name_by_user"],
|
||||
@ -865,6 +873,7 @@ class DeviceRegistry:
|
||||
"hw_version": entry.hw_version,
|
||||
"id": entry.id,
|
||||
"identifiers": list(entry.identifiers),
|
||||
"labels": list(entry.labels),
|
||||
"manufacturer": entry.manufacturer,
|
||||
"model": entry.model,
|
||||
"name_by_user": entry.name_by_user,
|
||||
@ -937,6 +946,15 @@ class DeviceRegistry:
|
||||
if area_id == device.area_id:
|
||||
self.async_update_device(dev_id, area_id=None)
|
||||
|
||||
@callback
|
||||
def async_clear_label_id(self, label_id: str) -> None:
|
||||
"""Clear label from registry entries."""
|
||||
for device_id, entry in self.devices.items():
|
||||
if label_id in entry.labels:
|
||||
labels = entry.labels.copy()
|
||||
labels.remove(label_id)
|
||||
self.async_update_device(device_id, labels=labels)
|
||||
|
||||
|
||||
@callback
|
||||
def async_get(hass: HomeAssistant) -> DeviceRegistry:
|
||||
@ -957,6 +975,14 @@ def async_entries_for_area(registry: DeviceRegistry, area_id: str) -> list[Devic
|
||||
return [device for device in registry.devices.values() if device.area_id == area_id]
|
||||
|
||||
|
||||
@callback
|
||||
def async_entries_for_label(
|
||||
registry: DeviceRegistry, label_id: str
|
||||
) -> list[DeviceEntry]:
|
||||
"""Return entries that match a label."""
|
||||
return [device for device in registry.devices.values() if label_id in device.labels]
|
||||
|
||||
|
||||
@callback
|
||||
def async_entries_for_config_entry(
|
||||
registry: DeviceRegistry, config_entry_id: str
|
||||
@ -1051,7 +1077,26 @@ def async_cleanup(
|
||||
@callback
|
||||
def async_setup_cleanup(hass: HomeAssistant, dev_reg: DeviceRegistry) -> None:
|
||||
"""Clean up device registry when entities removed."""
|
||||
from . import entity_registry # pylint: disable=import-outside-toplevel
|
||||
# pylint: disable-next=import-outside-toplevel
|
||||
from . import entity_registry, label_registry as lr
|
||||
|
||||
@callback
|
||||
def _label_removed_from_registry_filter(
|
||||
event: lr.EventLabelRegistryUpdated,
|
||||
) -> bool:
|
||||
"""Filter all except for the remove action from label registry events."""
|
||||
return event.data["action"] == "remove"
|
||||
|
||||
@callback
|
||||
def _handle_label_registry_update(event: lr.EventLabelRegistryUpdated) -> None:
|
||||
"""Update devices that have a label that has been removed."""
|
||||
dev_reg.async_clear_label_id(event.data["label_id"])
|
||||
|
||||
hass.bus.async_listen(
|
||||
event_type=lr.EVENT_LABEL_REGISTRY_UPDATED,
|
||||
event_filter=_label_removed_from_registry_filter, # type: ignore[arg-type]
|
||||
listener=_handle_label_registry_update, # type: ignore[arg-type]
|
||||
)
|
||||
|
||||
async def cleanup() -> None:
|
||||
"""Cleanup."""
|
||||
|
@ -65,7 +65,7 @@ SAVE_DELAY = 10
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
STORAGE_VERSION_MAJOR = 1
|
||||
STORAGE_VERSION_MINOR = 12
|
||||
STORAGE_VERSION_MINOR = 13
|
||||
STORAGE_KEY = "core.entity_registry"
|
||||
|
||||
CLEANUP_INTERVAL = 3600 * 24
|
||||
@ -135,6 +135,7 @@ ReadOnlyEntityOptionsType = ReadOnlyDict[str, ReadOnlyDict[str, Any]]
|
||||
|
||||
DISPLAY_DICT_OPTIONAL = (
|
||||
("ai", "area_id"),
|
||||
("lb", "labels"),
|
||||
("di", "device_id"),
|
||||
("ic", "icon"),
|
||||
("tk", "translation_key"),
|
||||
@ -174,6 +175,7 @@ class RegistryEntry:
|
||||
converter=attr.converters.default_if_none(factory=uuid_util.random_uuid_hex), # type: ignore[misc]
|
||||
)
|
||||
has_entity_name: bool = attr.ib(default=False)
|
||||
labels: set[str] = attr.ib(factory=set)
|
||||
name: str | None = attr.ib(default=None)
|
||||
options: ReadOnlyEntityOptionsType = attr.ib(
|
||||
default=None, converter=_protect_entity_options
|
||||
@ -262,6 +264,7 @@ class RegistryEntry:
|
||||
"hidden_by": self.hidden_by,
|
||||
"icon": self.icon,
|
||||
"id": self.id,
|
||||
"labels": self.labels,
|
||||
"name": self.name,
|
||||
"options": self.options,
|
||||
"original_name": self.original_name,
|
||||
@ -348,7 +351,7 @@ class DeletedRegistryEntry:
|
||||
class EntityRegistryStore(storage.Store[dict[str, list[dict[str, Any]]]]):
|
||||
"""Store entity registry data."""
|
||||
|
||||
async def _async_migrate_func(
|
||||
async def _async_migrate_func( # noqa: C901
|
||||
self,
|
||||
old_major_version: int,
|
||||
old_minor_version: int,
|
||||
@ -429,6 +432,11 @@ class EntityRegistryStore(storage.Store[dict[str, list[dict[str, Any]]]]):
|
||||
for entity in data["entities"]:
|
||||
entity["previous_unique_id"] = None
|
||||
|
||||
if old_major_version == 1 and old_minor_version < 13:
|
||||
# Version 1.13 adds labels
|
||||
for entity in data["entities"]:
|
||||
entity["labels"] = []
|
||||
|
||||
if old_major_version > 1:
|
||||
raise NotImplementedError
|
||||
return data
|
||||
@ -878,6 +886,7 @@ class EntityRegistry:
|
||||
hidden_by: RegistryEntryHider | None | UndefinedType = UNDEFINED,
|
||||
icon: str | None | UndefinedType = UNDEFINED,
|
||||
has_entity_name: bool | UndefinedType = UNDEFINED,
|
||||
labels: set[str] | UndefinedType = UNDEFINED,
|
||||
name: str | None | UndefinedType = UNDEFINED,
|
||||
new_entity_id: str | UndefinedType = UNDEFINED,
|
||||
new_unique_id: str | UndefinedType = UNDEFINED,
|
||||
@ -928,6 +937,7 @@ class EntityRegistry:
|
||||
("hidden_by", hidden_by),
|
||||
("icon", icon),
|
||||
("has_entity_name", has_entity_name),
|
||||
("labels", labels),
|
||||
("name", name),
|
||||
("options", options),
|
||||
("original_device_class", original_device_class),
|
||||
@ -1005,6 +1015,7 @@ class EntityRegistry:
|
||||
hidden_by: RegistryEntryHider | None | UndefinedType = UNDEFINED,
|
||||
icon: str | None | UndefinedType = UNDEFINED,
|
||||
has_entity_name: bool | UndefinedType = UNDEFINED,
|
||||
labels: set[str] | UndefinedType = UNDEFINED,
|
||||
name: str | None | UndefinedType = UNDEFINED,
|
||||
new_entity_id: str | UndefinedType = UNDEFINED,
|
||||
new_unique_id: str | UndefinedType = UNDEFINED,
|
||||
@ -1029,6 +1040,7 @@ class EntityRegistry:
|
||||
hidden_by=hidden_by,
|
||||
icon=icon,
|
||||
has_entity_name=has_entity_name,
|
||||
labels=labels,
|
||||
name=name,
|
||||
new_entity_id=new_entity_id,
|
||||
new_unique_id=new_unique_id,
|
||||
@ -1126,6 +1138,7 @@ class EntityRegistry:
|
||||
icon=entity["icon"],
|
||||
id=entity["id"],
|
||||
has_entity_name=entity["has_entity_name"],
|
||||
labels=set(entity["labels"]),
|
||||
name=entity["name"],
|
||||
options=entity["options"],
|
||||
original_device_class=entity["original_device_class"],
|
||||
@ -1182,6 +1195,7 @@ class EntityRegistry:
|
||||
"icon": entry.icon,
|
||||
"id": entry.id,
|
||||
"has_entity_name": entry.has_entity_name,
|
||||
"labels": list(entry.labels),
|
||||
"name": entry.name,
|
||||
"options": entry.options,
|
||||
"original_device_class": entry.original_device_class,
|
||||
@ -1210,6 +1224,15 @@ class EntityRegistry:
|
||||
|
||||
return data
|
||||
|
||||
@callback
|
||||
def async_clear_label_id(self, label_id: str) -> None:
|
||||
"""Clear label from registry entries."""
|
||||
for entity_id, entry in self.entities.items():
|
||||
if label_id in entry.labels:
|
||||
labels = entry.labels.copy()
|
||||
labels.remove(label_id)
|
||||
self.async_update_entity(entity_id, labels=labels)
|
||||
|
||||
@callback
|
||||
def async_clear_config_entry(self, config_entry_id: str) -> None:
|
||||
"""Clear config entry from registry entries."""
|
||||
@ -1282,6 +1305,14 @@ def async_entries_for_area(
|
||||
return registry.entities.get_entries_for_area_id(area_id)
|
||||
|
||||
|
||||
@callback
|
||||
def async_entries_for_label(
|
||||
registry: EntityRegistry, label_id: str
|
||||
) -> list[RegistryEntry]:
|
||||
"""Return entries that match a label."""
|
||||
return [entry for entry in registry.entities.values() if label_id in entry.labels]
|
||||
|
||||
|
||||
@callback
|
||||
def async_entries_for_config_entry(
|
||||
registry: EntityRegistry, config_entry_id: str
|
||||
@ -1323,7 +1354,26 @@ def async_config_entry_disabled_by_changed(
|
||||
@callback
|
||||
def _async_setup_cleanup(hass: HomeAssistant, registry: EntityRegistry) -> None:
|
||||
"""Clean up device registry when entities removed."""
|
||||
from . import event # pylint: disable=import-outside-toplevel
|
||||
# pylint: disable-next=import-outside-toplevel
|
||||
from . import event, label_registry as lr
|
||||
|
||||
@callback
|
||||
def _label_removed_from_registry_filter(
|
||||
event: lr.EventLabelRegistryUpdated,
|
||||
) -> bool:
|
||||
"""Filter all except for the remove action from label registry events."""
|
||||
return event.data["action"] == "remove"
|
||||
|
||||
@callback
|
||||
def _handle_label_registry_update(event: lr.EventLabelRegistryUpdated) -> None:
|
||||
"""Update entity that have a label that has been removed."""
|
||||
registry.async_clear_label_id(event.data["label_id"])
|
||||
|
||||
hass.bus.async_listen(
|
||||
event_type=lr.EVENT_LABEL_REGISTRY_UPDATED,
|
||||
event_filter=_label_removed_from_registry_filter, # type: ignore[arg-type]
|
||||
listener=_handle_label_registry_update, # type: ignore[arg-type]
|
||||
)
|
||||
|
||||
@callback
|
||||
def cleanup(_: datetime) -> None:
|
||||
|
283
homeassistant/helpers/label_registry.py
Normal file
283
homeassistant/helpers/label_registry.py
Normal file
@ -0,0 +1,283 @@
|
||||
"""Provide a way to label and group anything."""
|
||||
from __future__ import annotations
|
||||
|
||||
from collections import UserDict
|
||||
from collections.abc import Iterable, ValuesView
|
||||
import dataclasses
|
||||
from dataclasses import dataclass
|
||||
from typing import Literal, TypedDict, cast
|
||||
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.util import slugify
|
||||
|
||||
from .typing import UNDEFINED, EventType, UndefinedType
|
||||
|
||||
DATA_REGISTRY = "label_registry"
|
||||
EVENT_LABEL_REGISTRY_UPDATED = "label_registry_updated"
|
||||
STORAGE_KEY = "core.label_registry"
|
||||
STORAGE_VERSION_MAJOR = 1
|
||||
SAVE_DELAY = 10
|
||||
|
||||
|
||||
class EventLabelRegistryUpdatedData(TypedDict):
|
||||
"""Event data for when the label registry is updated."""
|
||||
|
||||
action: Literal["create", "remove", "update"]
|
||||
label_id: str
|
||||
|
||||
|
||||
EventLabelRegistryUpdated = EventType[EventLabelRegistryUpdatedData]
|
||||
|
||||
|
||||
@dataclass(slots=True, frozen=True)
|
||||
class LabelEntry:
|
||||
"""Label Registry Entry."""
|
||||
|
||||
label_id: str
|
||||
name: str
|
||||
normalized_name: str
|
||||
description: str | None = None
|
||||
color: str | None = None
|
||||
icon: str | None = None
|
||||
|
||||
|
||||
class LabelRegistryItems(UserDict[str, LabelEntry]):
|
||||
"""Container for label registry items, maps label id -> entry.
|
||||
|
||||
Maintains an additional index:
|
||||
- normalized name -> entry
|
||||
"""
|
||||
|
||||
def __init__(self) -> None:
|
||||
"""Initialize the container."""
|
||||
super().__init__()
|
||||
self._normalized_names: dict[str, LabelEntry] = {}
|
||||
|
||||
def values(self) -> ValuesView[LabelEntry]:
|
||||
"""Return the underlying values to avoid __iter__ overhead."""
|
||||
return self.data.values()
|
||||
|
||||
def __setitem__(self, key: str, entry: LabelEntry) -> None:
|
||||
"""Add an item."""
|
||||
data = self.data
|
||||
normalized_name = _normalize_label_name(entry.name)
|
||||
|
||||
if key in data:
|
||||
old_entry = data[key]
|
||||
if (
|
||||
normalized_name != old_entry.normalized_name
|
||||
and normalized_name in self._normalized_names
|
||||
):
|
||||
raise ValueError(
|
||||
f"The name {entry.name} ({normalized_name}) is already in use"
|
||||
)
|
||||
del self._normalized_names[old_entry.normalized_name]
|
||||
data[key] = entry
|
||||
self._normalized_names[normalized_name] = entry
|
||||
|
||||
def __delitem__(self, key: str) -> None:
|
||||
"""Remove an item."""
|
||||
entry = self[key]
|
||||
normalized_name = _normalize_label_name(entry.name)
|
||||
del self._normalized_names[normalized_name]
|
||||
super().__delitem__(key)
|
||||
|
||||
def get_label_by_name(self, name: str) -> LabelEntry | None:
|
||||
"""Get label by name."""
|
||||
return self._normalized_names.get(_normalize_label_name(name))
|
||||
|
||||
|
||||
class LabelRegistry:
|
||||
"""Class to hold a registry of labels."""
|
||||
|
||||
labels: LabelRegistryItems
|
||||
_label_data: dict[str, LabelEntry]
|
||||
|
||||
def __init__(self, hass: HomeAssistant) -> None:
|
||||
"""Initialize the label registry."""
|
||||
self.hass = hass
|
||||
self._store = hass.helpers.storage.Store(
|
||||
STORAGE_VERSION_MAJOR,
|
||||
STORAGE_KEY,
|
||||
atomic_writes=True,
|
||||
)
|
||||
|
||||
@callback
|
||||
def async_get_label(self, label_id: str) -> LabelEntry | None:
|
||||
"""Get label by ID.
|
||||
|
||||
We retrieve the LabelEntry from the underlying dict to avoid
|
||||
the overhead of the UserDict __getitem__.
|
||||
"""
|
||||
return self._label_data.get(label_id)
|
||||
|
||||
@callback
|
||||
def async_get_label_by_name(self, name: str) -> LabelEntry | None:
|
||||
"""Get label by name."""
|
||||
return self.labels.get_label_by_name(name)
|
||||
|
||||
@callback
|
||||
def async_list_labels(self) -> Iterable[LabelEntry]:
|
||||
"""Get all labels."""
|
||||
return self.labels.values()
|
||||
|
||||
@callback
|
||||
def _generate_id(self, name: str) -> str:
|
||||
"""Initialize ID."""
|
||||
suggestion = suggestion_base = slugify(name)
|
||||
tries = 1
|
||||
while suggestion in self.labels:
|
||||
tries += 1
|
||||
suggestion = f"{suggestion_base}_{tries}"
|
||||
return suggestion
|
||||
|
||||
@callback
|
||||
def async_create(
|
||||
self,
|
||||
name: str,
|
||||
*,
|
||||
color: str | None = None,
|
||||
icon: str | None = None,
|
||||
description: str | None = None,
|
||||
) -> LabelEntry:
|
||||
"""Create a new label."""
|
||||
if label := self.async_get_label_by_name(name):
|
||||
raise ValueError(
|
||||
f"The name {name} ({label.normalized_name}) is already in use"
|
||||
)
|
||||
|
||||
normalized_name = _normalize_label_name(name)
|
||||
|
||||
label = LabelEntry(
|
||||
color=color,
|
||||
description=description,
|
||||
icon=icon,
|
||||
label_id=self._generate_id(name),
|
||||
name=name,
|
||||
normalized_name=normalized_name,
|
||||
)
|
||||
label_id = label.label_id
|
||||
self.labels[label_id] = label
|
||||
self.async_schedule_save()
|
||||
self.hass.bus.async_fire(
|
||||
EVENT_LABEL_REGISTRY_UPDATED,
|
||||
EventLabelRegistryUpdatedData(
|
||||
action="create",
|
||||
label_id=label_id,
|
||||
),
|
||||
)
|
||||
return label
|
||||
|
||||
@callback
|
||||
def async_delete(self, label_id: str) -> None:
|
||||
"""Delete label."""
|
||||
del self.labels[label_id]
|
||||
self.hass.bus.async_fire(
|
||||
EVENT_LABEL_REGISTRY_UPDATED,
|
||||
EventLabelRegistryUpdatedData(
|
||||
action="remove",
|
||||
label_id=label_id,
|
||||
),
|
||||
)
|
||||
self.async_schedule_save()
|
||||
|
||||
@callback
|
||||
def async_update(
|
||||
self,
|
||||
label_id: str,
|
||||
*,
|
||||
color: str | None | UndefinedType = UNDEFINED,
|
||||
description: str | None | UndefinedType = UNDEFINED,
|
||||
icon: str | None | UndefinedType = UNDEFINED,
|
||||
name: str | UndefinedType = UNDEFINED,
|
||||
) -> LabelEntry:
|
||||
"""Update name of label."""
|
||||
old = self.labels[label_id]
|
||||
changes = {
|
||||
attr_name: value
|
||||
for attr_name, value in (
|
||||
("color", color),
|
||||
("description", description),
|
||||
("icon", icon),
|
||||
)
|
||||
if value is not UNDEFINED and getattr(old, attr_name) != value
|
||||
}
|
||||
|
||||
if name is not UNDEFINED and name != old.name:
|
||||
changes["name"] = name
|
||||
changes["normalized_name"] = _normalize_label_name(name)
|
||||
|
||||
if not changes:
|
||||
return old
|
||||
|
||||
new = self.labels[label_id] = dataclasses.replace(old, **changes) # type: ignore[arg-type]
|
||||
|
||||
self.async_schedule_save()
|
||||
self.hass.bus.async_fire(
|
||||
EVENT_LABEL_REGISTRY_UPDATED,
|
||||
EventLabelRegistryUpdatedData(
|
||||
action="update",
|
||||
label_id=label_id,
|
||||
),
|
||||
)
|
||||
|
||||
return new
|
||||
|
||||
async def async_load(self) -> None:
|
||||
"""Load the label registry."""
|
||||
data = await self._store.async_load()
|
||||
labels = LabelRegistryItems()
|
||||
|
||||
if data is not None:
|
||||
for label in data["labels"]:
|
||||
normalized_name = _normalize_label_name(label["name"])
|
||||
labels[label["label_id"]] = LabelEntry(
|
||||
color=label["color"],
|
||||
description=label["description"],
|
||||
icon=label["icon"],
|
||||
label_id=label["label_id"],
|
||||
name=label["name"],
|
||||
normalized_name=normalized_name,
|
||||
)
|
||||
|
||||
self.labels = labels
|
||||
self._label_data = labels.data
|
||||
|
||||
@callback
|
||||
def async_schedule_save(self) -> None:
|
||||
"""Schedule saving the label registry."""
|
||||
self._store.async_delay_save(self._data_to_save, SAVE_DELAY)
|
||||
|
||||
@callback
|
||||
def _data_to_save(self) -> dict[str, list[dict[str, str | None]]]:
|
||||
"""Return data of label registry to store in a file."""
|
||||
return {
|
||||
"labels": [
|
||||
{
|
||||
"color": entry.color,
|
||||
"description": entry.description,
|
||||
"icon": entry.icon,
|
||||
"label_id": entry.label_id,
|
||||
"name": entry.name,
|
||||
}
|
||||
for entry in self.labels.values()
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
@callback
|
||||
def async_get(hass: HomeAssistant) -> LabelRegistry:
|
||||
"""Get label registry."""
|
||||
return cast(LabelRegistry, hass.data[DATA_REGISTRY])
|
||||
|
||||
|
||||
async def async_load(hass: HomeAssistant) -> None:
|
||||
"""Load label registry."""
|
||||
assert DATA_REGISTRY not in hass.data
|
||||
hass.data[DATA_REGISTRY] = LabelRegistry(hass)
|
||||
await hass.data[DATA_REGISTRY].async_load()
|
||||
|
||||
|
||||
def _normalize_label_name(label_name: str) -> str:
|
||||
"""Normalize a label name by removing whitespace and case folding."""
|
||||
return label_name.casefold().replace(" ", "")
|
@ -693,6 +693,7 @@ voluptuous = "vol"
|
||||
"homeassistant.helpers.entity_registry" = "er"
|
||||
"homeassistant.helpers.floor_registry" = "fr"
|
||||
"homeassistant.helpers.issue_registry" = "ir"
|
||||
"homeassistant.helpers.label_registry" = "lr"
|
||||
"homeassistant.util.dt" = "dt_util"
|
||||
|
||||
[tool.ruff.lint.flake8-pytest-style]
|
||||
|
@ -66,6 +66,7 @@ from homeassistant.helpers import (
|
||||
floor_registry as fr,
|
||||
intent,
|
||||
issue_registry as ir,
|
||||
label_registry as lr,
|
||||
recorder as recorder_helper,
|
||||
restore_state,
|
||||
restore_state as rs,
|
||||
@ -297,6 +298,7 @@ async def async_test_home_assistant(
|
||||
er.async_load(hass),
|
||||
fr.async_load(hass),
|
||||
ir.async_load(hass),
|
||||
lr.async_load(hass),
|
||||
rs.async_load(hass),
|
||||
)
|
||||
hass.data[bootstrap.DATA_REGISTRIES_LOADED] = None
|
||||
|
@ -18,6 +18,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -69,6 +71,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -122,6 +126,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -174,6 +180,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -228,6 +236,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -282,6 +292,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -334,6 +346,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -388,6 +402,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -442,6 +458,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -494,6 +512,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -548,6 +568,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
|
@ -18,6 +18,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -65,6 +67,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -112,6 +116,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -159,6 +165,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -17,6 +17,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'A. O. Smith',
|
||||
'model': 'HPTS-50 200 202172000',
|
||||
'name': 'My water heater',
|
||||
|
@ -37,6 +37,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -89,6 +91,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -217,6 +221,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -269,6 +275,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -67,6 +69,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -69,6 +69,7 @@ async def test_list_entities(
|
||||
"hidden_by": None,
|
||||
"icon": None,
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": "Hello World",
|
||||
"options": {},
|
||||
"original_name": None,
|
||||
@ -87,6 +88,7 @@ async def test_list_entities(
|
||||
"hidden_by": None,
|
||||
"icon": None,
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": None,
|
||||
"options": {},
|
||||
"original_name": None,
|
||||
@ -132,6 +134,7 @@ async def test_list_entities(
|
||||
"hidden_by": None,
|
||||
"icon": None,
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": "Hello World",
|
||||
"options": {},
|
||||
"original_name": None,
|
||||
@ -229,6 +232,7 @@ async def test_list_entities_for_display(
|
||||
"ei": "test_domain.test",
|
||||
"en": "Hello World",
|
||||
"ic": "mdi:icon",
|
||||
"lb": [],
|
||||
"pl": "test_platform",
|
||||
"tk": "translations_galore",
|
||||
},
|
||||
@ -237,31 +241,37 @@ async def test_list_entities_for_display(
|
||||
"di": "device123",
|
||||
"ei": "test_domain.nameless",
|
||||
"en": None,
|
||||
"lb": [],
|
||||
"pl": "test_platform",
|
||||
},
|
||||
{
|
||||
"ai": "area52",
|
||||
"di": "device123",
|
||||
"ei": "test_domain.renamed",
|
||||
"lb": [],
|
||||
"pl": "test_platform",
|
||||
},
|
||||
{
|
||||
"ei": "test_domain.boring",
|
||||
"lb": [],
|
||||
"pl": "test_platform",
|
||||
},
|
||||
{
|
||||
"ei": "test_domain.hidden",
|
||||
"lb": [],
|
||||
"hb": True,
|
||||
"pl": "test_platform",
|
||||
},
|
||||
{
|
||||
"dp": 0,
|
||||
"ei": "sensor.default_precision",
|
||||
"lb": [],
|
||||
"pl": "test_platform",
|
||||
},
|
||||
{
|
||||
"dp": 0,
|
||||
"ei": "sensor.user_precision",
|
||||
"lb": [],
|
||||
"pl": "test_platform",
|
||||
},
|
||||
],
|
||||
@ -302,6 +312,7 @@ async def test_list_entities_for_display(
|
||||
"ai": "area52",
|
||||
"di": "device123",
|
||||
"ei": "test_domain.test",
|
||||
"lb": [],
|
||||
"en": "Hello World",
|
||||
"pl": "test_platform",
|
||||
},
|
||||
@ -347,6 +358,7 @@ async def test_get_entity(hass: HomeAssistant, client: MockHAClientWebSocket) ->
|
||||
"hidden_by": None,
|
||||
"icon": None,
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": "Hello World",
|
||||
"options": {},
|
||||
"original_device_class": None,
|
||||
@ -379,6 +391,7 @@ async def test_get_entity(hass: HomeAssistant, client: MockHAClientWebSocket) ->
|
||||
"hidden_by": None,
|
||||
"icon": None,
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": None,
|
||||
"options": {},
|
||||
"original_device_class": None,
|
||||
@ -436,6 +449,7 @@ async def test_get_entities(hass: HomeAssistant, client: MockHAClientWebSocket)
|
||||
"hidden_by": None,
|
||||
"icon": None,
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": "Hello World",
|
||||
"options": {},
|
||||
"original_device_class": None,
|
||||
@ -459,6 +473,7 @@ async def test_get_entities(hass: HomeAssistant, client: MockHAClientWebSocket)
|
||||
"hidden_by": None,
|
||||
"icon": None,
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": None,
|
||||
"options": {},
|
||||
"original_device_class": None,
|
||||
@ -529,6 +544,7 @@ async def test_update_entity(
|
||||
"hidden_by": "user", # We exchange strings over the WS API, not enums
|
||||
"icon": "icon:after update",
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": "after update",
|
||||
"options": {},
|
||||
"original_device_class": None,
|
||||
@ -601,6 +617,7 @@ async def test_update_entity(
|
||||
"hidden_by": "user", # We exchange strings over the WS API, not enums
|
||||
"icon": "icon:after update",
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": "after update",
|
||||
"options": {},
|
||||
"original_device_class": None,
|
||||
@ -640,6 +657,7 @@ async def test_update_entity(
|
||||
"hidden_by": "user", # We exchange strings over the WS API, not enums
|
||||
"icon": "icon:after update",
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": "after update",
|
||||
"options": {"sensor": {"unit_of_measurement": "beard_second"}},
|
||||
"original_device_class": None,
|
||||
@ -693,6 +711,7 @@ async def test_update_entity_require_restart(
|
||||
"hidden_by": None,
|
||||
"icon": None,
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": None,
|
||||
"options": {},
|
||||
"original_device_class": None,
|
||||
@ -805,6 +824,7 @@ async def test_update_entity_no_changes(
|
||||
"hidden_by": None,
|
||||
"icon": None,
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": "name of entity",
|
||||
"options": {},
|
||||
"original_device_class": None,
|
||||
@ -893,6 +913,7 @@ async def test_update_entity_id(
|
||||
"hidden_by": None,
|
||||
"icon": None,
|
||||
"id": ANY,
|
||||
"labels": [],
|
||||
"name": None,
|
||||
"options": {},
|
||||
"original_device_class": None,
|
||||
|
235
tests/components/config/test_label_registry.py
Normal file
235
tests/components/config/test_label_registry.py
Normal file
@ -0,0 +1,235 @@
|
||||
"""Test label registry API."""
|
||||
import pytest
|
||||
|
||||
from homeassistant.components.config import label_registry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import label_registry as lr
|
||||
|
||||
from tests.typing import MockHAClientWebSocket, WebSocketGenerator
|
||||
|
||||
|
||||
@pytest.fixture(name="client")
|
||||
async def client_fixture(
|
||||
hass: HomeAssistant, hass_ws_client: WebSocketGenerator
|
||||
) -> MockHAClientWebSocket:
|
||||
"""Fixture that can interact with the config manager API."""
|
||||
label_registry.async_setup(hass)
|
||||
return await hass_ws_client(hass)
|
||||
|
||||
|
||||
async def test_list_labels(
|
||||
client: MockHAClientWebSocket,
|
||||
label_registry: lr.LabelRegistry,
|
||||
) -> None:
|
||||
"""Test list entries."""
|
||||
label_registry.async_create("mock 1")
|
||||
label_registry.async_create(
|
||||
name="mock 2",
|
||||
color="#00FF00",
|
||||
icon="mdi:two",
|
||||
description="This is the second label",
|
||||
)
|
||||
|
||||
assert len(label_registry.labels) == 2
|
||||
|
||||
await client.send_json_auto_id({"type": "config/label_registry/list"})
|
||||
|
||||
msg = await client.receive_json()
|
||||
|
||||
assert len(msg["result"]) == len(label_registry.labels)
|
||||
assert msg["result"][0] == {
|
||||
"color": None,
|
||||
"description": None,
|
||||
"icon": None,
|
||||
"label_id": "mock_1",
|
||||
"name": "mock 1",
|
||||
}
|
||||
assert msg["result"][1] == {
|
||||
"color": "#00FF00",
|
||||
"description": "This is the second label",
|
||||
"icon": "mdi:two",
|
||||
"label_id": "mock_2",
|
||||
"name": "mock 2",
|
||||
}
|
||||
|
||||
|
||||
async def test_create_label(
|
||||
client: MockHAClientWebSocket,
|
||||
label_registry: lr.LabelRegistry,
|
||||
) -> None:
|
||||
"""Test create entry."""
|
||||
await client.send_json_auto_id(
|
||||
{
|
||||
"name": "MOCK",
|
||||
"type": "config/label_registry/create",
|
||||
}
|
||||
)
|
||||
|
||||
msg = await client.receive_json()
|
||||
|
||||
assert len(label_registry.labels) == 1
|
||||
assert msg["result"] == {
|
||||
"color": None,
|
||||
"description": None,
|
||||
"icon": None,
|
||||
"label_id": "mock",
|
||||
"name": "MOCK",
|
||||
}
|
||||
|
||||
await client.send_json_auto_id(
|
||||
{
|
||||
"id": 2,
|
||||
"name": "MOCKERY",
|
||||
"type": "config/label_registry/create",
|
||||
"color": "#00FF00",
|
||||
"description": "This is the second label",
|
||||
"icon": "mdi:two",
|
||||
}
|
||||
)
|
||||
|
||||
msg = await client.receive_json()
|
||||
|
||||
assert len(label_registry.labels) == 2
|
||||
assert msg["result"] == {
|
||||
"color": "#00FF00",
|
||||
"description": "This is the second label",
|
||||
"icon": "mdi:two",
|
||||
"label_id": "mockery",
|
||||
"name": "MOCKERY",
|
||||
}
|
||||
|
||||
|
||||
async def test_create_label_with_name_already_in_use(
|
||||
client: MockHAClientWebSocket,
|
||||
label_registry: lr.LabelRegistry,
|
||||
) -> None:
|
||||
"""Test create entry that should fail."""
|
||||
label_registry.async_create("mock")
|
||||
assert len(label_registry.labels) == 1
|
||||
|
||||
await client.send_json_auto_id(
|
||||
{"name": "mock", "type": "config/label_registry/create"}
|
||||
)
|
||||
|
||||
msg = await client.receive_json()
|
||||
|
||||
assert not msg["success"]
|
||||
assert msg["error"]["code"] == "invalid_info"
|
||||
assert msg["error"]["message"] == "The name mock (mock) is already in use"
|
||||
assert len(label_registry.labels) == 1
|
||||
|
||||
|
||||
async def test_delete_label(
|
||||
client: MockHAClientWebSocket,
|
||||
label_registry: lr.LabelRegistry,
|
||||
) -> None:
|
||||
"""Test delete entry."""
|
||||
label = label_registry.async_create("mock")
|
||||
assert len(label_registry.labels) == 1
|
||||
|
||||
await client.send_json_auto_id(
|
||||
{"label_id": label.label_id, "type": "config/label_registry/delete"}
|
||||
)
|
||||
|
||||
msg = await client.receive_json()
|
||||
|
||||
assert msg["success"]
|
||||
assert not label_registry.labels
|
||||
|
||||
|
||||
async def test_delete_non_existing_label(
|
||||
client: MockHAClientWebSocket,
|
||||
label_registry: lr.LabelRegistry,
|
||||
) -> None:
|
||||
"""Test delete entry that should fail."""
|
||||
label_registry.async_create("mock")
|
||||
assert len(label_registry.labels) == 1
|
||||
|
||||
await client.send_json_auto_id(
|
||||
{"label_id": "omg_puppies", "type": "config/label_registry/delete"}
|
||||
)
|
||||
|
||||
msg = await client.receive_json()
|
||||
|
||||
assert not msg["success"]
|
||||
assert msg["error"]["code"] == "invalid_info"
|
||||
assert msg["error"]["message"] == "Label ID doesn't exist"
|
||||
assert len(label_registry.labels) == 1
|
||||
|
||||
|
||||
async def test_update_label(
|
||||
client: MockHAClientWebSocket,
|
||||
label_registry: lr.LabelRegistry,
|
||||
) -> None:
|
||||
"""Test update entry."""
|
||||
label = label_registry.async_create("mock")
|
||||
assert len(label_registry.labels) == 1
|
||||
|
||||
await client.send_json_auto_id(
|
||||
{
|
||||
"label_id": label.label_id,
|
||||
"name": "UPDATED",
|
||||
"icon": "mdi:test",
|
||||
"color": "#00FF00",
|
||||
"description": "This is a label description",
|
||||
"type": "config/label_registry/update",
|
||||
}
|
||||
)
|
||||
|
||||
msg = await client.receive_json()
|
||||
|
||||
assert len(label_registry.labels) == 1
|
||||
assert msg["result"] == {
|
||||
"color": "#00FF00",
|
||||
"description": "This is a label description",
|
||||
"icon": "mdi:test",
|
||||
"label_id": "mock",
|
||||
"name": "UPDATED",
|
||||
}
|
||||
|
||||
await client.send_json_auto_id(
|
||||
{
|
||||
"label_id": label.label_id,
|
||||
"name": "UPDATED AGAIN",
|
||||
"icon": None,
|
||||
"color": None,
|
||||
"description": None,
|
||||
"type": "config/label_registry/update",
|
||||
}
|
||||
)
|
||||
|
||||
msg = await client.receive_json()
|
||||
|
||||
assert len(label_registry.labels) == 1
|
||||
assert msg["result"] == {
|
||||
"color": None,
|
||||
"description": None,
|
||||
"icon": None,
|
||||
"label_id": "mock",
|
||||
"name": "UPDATED AGAIN",
|
||||
}
|
||||
|
||||
|
||||
async def test_update_with_name_already_in_use(
|
||||
client: MockHAClientWebSocket,
|
||||
label_registry: lr.LabelRegistry,
|
||||
) -> None:
|
||||
"""Test update entry."""
|
||||
label = label_registry.async_create("mock 1")
|
||||
label_registry.async_create("mock 2")
|
||||
assert len(label_registry.labels) == 2
|
||||
|
||||
await client.send_json_auto_id(
|
||||
{
|
||||
"label_id": label.label_id,
|
||||
"name": "mock 2",
|
||||
"type": "config/label_registry/update",
|
||||
}
|
||||
)
|
||||
|
||||
msg = await client.receive_json()
|
||||
|
||||
assert not msg["success"]
|
||||
assert msg["error"]["code"] == "invalid_info"
|
||||
assert msg["error"]["message"] == "The name mock 2 (mock2) is already in use"
|
||||
assert len(label_registry.labels) == 2
|
@ -29,6 +29,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -73,6 +75,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -116,6 +120,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -44,6 +44,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -31,6 +31,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -38,6 +38,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -91,6 +93,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -33,6 +33,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -81,6 +83,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -129,6 +133,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -177,6 +183,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -36,6 +36,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -87,6 +89,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -138,6 +142,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -28,6 +28,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -30,6 +30,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -72,6 +72,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -159,6 +161,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -246,6 +250,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -333,6 +339,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -21,6 +21,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'devolo',
|
||||
'model': 'dLAN pro 1200+ WiFi ac',
|
||||
'name': 'Mock Title',
|
||||
|
@ -29,6 +29,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -76,6 +78,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -120,6 +124,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -165,6 +171,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -213,6 +221,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
|
@ -115,6 +115,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -159,6 +161,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -39,6 +39,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -52,6 +54,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -103,6 +107,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -152,6 +158,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -188,6 +196,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -61,6 +63,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -105,6 +109,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -150,6 +156,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -195,6 +203,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -240,6 +250,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -284,6 +296,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -329,6 +343,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -47,6 +49,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -59,6 +61,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -102,6 +106,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -145,6 +151,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -17,6 +17,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Ecovacs',
|
||||
'model': 'DEEBOT OZMO 950 Series',
|
||||
'name': 'Ozmo 950',
|
||||
|
@ -21,6 +21,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -23,6 +23,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -60,6 +62,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -105,6 +109,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor.private': dict({
|
||||
@ -153,6 +159,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -197,6 +205,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -241,6 +251,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -284,6 +296,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -328,6 +342,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -374,6 +390,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -421,6 +439,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor.private': dict({
|
||||
@ -472,6 +492,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -516,6 +538,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -559,6 +583,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -59,6 +61,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -102,6 +106,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -29,6 +29,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -65,6 +67,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light Mini',
|
||||
'name': 'Frenck',
|
||||
@ -105,6 +109,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -141,6 +147,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light Mini',
|
||||
'name': 'Frenck',
|
||||
|
@ -61,6 +61,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -97,6 +99,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light',
|
||||
'name': 'Frenck',
|
||||
@ -171,6 +175,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -207,6 +213,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light',
|
||||
'name': 'Frenck',
|
||||
@ -281,6 +289,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -317,6 +327,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light',
|
||||
'name': 'Frenck',
|
||||
|
@ -33,6 +33,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -72,6 +74,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light Mini',
|
||||
'name': 'Frenck',
|
||||
@ -116,6 +120,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -158,6 +164,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light Mini',
|
||||
'name': 'Frenck',
|
||||
@ -202,6 +210,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -244,6 +254,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light Mini',
|
||||
'name': 'Frenck',
|
||||
@ -288,6 +300,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -327,6 +341,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light Mini',
|
||||
'name': 'Frenck',
|
||||
@ -371,6 +387,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -413,6 +431,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light Mini',
|
||||
'name': 'Frenck',
|
||||
|
@ -29,6 +29,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -65,6 +67,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light Mini',
|
||||
'name': 'Frenck',
|
||||
@ -105,6 +109,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -141,6 +147,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Elgato',
|
||||
'model': 'Elgato Key Light Mini',
|
||||
'name': 'Frenck',
|
||||
|
@ -487,6 +487,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -512,6 +514,8 @@
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'name': 'Energy market price',
|
||||
@ -556,6 +560,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -581,6 +587,8 @@
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'name': 'Energy market price',
|
||||
@ -622,6 +630,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -647,6 +657,8 @@
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'name': 'Energy market price',
|
||||
@ -689,6 +701,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -714,6 +728,8 @@
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'name': 'Energy market price',
|
||||
@ -755,6 +771,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -780,6 +798,8 @@
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'name': 'Energy market price',
|
||||
@ -824,6 +844,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -849,6 +871,8 @@
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'EnergyZero',
|
||||
'model': None,
|
||||
'name': 'Gas market price',
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -57,6 +57,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -21,6 +21,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -75,6 +77,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -129,6 +133,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -183,6 +189,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -237,6 +245,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -291,6 +301,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -345,6 +357,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -399,6 +413,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -453,6 +469,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -507,6 +525,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -539,3 +559,563 @@
|
||||
'state': '60',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': None,
|
||||
'entity_id': 'number.device_name_power_factor',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.POWER_FACTOR: 'power_factor'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Power factor',
|
||||
'platform': 'flexit_bacnet',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'away_extract_fan_setpoint',
|
||||
'unique_id': '0000-0001-away_extract_fan_setpoint',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'power_factor',
|
||||
'friendly_name': 'Device Name Power factor',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.device_name_power_factor',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '30',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_10-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': None,
|
||||
'entity_id': 'number.device_name_power_factor_10',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.POWER_FACTOR: 'power_factor'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Power factor',
|
||||
'platform': 'flexit_bacnet',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'home_supply_fan_setpoint',
|
||||
'unique_id': '0000-0001-home_supply_fan_setpoint',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_10-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'power_factor',
|
||||
'friendly_name': 'Device Name Power factor',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.device_name_power_factor_10',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '60',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_2-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': None,
|
||||
'entity_id': 'number.device_name_power_factor_2',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.POWER_FACTOR: 'power_factor'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Power factor',
|
||||
'platform': 'flexit_bacnet',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'away_supply_fan_setpoint',
|
||||
'unique_id': '0000-0001-away_supply_fan_setpoint',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_2-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'power_factor',
|
||||
'friendly_name': 'Device Name Power factor',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.device_name_power_factor_2',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '40',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_3-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': None,
|
||||
'entity_id': 'number.device_name_power_factor_3',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.POWER_FACTOR: 'power_factor'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Power factor',
|
||||
'platform': 'flexit_bacnet',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'cooker_hood_extract_fan_setpoint',
|
||||
'unique_id': '0000-0001-cooker_hood_extract_fan_setpoint',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_3-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'power_factor',
|
||||
'friendly_name': 'Device Name Power factor',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.device_name_power_factor_3',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '90',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_4-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': None,
|
||||
'entity_id': 'number.device_name_power_factor_4',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.POWER_FACTOR: 'power_factor'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Power factor',
|
||||
'platform': 'flexit_bacnet',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'cooker_hood_supply_fan_setpoint',
|
||||
'unique_id': '0000-0001-cooker_hood_supply_fan_setpoint',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_4-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'power_factor',
|
||||
'friendly_name': 'Device Name Power factor',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.device_name_power_factor_4',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '100',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_5-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': None,
|
||||
'entity_id': 'number.device_name_power_factor_5',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.POWER_FACTOR: 'power_factor'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Power factor',
|
||||
'platform': 'flexit_bacnet',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'fireplace_extract_fan_setpoint',
|
||||
'unique_id': '0000-0001-fireplace_extract_fan_setpoint',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_5-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'power_factor',
|
||||
'friendly_name': 'Device Name Power factor',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.device_name_power_factor_5',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '10',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_6-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': None,
|
||||
'entity_id': 'number.device_name_power_factor_6',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.POWER_FACTOR: 'power_factor'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Power factor',
|
||||
'platform': 'flexit_bacnet',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'fireplace_supply_fan_setpoint',
|
||||
'unique_id': '0000-0001-fireplace_supply_fan_setpoint',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_6-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'power_factor',
|
||||
'friendly_name': 'Device Name Power factor',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.device_name_power_factor_6',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '20',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_7-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': None,
|
||||
'entity_id': 'number.device_name_power_factor_7',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.POWER_FACTOR: 'power_factor'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Power factor',
|
||||
'platform': 'flexit_bacnet',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'high_extract_fan_setpoint',
|
||||
'unique_id': '0000-0001-high_extract_fan_setpoint',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_7-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'power_factor',
|
||||
'friendly_name': 'Device Name Power factor',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.device_name_power_factor_7',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '70',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_8-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': None,
|
||||
'entity_id': 'number.device_name_power_factor_8',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.POWER_FACTOR: 'power_factor'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Power factor',
|
||||
'platform': 'flexit_bacnet',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'high_supply_fan_setpoint',
|
||||
'unique_id': '0000-0001-high_supply_fan_setpoint',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_8-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'power_factor',
|
||||
'friendly_name': 'Device Name Power factor',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.device_name_power_factor_8',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '80',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_9-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': None,
|
||||
'entity_id': 'number.device_name_power_factor_9',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.POWER_FACTOR: 'power_factor'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Power factor',
|
||||
'platform': 'flexit_bacnet',
|
||||
'previous_unique_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'home_extract_fan_setpoint',
|
||||
'unique_id': '0000-0001-home_extract_fan_setpoint',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_numbers[number.device_name_power_factor_9-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'power_factor',
|
||||
'friendly_name': 'Device Name Power factor',
|
||||
'max': 100,
|
||||
'min': 0,
|
||||
'mode': <NumberMode.SLIDER: 'slider'>,
|
||||
'step': 1,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.device_name_power_factor_9',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '50',
|
||||
})
|
||||
# ---
|
||||
|
@ -18,6 +18,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -66,6 +68,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -116,6 +120,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -163,6 +169,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -208,6 +216,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -253,6 +263,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -300,6 +312,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -351,6 +365,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -398,6 +414,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -443,6 +461,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -490,6 +510,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -539,6 +561,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -586,6 +610,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -633,6 +659,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -678,6 +706,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -17,6 +17,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': None,
|
||||
'model': 'Mock Model',
|
||||
'name': 'Mock Title',
|
||||
|
@ -18,6 +18,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -65,6 +67,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -113,6 +117,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -162,6 +168,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -210,6 +218,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -259,6 +269,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -307,6 +319,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -354,6 +368,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -401,6 +417,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -448,6 +466,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -495,6 +515,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -544,6 +566,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -592,6 +616,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -641,6 +667,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -690,6 +718,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -738,6 +768,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -786,6 +818,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -835,6 +869,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -883,6 +919,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -102,6 +102,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -78,6 +78,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -107,6 +109,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -136,6 +140,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -165,6 +171,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -194,6 +202,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -29,6 +29,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -65,6 +67,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'HomeWizard',
|
||||
'model': 'HWE-P1',
|
||||
'name': 'Device',
|
||||
|
@ -38,6 +38,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -74,6 +76,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'HomeWizard',
|
||||
'model': 'HWE-SKT',
|
||||
'name': 'Device',
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -28,6 +28,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -64,6 +66,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'HomeWizard',
|
||||
'model': 'HWE-KWH1',
|
||||
'name': 'Device',
|
||||
@ -103,6 +107,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -139,6 +145,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'HomeWizard',
|
||||
'model': 'HWE-KWH3',
|
||||
'name': 'Device',
|
||||
@ -179,6 +187,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -215,6 +225,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'HomeWizard',
|
||||
'model': 'HWE-SKT',
|
||||
'name': 'Device',
|
||||
@ -254,6 +266,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -290,6 +304,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'HomeWizard',
|
||||
'model': 'HWE-SKT',
|
||||
'name': 'Device',
|
||||
@ -329,6 +345,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -365,6 +383,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'HomeWizard',
|
||||
'model': 'HWE-SKT',
|
||||
'name': 'Device',
|
||||
@ -404,6 +424,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -440,6 +462,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'HomeWizard',
|
||||
'model': 'SDM230-wifi',
|
||||
'name': 'Device',
|
||||
@ -479,6 +503,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -515,6 +541,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'HomeWizard',
|
||||
'model': 'SDM630-wifi',
|
||||
'name': 'Device',
|
||||
|
@ -28,6 +28,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -60,6 +62,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': None,
|
||||
'model': None,
|
||||
'name': 'Outlet 1',
|
||||
@ -88,6 +92,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': None,
|
||||
'model': None,
|
||||
'name': '2CH Power strip',
|
||||
@ -127,6 +133,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -159,6 +167,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': None,
|
||||
'model': None,
|
||||
'name': 'Outlet 2',
|
||||
@ -187,6 +197,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': None,
|
||||
'model': None,
|
||||
'name': '2CH Power strip',
|
||||
|
@ -29,6 +29,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -73,6 +75,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -28,6 +28,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -39,6 +39,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -93,6 +95,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -147,6 +151,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -201,6 +207,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -255,6 +263,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -593,6 +603,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -647,6 +659,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -701,6 +715,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -755,6 +771,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -809,6 +827,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -863,6 +883,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -39,6 +39,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -93,6 +95,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -147,6 +151,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -201,6 +207,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -69,6 +71,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -120,6 +124,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -168,6 +174,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -215,6 +223,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -17,6 +17,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'La Marzocco',
|
||||
'model': 'GS3 AV',
|
||||
'name': 'GS01234',
|
||||
@ -56,6 +58,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -99,6 +103,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -142,6 +148,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -39,6 +39,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -93,6 +95,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -74,6 +76,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -132,6 +136,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -30,6 +30,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -102,6 +104,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -180,6 +184,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -257,6 +263,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -336,6 +344,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -63,6 +65,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -21,6 +21,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -17,6 +17,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Bubbendorf',
|
||||
'model': 'Roller Shutter',
|
||||
'name': 'Entrance Blinds',
|
||||
@ -45,6 +47,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Bubbendorf',
|
||||
'model': 'Orientable Shutter',
|
||||
'name': 'Bubendorff blind',
|
||||
@ -73,6 +77,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': '2 wire light switch/dimmer',
|
||||
'name': 'Unknown 00:11:22:33:00:11:45:fe',
|
||||
@ -101,6 +107,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Smarther',
|
||||
'model': 'Smarther with Netatmo',
|
||||
'name': '',
|
||||
@ -129,6 +137,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Energy Meter',
|
||||
'name': '',
|
||||
@ -157,6 +167,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Light switch/dimmer with neutral',
|
||||
'name': 'Bathroom light',
|
||||
@ -185,6 +197,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Ecometer',
|
||||
'name': '',
|
||||
@ -213,6 +227,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Ecometer',
|
||||
'name': '',
|
||||
@ -241,6 +257,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Ecometer',
|
||||
'name': '',
|
||||
@ -269,6 +287,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Ecometer',
|
||||
'name': '',
|
||||
@ -297,6 +317,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Ecometer',
|
||||
'name': '',
|
||||
@ -325,6 +347,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Ecometer',
|
||||
'name': '',
|
||||
@ -353,6 +377,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Ecometer',
|
||||
'name': '',
|
||||
@ -381,6 +407,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Ecometer',
|
||||
'name': '',
|
||||
@ -409,6 +437,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Ecometer',
|
||||
'name': '',
|
||||
@ -437,6 +467,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Connected Ecometer',
|
||||
'name': '',
|
||||
@ -465,6 +497,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Indoor Camera',
|
||||
'name': 'Hall',
|
||||
@ -493,6 +527,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Anemometer',
|
||||
'name': 'Villa Garden',
|
||||
@ -521,6 +557,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Outdoor Camera',
|
||||
'name': 'Front',
|
||||
@ -549,6 +587,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Video Doorbell',
|
||||
'name': 'Netatmo-Doorbell',
|
||||
@ -577,6 +617,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Indoor Air Quality Monitor',
|
||||
'name': 'Kitchen',
|
||||
@ -605,6 +647,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Indoor Air Quality Monitor',
|
||||
'name': 'Livingroom',
|
||||
@ -633,6 +677,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Indoor Air Quality Monitor',
|
||||
'name': 'Baby Bedroom',
|
||||
@ -661,6 +707,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Indoor Air Quality Monitor',
|
||||
'name': 'Bedroom',
|
||||
@ -689,6 +737,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Indoor Air Quality Monitor',
|
||||
'name': 'Parents Bedroom',
|
||||
@ -717,6 +767,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Legrand',
|
||||
'model': 'Plug',
|
||||
'name': '',
|
||||
@ -745,6 +797,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Outdoor Module',
|
||||
'name': 'Villa Outdoor',
|
||||
@ -773,6 +827,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Indoor Module',
|
||||
'name': 'Villa Bedroom',
|
||||
@ -801,6 +857,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Indoor Module',
|
||||
'name': 'Villa Bathroom',
|
||||
@ -829,6 +887,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Home Weather station',
|
||||
'name': 'Villa',
|
||||
@ -857,6 +917,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Rain Gauge',
|
||||
'name': 'Villa Rain',
|
||||
@ -885,6 +947,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'OpenTherm Modulating Thermostat',
|
||||
'name': '',
|
||||
@ -913,6 +977,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Thermostat',
|
||||
'name': '',
|
||||
@ -941,6 +1007,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Valve',
|
||||
'name': '',
|
||||
@ -969,6 +1037,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Valve',
|
||||
'name': '',
|
||||
@ -997,6 +1067,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Public Weather station',
|
||||
'name': 'Home avg',
|
||||
@ -1025,6 +1097,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Public Weather station',
|
||||
'name': 'Home max',
|
||||
@ -1053,6 +1127,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netatmo',
|
||||
'model': 'Smart Thermostat',
|
||||
'name': 'MYHOME',
|
||||
|
@ -20,6 +20,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -73,6 +75,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -125,6 +129,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -21,6 +21,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -17,6 +17,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Netgear',
|
||||
'model': 'LM1200',
|
||||
'name': 'Netgear LM1200',
|
||||
|
@ -30,6 +30,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2405',
|
||||
'name': '05.111111111111',
|
||||
@ -68,6 +70,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18S20',
|
||||
'name': '10.111111111111',
|
||||
@ -106,6 +110,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2406',
|
||||
'name': '12.111111111111',
|
||||
@ -135,6 +141,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -164,6 +172,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -226,6 +236,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2423',
|
||||
'name': '1D.111111111111',
|
||||
@ -264,6 +276,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2409',
|
||||
'name': '1F.111111111111',
|
||||
@ -290,6 +304,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2423',
|
||||
'name': '1D.111111111111',
|
||||
@ -328,6 +344,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS1822',
|
||||
'name': '22.111111111111',
|
||||
@ -366,6 +384,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2438',
|
||||
'name': '26.111111111111',
|
||||
@ -404,6 +424,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18B20',
|
||||
'name': '28.111111111111',
|
||||
@ -442,6 +464,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18B20',
|
||||
'name': '28.222222222222',
|
||||
@ -480,6 +504,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18B20',
|
||||
'name': '28.222222222223',
|
||||
@ -518,6 +544,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2408',
|
||||
'name': '29.111111111111',
|
||||
@ -547,6 +575,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -576,6 +606,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -605,6 +637,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -634,6 +668,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -663,6 +699,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -692,6 +730,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -721,6 +761,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -750,6 +792,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -884,6 +928,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2760',
|
||||
'name': '30.111111111111',
|
||||
@ -922,6 +968,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2413',
|
||||
'name': '3A.111111111111',
|
||||
@ -951,6 +999,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -980,6 +1030,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1042,6 +1094,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS1825',
|
||||
'name': '3B.111111111111',
|
||||
@ -1080,6 +1134,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS28EA00',
|
||||
'name': '42.111111111111',
|
||||
@ -1118,6 +1174,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Embedded Data Systems',
|
||||
'model': 'EDS0068',
|
||||
'name': '7E.111111111111',
|
||||
@ -1156,6 +1214,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Embedded Data Systems',
|
||||
'model': 'EDS0066',
|
||||
'name': '7E.222222222222',
|
||||
@ -1194,6 +1254,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Hobby Boards',
|
||||
'model': 'HobbyBoards_EF',
|
||||
'name': 'EF.111111111111',
|
||||
@ -1232,6 +1294,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Hobby Boards',
|
||||
'model': 'HB_MOISTURE_METER',
|
||||
'name': 'EF.111111111112',
|
||||
@ -1270,6 +1334,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Hobby Boards',
|
||||
'model': 'HB_HUB',
|
||||
'name': 'EF.111111111113',
|
||||
@ -1299,6 +1365,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1328,6 +1396,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1357,6 +1427,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1386,6 +1458,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -30,6 +30,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2405',
|
||||
'name': '05.111111111111',
|
||||
@ -68,6 +70,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18S20',
|
||||
'name': '10.111111111111',
|
||||
@ -99,6 +103,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -152,6 +158,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2406',
|
||||
'name': '12.111111111111',
|
||||
@ -183,6 +191,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -214,6 +224,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -282,6 +294,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2423',
|
||||
'name': '1D.111111111111',
|
||||
@ -313,6 +327,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -344,6 +360,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -410,6 +428,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2409',
|
||||
'name': '1F.111111111111',
|
||||
@ -436,6 +456,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2423',
|
||||
'name': '1D.111111111111',
|
||||
@ -467,6 +489,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -498,6 +522,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -564,6 +590,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS1822',
|
||||
'name': '22.111111111111',
|
||||
@ -595,6 +623,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -648,6 +678,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2438',
|
||||
'name': '26.111111111111',
|
||||
@ -679,6 +711,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -710,6 +744,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -741,6 +777,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -772,6 +810,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -803,6 +843,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -834,6 +876,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -865,6 +909,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -896,6 +942,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -927,6 +975,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -958,6 +1008,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -989,6 +1041,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1192,6 +1246,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18B20',
|
||||
'name': '28.111111111111',
|
||||
@ -1223,6 +1279,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1276,6 +1334,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18B20',
|
||||
'name': '28.222222222222',
|
||||
@ -1307,6 +1367,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1360,6 +1422,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18B20',
|
||||
'name': '28.222222222223',
|
||||
@ -1391,6 +1455,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1444,6 +1510,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2408',
|
||||
'name': '29.111111111111',
|
||||
@ -1482,6 +1550,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2760',
|
||||
'name': '30.111111111111',
|
||||
@ -1513,6 +1583,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1544,6 +1616,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1575,6 +1649,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1606,6 +1682,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1704,6 +1782,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2413',
|
||||
'name': '3A.111111111111',
|
||||
@ -1742,6 +1822,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS1825',
|
||||
'name': '3B.111111111111',
|
||||
@ -1773,6 +1855,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1826,6 +1910,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS28EA00',
|
||||
'name': '42.111111111111',
|
||||
@ -1857,6 +1943,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1910,6 +1998,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Embedded Data Systems',
|
||||
'model': 'EDS0068',
|
||||
'name': '7E.111111111111',
|
||||
@ -1941,6 +2031,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1972,6 +2064,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2003,6 +2097,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2034,6 +2130,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2132,6 +2230,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Embedded Data Systems',
|
||||
'model': 'EDS0066',
|
||||
'name': '7E.222222222222',
|
||||
@ -2163,6 +2263,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2194,6 +2296,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2262,6 +2366,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Hobby Boards',
|
||||
'model': 'HobbyBoards_EF',
|
||||
'name': 'EF.111111111111',
|
||||
@ -2293,6 +2399,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2324,6 +2432,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2355,6 +2465,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2438,6 +2550,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Hobby Boards',
|
||||
'model': 'HB_MOISTURE_METER',
|
||||
'name': 'EF.111111111112',
|
||||
@ -2469,6 +2583,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2500,6 +2616,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2531,6 +2649,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2562,6 +2682,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2660,6 +2782,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Hobby Boards',
|
||||
'model': 'HB_HUB',
|
||||
'name': 'EF.111111111113',
|
||||
|
@ -30,6 +30,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2405',
|
||||
'name': '05.111111111111',
|
||||
@ -59,6 +61,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -109,6 +113,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18S20',
|
||||
'name': '10.111111111111',
|
||||
@ -147,6 +153,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2406',
|
||||
'name': '12.111111111111',
|
||||
@ -176,6 +184,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -205,6 +215,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -234,6 +246,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -263,6 +277,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -349,6 +365,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2423',
|
||||
'name': '1D.111111111111',
|
||||
@ -387,6 +405,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2409',
|
||||
'name': '1F.111111111111',
|
||||
@ -413,6 +433,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2423',
|
||||
'name': '1D.111111111111',
|
||||
@ -451,6 +473,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS1822',
|
||||
'name': '22.111111111111',
|
||||
@ -489,6 +513,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2438',
|
||||
'name': '26.111111111111',
|
||||
@ -518,6 +544,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -568,6 +596,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18B20',
|
||||
'name': '28.111111111111',
|
||||
@ -606,6 +636,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18B20',
|
||||
'name': '28.222222222222',
|
||||
@ -644,6 +676,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS18B20',
|
||||
'name': '28.222222222223',
|
||||
@ -682,6 +716,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2408',
|
||||
'name': '29.111111111111',
|
||||
@ -711,6 +747,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -740,6 +778,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -769,6 +809,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -798,6 +840,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -827,6 +871,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -856,6 +902,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -885,6 +933,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -914,6 +964,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -943,6 +995,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -972,6 +1026,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1001,6 +1057,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1030,6 +1088,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1059,6 +1119,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1088,6 +1150,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1117,6 +1181,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1146,6 +1212,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1376,6 +1444,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2760',
|
||||
'name': '30.111111111111',
|
||||
@ -1414,6 +1484,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS2413',
|
||||
'name': '3A.111111111111',
|
||||
@ -1443,6 +1515,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1472,6 +1546,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1534,6 +1610,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS1825',
|
||||
'name': '3B.111111111111',
|
||||
@ -1572,6 +1650,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Maxim Integrated',
|
||||
'model': 'DS28EA00',
|
||||
'name': '42.111111111111',
|
||||
@ -1610,6 +1690,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Embedded Data Systems',
|
||||
'model': 'EDS0068',
|
||||
'name': '7E.111111111111',
|
||||
@ -1648,6 +1730,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Embedded Data Systems',
|
||||
'model': 'EDS0066',
|
||||
'name': '7E.222222222222',
|
||||
@ -1686,6 +1770,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Hobby Boards',
|
||||
'model': 'HobbyBoards_EF',
|
||||
'name': 'EF.111111111111',
|
||||
@ -1724,6 +1810,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Hobby Boards',
|
||||
'model': 'HB_MOISTURE_METER',
|
||||
'name': 'EF.111111111112',
|
||||
@ -1753,6 +1841,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1782,6 +1872,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1811,6 +1903,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1840,6 +1934,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1869,6 +1965,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1898,6 +1996,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1927,6 +2027,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1956,6 +2058,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2090,6 +2194,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Hobby Boards',
|
||||
'model': 'HB_HUB',
|
||||
'name': 'EF.111111111113',
|
||||
@ -2119,6 +2225,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2148,6 +2256,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2177,6 +2287,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2206,6 +2318,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -76,6 +76,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -47,6 +49,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -76,6 +80,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -105,6 +111,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -134,6 +142,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -163,6 +173,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -192,6 +204,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -296,6 +310,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -325,6 +341,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -354,6 +372,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -383,6 +403,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -412,6 +434,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -441,6 +465,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -470,6 +496,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -499,6 +527,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -528,6 +558,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -654,6 +686,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -683,6 +717,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -712,6 +748,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -741,6 +779,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -812,6 +852,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -841,6 +883,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -870,6 +914,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -899,6 +945,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -928,6 +976,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -957,6 +1007,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -986,6 +1038,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1015,6 +1069,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1044,6 +1100,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1073,6 +1131,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1210,6 +1270,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -1239,6 +1301,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1268,6 +1332,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1297,6 +1363,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1326,6 +1394,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1355,6 +1425,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1384,6 +1456,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1488,6 +1562,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -1517,6 +1593,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1546,6 +1624,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1575,6 +1655,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1604,6 +1686,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1633,6 +1717,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1662,6 +1748,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1691,6 +1779,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1720,6 +1810,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1846,6 +1938,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -1875,6 +1969,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1904,6 +2000,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1933,6 +2031,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2004,6 +2104,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -2033,6 +2135,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2062,6 +2166,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2091,6 +2197,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2120,6 +2228,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2149,6 +2259,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2178,6 +2290,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2207,6 +2321,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2236,6 +2352,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2265,6 +2383,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -47,6 +49,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -96,6 +100,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -125,6 +131,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -154,6 +162,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -183,6 +193,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -254,6 +266,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -283,6 +297,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -312,6 +328,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -341,6 +359,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -412,6 +432,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -441,6 +463,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -470,6 +494,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -499,6 +525,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -570,6 +598,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -599,6 +629,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -648,6 +680,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -677,6 +711,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -706,6 +742,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -735,6 +773,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -806,6 +846,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -835,6 +877,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -864,6 +908,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -893,6 +939,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -964,6 +1012,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -993,6 +1043,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1022,6 +1074,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1051,6 +1105,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -47,6 +49,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -97,6 +101,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -126,6 +132,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -176,6 +184,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -214,6 +224,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -243,6 +255,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -293,6 +307,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -322,6 +338,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -375,6 +393,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -404,6 +424,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -457,6 +479,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -495,6 +519,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -524,6 +550,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -56,6 +58,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -91,6 +95,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -145,6 +151,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -180,6 +188,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -234,6 +244,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -269,6 +281,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -323,6 +337,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -361,6 +377,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -396,6 +414,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -450,6 +470,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -485,6 +507,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -539,6 +563,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -574,6 +600,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -49,6 +51,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -80,6 +84,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -111,6 +117,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -140,6 +148,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -169,6 +179,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -198,6 +210,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -309,6 +323,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -340,6 +356,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -380,6 +398,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -411,6 +431,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -442,6 +464,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -478,6 +502,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -509,6 +535,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -540,6 +568,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -571,6 +601,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -600,6 +632,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -631,6 +665,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -662,6 +698,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -693,6 +731,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -722,6 +762,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -751,6 +793,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -780,6 +824,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1022,6 +1068,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -1053,6 +1101,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1093,6 +1143,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1124,6 +1176,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1155,6 +1209,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1191,6 +1247,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1222,6 +1280,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1253,6 +1313,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1284,6 +1346,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1313,6 +1377,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1344,6 +1410,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1375,6 +1443,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1404,6 +1474,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1433,6 +1505,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1462,6 +1536,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1491,6 +1567,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1729,6 +1807,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -1760,6 +1840,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1800,6 +1882,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1831,6 +1915,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1862,6 +1948,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1898,6 +1986,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1929,6 +2019,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1960,6 +2052,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -1991,6 +2085,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2020,6 +2116,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2051,6 +2149,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2082,6 +2182,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2111,6 +2213,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2140,6 +2244,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2169,6 +2275,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2198,6 +2306,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2227,6 +2337,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2476,6 +2588,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -2507,6 +2621,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2538,6 +2654,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2569,6 +2687,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2598,6 +2718,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2627,6 +2749,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2656,6 +2780,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2767,6 +2893,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Captur ii',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -2798,6 +2926,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2838,6 +2968,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2869,6 +3001,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2900,6 +3034,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2936,6 +3072,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2967,6 +3105,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -2998,6 +3138,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3029,6 +3171,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3058,6 +3202,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3089,6 +3235,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3120,6 +3268,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3151,6 +3301,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3180,6 +3332,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3209,6 +3363,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3238,6 +3394,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3480,6 +3638,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -3511,6 +3671,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3551,6 +3713,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3582,6 +3746,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3613,6 +3779,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3649,6 +3817,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3680,6 +3850,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3711,6 +3883,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3742,6 +3916,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3771,6 +3947,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3802,6 +3980,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3833,6 +4013,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3862,6 +4044,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3891,6 +4075,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3920,6 +4106,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -3949,6 +4137,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4187,6 +4377,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Renault',
|
||||
'model': 'Zoe',
|
||||
'name': 'REG-NUMBER',
|
||||
@ -4218,6 +4410,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4258,6 +4452,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4289,6 +4485,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4320,6 +4518,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4356,6 +4556,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4387,6 +4589,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4418,6 +4622,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4449,6 +4655,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4478,6 +4686,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4509,6 +4719,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4540,6 +4752,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4569,6 +4783,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4598,6 +4814,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4627,6 +4845,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4656,6 +4876,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -4685,6 +4907,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -40,6 +40,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': None,
|
||||
'model': 'NB6VAC-FXC-r0',
|
||||
'name': 'SFR Box',
|
||||
@ -47,6 +49,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -76,6 +80,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -136,6 +142,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': None,
|
||||
'model': 'NB6VAC-FXC-r0',
|
||||
'name': 'SFR Box',
|
||||
@ -165,6 +173,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -194,6 +204,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': None,
|
||||
'model': 'NB6VAC-FXC-r0',
|
||||
'name': 'SFR Box',
|
||||
@ -47,6 +49,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': None,
|
||||
'model': 'NB6VAC-FXC-r0',
|
||||
'name': 'SFR Box',
|
||||
@ -54,6 +56,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -83,6 +87,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -112,6 +118,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -149,6 +157,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -178,6 +188,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -207,6 +219,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -236,6 +250,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -267,6 +283,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -298,6 +316,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -329,6 +349,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -360,6 +382,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -391,6 +415,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -422,6 +448,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -460,6 +488,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -502,6 +532,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -64,6 +66,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
@ -112,6 +116,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
|
@ -30,6 +30,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -62,6 +64,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Tailwind',
|
||||
'model': 'iQ3',
|
||||
'name': 'Door 1',
|
||||
@ -103,6 +107,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -135,6 +141,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Tailwind',
|
||||
'model': 'iQ3',
|
||||
'name': 'Door 2',
|
||||
|
@ -29,6 +29,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -65,6 +67,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Tailwind',
|
||||
'model': 'iQ3',
|
||||
'name': 'Tailwind iQ3',
|
||||
|
@ -30,6 +30,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -62,6 +64,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Tailwind',
|
||||
'model': 'iQ3',
|
||||
'name': 'Door 1',
|
||||
@ -103,6 +107,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -135,6 +141,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Tailwind',
|
||||
'model': 'iQ3',
|
||||
'name': 'Door 2',
|
||||
|
@ -39,6 +39,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -75,6 +77,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Tailwind',
|
||||
'model': 'iQ3',
|
||||
'name': 'Tailwind iQ3',
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -59,6 +61,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -103,6 +107,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -146,6 +152,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -189,6 +197,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -232,6 +242,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -18,6 +18,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -66,6 +68,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -114,6 +118,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -162,6 +168,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -210,6 +218,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -258,6 +268,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -312,6 +324,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -365,6 +379,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -411,6 +427,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
|
@ -16,6 +16,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -47,6 +49,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -78,6 +82,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -128,4 +134,4 @@
|
||||
'last_updated': <ANY>,
|
||||
'state': 'off',
|
||||
})
|
||||
# ---
|
||||
# ---
|
||||
|
@ -17,6 +17,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Tedee',
|
||||
'model': 'Bridge',
|
||||
'name': 'Bridge-AB1C',
|
||||
@ -26,4 +28,4 @@
|
||||
'sw_version': None,
|
||||
'via_device_id': None,
|
||||
})
|
||||
# ---
|
||||
# ---
|
||||
|
@ -29,6 +29,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -61,6 +63,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Tedee',
|
||||
'model': 'Tedee PRO',
|
||||
'name': 'Lock-1A2B',
|
||||
@ -101,6 +105,8 @@
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
@ -133,6 +139,8 @@
|
||||
),
|
||||
}),
|
||||
'is_new': False,
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'Tedee',
|
||||
'model': 'Tedee GO',
|
||||
'name': 'Lock-2C3D',
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user