* Convert persistent notification tests to async
* Create/dismiss persistent notifications in exposed functions, not service calls
* Fix notify persistent_notification
* Remove setting up persistent_notification
* Drop more setups
* Empty methods
* Undeprecate sync methods because too big task
* Fix setup clearing notifications
* Fix a bunch of tests
* Fix more tests
* Uno mas
* Test persistent notification events
* Clean up stale comment
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Avoid creating sockets in homekit port available tests
* prevent new bridge from being setup -- its too fast now that the executor job is gone and it revealed an unpatched setup
* Convert all HomeKit service info to string prior to checking for max length
* Added check for None software version
* Added test case for numeric version number
* Update tests/components/homekit/test_accessories.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Fix style & none version test
* Fix test
* revert other change since it should be covered by the format_sw_version fix
Co-authored-by: J. Nick Koston <nick@koston.org>
- Sometimes homekit will go unresponsive because a pairing for a specific
device is missing. To avoid deleting the config entry and recreating
it, which can be a painful process if there are many bridged entities,
the homekit.unpair service allows forceful removal of the pairings so
the accessory can be paired again.
* Fix homekit checking for port cleanup too many times
The loop should have terminated as soon as the port was available
* coverage
* tweak homekit shutdown wait
If an entity changes between restart the iOS/controller
device may have cached the old chars for the accessory.
To force the iOS/controller to reload the chars, we
increment the config version when Home Assistant restarts
When we set up HomeKit, we asked users if they wanted
to create an entry in bridge or accessory mode.
This approach required the user to understand how HomeKit works and
choose which type to create.
When the user includes the media player or camera domains,
we exclude them from the bridge and create the additional entries
for each entity in accessory mode.
* Simplify homekit runs and service calls
Now that the homekit server is async, call_service
and run are running in the Home Assistant event loop
* remove comment
* remove another comment
HomeKit pairings and accessory ids from versions 0.109 and earlier are no longer
migrated on upgrade. Users upgrading directly to 2021.3 from 0.109
and older should upgrade to 2021.2 first if they wish to preserve
HomeKit configuration and avoid re-pairing the bridge.
This change does not affect upgrades from 0.110 and later.
* Fix homekit options not being prefilled
When changing homekit options, the existing ones
were not being prefilled on the form.
* hide camera screen if no cameras
Safe mode was added to work around a race condition where
the mdns announcment was sent too early and would cause
pairing to fail. Since this has been corrected in
HAP-python, there is no longer a need to have
safe mode.
* Make async_get_device connections Optional, default None
* Remove unnecessary async_get_device connections arg usages
Some of these were using an incorrect collection type, which didn't
cause issues mostly just due to luck.
Siri always requests auto mode even when the device does not
support auto which results in the thermostat failing to turn
on as success is assumed. We now determine the heat cool
target mode based on the current temp, target temp, and
supported modes to ensure the thermostat will reach the
requested target temp.
The HomeKit spec does not permit the color temp characteristic
being exposed when color (hue, sat) is present. Since
Home Assistant will still send color temp values, we need to
convert them to hue, sat values for HomeKit
* Refactor zeroconf setup to be async
Most of the setup was calling back to async because
we were setting up listeners. Since we only need
to jump into the executor to create the zeroconf
instance, its much faster to setup in async.
In testing this cut the setup time in half
or better.
* partial revert to after_deps
* Include the context_entity_id in the logbook api
context_entity_id is the first entity seen during
a time period that includes the context
* update test
* more of them
* include friendly name
* pylint wants a ternary
* Refactor
* performance
* fix homekit context
* Fix self describing events
* Fix external_events
* Add support for HomeKit doorbell
* Update homeassistant/components/homekit/type_cameras.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/homekit/type_cameras.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* add speaker service for doorbells
* fixed test as doorbell char requires null value
* removed null value for doorbell presses. and removed broken override of default values
Co-authored-by: J. Nick Koston <nick@koston.org>
* Switch homekit to use async_track_state_change_event
Calling async_track_state_change_event directly
is faster than async_track_state_change and has
slightly lower latency triggering state updates
in homekit
* check for deleted entities
* Update additional tests for linked sensor removals
* Ensure removing entities does not result in an exception
* Add humidifier support to homekit
* spell
* dependencies
* lint
* add linked humidity sensor for humidifiers
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
* apply suggestions from code review
* pylint
* Fix tests
* Update homeassistant/components/homekit/type_humidifiers.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update tests/components/homekit/test_homekit.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
* apply suggestions from code review
* lint
* pylint
* push
* test for unavailable linker sensor
* black
* valid values key case
* black
* Update homeassistant/components/homekit/type_humidifiers.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* black
* coverage
* Set current humidity to 0 if linked sensor removed or unavailable
* use last known humidity instead
Co-authored-by: J. Nick Koston <nick@koston.org>
* Added GLOB capability to entityfilter and every place that uses it. All existing tests are passing
* added tests for components affected by glob change
* fixed flake8 error
* mocking the correct listener
* mocking correct bus method in azure test
* tests passing in 3.7 and 3.8
* fixed formatting issue from rebase/conflict
* Checking against glob patterns in more performant way
* perf improvments and reverted unnecessarily adjusted tests
* added new benchmark test around filters
* no longer using get with default in entityfilter
* changed filter name and removed logbook from filter benchmark
* simplified benchmark tests from feedback
* fixed apache tests and returned include exclude schemas to normal
* fixed azure event hub tests to properly go through component logic
* fixed azure test and clean up for other tests
* renaming test files to match standard
* merged mqtt statestream test changes with base
* removed dependency on recorder filter schema from history
* fixed recorder tests after merge and a bunch of lint errors
* Prefilter more logbook events in sql
Prefilter sensor events in _keep_event before humanify
Cache static attribute lookup
Reduces logbook execution time by ~35%
* fix mocking in benchmark
* Update tests for logbook users
* Only process logbook timestamps for events we will keep
Since we group by minute we were previously processing
every timestamp. We can avoid this by making all the
minute checks use the unprocessed datetime since
the groupings will be the same regardless of timezone.
This reduces the number of datetime object recreations
by at least an order of magnitude.
* Remove zeroconf options from homekit
homekit uses the system shared zeroconf instance which
made the interface choice option controlled by the
zeroconf integration setting.
* change to cv.deprecated
* adj
* fix remaining tests from original merge conflict
* remove invalidation_version
* Fire events on homekit TV remote key press
* Changes from code review
* black
* isort
* flake8
* Update tests/components/homekit/test_type_media_players.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Ensure camera stream can be restarted after failure
* If ffmpeg failed to start, was killed, or the iOS device
closed the stream right away, the stream could never
be started until the HomeKit bridge was restarted.
* watch ffmpeg instead of checking only once
* handle forceful shutdowns gracefully
* Increase coverage
* Homekit cameras - Add codecs support
* Add valid_codecs + move audio application parameter
* Increase video bufsize
* Increase audio bufsize
* Update config flow to be aware of the copy option
* Add tests for copy video and audio codec
* remove unused from test
* remove unused from test
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add homekit camera support
* Cleanup pyhapcamera inheritance
* Add camera to homekit manifest
* Use upstream pyhap server handler in homekit
* Remove unused homekit constants
* Fix lint errors in homekit camera
* Update homekit camera log messages
* Black after conflict fixes
* More conflict fixes
* missing srtp
* Allow streaming retry when ffmpeg fails to connect
* Fix inherit of camera config, force kill ffmpeg on failure
* Fix audio (Home Assistant only comes with OPUS)
* Fix audio (Home Assistant only comes with OPUS)
* Add camera to the list of supported domains.
* add a test for camera creation
* Add a basic test (still needs more as its only at 44% cover)
* let super handle reconfigure_stream
* Remove scaling as it does not appear to be needed and causes artifacts
* Some more basic tests
* make sure no exceptions when finding the source from the entity
* make sure the bridge forwards get_snapshot
* restore full coverage to accessories.py
* revert usage of super for start/stop stream
* one more test
* more mocking
* Remove -tune zerolatency, disable reconfigure_stream
* Restore -tune zerolatency
Co-authored-by: John Carr <john.carr@unrouted.co.uk>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Config flow for homekit
Allows multiple homekit bridges to run
HAP-python state is now stored at .storage/homekit.{entry_id}.state
aids is now stored at .storage/homekit.{entry_id}.aids
Overcomes 150 device limit by supporting
multiple bridges.
Name and port are now automatically allocated
to avoid conflicts which was one of the main
reasons pairing failed.
YAML configuration remains available in order to offer entity
specific configuration.
Entries created by config flow can add and remove
included domains and entities without having to restart
* Fix services as there are multiple now
* migrate in executor
* drop title from strings
* Update homeassistant/components/homekit/strings.json
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Make auto_start advanced mode only, add coverage
* put back title
* more references
* delete port since manual config is no longer needed
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>