diff --git a/custom_components/oasis_mini/__init__.py b/custom_components/oasis_mini/__init__.py index ae00307..abc62ba 100755 --- a/custom_components/oasis_mini/__init__.py +++ b/custom_components/oasis_mini/__init__.py @@ -14,6 +14,8 @@ from .const import DOMAIN from .coordinator import OasisMiniCoordinator from .helpers import create_client +type OasisMiniConfigEntry = ConfigEntry[OasisMiniCoordinator] + _LOGGER = logging.getLogger(__name__) PLATFORMS = [ @@ -29,9 +31,8 @@ PLATFORMS = [ ] -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_setup_entry(hass: HomeAssistant, entry: OasisMiniConfigEntry) -> bool: """Set up Oasis Mini from a config entry.""" - hass.data.setdefault(DOMAIN, {}) client = create_client(entry.data | entry.options) coordinator = OasisMiniCoordinator(hass, client) @@ -62,7 +63,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: await client.session.close() raise ConfigEntryError("Serial number mismatch") - hass.data[DOMAIN][entry.entry_id] = coordinator + entry.runtime_data = coordinator await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) @@ -70,15 +71,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: return True -async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_unload_entry(hass: HomeAssistant, entry: OasisMiniConfigEntry) -> bool: """Unload a config entry.""" - if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): - await hass.data[DOMAIN][entry.entry_id].device.session.close() - del hass.data[DOMAIN][entry.entry_id] - return unload_ok + await entry.runtime_data.device.session.close() + return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) -async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: +async def async_remove_entry(hass: HomeAssistant, entry: OasisMiniConfigEntry) -> None: """Handle removal of an entry.""" if entry.options: client = create_client(entry.data | entry.options) @@ -86,6 +85,6 @@ async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: await client.session.close() -async def update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None: +async def update_listener(hass: HomeAssistant, entry: OasisMiniConfigEntry) -> None: """Handle options update.""" await hass.config_entries.async_reload(entry.entry_id) diff --git a/custom_components/oasis_mini/button.py b/custom_components/oasis_mini/button.py index e3112ee..8b0850d 100644 --- a/custom_components/oasis_mini/button.py +++ b/custom_components/oasis_mini/button.py @@ -11,13 +11,11 @@ from homeassistant.components.button import ( ButtonEntity, ButtonEntityDescription, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from .const import DOMAIN -from .coordinator import OasisMiniCoordinator +from . import OasisMiniConfigEntry from .entity import OasisMiniEntity from .helpers import add_and_play_track from .pyoasismini import OasisMini @@ -25,13 +23,14 @@ from .pyoasismini.const import TRACKS async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, + entry: OasisMiniConfigEntry, + async_add_entities: AddEntitiesCallback, ) -> None: """Set up Oasis Mini button using config entry.""" - coordinator: OasisMiniCoordinator = hass.data[DOMAIN][entry.entry_id] async_add_entities( [ - OasisMiniButtonEntity(coordinator, entry, descriptor) + OasisMiniButtonEntity(entry.runtime_data, descriptor) for descriptor in DESCRIPTORS ] ) diff --git a/custom_components/oasis_mini/config_flow.py b/custom_components/oasis_mini/config_flow.py index 80a421f..fd6d81b 100755 --- a/custom_components/oasis_mini/config_flow.py +++ b/custom_components/oasis_mini/config_flow.py @@ -11,7 +11,7 @@ from httpx import ConnectError, HTTPStatusError import voluptuous as vol from homeassistant.components import dhcp -from homeassistant.config_entries import ConfigEntry, ConfigFlow, ConfigFlowResult +from homeassistant.config_entries import ConfigFlow, ConfigFlowResult from homeassistant.const import CONF_ACCESS_TOKEN, CONF_EMAIL, CONF_HOST, CONF_PASSWORD from homeassistant.core import callback from homeassistant.helpers.schema_config_entry_flow import ( @@ -21,6 +21,7 @@ from homeassistant.helpers.schema_config_entry_flow import ( SchemaOptionsFlowHandler, ) +from . import OasisMiniConfigEntry from .const import DOMAIN from .coordinator import OasisMiniCoordinator from .helpers import create_client @@ -38,9 +39,7 @@ async def cloud_login( handler: SchemaCommonFlowHandler, user_input: dict[str, Any] ) -> dict[str, Any]: """Cloud login.""" - coordinator: OasisMiniCoordinator = handler.parent_handler.hass.data[DOMAIN][ - handler.parent_handler.config_entry.entry_id - ] + coordinator: OasisMiniCoordinator = handler.parent_handler.config_entry.runtime_data try: await coordinator.device.async_cloud_login( @@ -66,7 +65,9 @@ class OasisMiniConfigFlow(ConfigFlow, domain=DOMAIN): @staticmethod @callback - def async_get_options_flow(config_entry: ConfigEntry) -> SchemaOptionsFlowHandler: + def async_get_options_flow( + config_entry: OasisMiniConfigEntry, + ) -> SchemaOptionsFlowHandler: """Get the options flow for this handler.""" return SchemaOptionsFlowHandler(config_entry, OPTIONS_FLOW) diff --git a/custom_components/oasis_mini/entity.py b/custom_components/oasis_mini/entity.py index ae172ea..2234096 100644 --- a/custom_components/oasis_mini/entity.py +++ b/custom_components/oasis_mini/entity.py @@ -2,9 +2,6 @@ from __future__ import annotations -import logging - -from homeassistant.config_entries import ConfigEntry from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, format_mac from homeassistant.helpers.entity import DeviceInfo, EntityDescription from homeassistant.helpers.update_coordinator import CoordinatorEntity @@ -13,8 +10,6 @@ from .const import DOMAIN from .coordinator import OasisMiniCoordinator from .pyoasismini import OasisMini -_LOGGER = logging.getLogger(__name__) - class OasisMiniEntity(CoordinatorEntity[OasisMiniCoordinator]): """Base class for Oasis Mini entities.""" @@ -22,10 +17,7 @@ class OasisMiniEntity(CoordinatorEntity[OasisMiniCoordinator]): _attr_has_entity_name = True def __init__( - self, - coordinator: OasisMiniCoordinator, - entry: ConfigEntry, - description: EntityDescription, + self, coordinator: OasisMiniCoordinator, description: EntityDescription ) -> None: """Construct an Oasis Mini entity.""" super().__init__(coordinator) @@ -37,7 +29,7 @@ class OasisMiniEntity(CoordinatorEntity[OasisMiniCoordinator]): self._attr_device_info = DeviceInfo( connections={(CONNECTION_NETWORK_MAC, format_mac(device.mac_address))}, identifiers={(DOMAIN, serial_number)}, - name=entry.title, + name=f"Oasis Mini {serial_number}", manufacturer="Kinetic Oasis", model="Oasis Mini", serial_number=serial_number, diff --git a/custom_components/oasis_mini/image.py b/custom_components/oasis_mini/image.py index 43fafc3..3f4b69b 100644 --- a/custom_components/oasis_mini/image.py +++ b/custom_components/oasis_mini/image.py @@ -3,12 +3,11 @@ from __future__ import annotations from homeassistant.components.image import Image, ImageEntity, ImageEntityDescription -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import UNDEFINED -from .const import DOMAIN +from . import OasisMiniConfigEntry from .coordinator import OasisMiniCoordinator from .entity import OasisMiniEntity from .pyoasismini.const import TRACKS @@ -25,13 +24,10 @@ class OasisMiniImageEntity(OasisMiniEntity, ImageEntity): _progress: int = 0 def __init__( - self, - coordinator: OasisMiniCoordinator, - entry_id: str, - description: ImageEntityDescription, + self, coordinator: OasisMiniCoordinator, description: ImageEntityDescription ) -> None: """Initialize the entity.""" - super().__init__(coordinator, entry_id, description) + super().__init__(coordinator, description) ImageEntity.__init__(self, coordinator.hass) self._handle_coordinator_update() @@ -70,8 +66,9 @@ class OasisMiniImageEntity(OasisMiniEntity, ImageEntity): async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, + entry: OasisMiniConfigEntry, + async_add_entities: AddEntitiesCallback, ) -> None: """Set up Oasis Mini camera using config entry.""" - coordinator: OasisMiniCoordinator = hass.data[DOMAIN][entry.entry_id] - async_add_entities([OasisMiniImageEntity(coordinator, entry, IMAGE)]) + async_add_entities([OasisMiniImageEntity(entry.runtime_data, IMAGE)]) diff --git a/custom_components/oasis_mini/light.py b/custom_components/oasis_mini/light.py index 52f6268..67e6049 100644 --- a/custom_components/oasis_mini/light.py +++ b/custom_components/oasis_mini/light.py @@ -14,7 +14,6 @@ from homeassistant.components.light import ( LightEntityDescription, LightEntityFeature, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.util.color import ( @@ -24,8 +23,7 @@ from homeassistant.util.color import ( value_to_brightness, ) -from .const import DOMAIN -from .coordinator import OasisMiniCoordinator +from . import OasisMiniConfigEntry from .entity import OasisMiniEntity from .pyoasismini import LED_EFFECTS @@ -110,8 +108,9 @@ DESCRIPTOR = LightEntityDescription(key="led", name="LED") async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, + entry: OasisMiniConfigEntry, + async_add_entities: AddEntitiesCallback, ) -> None: """Set up Oasis Mini lights using config entry.""" - coordinator: OasisMiniCoordinator = hass.data[DOMAIN][entry.entry_id] - async_add_entities([OasisMiniLightEntity(coordinator, entry, DESCRIPTOR)]) + async_add_entities([OasisMiniLightEntity(entry.runtime_data, DESCRIPTOR)]) diff --git a/custom_components/oasis_mini/media_player.py b/custom_components/oasis_mini/media_player.py index cb24ba4..ba2c48f 100644 --- a/custom_components/oasis_mini/media_player.py +++ b/custom_components/oasis_mini/media_player.py @@ -3,7 +3,6 @@ from __future__ import annotations from datetime import datetime -import logging from typing import Any from homeassistant.components.media_player import ( @@ -15,18 +14,14 @@ from homeassistant.components.media_player import ( MediaType, RepeatMode, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.exceptions import ServiceValidationError from homeassistant.helpers.entity_platform import AddEntitiesCallback -from .const import DOMAIN -from .coordinator import OasisMiniCoordinator +from . import OasisMiniConfigEntry from .entity import OasisMiniEntity from .pyoasismini.const import TRACKS -_LOGGER = logging.getLogger(__name__) - class OasisMiniMediaPlayerEntity(OasisMiniEntity, MediaPlayerEntity): """Oasis Mini media player entity.""" @@ -201,8 +196,9 @@ DESCRIPTOR = MediaPlayerEntityDescription(key="oasis_mini", name=None) async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, + entry: OasisMiniConfigEntry, + async_add_entities: AddEntitiesCallback, ) -> None: """Set up Oasis Mini media_players using config entry.""" - coordinator: OasisMiniCoordinator = hass.data[DOMAIN][entry.entry_id] - async_add_entities([OasisMiniMediaPlayerEntity(coordinator, entry, DESCRIPTOR)]) + async_add_entities([OasisMiniMediaPlayerEntity(entry.runtime_data, DESCRIPTOR)]) diff --git a/custom_components/oasis_mini/number.py b/custom_components/oasis_mini/number.py index 7609fda..7c60b3c 100644 --- a/custom_components/oasis_mini/number.py +++ b/custom_components/oasis_mini/number.py @@ -7,12 +7,10 @@ from homeassistant.components.number import ( NumberEntityDescription, NumberMode, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from .const import DOMAIN -from .coordinator import OasisMiniCoordinator +from . import OasisMiniConfigEntry from .entity import OasisMiniEntity from .pyoasismini import BALL_SPEED_MAX, BALL_SPEED_MIN, LED_SPEED_MAX, LED_SPEED_MIN @@ -53,13 +51,14 @@ DESCRIPTORS = { async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, + entry: OasisMiniConfigEntry, + async_add_entities: AddEntitiesCallback, ) -> None: """Set up Oasis Mini numbers using config entry.""" - coordinator: OasisMiniCoordinator = hass.data[DOMAIN][entry.entry_id] async_add_entities( [ - OasisMiniNumberEntity(coordinator, entry, descriptor) + OasisMiniNumberEntity(entry.runtime_data, descriptor) for descriptor in DESCRIPTORS ] ) diff --git a/custom_components/oasis_mini/pyoasismini/tracks.json b/custom_components/oasis_mini/pyoasismini/tracks.json index 13fd784..d83b0f5 100644 --- a/custom_components/oasis_mini/pyoasismini/tracks.json +++ b/custom_components/oasis_mini/pyoasismini/tracks.json @@ -8,7 +8,7 @@ "reduced_svg_content": { "1": 11147 }, - "updated_at": "2024-07-25T21:33:00.000000Z" + "updated_at": "2024-08-04T15:58:52.000000Z" }, "358": { "id": 358, @@ -19,7 +19,7 @@ "reduced_svg_content": { "1": 18384 }, - "updated_at": "2024-07-25T21:35:26.000000Z" + "updated_at": "2024-08-04T16:01:25.000000Z" }, "114": { "id": 114, @@ -30,7 +30,7 @@ "reduced_svg_content": { "1": 11150 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "306": { "id": 306, @@ -41,7 +41,7 @@ "reduced_svg_content": { "1": 9266 }, - "updated_at": "2024-07-25T21:34:59.000000Z" + "updated_at": "2024-08-04T16:00:57.000000Z" }, "251": { "id": 251, @@ -52,7 +52,7 @@ "reduced_svg_content": { "1": 18995 }, - "updated_at": "2024-07-25T21:33:37.000000Z" + "updated_at": "2024-08-04T15:59:32.000000Z" }, "246": { "id": 246, @@ -63,7 +63,7 @@ "reduced_svg_content": { "1": 23127 }, - "updated_at": "2024-07-25T21:33:37.000000Z" + "updated_at": "2024-08-04T15:59:31.000000Z" }, "174": { "id": 174, @@ -74,7 +74,7 @@ "reduced_svg_content": { "1": 16595 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:55.000000Z" }, "359": { "id": 359, @@ -85,7 +85,7 @@ "reduced_svg_content": { "1": 17244 }, - "updated_at": "2024-07-25T21:35:26.000000Z" + "updated_at": "2024-08-04T16:01:25.000000Z" }, "196": { "id": 196, @@ -96,7 +96,7 @@ "reduced_svg_content": { "1": 11930 }, - "updated_at": "2024-07-25T21:33:04.000000Z" + "updated_at": "2024-08-04T15:58:57.000000Z" }, "194": { "id": 194, @@ -107,7 +107,7 @@ "reduced_svg_content": { "1": 20363 }, - "updated_at": "2024-07-25T21:33:04.000000Z" + "updated_at": "2024-08-04T15:58:56.000000Z" }, "48": { "id": 48, @@ -118,7 +118,7 @@ "reduced_svg_content": { "1": 8045 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "45": { "id": 45, @@ -129,7 +129,7 @@ "reduced_svg_content": { "1": 4382 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:46.000000Z" }, "59": { "id": 59, @@ -140,7 +140,7 @@ "reduced_svg_content": { "1": 9978 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "168": { "id": 168, @@ -151,7 +151,7 @@ "reduced_svg_content": { "1": 20855 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:54.000000Z" }, "102": { "id": 102, @@ -162,7 +162,7 @@ "reduced_svg_content": { "1": 18975 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "56": { "id": 56, @@ -173,7 +173,7 @@ "reduced_svg_content": { "1": 4511 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "133": { "id": 133, @@ -184,7 +184,7 @@ "reduced_svg_content": { "1": 34616 }, - "updated_at": "2024-07-25T21:33:00.000000Z" + "updated_at": "2024-08-04T15:58:52.000000Z" }, "349": { "id": 349, @@ -195,7 +195,7 @@ "reduced_svg_content": { "1": 14910 }, - "updated_at": "2024-07-25T21:35:26.000000Z" + "updated_at": "2024-08-04T16:01:24.000000Z" }, "257": { "id": 257, @@ -206,7 +206,7 @@ "reduced_svg_content": { "1": 13986 }, - "updated_at": "2024-07-25T21:33:38.000000Z" + "updated_at": "2024-08-04T15:59:32.000000Z" }, "621": { "id": 621, @@ -217,7 +217,7 @@ "reduced_svg_content": { "1": 19449 }, - "updated_at": "2024-07-17T19:22:56.000000Z" + "updated_at": "2024-08-04T16:01:43.000000Z" }, "157": { "id": 157, @@ -228,7 +228,7 @@ "reduced_svg_content": { "1": 18521 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:54.000000Z" }, "58": { "id": 58, @@ -239,7 +239,7 @@ "reduced_svg_content": { "1": 9980 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "178": { "id": 178, @@ -250,7 +250,7 @@ "reduced_svg_content": { "1": 15152 }, - "updated_at": "2024-07-25T21:33:03.000000Z" + "updated_at": "2024-08-04T15:58:55.000000Z" }, "215": { "id": 215, @@ -261,7 +261,7 @@ "reduced_svg_content": { "1": 33512 }, - "updated_at": "2024-07-25T21:33:09.000000Z" + "updated_at": "2024-08-04T15:59:02.000000Z" }, "113": { "id": 113, @@ -272,7 +272,7 @@ "reduced_svg_content": { "1": 6361 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "49": { "id": 49, @@ -283,7 +283,7 @@ "reduced_svg_content": { "1": 5832 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "513": { "id": 513, @@ -294,7 +294,7 @@ "reduced_svg_content": { "1": 3030 }, - "updated_at": "2024-07-29T19:08:36.000000Z" + "updated_at": "2024-08-04T16:01:33.000000Z" }, "505": { "id": 505, @@ -305,7 +305,7 @@ "reduced_svg_content": { "1": 3129 }, - "updated_at": "2024-07-25T21:35:33.000000Z" + "updated_at": "2024-08-04T16:01:32.000000Z" }, "118": { "id": 118, @@ -316,7 +316,7 @@ "reduced_svg_content": { "1": 3906 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:49.000000Z" }, "501": { "id": 501, @@ -327,7 +327,7 @@ "reduced_svg_content": { "1": 3906 }, - "updated_at": "2024-07-25T21:35:33.000000Z" + "updated_at": "2024-08-04T16:01:32.000000Z" }, "503": { "id": 503, @@ -338,7 +338,7 @@ "reduced_svg_content": { "1": 3335 }, - "updated_at": "2024-07-25T21:35:33.000000Z" + "updated_at": "2024-08-04T16:01:32.000000Z" }, "499": { "id": 499, @@ -349,7 +349,7 @@ "reduced_svg_content": { "1": 2433 }, - "updated_at": "2024-07-25T21:35:33.000000Z" + "updated_at": "2024-08-04T16:01:32.000000Z" }, "504": { "id": 504, @@ -360,7 +360,7 @@ "reduced_svg_content": { "1": 3335 }, - "updated_at": "2024-07-25T21:35:33.000000Z" + "updated_at": "2024-08-04T16:01:32.000000Z" }, "497": { "id": 497, @@ -371,7 +371,7 @@ "reduced_svg_content": { "1": 2433 }, - "updated_at": "2024-07-25T21:35:33.000000Z" + "updated_at": "2024-08-04T16:01:32.000000Z" }, "264": { "id": 264, @@ -382,7 +382,7 @@ "reduced_svg_content": { "1": 27294 }, - "updated_at": "2024-07-25T21:33:38.000000Z" + "updated_at": "2024-08-04T15:59:32.000000Z" }, "220": { "id": 220, @@ -393,7 +393,7 @@ "reduced_svg_content": { "1": 151537 }, - "updated_at": "2024-07-29T15:13:54.000000Z" + "updated_at": "2024-08-04T15:59:10.000000Z" }, "104": { "id": 104, @@ -404,7 +404,7 @@ "reduced_svg_content": { "1": 12687 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "98": { "id": 98, @@ -415,7 +415,7 @@ "reduced_svg_content": { "1": 14772 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "68": { "id": 68, @@ -426,7 +426,7 @@ "reduced_svg_content": { "1": 8086 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "261": { "id": 261, @@ -437,7 +437,7 @@ "reduced_svg_content": { "1": 8114 }, - "updated_at": "2024-07-25T21:33:38.000000Z" + "updated_at": "2024-08-04T15:59:32.000000Z" }, "393": { "id": 393, @@ -448,7 +448,7 @@ "reduced_svg_content": { "1": 12834 }, - "updated_at": "2024-07-25T21:35:28.000000Z" + "updated_at": "2024-08-04T16:01:27.000000Z" }, "146": { "id": 146, @@ -459,7 +459,7 @@ "reduced_svg_content": { "1": 2889 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:53.000000Z" }, "145": { "id": 145, @@ -470,7 +470,7 @@ "reduced_svg_content": { "1": 6303 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:53.000000Z" }, "144": { "id": 144, @@ -481,7 +481,7 @@ "reduced_svg_content": { "1": 731 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:53.000000Z" }, "142": { "id": 142, @@ -492,7 +492,7 @@ "reduced_svg_content": { "1": 27464 }, - "updated_at": "2024-07-25T21:33:00.000000Z" + "updated_at": "2024-08-04T15:58:53.000000Z" }, "140": { "id": 140, @@ -503,7 +503,7 @@ "reduced_svg_content": { "1": 4733 }, - "updated_at": "2024-07-25T21:33:00.000000Z" + "updated_at": "2024-08-04T15:58:52.000000Z" }, "41": { "id": 41, @@ -514,7 +514,7 @@ "reduced_svg_content": { "1": 4126 }, - "updated_at": "2024-08-01T15:06:06.000000Z" + "updated_at": "2024-08-04T15:58:46.000000Z" }, "36": { "id": 36, @@ -525,7 +525,7 @@ "reduced_svg_content": { "1": 3300 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:46.000000Z" }, "40": { "id": 40, @@ -536,7 +536,7 @@ "reduced_svg_content": { "1": 5093 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:46.000000Z" }, "162": { "id": 162, @@ -547,7 +547,7 @@ "reduced_svg_content": { "1": 8308 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:54.000000Z" }, "244": { "id": 244, @@ -558,7 +558,7 @@ "reduced_svg_content": { "1": 6309 }, - "updated_at": "2024-07-25T21:33:36.000000Z" + "updated_at": "2024-08-04T15:59:31.000000Z" }, "195": { "id": 195, @@ -569,7 +569,7 @@ "reduced_svg_content": { "1": 17439 }, - "updated_at": "2024-07-25T21:33:04.000000Z" + "updated_at": "2024-08-04T15:58:56.000000Z" }, "193": { "id": 193, @@ -580,7 +580,7 @@ "reduced_svg_content": { "1": 21930 }, - "updated_at": "2024-07-25T21:33:04.000000Z" + "updated_at": "2024-08-04T15:58:56.000000Z" }, "159": { "id": 159, @@ -591,7 +591,7 @@ "reduced_svg_content": { "1": 15116 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:54.000000Z" }, "129": { "id": 129, @@ -602,7 +602,7 @@ "reduced_svg_content": { "1": 74399 }, - "updated_at": "2024-07-29T15:13:54.000000Z" + "updated_at": "2024-08-04T15:58:51.000000Z" }, "219": { "id": 219, @@ -613,7 +613,7 @@ "reduced_svg_content": { "1": 110930 }, - "updated_at": "2024-07-29T15:13:55.000000Z" + "updated_at": "2024-08-04T15:59:06.000000Z" }, "33": { "id": 33, @@ -624,7 +624,7 @@ "reduced_svg_content": { "1": 7022 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:46.000000Z" }, "262": { "id": 262, @@ -635,7 +635,7 @@ "reduced_svg_content": { "1": 7316 }, - "updated_at": "2024-07-25T21:33:38.000000Z" + "updated_at": "2024-08-04T15:59:32.000000Z" }, "38": { "id": 38, @@ -646,7 +646,7 @@ "reduced_svg_content": { "1": 7283 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:46.000000Z" }, "611": { "id": 611, @@ -657,7 +657,7 @@ "reduced_svg_content": { "1": 8407 }, - "updated_at": "2024-07-31T17:08:03.000000Z" + "updated_at": "2024-08-04T16:01:43.000000Z" }, "249": { "id": 249, @@ -668,7 +668,7 @@ "reduced_svg_content": { "1": 15619 }, - "updated_at": "2024-07-25T21:33:37.000000Z" + "updated_at": "2024-08-04T15:59:31.000000Z" }, "576": { "id": 576, @@ -679,7 +679,7 @@ "reduced_svg_content": { "1": 6469 }, - "updated_at": "2024-07-31T11:38:05.000000Z" + "updated_at": "2024-08-04T16:01:40.000000Z" }, "87": { "id": 87, @@ -690,7 +690,7 @@ "reduced_svg_content": { "1": 20543 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "241": { "id": 241, @@ -701,7 +701,7 @@ "reduced_svg_content": { "1": 3550 }, - "updated_at": "2024-07-25T21:33:36.000000Z" + "updated_at": "2024-08-04T15:59:30.000000Z" }, "60": { "id": 60, @@ -712,7 +712,7 @@ "reduced_svg_content": { "1": 3873 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "537": { "id": 537, @@ -723,7 +723,7 @@ "reduced_svg_content": { "1": 31561 }, - "updated_at": "2024-07-29T19:59:24.000000Z" + "updated_at": "2024-08-04T16:01:36.000000Z" }, "252": { "id": 252, @@ -734,7 +734,7 @@ "reduced_svg_content": { "1": 15180 }, - "updated_at": "2024-07-25T21:33:37.000000Z" + "updated_at": "2024-08-04T15:59:32.000000Z" }, "88": { "id": 88, @@ -745,7 +745,7 @@ "reduced_svg_content": { "1": 6898 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "81": { "id": 81, @@ -756,7 +756,7 @@ "reduced_svg_content": { "1": 13442 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "531": { "id": 531, @@ -767,7 +767,7 @@ "reduced_svg_content": { "1": 1740 }, - "updated_at": "2024-07-29T00:05:39.000000Z" + "updated_at": "2024-08-04T16:01:35.000000Z" }, "332": { "id": 332, @@ -778,7 +778,7 @@ "reduced_svg_content": { "1": 11387 }, - "updated_at": "2024-07-25T21:35:25.000000Z" + "updated_at": "2024-08-04T16:01:24.000000Z" }, "953": { "id": 953, @@ -789,7 +789,7 @@ "reduced_svg_content": { "1": 56731 }, - "updated_at": "2024-07-18T12:20:10.000000Z" + "updated_at": "2024-08-04T16:03:30.000000Z" }, "224": { "id": 224, @@ -800,7 +800,7 @@ "reduced_svg_content": { "1": 1747 }, - "updated_at": "2024-07-25T21:33:36.000000Z" + "updated_at": "2024-08-04T15:59:30.000000Z" }, "581": { "id": 581, @@ -811,7 +811,7 @@ "reduced_svg_content": { "1": 1520 }, - "updated_at": "2024-07-17T19:23:27.000000Z" + "updated_at": "2024-08-04T16:01:40.000000Z" }, "509": { "id": 509, @@ -822,7 +822,7 @@ "reduced_svg_content": { "1": 19327 }, - "updated_at": "2024-07-29T01:21:29.000000Z" + "updated_at": "2024-08-04T16:01:33.000000Z" }, "356": { "id": 356, @@ -833,7 +833,7 @@ "reduced_svg_content": { "1": 16844 }, - "updated_at": "2024-07-25T21:35:26.000000Z" + "updated_at": "2024-08-04T16:01:25.000000Z" }, "147": { "id": 147, @@ -844,7 +844,7 @@ "reduced_svg_content": { "1": 6447 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:53.000000Z" }, "496": { "id": 496, @@ -855,7 +855,7 @@ "reduced_svg_content": { "1": 6447 }, - "updated_at": "2024-07-25T21:35:33.000000Z" + "updated_at": "2024-08-04T16:01:32.000000Z" }, "192": { "id": 192, @@ -866,7 +866,7 @@ "reduced_svg_content": { "1": 14801 }, - "updated_at": "2024-07-25T21:33:03.000000Z" + "updated_at": "2024-08-04T15:58:56.000000Z" }, "213": { "id": 213, @@ -877,7 +877,7 @@ "reduced_svg_content": { "1": 65711 }, - "updated_at": "2024-07-29T15:13:30.000000Z" + "updated_at": "2024-08-04T15:59:01.000000Z" }, "670": { "id": 670, @@ -888,7 +888,7 @@ "reduced_svg_content": { "1": 25521 }, - "updated_at": "2024-07-31T11:48:44.000000Z" + "updated_at": "2024-08-04T16:01:45.000000Z" }, "535": { "id": 535, @@ -899,7 +899,7 @@ "reduced_svg_content": { "1": 31933 }, - "updated_at": "2024-07-29T13:00:43.000000Z" + "updated_at": "2024-08-04T16:01:36.000000Z" }, "100": { "id": 100, @@ -910,7 +910,7 @@ "reduced_svg_content": { "1": 7608 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "304": { "id": 304, @@ -921,7 +921,7 @@ "reduced_svg_content": { "1": 8898 }, - "updated_at": "2024-07-25T21:34:59.000000Z" + "updated_at": "2024-08-04T16:00:57.000000Z" }, "72": { "id": 72, @@ -932,7 +932,7 @@ "reduced_svg_content": { "1": 20942 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "139": { "id": 139, @@ -943,7 +943,7 @@ "reduced_svg_content": { "1": 8302 }, - "updated_at": "2024-07-25T21:33:00.000000Z" + "updated_at": "2024-08-04T15:58:52.000000Z" }, "238": { "id": 238, @@ -954,7 +954,7 @@ "reduced_svg_content": { "1": 6064 }, - "updated_at": "2024-07-25T21:33:36.000000Z" + "updated_at": "2024-08-04T15:59:30.000000Z" }, "170": { "id": 170, @@ -965,7 +965,7 @@ "reduced_svg_content": { "1": 10346 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:54.000000Z" }, "189": { "id": 189, @@ -976,7 +976,7 @@ "reduced_svg_content": { "1": 18293 }, - "updated_at": "2024-07-25T21:33:03.000000Z" + "updated_at": "2024-08-04T15:58:56.000000Z" }, "239": { "id": 239, @@ -987,7 +987,7 @@ "reduced_svg_content": { "1": 9993 }, - "updated_at": "2024-07-25T21:33:36.000000Z" + "updated_at": "2024-08-04T15:59:30.000000Z" }, "240": { "id": 240, @@ -998,7 +998,7 @@ "reduced_svg_content": { "1": 4836 }, - "updated_at": "2024-07-25T21:33:36.000000Z" + "updated_at": "2024-08-04T15:59:30.000000Z" }, "173": { "id": 173, @@ -1009,7 +1009,7 @@ "reduced_svg_content": { "1": 1413 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:55.000000Z" }, "121": { "id": 121, @@ -1020,7 +1020,7 @@ "reduced_svg_content": { "1": 4162 }, - "updated_at": "2024-07-25T21:32:57.000000Z" + "updated_at": "2024-08-04T15:58:49.000000Z" }, "385": { "id": 385, @@ -1031,7 +1031,7 @@ "reduced_svg_content": { "1": 20804 }, - "updated_at": "2024-07-25T21:35:27.000000Z" + "updated_at": "2024-08-04T16:01:26.000000Z" }, "300": { "id": 300, @@ -1042,7 +1042,7 @@ "reduced_svg_content": { "1": 31605 }, - "updated_at": "2024-07-25T21:34:58.000000Z" + "updated_at": "2024-08-04T16:00:57.000000Z" }, "177": { "id": 177, @@ -1053,7 +1053,7 @@ "reduced_svg_content": { "1": 18313 }, - "updated_at": "2024-07-25T21:33:03.000000Z" + "updated_at": "2024-08-04T15:58:55.000000Z" }, "250": { "id": 250, @@ -1064,7 +1064,7 @@ "reduced_svg_content": { "1": 8807 }, - "updated_at": "2024-07-25T21:33:37.000000Z" + "updated_at": "2024-08-04T15:59:32.000000Z" }, "711": { "id": 711, @@ -1075,7 +1075,7 @@ "reduced_svg_content": { "1": 28095 }, - "updated_at": "2024-07-31T20:55:23.000000Z" + "updated_at": "2024-08-04T16:01:48.000000Z" }, "128": { "id": 128, @@ -1086,7 +1086,7 @@ "reduced_svg_content": { "1": 68851 }, - "updated_at": "2024-07-29T15:13:31.000000Z" + "updated_at": "2024-08-04T15:58:50.000000Z" }, "188": { "id": 188, @@ -1097,7 +1097,7 @@ "reduced_svg_content": { "1": 14298 }, - "updated_at": "2024-07-25T21:33:03.000000Z" + "updated_at": "2024-08-04T15:58:56.000000Z" }, "64": { "id": 64, @@ -1108,7 +1108,7 @@ "reduced_svg_content": { "1": 15294 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "339": { "id": 339, @@ -1119,7 +1119,7 @@ "reduced_svg_content": { "1": 30998 }, - "updated_at": "2024-07-25T21:35:25.000000Z" + "updated_at": "2024-08-04T16:01:24.000000Z" }, "212": { "id": 212, @@ -1130,7 +1130,7 @@ "reduced_svg_content": { "1": 77291 }, - "updated_at": "2024-07-29T15:13:56.000000Z" + "updated_at": "2024-08-04T15:59:00.000000Z" }, "78": { "id": 78, @@ -1141,7 +1141,7 @@ "reduced_svg_content": { "1": 23309 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "179": { "id": 179, @@ -1152,7 +1152,7 @@ "reduced_svg_content": { "1": 20042 }, - "updated_at": "2024-07-25T21:33:03.000000Z" + "updated_at": "2024-08-04T15:58:55.000000Z" }, "155": { "id": 155, @@ -1163,7 +1163,7 @@ "reduced_svg_content": { "1": 11195 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:53.000000Z" }, "202": { "id": 202, @@ -1174,7 +1174,7 @@ "reduced_svg_content": { "1": 24847 }, - "updated_at": "2024-07-25T21:33:04.000000Z" + "updated_at": "2024-08-04T15:58:57.000000Z" }, "63": { "id": 63, @@ -1185,7 +1185,7 @@ "reduced_svg_content": { "1": 6422 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "101": { "id": 101, @@ -1196,7 +1196,7 @@ "reduced_svg_content": { "1": 19567 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "538": { "id": 538, @@ -1207,7 +1207,7 @@ "reduced_svg_content": { "1": 31711 }, - "updated_at": "2024-07-30T16:49:28.000000Z" + "updated_at": "2024-08-04T16:01:37.000000Z" }, "138": { "id": 138, @@ -1218,7 +1218,7 @@ "reduced_svg_content": { "1": 7386 }, - "updated_at": "2024-07-25T21:33:00.000000Z" + "updated_at": "2024-08-04T15:58:52.000000Z" }, "150": { "id": 150, @@ -1229,7 +1229,7 @@ "reduced_svg_content": { "1": 15135 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:53.000000Z" }, "171": { "id": 171, @@ -1240,7 +1240,7 @@ "reduced_svg_content": { "1": 10896 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:55.000000Z" }, "431": { "id": 431, @@ -1251,7 +1251,7 @@ "reduced_svg_content": { "1": 62273 }, - "updated_at": "2024-07-25T21:35:32.000000Z" + "updated_at": "2024-08-04T16:01:31.000000Z" }, "37": { "id": 37, @@ -1262,7 +1262,7 @@ "reduced_svg_content": { "1": 17055 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:46.000000Z" }, "221": { "id": 221, @@ -1273,7 +1273,7 @@ "reduced_svg_content": { "1": 43076 }, - "updated_at": "2024-07-29T15:17:35.000000Z" + "updated_at": "2024-08-04T15:59:11.000000Z" }, "350": { "id": 350, @@ -1284,7 +1284,7 @@ "reduced_svg_content": { "1": 4485 }, - "updated_at": "2024-07-25T21:35:26.000000Z" + "updated_at": "2024-08-04T16:01:24.000000Z" }, "24": { "id": 24, @@ -1295,7 +1295,7 @@ "reduced_svg_content": { "1": 12860 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:46.000000Z" }, "137": { "id": 137, @@ -1306,7 +1306,7 @@ "reduced_svg_content": { "1": 5915 }, - "updated_at": "2024-07-25T21:33:00.000000Z" + "updated_at": "2024-08-04T15:58:52.000000Z" }, "243": { "id": 243, @@ -1317,7 +1317,7 @@ "reduced_svg_content": { "1": 4340 }, - "updated_at": "2024-07-25T21:33:36.000000Z" + "updated_at": "2024-08-04T15:59:31.000000Z" }, "559": { "id": 559, @@ -1328,7 +1328,7 @@ "reduced_svg_content": { "1": 9950 }, - "updated_at": "2024-07-31T00:12:10.000000Z" + "updated_at": "2024-08-04T16:01:40.000000Z" }, "455": { "id": 455, @@ -1339,7 +1339,7 @@ "reduced_svg_content": { "1": 23679 }, - "updated_at": "2024-07-25T21:35:32.000000Z" + "updated_at": "2024-08-04T16:01:31.000000Z" }, "103": { "id": 103, @@ -1350,7 +1350,7 @@ "reduced_svg_content": { "1": 14707 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "211": { "id": 211, @@ -1361,7 +1361,7 @@ "reduced_svg_content": { "1": 52634 }, - "updated_at": "2024-07-29T15:17:32.000000Z" + "updated_at": "2024-08-04T15:58:59.000000Z" }, "1264": { "id": 1264, @@ -1372,7 +1372,7 @@ "reduced_svg_content": { "1": 44276 }, - "updated_at": "2024-07-28T20:59:00.000000Z" + "updated_at": "2024-08-04T16:06:04.000000Z" }, "613": { "id": 613, @@ -1383,7 +1383,7 @@ "reduced_svg_content": { "1": 2035 }, - "updated_at": "2024-07-31T20:55:19.000000Z" + "updated_at": "2024-08-04T16:01:43.000000Z" }, "210": { "id": 210, @@ -1394,7 +1394,7 @@ "reduced_svg_content": { "1": 14528 }, - "updated_at": "2024-07-25T21:33:05.000000Z" + "updated_at": "2024-08-04T15:58:58.000000Z" }, "105": { "id": 105, @@ -1405,7 +1405,7 @@ "reduced_svg_content": { "1": 8171 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "156": { "id": 156, @@ -1416,7 +1416,7 @@ "reduced_svg_content": { "1": 16093 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:53.000000Z" }, "123": { "id": 123, @@ -1427,7 +1427,7 @@ "reduced_svg_content": { "1": 13617 }, - "updated_at": "2024-07-25T21:32:57.000000Z" + "updated_at": "2024-08-04T15:58:49.000000Z" }, "197": { "id": 197, @@ -1438,7 +1438,7 @@ "reduced_svg_content": { "1": 16441 }, - "updated_at": "2024-07-25T21:33:04.000000Z" + "updated_at": "2024-08-04T15:58:57.000000Z" }, "345": { "id": 345, @@ -1449,7 +1449,7 @@ "reduced_svg_content": { "1": 8513 }, - "updated_at": "2024-07-25T21:35:26.000000Z" + "updated_at": "2024-08-04T16:01:24.000000Z" }, "172": { "id": 172, @@ -1460,7 +1460,7 @@ "reduced_svg_content": { "1": 5941 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:55.000000Z" }, "190": { "id": 190, @@ -1471,7 +1471,7 @@ "reduced_svg_content": { "1": 15501 }, - "updated_at": "2024-07-25T21:33:03.000000Z" + "updated_at": "2024-08-04T15:58:56.000000Z" }, "357": { "id": 357, @@ -1482,7 +1482,7 @@ "reduced_svg_content": { "1": 7560 }, - "updated_at": "2024-07-25T21:35:26.000000Z" + "updated_at": "2024-08-04T16:01:25.000000Z" }, "390": { "id": 390, @@ -1493,7 +1493,7 @@ "reduced_svg_content": { "1": 46251 }, - "updated_at": "2024-07-25T21:35:28.000000Z" + "updated_at": "2024-08-04T16:01:26.000000Z" }, "136": { "id": 136, @@ -1504,7 +1504,7 @@ "reduced_svg_content": { "1": 8766 }, - "updated_at": "2024-07-25T21:33:00.000000Z" + "updated_at": "2024-08-04T15:58:52.000000Z" }, "203": { "id": 203, @@ -1515,7 +1515,7 @@ "reduced_svg_content": { "1": 12822 }, - "updated_at": "2024-07-25T21:33:04.000000Z" + "updated_at": "2024-08-04T15:58:57.000000Z" }, "149": { "id": 149, @@ -1526,7 +1526,7 @@ "reduced_svg_content": { "1": 6469 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:53.000000Z" }, "209": { "id": 209, @@ -1537,7 +1537,7 @@ "reduced_svg_content": { "1": 39975 }, - "updated_at": "2024-07-25T21:33:05.000000Z" + "updated_at": "2024-08-04T15:58:58.000000Z" }, "158": { "id": 158, @@ -1548,7 +1548,7 @@ "reduced_svg_content": { "1": 9704 }, - "updated_at": "2024-07-25T21:33:01.000000Z" + "updated_at": "2024-08-04T15:58:54.000000Z" }, "180": { "id": 180, @@ -1559,7 +1559,7 @@ "reduced_svg_content": { "1": 20583 }, - "updated_at": "2024-07-25T21:33:03.000000Z" + "updated_at": "2024-08-04T15:58:55.000000Z" }, "266": { "id": 266, @@ -1570,7 +1570,7 @@ "reduced_svg_content": { "1": 11149 }, - "updated_at": "2024-07-25T21:33:38.000000Z" + "updated_at": "2024-08-04T15:59:33.000000Z" }, "551": { "id": 551, @@ -1581,7 +1581,7 @@ "reduced_svg_content": { "1": 7300 }, - "updated_at": "2024-07-30T20:32:02.000000Z" + "updated_at": "2024-08-04T16:01:39.000000Z" }, "160": { "id": 160, @@ -1592,7 +1592,7 @@ "reduced_svg_content": { "1": 24652 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:54.000000Z" }, "125": { "id": 125, @@ -1603,7 +1603,7 @@ "reduced_svg_content": { "1": 18449 }, - "updated_at": "2024-07-25T21:32:57.000000Z" + "updated_at": "2024-08-04T15:58:49.000000Z" }, "119": { "id": 119, @@ -1614,7 +1614,7 @@ "reduced_svg_content": { "1": 6509 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:49.000000Z" }, "117": { "id": 117, @@ -1625,7 +1625,7 @@ "reduced_svg_content": { "1": 6628 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:49.000000Z" }, "20": { "id": 20, @@ -1636,7 +1636,7 @@ "reduced_svg_content": { "1": 13603 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:46.000000Z" }, "126": { "id": 126, @@ -1647,7 +1647,7 @@ "reduced_svg_content": { "1": 13603 }, - "updated_at": "2024-07-25T21:32:57.000000Z" + "updated_at": "2024-08-04T15:58:49.000000Z" }, "267": { "id": 267, @@ -1658,7 +1658,7 @@ "reduced_svg_content": { "1": 7231 }, - "updated_at": "2024-07-25T21:33:38.000000Z" + "updated_at": "2024-08-04T15:59:33.000000Z" }, "175": { "id": 175, @@ -1669,7 +1669,7 @@ "reduced_svg_content": { "1": 19034 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:55.000000Z" }, "544": { "id": 544, @@ -1680,7 +1680,7 @@ "reduced_svg_content": { "1": 13857 }, - "updated_at": "2024-07-30T20:31:59.000000Z" + "updated_at": "2024-08-04T16:01:38.000000Z" }, "517": { "id": 517, @@ -1691,7 +1691,7 @@ "reduced_svg_content": { "1": 27407 }, - "updated_at": "2024-07-29T14:23:05.000000Z" + "updated_at": "2024-08-04T16:01:33.000000Z" }, "265": { "id": 265, @@ -1702,7 +1702,7 @@ "reduced_svg_content": { "1": 11193 }, - "updated_at": "2024-07-25T21:33:38.000000Z" + "updated_at": "2024-08-04T15:59:32.000000Z" }, "115": { "id": 115, @@ -1713,7 +1713,7 @@ "reduced_svg_content": { "1": 10852 }, - "updated_at": "2024-07-25T21:32:56.000000Z" + "updated_at": "2024-08-04T15:58:48.000000Z" }, "245": { "id": 245, @@ -1724,7 +1724,7 @@ "reduced_svg_content": { "1": 17628 }, - "updated_at": "2024-07-25T21:33:37.000000Z" + "updated_at": "2024-08-04T15:59:31.000000Z" }, "208": { "id": 208, @@ -1735,7 +1735,7 @@ "reduced_svg_content": { "1": 40248 }, - "updated_at": "2024-07-29T15:17:32.000000Z" + "updated_at": "2024-08-04T15:58:58.000000Z" }, "370": { "id": 370, @@ -1746,7 +1746,7 @@ "reduced_svg_content": { "1": 5122 }, - "updated_at": "2024-07-25T21:35:27.000000Z" + "updated_at": "2024-08-04T16:01:25.000000Z" }, "161": { "id": 161, @@ -1757,7 +1757,7 @@ "reduced_svg_content": { "1": 22220 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:54.000000Z" }, "223": { "id": 223, @@ -1768,7 +1768,7 @@ "reduced_svg_content": { "1": 51297 }, - "updated_at": "2024-07-25T21:33:36.000000Z" + "updated_at": "2024-08-04T15:59:30.000000Z" }, "308": { "id": 308, @@ -1779,7 +1779,7 @@ "reduced_svg_content": { "1": 3305 }, - "updated_at": "2024-07-25T21:34:59.000000Z" + "updated_at": "2024-08-04T16:00:58.000000Z" }, "1137": { "id": 1137, @@ -1790,7 +1790,7 @@ "reduced_svg_content": { "1": 29085 }, - "updated_at": "2024-07-28T21:53:32.000000Z" + "updated_at": "2024-08-04T16:03:46.000000Z" }, "528": { "id": 528, @@ -1801,7 +1801,7 @@ "reduced_svg_content": { "1": 18775 }, - "updated_at": "2024-07-29T18:48:05.000000Z" + "updated_at": "2024-08-04T16:01:35.000000Z" }, "527": { "id": 527, @@ -1812,7 +1812,7 @@ "reduced_svg_content": { "1": 18775 }, - "updated_at": "2024-07-29T18:48:02.000000Z" + "updated_at": "2024-08-04T16:01:35.000000Z" }, "237": { "id": 237, @@ -1823,7 +1823,7 @@ "reduced_svg_content": { "1": 6733 }, - "updated_at": "2024-07-25T21:33:36.000000Z" + "updated_at": "2024-08-04T15:59:30.000000Z" }, "130": { "id": 130, @@ -1834,7 +1834,7 @@ "reduced_svg_content": { "1": 32447 }, - "updated_at": "2024-07-25T21:32:59.000000Z" + "updated_at": "2024-08-04T15:58:52.000000Z" }, "135": { "id": 135, @@ -1845,7 +1845,7 @@ "reduced_svg_content": { "1": 14843 }, - "updated_at": "2024-07-25T21:33:00.000000Z" + "updated_at": "2024-08-04T15:58:52.000000Z" }, "247": { "id": 247, @@ -1856,7 +1856,7 @@ "reduced_svg_content": { "1": 14870 }, - "updated_at": "2024-07-25T21:33:37.000000Z" + "updated_at": "2024-08-04T15:59:31.000000Z" }, "242": { "id": 242, @@ -1867,7 +1867,7 @@ "reduced_svg_content": { "1": 19370 }, - "updated_at": "2024-07-25T21:33:36.000000Z" + "updated_at": "2024-08-04T15:59:31.000000Z" }, "248": { "id": 248, @@ -1878,7 +1878,7 @@ "reduced_svg_content": { "1": 20906 }, - "updated_at": "2024-07-25T21:33:37.000000Z" + "updated_at": "2024-08-04T15:59:31.000000Z" }, "54": { "id": 54, @@ -1889,7 +1889,7 @@ "reduced_svg_content": { "1": 7294 }, - "updated_at": "2024-07-25T21:32:54.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "176": { "id": 176, @@ -1900,7 +1900,7 @@ "reduced_svg_content": { "1": 4057 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:55.000000Z" }, "120": { "id": 120, @@ -1911,7 +1911,7 @@ "reduced_svg_content": { "1": 20527 }, - "updated_at": "2024-07-25T21:32:57.000000Z" + "updated_at": "2024-08-04T15:58:49.000000Z" }, "218": { "id": 218, @@ -1922,7 +1922,7 @@ "reduced_svg_content": { "1": 53327 }, - "updated_at": "2024-07-25T21:33:10.000000Z" + "updated_at": "2024-08-04T15:59:03.000000Z" }, "124": { "id": 124, @@ -1933,7 +1933,7 @@ "reduced_svg_content": { "1": 17081 }, - "updated_at": "2024-07-25T21:32:57.000000Z" + "updated_at": "2024-08-04T15:58:49.000000Z" }, "127": { "id": 127, @@ -1944,7 +1944,7 @@ "reduced_svg_content": { "1": 8464 }, - "updated_at": "2024-07-25T21:32:57.000000Z" + "updated_at": "2024-08-04T15:58:49.000000Z" }, "555": { "id": 555, @@ -1955,7 +1955,7 @@ "reduced_svg_content": { "1": 11325 }, - "updated_at": "2024-07-31T11:38:03.000000Z" + "updated_at": "2024-08-04T16:01:39.000000Z" }, "519": { "id": 519, @@ -1966,7 +1966,7 @@ "reduced_svg_content": { "1": 4562 }, - "updated_at": "2024-07-29T15:30:02.000000Z" + "updated_at": "2024-08-04T16:01:34.000000Z" }, "169": { "id": 169, @@ -1977,7 +1977,7 @@ "reduced_svg_content": { "1": 8397 }, - "updated_at": "2024-07-25T21:33:02.000000Z" + "updated_at": "2024-08-04T15:58:54.000000Z" }, "287": { "id": 287, @@ -1988,7 +1988,7 @@ "reduced_svg_content": { "1": 22643 }, - "updated_at": "2024-07-25T21:34:04.000000Z" + "updated_at": "2024-08-04T16:00:00.000000Z" }, "500": { "id": 500, @@ -1999,7 +1999,7 @@ "reduced_svg_content": { "1": 3335 }, - "updated_at": "2024-07-25T21:35:33.000000Z" + "updated_at": "2024-08-04T16:01:32.000000Z" }, "498": { "id": 498, @@ -2010,7 +2010,7 @@ "reduced_svg_content": { "1": 3335 }, - "updated_at": "2024-07-25T21:35:33.000000Z" + "updated_at": "2024-08-04T16:01:32.000000Z" }, "77": { "id": 77, @@ -2021,7 +2021,7 @@ "reduced_svg_content": { "1": 11524 }, - "updated_at": "2024-07-25T21:32:55.000000Z" + "updated_at": "2024-08-04T15:58:47.000000Z" }, "360": { "id": 360, @@ -2032,7 +2032,7 @@ "reduced_svg_content": { "1": 5973 }, - "updated_at": "2024-07-25T21:35:26.000000Z" + "updated_at": "2024-08-04T16:01:25.000000Z" }, "536": { "id": 536, @@ -2043,7 +2043,7 @@ "reduced_svg_content": { "1": 26670 }, - "updated_at": "2024-07-29T22:31:03.000000Z" + "updated_at": "2024-08-04T16:01:36.000000Z" }, "437": { "id": 437, @@ -2054,6 +2054,6 @@ "reduced_svg_content": { "1": 23212 }, - "updated_at": "2024-07-25T21:35:32.000000Z" + "updated_at": "2024-08-04T16:01:31.000000Z" } } \ No newline at end of file diff --git a/custom_components/oasis_mini/select.py b/custom_components/oasis_mini/select.py index 32c0bf7..b760089 100644 --- a/custom_components/oasis_mini/select.py +++ b/custom_components/oasis_mini/select.py @@ -6,12 +6,11 @@ from dataclasses import dataclass from typing import Any, Awaitable, Callable from homeassistant.components.select import SelectEntity, SelectEntityDescription -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity import EntityDescription from homeassistant.helpers.entity_platform import AddEntitiesCallback -from .const import DOMAIN +from . import OasisMiniConfigEntry from .coordinator import OasisMiniCoordinator from .entity import OasisMiniEntity from .pyoasismini import AUTOPLAY_MAP, OasisMini @@ -36,11 +35,10 @@ class OasisMiniSelectEntity(OasisMiniEntity, SelectEntity): def __init__( self, coordinator: OasisMiniCoordinator, - entry: ConfigEntry[Any], description: EntityDescription, ) -> None: """Construct an Oasis Mini select entity.""" - super().__init__(coordinator, entry, description) + super().__init__(coordinator, description) self._handle_coordinator_update() async def async_select_option(self, option: str) -> None: @@ -105,13 +103,14 @@ DESCRIPTORS = ( async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, + entry: OasisMiniConfigEntry, + async_add_entities: AddEntitiesCallback, ) -> None: """Set up Oasis Mini select using config entry.""" - coordinator: OasisMiniCoordinator = hass.data[DOMAIN][entry.entry_id] async_add_entities( [ - OasisMiniSelectEntity(coordinator, entry, descriptor) + OasisMiniSelectEntity(entry.runtime_data, descriptor) for descriptor in DESCRIPTORS ] ) diff --git a/custom_components/oasis_mini/sensor.py b/custom_components/oasis_mini/sensor.py index 0fa2361..9dd43a2 100644 --- a/custom_components/oasis_mini/sensor.py +++ b/custom_components/oasis_mini/sensor.py @@ -7,29 +7,29 @@ from homeassistant.components.sensor import ( SensorEntityDescription, SensorStateClass, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import PERCENTAGE, EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from .const import DOMAIN +from . import OasisMiniConfigEntry from .coordinator import OasisMiniCoordinator from .entity import OasisMiniEntity async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, + entry: OasisMiniConfigEntry, + async_add_entities: AddEntitiesCallback, ) -> None: """Set up Oasis Mini sensors using config entry.""" - coordinator: OasisMiniCoordinator = hass.data[DOMAIN][entry.entry_id] + coordinator: OasisMiniCoordinator = entry.runtime_data entities = [ - OasisMiniSensorEntity(coordinator, entry, descriptor) - for descriptor in DESCRIPTORS + OasisMiniSensorEntity(coordinator, descriptor) for descriptor in DESCRIPTORS ] if coordinator.device.access_token: entities.extend( [ - OasisMiniSensorEntity(coordinator, entry, descriptor) + OasisMiniSensorEntity(coordinator, descriptor) for descriptor in CLOUD_DESCRIPTORS ] ) diff --git a/custom_components/oasis_mini/switch.py b/custom_components/oasis_mini/switch.py index 51a7a6a..b94c1db 100644 --- a/custom_components/oasis_mini/switch.py +++ b/custom_components/oasis_mini/switch.py @@ -5,23 +5,22 @@ # from typing import Any # from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription -# from homeassistant.config_entries import ConfigEntry # from homeassistant.core import HomeAssistant # from homeassistant.helpers.entity_platform import AddEntitiesCallback -# from .const import DOMAIN -# from .coordinator import OasisMiniCoordinator +# from . import OasisMiniConfigEntry # from .entity import OasisMiniEntity # async def async_setup_entry( -# hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +# hass: HomeAssistant, +# entry: OasisMiniConfigEntry, +# async_add_entities: AddEntitiesCallback, # ) -> None: # """Set up Oasis Mini switchs using config entry.""" -# coordinator: OasisMiniCoordinator = hass.data[DOMAIN][entry.entry_id] # async_add_entities( # [ -# OasisMiniSwitchEntity(coordinator, entry, descriptor) +# OasisMiniSwitchEntity(entry.runtime_data, descriptor) # for descriptor in DESCRIPTORS # ] # ) diff --git a/custom_components/oasis_mini/update.py b/custom_components/oasis_mini/update.py index 3f8dbf3..5d98585 100644 --- a/custom_components/oasis_mini/update.py +++ b/custom_components/oasis_mini/update.py @@ -12,11 +12,10 @@ from homeassistant.components.update import ( UpdateEntityDescription, UpdateEntityFeature, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from .const import DOMAIN +from . import OasisMiniConfigEntry from .coordinator import OasisMiniCoordinator from .entity import OasisMiniEntity @@ -26,14 +25,14 @@ SCAN_INTERVAL = timedelta(hours=6) async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, + entry: OasisMiniConfigEntry, + async_add_entities: AddEntitiesCallback, ) -> None: """Set up Oasis Mini updates using config entry.""" - coordinator: OasisMiniCoordinator = hass.data[DOMAIN][entry.entry_id] + coordinator: OasisMiniCoordinator = entry.runtime_data if coordinator.device.access_token: - async_add_entities( - [OasisMiniUpdateEntity(coordinator, entry, DESCRIPTOR)], True - ) + async_add_entities([OasisMiniUpdateEntity(coordinator, DESCRIPTOR)], True) DESCRIPTOR = UpdateEntityDescription(