HA-008 HA-009: add discovery and history pipeline
Closes #17 Closes #18
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Sequence
|
||||
from datetime import datetime
|
||||
from typing import Any
|
||||
|
||||
from app.ha.client import HaClient
|
||||
from app.ha.discovery import DiscoveredEntity, discover_entities
|
||||
from app.ha.history import EntityHistorySeries, normalize_history_payload
|
||||
from app.ha.models import HaEntitySummary
|
||||
|
||||
|
||||
@@ -33,6 +36,22 @@ class HaReader:
|
||||
)
|
||||
return summaries
|
||||
|
||||
def discover(
|
||||
self,
|
||||
domains: set[str] | None = None,
|
||||
learnable: bool | None = None,
|
||||
) -> Sequence[DiscoveredEntity]:
|
||||
return discover_entities(list(self.read_entities()), domains=domains, learnable=learnable)
|
||||
|
||||
def read_history(
|
||||
self,
|
||||
entity_ids: list[str],
|
||||
start_time: datetime,
|
||||
end_time: datetime,
|
||||
) -> Sequence[EntityHistorySeries]:
|
||||
payload = self._client.get_history(entity_ids, start_time, end_time)
|
||||
return normalize_history_payload(payload)
|
||||
|
||||
|
||||
def _optional_str(value: object) -> str | None:
|
||||
if value is None or value == "":
|
||||
|
||||
Reference in New Issue
Block a user