BEHAVIOR-001: learn and predict actuator actions
This commit is contained in:
@@ -9,7 +9,14 @@ from app.ha.exceptions import HaClientError
|
||||
|
||||
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.history import (
|
||||
EntityHistorySeries,
|
||||
LogbookEntry,
|
||||
StateHistorySeries,
|
||||
normalize_history_payload,
|
||||
normalize_logbook_payload,
|
||||
normalize_state_history_payload,
|
||||
)
|
||||
from app.ha.models import HaEntitySummary
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -45,6 +52,7 @@ class HaReader:
|
||||
HaEntitySummary(
|
||||
entity_id=entity_id,
|
||||
domain=domain,
|
||||
state=_optional_str(item.get("state")),
|
||||
state_class=_optional_str(attributes.get("state_class")),
|
||||
device_class=_optional_str(attributes.get("device_class")),
|
||||
unit_of_measurement=_optional_str(attributes.get("unit_of_measurement")),
|
||||
@@ -77,6 +85,32 @@ class HaReader:
|
||||
payload = self._client.get_history(entity_ids, start_time, end_time)
|
||||
return normalize_history_payload(payload)
|
||||
|
||||
def read_state_history(
|
||||
self,
|
||||
entity_ids: list[str],
|
||||
start_time: datetime,
|
||||
end_time: datetime,
|
||||
) -> Sequence[StateHistorySeries]:
|
||||
payload = self._client.get_history(entity_ids, start_time, end_time)
|
||||
return normalize_state_history_payload(payload)
|
||||
|
||||
def read_logbook(
|
||||
self,
|
||||
entity_id: str,
|
||||
start_time: datetime,
|
||||
end_time: datetime,
|
||||
) -> Sequence[LogbookEntry]:
|
||||
payload = self._client.get_logbook(entity_id, start_time, end_time)
|
||||
return normalize_logbook_payload(payload, entity_id)
|
||||
|
||||
def call_service(
|
||||
self,
|
||||
domain: str,
|
||||
service: str,
|
||||
service_data: dict[str, object],
|
||||
) -> Sequence[object]:
|
||||
return self._client.call_service(domain, service, service_data)
|
||||
|
||||
|
||||
def _optional_str(value: object) -> str | None:
|
||||
if value is None or value == "":
|
||||
|
||||
Reference in New Issue
Block a user