homeconnect-watcher 0.0.12.dev1__tar.gz → 0.0.12.dev2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/PKG-INFO +1 -1
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/_version.py +2 -2
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/client/appliance.py +7 -8
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/client/client.py +8 -6
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/exporter/postgres.py +6 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher.egg-info/PKG-INFO +1 -1
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/.github/workflows/ci.yaml +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/.github/workflows/publish.yaml +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/.gitignore +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/.pre-commit-config.yaml +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/LICENSE +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/README.md +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/pyproject.toml +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/setup.cfg +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/__init__.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/api.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/cli.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/client/__init__.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/db/__init__.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/db/client.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/db/utils.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/db/view.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/event.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/exceptions.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/exporter/__init__.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/exporter/base.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/exporter/file.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/read.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/sql/0_appliances.sql +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/sql/1_events.sql +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/sql/2_raw_events_active.sql +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/sql/3_raw_events_with_session_id.sql +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/sql/4_sessions.sql +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/trigger.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/utils/__init__.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/utils/logging.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/utils/metrics.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/utils/retry.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/utils/timeout.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher.egg-info/SOURCES.txt +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher.egg-info/dependency_links.txt +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher.egg-info/entry_points.txt +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher.egg-info/requires.txt +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher.egg-info/top_level.txt +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/client/test_client.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/conftest.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/db/test_db_client.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/db/test_views.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/db/views/conftest.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/db/views/test_view_appliances.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/db/views/test_view_events.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/db/views/test_view_session.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/exporter/test_file.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/exporter/test_postgres.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/test_event.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/utils/test_retry.py +0 -0
- {homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/utils/test_timeout.py +0 -0
|
@@ -12,5 +12,5 @@ __version__: str
|
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
|
13
13
|
version_tuple: VERSION_TUPLE
|
|
14
14
|
|
|
15
|
-
__version__ = version = '0.0.12.
|
|
16
|
-
__version_tuple__ = version_tuple = (0, 0, 12, '
|
|
15
|
+
__version__ = version = '0.0.12.dev2'
|
|
16
|
+
__version_tuple__ = version_tuple = (0, 0, 12, 'dev2')
|
|
@@ -14,14 +14,13 @@ class HomeConnectAppliance:
|
|
|
14
14
|
self.appliance_id = appliance_id
|
|
15
15
|
self.appliance_type = appliance_type
|
|
16
16
|
self._available_programs: list[str] | None = None
|
|
17
|
-
self._last_update: float =
|
|
17
|
+
self._last_update: dict[str, float] = dict()
|
|
18
18
|
|
|
19
19
|
def __repr__(self) -> str:
|
|
20
20
|
return f"HomeConnect{self.appliance_type}(ha_id={repr(self.appliance_id)})"
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return time() - self._last_update
|
|
22
|
+
def time_since_update(self, request_type: str) -> float:
|
|
23
|
+
return time() - self._last_update.get(request_type, 0)
|
|
25
24
|
|
|
26
25
|
async def get_available_programs(self) -> list[str] | None:
|
|
27
26
|
if self._available_programs is None:
|
|
@@ -43,24 +42,24 @@ class HomeConnectAppliance:
|
|
|
43
42
|
return self._available_programs if len(self._available_programs) else None
|
|
44
43
|
|
|
45
44
|
async def get_status(self) -> HomeConnectEvent:
|
|
46
|
-
self._last_update
|
|
45
|
+
self._last_update["status"] = time()
|
|
47
46
|
response = await self.client._get(f"/{self.appliance_id}/status")
|
|
48
47
|
return HomeConnectEvent.from_request(request="STATUS", appliance_id=self.appliance_id, response=response)
|
|
49
48
|
|
|
50
49
|
async def get_settings(self) -> HomeConnectEvent:
|
|
51
|
-
self._last_update
|
|
50
|
+
self._last_update["settings"] = time()
|
|
52
51
|
response = await self.client._get(f"/{self.appliance_id}/settings")
|
|
53
52
|
return HomeConnectEvent.from_request(request="SETTINGS", appliance_id=self.appliance_id, response=response)
|
|
54
53
|
|
|
55
54
|
async def get_active_program(self) -> HomeConnectEvent:
|
|
56
|
-
self._last_update
|
|
55
|
+
self._last_update["active_program"] = time()
|
|
57
56
|
response = await self.client._get(f"/{self.appliance_id}/programs/active")
|
|
58
57
|
return HomeConnectEvent.from_request(
|
|
59
58
|
request="ACTIVE-PROGRAM", appliance_id=self.appliance_id, response=response
|
|
60
59
|
)
|
|
61
60
|
|
|
62
61
|
async def get_selected_program(self) -> HomeConnectEvent:
|
|
63
|
-
self._last_update
|
|
62
|
+
self._last_update["selected_program"] = time()
|
|
64
63
|
response = await self.client._get(f"/{self.appliance_id}/programs/selected")
|
|
65
64
|
return HomeConnectEvent.from_request(
|
|
66
65
|
request="SELECTED-PROGRAM", appliance_id=self.appliance_id, response=response
|
|
@@ -192,17 +192,19 @@ class HomeConnectClient:
|
|
|
192
192
|
if trigger is None:
|
|
193
193
|
return
|
|
194
194
|
appliance = await self.get_appliance(trigger.appliance_id)
|
|
195
|
-
if trigger.interval and appliance.time_since_update < 300:
|
|
196
|
-
return # If the trigger is an interval trigger, only do requests if last requests were 5 minutes ago.
|
|
197
195
|
if trigger.status:
|
|
198
|
-
|
|
196
|
+
if not trigger.interval or appliance.time_since_update("status") >= 300:
|
|
197
|
+
yield await appliance.get_status()
|
|
199
198
|
if trigger.settings:
|
|
200
|
-
|
|
199
|
+
if not trigger.interval or appliance.time_since_update("settings") >= 300:
|
|
200
|
+
yield await appliance.get_settings()
|
|
201
201
|
if await appliance.get_available_programs(): # Only if the appliance supports programs.
|
|
202
202
|
if trigger.active_program:
|
|
203
|
-
|
|
203
|
+
if not trigger.interval or appliance.time_since_update("active_program") >= 300:
|
|
204
|
+
yield await appliance.get_active_program()
|
|
204
205
|
if trigger.selected_program:
|
|
205
|
-
|
|
206
|
+
if not trigger.interval or appliance.time_since_update("selected_program") >= 300:
|
|
207
|
+
yield await appliance.get_selected_program()
|
|
206
208
|
|
|
207
209
|
def _load_token(self) -> OAuth2Token | None:
|
|
208
210
|
"""Load the OAuth token from file."""
|
|
@@ -24,3 +24,9 @@ class PGExporter(BaseExporter, WatcherDBClient):
|
|
|
24
24
|
if datetime.now() > self._next_refresh:
|
|
25
25
|
self.refresh_views()
|
|
26
26
|
self._next_refresh: datetime = datetime.now() + self.refresh_interval
|
|
27
|
+
|
|
28
|
+
def bulk_export(self, events: list[HomeConnectEvent]) -> None:
|
|
29
|
+
self.write_events(events)
|
|
30
|
+
if datetime.now() > self._next_refresh:
|
|
31
|
+
self.refresh_views()
|
|
32
|
+
self._next_refresh: datetime = datetime.now() + self.refresh_interval
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/.github/workflows/ci.yaml
RENAMED
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/.github/workflows/publish.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/api.py
RENAMED
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/cli.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/event.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/src/homeconnect_watcher/read.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/client/test_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/db/test_db_client.py
RENAMED
|
File without changes
|
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/db/views/conftest.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/exporter/test_file.py
RENAMED
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/exporter/test_postgres.py
RENAMED
|
File without changes
|
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/utils/test_retry.py
RENAMED
|
File without changes
|
{homeconnect_watcher-0.0.12.dev1 → homeconnect_watcher-0.0.12.dev2}/tests/utils/test_timeout.py
RENAMED
|
File without changes
|