Fix netatmo media browser of outdoor events (#40079)

* Fix outdoor events

* Fix test data

* Increase coverage
pull/40179/head
cgtobi 2020-09-15 00:32:20 +02:00 committed by Bram Kragten
parent 3ef821d62f
commit 99a8604601
3 changed files with 58 additions and 6 deletions

View File

@ -284,9 +284,9 @@ class NetatmoCamera(NetatmoBase, Camera):
self._data.events.get(self._id, {})
)
elif self._model == "NOC": # Smart Outdoor Camera
self.hass.data[DOMAIN][DATA_EVENTS][
self._id
] = self._data.outdoor_events.get(self._id, {})
self.hass.data[DOMAIN][DATA_EVENTS][self._id] = self.process_events(
self._data.outdoor_events.get(self._id, {})
)
def process_events(self, events):
"""Add meta data to events."""

View File

@ -80,8 +80,20 @@ class NetatmoSource(MediaSource):
) -> BrowseMediaSource:
if event_id and event_id in self.events[camera_id]:
created = dt.datetime.fromtimestamp(event_id)
thumbnail = self.events[camera_id][event_id].get("snapshot", {}).get("url")
message = remove_html_tags(self.events[camera_id][event_id]["message"])
if self.events[camera_id][event_id]["type"] == "outdoor":
thumbnail = (
self.events[camera_id][event_id]["event_list"][0]
.get("snapshot", {})
.get("url")
)
message = remove_html_tags(
self.events[camera_id][event_id]["event_list"][0]["message"]
)
else:
thumbnail = (
self.events[camera_id][event_id].get("snapshot", {}).get("url")
)
message = remove_html_tags(self.events[camera_id][event_id]["message"])
title = f"{created} - {message}"
else:
title = self.hass.data[DOMAIN][DATA_CAMERAS].get(camera_id, MANUFACTURER)

View File

@ -18,6 +18,7 @@ async def test_async_browse_media(hass):
"12:34:56:78:90:ab": {
1599152672: {
"id": "12345",
"type": "person",
"time": 1599152672,
"camera_id": "12:34:56:78:90:ab",
"snapshot": {
@ -30,6 +31,7 @@ async def test_async_browse_media(hass):
},
1599152673: {
"id": "12346",
"type": "person",
"time": 1599152673,
"camera_id": "12:34:56:78:90:ab",
"snapshot": {
@ -37,9 +39,47 @@ async def test_async_browse_media(hass):
},
"message": "<b>Tobias</b> seen",
},
1599152674: {
"id": "12347",
"type": "outdoor",
"time": 1599152674,
"camera_id": "12:34:56:78:90:ac",
"snapshot": {
"url": "https://netatmocameraimage",
},
"video_id": "98766",
"video_status": "available",
"event_list": [
{
"type": "vehicle",
"time": 1599152674,
"id": "12347-0",
"offset": 0,
"message": "Vehicle detected",
"snapshot": {
"url": "https://netatmocameraimage",
},
},
{
"type": "human",
"time": 1599152674,
"id": "12347-1",
"offset": 8,
"message": "Person detected",
"snapshot": {
"url": "https://netatmocameraimage",
},
},
],
"media_url": "http:///files/high/index.m3u8",
},
}
}
hass.data[DOMAIN][DATA_CAMERAS] = {"12:34:56:78:90:ab": "MyCamera"}
hass.data[DOMAIN][DATA_CAMERAS] = {
"12:34:56:78:90:ab": "MyCamera",
"12:34:56:78:90:ac": "MyOutdoorCamera",
}
assert await async_setup_component(hass, const.DOMAIN, {})
await hass.async_block_till_done()