* Set the nest configuration title to a user friendly name
Set the config entry title name to be the name of the Google Home or
Nest Home that was authorized. In case more than one home was authorized,
they are all listed since they are all accessed over a single shared
home.
* Fix pylint errors
* Resolve pylint errors
Add a lock to avoid multiple calls to create stream URLs when requests race in parallel
to open streams. This is to avoid # of API calls on the nest server which can be
rate limited, and to avoid any possibility of having too many streams per camera outstanding at once.
Add nest mac addresses for cameras and doorbell devices added
in the last few years.
This is in perparation for improving nest discovery, which
currently does not work great because it requires configuration.yaml
* Persist nest media events to disk backed storage
Persist nest events in the media player to disk, targeting about ~500mb
per camera device as a cap. Events are stored in config/nest/event_media/.
Add a NestEventMediaStore is used for persistence. It has three main jobs:
- Read/write the key/value data that holds event data (event type, time, device, etc)
- Read/write media contents to disk
- Pick the filename for the media event based on device and event deatils
The nest event media manager library handles cache management and eviction, and by
default uses an in memory cache. Home Assistant nest integration now provides the
disk backed implementation, which is invoked by the nest library.
The store reads the event metadata key/value dict on startup, and then writes it
back with a short delay of 5 seconds to avoid unnecessary writes.
Future work planned includes:
- Possibly a small memory buffer for media objects themselves. This could make sense
when adding thumbnails to the media player grid to avoid unnecessary fetches
- Transcoding mp4 clips to animated image previews
* Address style errors
* Cleanup from CI test/pylint/etc.
* Put media for each device into its own directory
* Update comments for media store
* Decrease # of events to lower disk requirements
Target more like 1k events, to reduce disk needs.
* Address PR feedback
* Update homeassistant/components/nest/media_source.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Ignore incorrect mypy in nest library
* Fix pylint errors
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add an entity service for saving nest event related snapshots
Add an entity service `nest.snapshot_event` for recording camera event
related media to disk. This is based on `camera.snapshot` but takes in
a parameter for a Nest API event_id.
PR #58299 adds `nest_event_id` to events published by nest so that they can
be hooked up to this service for capturing events.
Future related work includes:
- Height & Width parameters for the rendered image
- Support video clips for new battery cameras
- An API for proxying media related to events, separate from the camera image thumbnail
- A Nest MediaSource for browsing media related to events
* Revert debugging information
* Add test coverage for OSError failure case
* Add service description for nest snapshot service
* Reduce unnecessary diffs.
* Sort nest camera imports
* Remove unnecessary if block in snapshot