Fix netatmo media browser of outdoor events (#40079)
* Fix outdoor events * Fix test data * Increase coverage
This commit is contained in:
parent
bdaea7879b
commit
cb0452d80e
3 changed files with 58 additions and 6 deletions
|
@ -284,9 +284,9 @@ class NetatmoCamera(NetatmoBase, Camera):
|
||||||
self._data.events.get(self._id, {})
|
self._data.events.get(self._id, {})
|
||||||
)
|
)
|
||||||
elif self._model == "NOC": # Smart Outdoor Camera
|
elif self._model == "NOC": # Smart Outdoor Camera
|
||||||
self.hass.data[DOMAIN][DATA_EVENTS][
|
self.hass.data[DOMAIN][DATA_EVENTS][self._id] = self.process_events(
|
||||||
self._id
|
self._data.outdoor_events.get(self._id, {})
|
||||||
] = self._data.outdoor_events.get(self._id, {})
|
)
|
||||||
|
|
||||||
def process_events(self, events):
|
def process_events(self, events):
|
||||||
"""Add meta data to events."""
|
"""Add meta data to events."""
|
||||||
|
|
|
@ -80,7 +80,19 @@ class NetatmoSource(MediaSource):
|
||||||
) -> BrowseMediaSource:
|
) -> BrowseMediaSource:
|
||||||
if event_id and event_id in self.events[camera_id]:
|
if event_id and event_id in self.events[camera_id]:
|
||||||
created = dt.datetime.fromtimestamp(event_id)
|
created = dt.datetime.fromtimestamp(event_id)
|
||||||
thumbnail = self.events[camera_id][event_id].get("snapshot", {}).get("url")
|
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"])
|
message = remove_html_tags(self.events[camera_id][event_id]["message"])
|
||||||
title = f"{created} - {message}"
|
title = f"{created} - {message}"
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -18,6 +18,7 @@ async def test_async_browse_media(hass):
|
||||||
"12:34:56:78:90:ab": {
|
"12:34:56:78:90:ab": {
|
||||||
1599152672: {
|
1599152672: {
|
||||||
"id": "12345",
|
"id": "12345",
|
||||||
|
"type": "person",
|
||||||
"time": 1599152672,
|
"time": 1599152672,
|
||||||
"camera_id": "12:34:56:78:90:ab",
|
"camera_id": "12:34:56:78:90:ab",
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
|
@ -30,6 +31,7 @@ async def test_async_browse_media(hass):
|
||||||
},
|
},
|
||||||
1599152673: {
|
1599152673: {
|
||||||
"id": "12346",
|
"id": "12346",
|
||||||
|
"type": "person",
|
||||||
"time": 1599152673,
|
"time": 1599152673,
|
||||||
"camera_id": "12:34:56:78:90:ab",
|
"camera_id": "12:34:56:78:90:ab",
|
||||||
"snapshot": {
|
"snapshot": {
|
||||||
|
@ -37,9 +39,47 @@ async def test_async_browse_media(hass):
|
||||||
},
|
},
|
||||||
"message": "<b>Tobias</b> seen",
|
"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, {})
|
assert await async_setup_component(hass, const.DOMAIN, {})
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue