From 22b8957ac24cbff0095b5fcba0f0c9d295652fc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Cogn=C3=A9e?= Date: Sun, 14 Jul 2024 11:21:13 +0200 Subject: [PATCH] feat: expose camera person status --- src/pyatmo/home.py | 4 ++++ src/pyatmo/person.py | 7 +++++++ tests/test_camera.py | 5 ++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/pyatmo/home.py b/src/pyatmo/home.py index 0c593969..db114eb7 100644 --- a/src/pyatmo/home.py +++ b/src/pyatmo/home.py @@ -141,6 +141,10 @@ async def update(self, raw_data: RawData) -> None: for room in data.get("rooms", []): self.rooms[room["id"]].update(room) + for person_status in data.get("persons", []): + if person := self.persons.get(person_status["id"]): + person.update(person_status) + self.events = { s["id"]: Event(home_id=self.entity_id, raw_data=s) for s in data.get(EVENTS, []) diff --git a/src/pyatmo/person.py b/src/pyatmo/person.py index 8e413646..b1003aaa 100644 --- a/src/pyatmo/person.py +++ b/src/pyatmo/person.py @@ -21,6 +21,8 @@ class Person(NetatmoBase): pseudo: str | None url: str | None + out_of_sight: bool | None + last_seen: int | None def __init__(self, home: Home, raw_data: RawData) -> None: """Initialize a Netatmo person instance.""" @@ -29,3 +31,8 @@ def __init__(self, home: Home, raw_data: RawData) -> None: self.home = home self.pseudo = raw_data.get("pseudo") self.url = raw_data.get("url") + + def update(self, raw_data: RawData) -> None: + """Update person data.""" + self.out_of_sight = raw_data.get("out_of_sight") + self.last_seen = raw_data.get("last_seen") diff --git a/tests/test_camera.py b/tests/test_camera.py index c43e2ade..d0d19100 100644 --- a/tests/test_camera.py +++ b/tests/test_camera.py @@ -23,7 +23,10 @@ async def test_async_camera_NACamera(async_home): # pylint: disable=invalid-nam assert module.local_url == "http://192.168.0.123/678460a0d47e5618699fb31169e2b47d" person_id = "91827374-7e04-5298-83ad-a0cb8372dff1" assert person_id in module.home.persons - assert module.home.persons[person_id].pseudo == "John Doe" + person = module.home.persons[person_id] + assert person.pseudo == "John Doe" + assert person.out_of_sight + assert person.last_seen == 1557071156 @pytest.mark.asyncio