* Bring greeneye_monitor to 99% coverage.
* Pass monitor into listeners on Monitors
* Updates for changes in `dev`, create mock monitor
* Remove logging left in after debugging
* Remove xfails now that #58764 has merged
* add button platform
* default values for payload and payload_length
* allow `type` configuration for encoded payloads
* add test for type configuration
* move common constants to const.py
- CONF_PAYLOAD
- CONF_PAYLOAD_LENGTH
* validate payload for payload_length or type
* c&p errors
* fix unique_id and pylint
* fix validator
* Add support for PRESSURE_CBAR (centibars). This is the standard UOM for tensiometers.
While the data could be converted into something like MBAR, and displayed
like that, the correct UOM for this type of sensor is CBAR. Displaying
it as MBAR would be the same as displaying air pressure as feet of Hg, while
technically correct, it's hard to understand when reading.
Adding support for this UOM will fix errors in the UI(statistics) about the unit not
matching a unit of the device_class.
* Add tests for PRESSURE_CBAR
* Change existing toggle to add new function
* Fixed using old property method to using actual protected variable.
* Adding service tests to new cover toggle function
* Working on comments from Pull Request 59233
* Adjust existing tests to fit new fake cover setup
* MockCover is calling state method of MockEntity but should call it from CoverEntity
* using different entity to get back test coverage
* Mark octoprint temperature sensors as unavaible when value is not supplied
* Check for none explictly
* Do not mark the entity as unavailable
* Swap to using er.get_async
* Add speed conversion function
* Add test for speed utility functions
* Update unit system tests
* Fix incorrect unit conversions in tests
* Fix some test errors
* Calculate speed units from smaller set of constants
* Fix typo in speed test
* Use pytest.approx for checking floating point values
* Change other instance of speeds needing to be pytest.approx
* Revert changes to unit system
* Fix oopsie in defining in/day and in/hr
* Parametrize test
* Add comments describing calculations & remove duplicate test
* Fix statistics precision error when configured 0, fix#42547
* Add tests for statistics precision
* Apply precision=0 logic to float numbers only
* Implement contextlib way of exception handling
* Catch statistics startup error for None value states, fix#49254
* Add test for statistics None handling
* Update tests/components/statistics/test_sensor.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Switch test case logic to remove sensor last
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Fetch flux_led effects from library
- Each model can have different effects
* Improve support for flux_led pixel/RBM controllers
- RBM effects 1-100 are now available
* empty
* update total_connect_client to 2021.10
* update for total_connect_client changes
* remove unused return value
* bump total_connect_client to 2021.11.1
* bump total_connect_client to 2021.11.2
* Move to public ResultCode
* load locations to prevent 'unknown error occurred'
* add test for zero locations
* Revert "load locations to prevent 'unknown error occurred'"
This reverts commit 28b8984be5.
* Revert "add test for zero locations"
This reverts commit 77bf7908d5.
* convert signal messenger unittest to pytest
* more fixtures
* more assertions and fixed test attachment sending
* reverted unrelated changes
* fixed flake errors
* Flake8 related issues fixed
* HHTPStatus instead of int
* tests for a Symo inverter system
* update testing requirement
* add tests for energy meter data
* move response JSONs to fixture directory
* add storage system response
* review suggestion
* Add binary_sensor to venstar to track alerts
* Add binary_sensor.py to coveragerc
* Apply suggestions from code review by alengwenus
Co-authored-by: Andre Lengwenus <alengwenus@gmail.com>
* Fixup black any mypy complaints
* Yank the typing, it makes everything complain
Co-authored-by: Andre Lengwenus <alengwenus@gmail.com>
* Add support for Installed Auth authentication flows.
Add support for additional credential types to make configuration simpler for
end users. The existing Web App auth flow requires users to configure
redirect urls with Google that has a very high security bar: requires ssl,
and a publicly resolvable dns name.
The new Installed App flow requires the user to copy/paste an access code
and is the same flow used by the `google` calendar integration. This also
allows us to let users create one authentication credential to use with
multiple google integrations.
* Remove hard migration for nest config entries, using soft migration
* Add comment explaining soft migration
* Revet changes to common.py made obsolete by removing migration
* Reduce unnecessary diffs in nest common.py
* Update config entries using library method
* Run `python3 -m script.translations develop`
* Revert nest auth domain
* Remove compat function which is no longer needed
* Remove stale nest comment
* Adjust typing for python3.8
* Address PR feedback for nest auth revamp
* Add type hints.
* Refactor AuroraDevice to AuroraDeviceEntity
* Refactor AuroraDevice to AuroraDeviceEntity
* Connection class is defined in manifest.
* Separate words with underscore in variable names
* Remove duplicated code.
* Remove unused "unknown" string
* Test import yaml when integration already setup
* Remove test already done in config_flow test
* Convert variable names to snake case
* Shorten AuroraDeviceEntity to AuroraEntity
* Add typing
* Remove unnecessary integration setup in test.
* Refactor "already_setup" to "already_configured"
* Use common string
* Reduce the amount of code in the try block.
* Fix merge
* Allow yaml setup to be deferred if no comms
* Properly setup all sensors for defered yaml setup.
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add type hints.
* Refactor AuroraDevice to AuroraDeviceEntity
* Refactor AuroraDevice to AuroraDeviceEntity
* Connection class is defined in manifest.
* Separate words with underscore in variable names
* Remove duplicated code.
* Remove unused "unknown" string
* Test import yaml when integration already setup
* Remove test already done in config_flow test
* Convert variable names to snake case
* Shorten AuroraDeviceEntity to AuroraEntity
* Add typing
* Remove unnecessary integration setup in test.
* Refactor "already_setup" to "already_configured"
* Use common string
* Reduce the amount of code in the try block.
* Allow yaml setup to be deferred if no comms
* Properly setup all sensors for defered yaml setup.
* Code review: move line out of try block.
* Improve test coverage
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Defer unique_id assignment during yaml import if dark
* Back out variable name change to simplify.
* Allow config flow yaml setup deferral.
* Fix deferred yaml import
* Code review: only wrap necessary lines in try blk
* Code review: catch possible duplicate unique_id
* Simplify assignment.
* Code review: use timedelta to retry yaml import
* Code review: if a different error occurs, raise it
* Remove current config entry if duplicate unique_id
* Code review: remove unnecessary line.
* Code review: revert change, leave to other PR.
* Code review: remove unnecessary patch & min->sec
* Remove unnecessary else after raise.
* Increase test coverage.
* Check the number of config entries at each stage
* Raise ConfigEntryNotReady when connection fails.
* Log & return false for error on yaml import
* add configuration url
* extend data update coordinator
* improve exception handling during data update
* store coordinator after first refresh
* fix light init
* Add kWh as cost option for GAS
* Add kWh as cost option for GAS (pylint)
* Add kWh as cost option for GAS (make CONST)
* Change GAS_UNITS to VALID_ENERGY_UNITS
* Add test for Gas cost in kWh (2)
* Back off ENERGY_WATT_HOUR - unlikely for gas
* Add MEGA_WATT_HOUR support (2)
* Normalise pricing for MEGA_WATT_HOUR
* Normalise pricing for MEGA_WATT_HOUR
* Add all kraken entities on startup
* Add _async_add_kraken_sensors
* Add test sensors available after restart
* Add test for config update
* Update tests/components/kraken/test_sensor.py
Co-authored-by: Allen Porter <allen.porter@gmail.com>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* Fix EXT-X-PROGRAM-DATE-TIME in stream
* Update fragment duration comments in worker
* Update duration test in worker
* Augment test on low latency playlists
* Reset start_time on discontinuity
* Add unique ids to yandex_transport entities
* Add support for railway routes to yandex_transport component
* Test suburban timetable parsed correctly
* Remove redundant default value
* Make unique_id unique and stable
* Remove unique_id from yandex_transport component
Yandex recently switched to the new captcha page and the new version of aiomaps supports it.
The check for captcha is moved to platform setup.
Fixes#56035
Fix a bug where a constant configuration variable in the common test library
is modified during the test, causing side effects for other tests.
This was found by renaming the tests, which caused other tests to fail.
* Change precision of Nest sensors
* Add comment to temp rounding
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* Update rounding and tests
* Add test for rounding
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* speed_step must be an integer and a divider of 100
* use percentage_step in tests to test patch
* test with not supported percentage_step
* undo change in test_capabilities
* Use a default precision of one not percentage_step
* typo 2
* Update tests/components/alexa/test_smart_home.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Update homeassistant/components/alexa/capabilities.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* First working draft of number platform
* Replace duration with delay for Hue motion sensors
Improve tests
* Bump dependency to v85
* Use constant for entity category
* Use type rather than using __class__
* Fix unique ID
* Store automation and script traces
* Pylint
* Deduplicate code
* Fix issues when no stored traces are available
* Store serialized data for restored traces
* Update WS API
* Update test
* Restore context
* Improve tests
* Add new test files
* Rename restore_traces to async_restore_traces
* Refactor trace.websocket_api
* Defer loading stored traces
* Lint
* Revert refactoring which is no longer needed
* Correct order when restoring traces
* Apply suggestion from code review
* Improve test coverage
* Apply suggestions from code review
* Add support for daily and monthly statistics
* Remove debug code
* Format code
* Don't use dateutil package
* Remove 2 TODOs
* Remove TODO
* Add comments
Camera devices may support multiple stream sources so we want to clarify that
this is meant to decide which stream source is used in the frontend only.
Will set stream_type temporarily to allow rollout without breaking nightly,
and this will be removed after frontend is updated.
* Add battery and location last_activity sensors
* Drop state attributes
* Drop ATTR_LAST_UPDATE
* Adjust tests
* Mark new sensors as disabled_default
* Add default_disabled attribute
* Add context managers
* Adjust tests for disabled entities
* Add support for entity categories to MQTT entities
* Improve test
* Apply suggestions from code review
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Update homeassistant/components/mqtt/mixins.py
Co-authored-by: Paul Monigatti <paulmonigatti@users.noreply.github.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Paul Monigatti <paulmonigatti@users.noreply.github.com>
* Add WebSocket API for intiting a WebRTC stream
See https://github.com/home-assistant/architecture/discussions/640
* Add nest support for initiating webrtc streams
Add an implementation of async_handle_web_rtc_offer in nest, with test coverage.
Issue #55302
* Rename offer variable to match overriden variable name
* Remove unnecessary checks covered by websocket function
* Update homeassistant/components/camera/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* replace base in availability topic
* add tests for availability shortcuts - fix import
* group constants
* simplified loop
* Moving constants to .const
* rename value to topic
* move CONF_TOPIC to .const
* move CONF_AVAILABILITY to .const
* remove check for string
* Silently ignore if no config topic is found.
* CONF_TOPIC should be required
* Add config_flow to Environment Canada
* Add unique_id
* Remove erroneous directory.
* Tests working!!
* Add back setup.
* First cut of import.
* Temp
* Tweak names.
* Import config.yaml.
* Clean up imports.
* Import working! Some refactor to clean it up.
* Add import test.
* Small optimization.
* Fix comments from code review.
* Remove CONF_NAME and config_flow for it.
* Fixup strings to match new config_flow.
* Fixes for comments from last review.
* Update tests to match new import code.
* Clean up use of CONF_TITLE; fix lint error on push.
* Phew. More cleanup on import. Really streamlined now!
* Update tests.
* Fix lint error.
* Fix lint error, try 2.
* Revert unique_id to use location as part of ID.
* Fix code review comments.
* Fix review comments.
* Improve Whirlpool component code
This implements a few suggestions given in
https://github.com/home-assistant/core/pull/48346#pullrequestreview-773552670
* Add return typing
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add reason assertion to config_flow test
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add WebSocket API for intiting a WebRTC stream
See https://github.com/home-assistant/architecture/discussions/640
* Increase test coverage for webrtc camera stream
* Apply suggestions from code review
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Fix transition handling for tplink light
* Apply suggestions from code review
* Test that all transitions are passed correctly
* Fix linting
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Listen for config updates from DlnaDmrEntity.async_added_to_hass
Use `Entity.async_on_remove` for dealing with callback cancellation,
instead of re-inventing the wheel with `_remove_ssdp_callbacks`.
* Use async_write_ha_state within async methods
* Import YAML config from async_setup_platform
* Import flow prompts user when device is uncontactable during migration
When config flow is able to contact a device, or when it has information
from SSDP, it will create config entries without error. If the device is
uncontactable at this point then it will appear as unavailable in HA
until it is turned on again.
When import flow cannot migrate an entry because it needs to contact the
device and can't, it will notify the user with a config flow form.
* Don't del unused parameters, HA pylint doesn't care
* Remove unused imports from tests
* Abort config flow at earliest opportunity
* Return async_abort instead of raising AbortFlow
* Consolidate config entry test cleanup into a single function
* fixup! Consolidate config entry test cleanup into a single function
Revert "Consolidate config entry test cleanup into a single function"
This reverts commit 8220da7263.
* Check resource acquisition/release in specific tests
* fixup! Check resource acquisition/release in specific tests
* Remove unused network dependency from manifest
* _on_event runs in async context
* Call async_write_ha_state directly (not via shedule_update)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Refactor Xiaomi vacuum with sensors.
This is the first step into refactoring xiaomi vacuum attributes into sensors.
What is missing are some switches and binary sensors etc.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Use generic sensor for Xiaomi vacuum sensors.
By using HA coordinator, the generic Xiaomi sensor class can be used with these
coordinators to get the status sensors from vacuum. This also means now that
sensors are available as soon as HA starts, which is a nice plus.
Now the only reason to create a subclass of the generic sensors is when custom
value parsing needs to be done.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Working vacuum sensors via 1 coordinator.
Vacuum needs a custom coordinator to ensure that it fetches all the needed data
and puts it in a dict. From this dict the sensors will then get their data
accordingly.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Remove vacuum setup method in sensor
Sensor is generic enough that vacuum does not require its own setup method.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Don't auto register generic sensors.
Let the user decide which sensor is useful for them and enable them.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Remove converted attributes from xiaomi vacuum.
The attributes that have been converted so far should be removed from the vacuum
attributes list.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Fetch data from vacuum sequentially.
It seems some vacuums do not like parallel requests. The requests that came
before are ignored.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Refactor vacuum sensors to its own container.
By moving vacuum sensors to its own container, there is no more key collisions.
This in turns means that there is need for the split hack to ensure key names
are correct.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* fixup! fix bad rebase.
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Fix sensor naming and default registration.
Use proper names for sensors, no need to include from which device status it
came.
Registration of the sensor by default has been parameterised. If the param is
not set, the sensor is not registered.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Make vacuum platform also use coordinator for its data.
By using the coordinator for data in vacuum platfrom, removes the cases where
request gets ignored during the case where the requests are done concurrently by
separate platforms.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Add binary sensor for vacuum
Add binary sensor for waterbox, mop, and water shortage.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Added proper icons to sensors.
https://github.com/home-assistant/core/issues/51361
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Refactor sensors to use dataclass.
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Make vacuum use coordinator for its data.
This commit also insures that the binary sensors are only registered for devices
that include a mop.
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Minor refactoring
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Update data from coordinator after running command.
This is is to have a faster status change when executing a command like changing
fan speeds. If a manual refresh is not triggered. Worst case scenario it will
take 10s for the new fan speed to be reported in HA.
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Refresh within coroutine is ok.
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Move logging to _handle_coordinator_update
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Use internal state attribute.
Signed-off-by: Kevin Hellemun <17928966+OGKevin@users.noreply.github.com>
* Fix vacuum typing
* Fix tests constants
* Fix vacuum inconsistent return values
* Fix vacuum state update
* Fix vacuum tests
* Remove impossible cases
* Parametrize custom services test
* Move goto test
* Move clean segment test
* Move clean single segment test
* Test service pause
* Include vacuum in coverage
* Delint
* Fix vacuum sensor dict collision.
This also prevents collision for unique id. As the key is used to construct
unique ids.
* Use f strings as dict keys
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
- These devices sometimes do not respond on the first try
or may be subject to transient broadcast failures, or
overloads. We now try discovery periodically once the
integration has been loaded.
- We used to try this 4x at startup, but that solution
seemed to aggressive as we want to be sure we pickup
the devices after startup as well since the network
will likely be more calm after startup.
* 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>
* fix login issue
* fix:login error
* update COUNTRY_CODE_CHINA line location
* added one blank line
* feat:added line #L88 was not covered by tests
* ci build errors
Co-authored-by: erchuan <jie.zheng@tuya.com>
- These sensors wobble quite a bit and the precision did
not have sensible limits which generated a massive amount
of data in the database which was not very useful