* Update climate.py
Not allowed to pass coroutines to hassjob.
* Update climate.py
* Lint
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* edl21: Handle 1-0:96.50.1*1 and 1-0:96.1.0*255
* edl21: Use 1-0:96.1.0*255 as alternative electricity ID
* edl21: Fix copy-paste error in comments
* edl21: Add active amperage sensors
* edl21: Bump pysml to 0.0.3 to fix format of electricity ID
* Update sensor.py
* Changed as requested
Thanks, tested and works ok.
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
By default these tables are created with utf8 which can only hold 3 bytes. This
meant that all emjoi would trigger a MySQLdb._exceptions.OperationalError because
they are 4 bytes.
This will only fix the issue for users who recreate their tables.
* MariaDB doesn't purge #42402
This addresses home-assistant#42402
Relationships within table "states" and between tables "states" and "events " home-assistant#40467 prevent the purge from working correctly. The database increases w/o any purge.
This proposal sets related indices to NULL and permits deleting of rows.
Further explanations can be found here home-assistant#42402
This proposal also allows to purge the tables "events" and "states" in any order.
* Update models.py
Corrected for Black style requirements
* Update homeassistant/components/recorder/models.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add the options to foreign key constraints
* purge old states when database gets deleted out from under us
* pylint
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add fan support
* Add HVAC cool support
* Fix Martins comment from #43607
* Add preset support
* Improve climate test coverage
* Remove fan support
* Remove preset support
* Remove last preset piece
* Make input_datetime better handle timezones
* Improve test coverage
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Revert change to time format
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add nest SDM API camera/doorbell events
Events are fired when pubsub messages are received. When messages
are received lookup a home assistant device id from the nest
device id, so that the home assistant device id can be included
in the event payload.
* Update homeassistant/components/nest/__init__.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update nest code style based on PR feedback
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* asuswrt: Decrease number of connects per sensor
* Changed implementation to DataUpdateCoordinator
* review changes
* update aioasuswrt dependency
* Apply suggestions from code review
Add explicit return None and fix type hint
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Improve control of covers
* Log backtrace if available
* Do not create entity for controller tool
Binary sensor should use state rather than is_tripped
Add some more tests to lights and sensors
* Bump dependency to v74
* Fix Balloobs comments
Per ADR-0010, this PR deprecates YAML configuration for Solar-log. Users who already use the Solar-log integration do not need to take action, as their configuration has already been imported into the UI.
* Upgrade discord.py to 1.5.1
discord.py 1.5.1 introduces support for Intents that are required by future bots and integrations. While this is not yet required by Home Assistant Discord integration it is needed in the future, because old API which discord.py 1.4.1 uses is now deprecated. Also it would solve dependency collision with my custom component discord_game.
* Upgrade discord.py to 1.5.1
The Zigbee specification mandates that temperatures are given in
1/100ths of degrees, and several devices are able to provide temperature
readings or accept target temperature settings with precision equal or
better than 0.1°C. Yet the ZHA climate entity implementation advertises
an hard-coded precision of 0.5°C.
Avoid arbitrary coarsening by advertising 0.1°C precision, as passing
through the full 0.01°C precision is probably not that useful.
* Switch to plugwise module and forthcoming changes
* Adjusted according to review
* Fix leaving out domain for tests
* Add tests for exceptions
* Add more tests for exceptions
* Version bump
* Wording on test
* Catch-up with dev
* Add new air-humidifier device CA4 with miot protocol
* Update homeassistant/components/xiaomi_miio/fan.py
Co-authored-by: Teemu R. <tpr@iki.fi>
* xiomi_miio fan Standard speed for fan, removed static attributes
* xiomi_miio fan Standard speed for fan, removed static attributes
* xiomi_miio fan unnessary elif
* added mode_mapping
* Changed mode_mapping to constant also move reverse to constant
* Removerd water_level
* Return to exclude breaking changes
Co-authored-by: Teemu R. <tpr@iki.fi>
* Add twinkly integration
* Add tests for the Twinkly integration
* Update Twinkly client package to fix typo
* Remove support of configuration.yaml from Twinkly integration
* Add ability to unload Twinkly component from the UI
* Remove dead code from Twinkly
* Fix invalid error namespace in Twinkly for python 3.7
* Fix tests failing on CI
* Workaround code analysis issue
* Move twinkly client init out of entry setup so it can be re-used between entries
* Test the twinkly component initialization
* React to PR review and add few more tests
* Refactor ZHA sensors to use cached values after restart
* Get attr from cluster, not channel
* Run cached state through formatter method
* Use cached values for div/multiplier for SmartEnergy channel
* Restore batter voltage from cache
* Refactor sensor to use cached values only
* Update tests
* Add battery sensor test
* Set command only cover
* No need for override position now that we support command only
* Return empty state response for assumed state
Fixes#43178
Reverts: #23498
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Notifications extract from beta
* Remove info loggings
* Delete notification service
* Only notifications for right smiles
* Revert to correct logic
* Catchup with dev (mostly with ourselves from #41201)
* Remove debug logging
* Naming improvement
* Improve test quality as per codecov patch requirement
* Revert to original condition (and appropriately test)
* Fix delete_notification_service, bring tests fixtures up to 1.6.0 including notifications
* Review comment (@bouwew)
* Correct test value
* Re-apply #40108 fix after rebase sidestep
* Update tests/components/plugwise/test_init.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Add needed state to imports
* Remove separate gw unload code
* Change entry_fail approach
* Revert persistent notification part
* Revert persistent notification part - lint
* Update homeassistant/components/plugwise/binary_sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/plugwise/binary_sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Rework reuse of sensor in binary_sensor
* Explicit state attribute keys
* Remove tempfile
* List of notifications per severity
* Update homeassistant/components/plugwise/binary_sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Remove unnecessary pts adjustments
* Add comments
* Use -inf for initial last_dts to be more clear
* Use video first_pts as common adjuster in recorder
* Remove seek(0) before av.open
* Remove unnecessary pts adjustments
* Add comments
* Use -inf for initial last_dts to be more clear
* Use video first_pts as common adjuster in recorder
* Remove seek(0) before av.open
* apply suggestions from #42697
* fix tests
* use MockConfigEntry for test
* use hass.config_entries.async_setup()
* disable default fixture
* rename marker to no_bypass_setup
* Support for BG1 switches after config flow updates to core Broadlink component
* updates based on @felipediel feedback
* Update updater.py
* Update switch.py
* Update switch.py
* Add support for learning RF codes with Broadlink remotes
* Rename INFRARED and RADIOFREQUENCY to COMMAND_TYPE_IR and COMMAND_TYPE_RF
* Rewrite if expression as normal if statement
* Use COMMAND_TYPE_IR directly and improve error messages
* add initial rest query params
* of course I didn't run black
* fix tests
* fix tests
* add test
* reformat
* add binary sensor test
* fix tests
* add one more test and fix switch
* should not have touched that
* if you don't pay attention once
* add reboot and shutdown service to synology_dsm
* apply suggestions
* make _async_setup_services() async
* add comment to make sure unique_id is serial
* Limit concurrency of async_get_integration to avoid creating extra threads
Since async_get_integration is waiting on the disk most of the time
it would end up creating many new threads because the disk could
not deliver the data in time.
* pylint
* Extend WS API result when enabling an entity
* Fix tests
* Fix tests
* Move updated registry entry to sub dict
* Address review comments
* Increase test coverage
This has a small chance of breaking tables with older firmwares; if your table has issues, make sure it is running at least firmware v1.10.73.
From the release notes for the new version:
[3.0] - 2020-11-08
==================
Added
-----
* Track remaining/total time support (requires recent firmware)
* Test shell program
Changed
-------
* Reworked the data model to match how Sisyphus itself does it. This fixes crashes that were occurring working with tables that have the latest firmware, but may break things with older firmwares.
* Switched to `python-socketio` for Socket.IO support, as it is more actively maintained than `SocketIO-client-nexus`.
* Switched to VSCode for development
* Initial switch-group/stretch with failing wk_lisa_battery test
* Adding switch tests, but TypeErrors, needs more investigation
* Fixes and tests aligned
* Review updates
* Use const
* Comments
* Add stretch hostname for testing part
* Remove unused consts
* Revert guardings in line with -beta
* Catchup with dev (mostly with ourselves from #41201)
* Update docstring
* Remove debug logging
* Fix for #42725 (incorrect entity namingi)
* Fix naming for gas interval
* Add missing CONF_USERNAME and use of it
* Change "dummy" to "class"
* Don't use "class"
* Fix CONF_USERNAME default, dummy and other consts
Co-authored-by: Bouwe Westerdijk <11290930+bouwew@users.noreply.github.com>
* check for false config in modbus tests.
add call to pytest.fail() if device cannot be defined.
* correct bit error in register read.
Only LSB is to be considered for checking ON/OFF
* Add register tests for modbus switch.
Copy the coil tests to work for register tests.
* allow test coverage to control switch.py
With both register and coil test the coverage is a log higher than 50%
* Correct minor bug in handling of register in modbus switch
* Add state_on/state_off test for modbus switch
* restore modbus switch exclusion from coverage
switch file coverage is only at 72%, ideally we want either 80%+ coverage on the file or 90%+ on the component itself which is only about 83% currently with this file included. this is so we keep the overall project coverage in 90%+.
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Allow coordinator ZDO binding/unbinding operations
* Let coordinator to provide endpoint it
* Refactor ClusterPair to a dataclass
* Rename ClusterPair
* Add unique_id property
After HA 0.111 the ARWN platform's lack of a unique_id causes the
sensors to fail to register correctly. The unique_id for this is just
a slug which is the mqtt topic that it's inbound on.
Also change the logging to INFO for data received to make it fit
better in the logging levels and show up during '-v' runs.
* use topic as unique_id
fix logging
* fix final topic location
* fix black
* address the fact that some topics have more than one sensor
This splits up rain and wind sensors to unique topics
* address review comments
This is now called "Settings", not "Account Settings", on the home page. (Confusingly the page the button leads to is still titled "Account Settings".)
Also add a missing quote and tweak grammar.
* Cleanup dispatchers
* Fix name
* Refactor code
* Fix typo in function description
* Fix pylint error
* Change function definition
* Move cleanup_callbacks data to domain
* Cleanup dispatchers
* Fix name
* Refactor code
* Fix typo in function description
* Fix pylint error
* Change function definition
* Move cleanup_callbacks data to domain
These workarounds inevitably ended up assuming the wrong thing
In issue #42444 they would assume it was still opening, and
in issue #41645 they would assume is was already closed.
* Add yaml for snapshot services
Adds snapshot_full and snapshot_partial service descriptions.
* fixes
Added password to full & partial. Added name to partial.
This is a bump by two dot versions of the library. The 0.8.6 version had
a number of internal improvements to the library. No external changes.
The 0.8.7 version fixes
https://github.com/home-assistant/core/issues/20630.
Add missing config key for no_url_available when generating new oauth2
config entry based integrations. This was found in issue #42423 where
the nest integration was missing a string when a user had a misconfiguration.
* Add a "next day" attribute for recollect_waste
* Add a "next_day" attribute for recollect_waste
* Added "next day" capability to recollect_waste
* Add a "next_day" attribute for recollect_waste
* Add better try/catch for recollect_waste
The current implementation assumed clocks were in sync and did
not account for the time it took to refresh the token. A 20
second buffer has been added to ensure that the token is refreshed
before it expires as OAuth2Session.valid_token would assume the
token was still good even though the remote would reject it
and would not refresh because it was not time yet.
* Bump libhdate depndency
This version fixes an important bug found by @amitfin in py-libhdate/py-libhdate#78
* Update reqs
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Bump libhdate depndency
This version fixes an important bug found by @amitfin in py-libhdate/py-libhdate#78
* Update reqs
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* xiaomi_miio: only log update exceptions once
Replaces #37695
* add som more missed exception logger cases + do not change the control flow as pointed out by @cgtobi
* Use patch&MagickMock from tests.async_mock
* Fix linting for alarm_control_panel
* update the test to verify that the warning on update is only logged when the device was previously available
* Use common strings in opentherm_gw config flow
* Combine TimeourError and SerialException handling
* Fixed test_form_connection_error
* And then fix the flake8 error...
* Change "timeout" to "cannot_connect" msg
* Send pro-active IAS Enroll Response
Some zigbee devices require a pro-active IAS enroll response to be sent before they will send their IAS enroll request. This PR sends a single IAS enroll response after CIE write and fixes some of these devices including the Ecolink 4655BC0-R and many others.
This also more closely aligns with the default behavior of Smartthings and zigbee2mqtt which also send pro-active enroll requests:
b217b91bb7 (diff-6d00af5fc389c40b8c4dfc390d80e3eca3946d331dff84afdc1632cb5568bca2)
Thanks to @puddly for helping figure this all out and @tubalainen for testing.
* flake8 fixes
* flake8 again
* xiaomi_miio: only log update exceptions once
Replaces #37695
* add som more missed exception logger cases + do not change the control flow as pointed out by @cgtobi
* Use patch&MagickMock from tests.async_mock
* Fix linting for alarm_control_panel
* update the test to verify that the warning on update is only logged when the device was previously available
* Add unique ids and device info
* Fix tests
* Add tests
* Apply suggestions from code review
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Fix black
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
Since someone websocket subscriptions will use an iden of 2 for
state_changed event (most comment), and some will use another
number for all events, the cache would not be used because the
iden number was different. We now cache only the event and
use a fast replace to insert the iden number into the serailized
response.
Since someone websocket subscriptions will use an iden of 2 for
state_changed event (most comment), and some will use another
number for all events, the cache would not be used because the
iden number was different. We now cache only the event and
use a fast replace to insert the iden number into the serailized
response.
* Fix state overwrite race condition where two platforms request the same entity id
* fix test
* create reservations instead
* revert
* cannot use __slots__ because we patch async_all
* Add browse media support to squeezebox integration
* Move browse media logic to browse_media.py
* Fix missing command when loading single url
* Update .coveragerc
* Handle empty library gracefully
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Implement suggestions from code review
* Additional suggestion from code review
* Use MEDIA_CLASS_GENRE
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Allow Cast to play Plex media
* Add Plex to after_dependencies, add missing constant
* Extract function from Sonos service to allow media lookups
* Move to non-async method
* Check if media_id exists
* Add test to make codecov happy
* Fix stop service call after movement, add new parser for topic: tns1:RuleEngine/MotionRegionDetector/Motion
* Fix PullMessages call and formatting Stop call
* Fix timeout on pullmessages call
* Fix black and flake8 detected issues
* add SetSynchronizationPoint with try/except block
The elkm1-lib autoconfigure set the `configured` flag based on an
attribute of the element being changed. This approach misses counters
and thermostats. It also does not work well well an "unconfigured"
element's default value is different from what is on the panel. This
was the case for zones (the `area` attribute was different).
The fix in the library is to mark an element as `configured` when
the element has a name associated with it. This change is
technically breaking, although I imagine, few if any people will be
affected as (1) they configure names on all elements (2) the
functionality was not working properly, so element would not be missing.
The HA docs will be updated to add a section on autoconfigure. It will
describe that to have an element automatically configured then the
element must be configured on the ElkM1 panel with a name.
This particular patch is required for ElkM1 areas. The existing logic
assumes that an area is configured if it has an associated keypad. Not
all areas have keypads (I have an area only armable with HA). The
library fix should catch all configured areas.
* WIP Add Sensor platform
* Code quality improvements
* Readability improvements
* Fix RSSI in fixture
* Sensor platform tests
* Created parent sensor class
* Fix DOMAIN namespace
* Code Coverage fix for impossible case
* Use parent class
* Add to fixture for code coverage
* Description Update
* Use consistent name for ADVANTAGE_AIR_DOMAIN
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* Set ADVANTAGE_AIR_DOMAIN where required
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* Use common strings in emulated roku
Replace IP and port with references from common strings
* Update strings.json
*Replace References in mix with sentence with their values.
*Replace name_exists with already_configured
* Replace references in config_flow
* Remove duplicated attribute request from ZHA
The on_off attribute is on the REPORT_CONFIG, so
super().async_initialize already requests it from the device.
No need to request it twice.
* Use skip_configuration flag to skip requests in ZHA
* Fix loading from cache
* Fix loading from cache condition
* Rewrite smtp unittest tests to pytest style
test functions.
.coverage.rc --> Remove homeassistant/component/smtp/notify.py from
omit section.
test_notify.py --> Convert test case to pytest style.
test.jpg, test.pdf --> Add test files.
Issue id:- #40894
* Made Fix Based On Code Review
To Pull Request - #41720.
.coveragerc --> Add file in omit section as coverage is 75%(i.e. <95%)
test_notify.py --> Capitalize constant in file, Made parametrized data
compatible to avoid if conditions.
Code Review Submission on Pull Request #41720.
* Made Fix Based On Code Review
To Pull Request #41720.
test_notify.py --> Add different test for simple text message to avoid if conditions check in code.
* Move Notify Media Files To
Folder tests/testing_config/notify.
test_notify.py --> Add Relevant Path For .jpg and .pdf file.
test.jpg, test.pdf --> Move to relevant location.
Pull request #41720
* Added automatic keep-alive for IKEA Trådfri
* Don't shut down factory on keep-alive error
* Avoid keep-alive after shutdown
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* add persistent notification for reauth config flow
* remove log
* Update homeassistant/config_entries.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/config_entries.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* fix logic for determining when to dismiss notification
* add comment
* improve tests to ensure notifications only get dismissed when all in progress config flows of a given type are complete
* Update homeassistant/config_entries.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* handle context is None when accessing source
* add guard to show_advanced_options
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Properly disconnect from SimpliSafe websocket on HASS shutdown
* Update homeassistant/components/simplisafe/__init__.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/simplisafe/__init__.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update uptime tests to pytest style
First attempt
* Test that the sensor is actually configured
* Swap the rest of the tests to pytest
* fixup! Swap the rest of the tests to pytest
We can avoid processing the relationship when the old state was already
written to the database which will common case with a commit interval
of 1s. Since we already know the value for old_state_id we can use it
instead of asking sqlalchemy to process the relationship at flush/commit
time which can significantly speed up sqlalchemy's _emit_insert_statements
implementation.
* Add fan support to deconz
* Fix gateway test
* Fix lint issue
* Apply suggestions from code review
* Fix black
* Improve tests
* Store previously used speed in case turn_on service is called without a speed attribute
* Fix tests
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add Sonos support for media_player.repeat_set service
* Update homeassistant/components/sonos/media_player.py
* Remove else for pylint
Co-authored-by: cgtobi <cgtobi@users.noreply.github.com>
* Add Modbus light and fan entities
* Rework Fan and Light components to new config structure
* Fix Linter issue
* Rework Modbus switch initialization
* Properly update state on actuator methods
* Remove Fan and Light entity from this change. They will be merged separately
* Fix loading of the Switch platform
* Modbus switch - inherit from the SwitchEntity
* Adds self to codeowners for tplink
* Adds retry to update to prevent missing devices
* Runs through isort and corrects async commit
* Runs through black
* Runs through pre-checks
* Corrects and matches var names
* Re-runs through black
* Corrects var name
* Removes the retry loop and in favor of async add
* Cleanup imports
* Removes no longer valid test
* Removes is_ready and only log retry once
* Corrects switch logging vars
* Adds list of entities to add_entities
* Consumes exception for attempt_update
* Consumes specific exception
* Removes unnecessary update
* Reducing back to 2 seconds
* Removes useless return
* Call get_sysinfo for all at once
* Formated black
* Adds missing docstirng
* Corrects docstring
* Update homeassistant/components/tplink/light.py
Co-authored-by: Anders Melchiorsen <amelchio@nogoto.net>
* Corrects sysinfo call
* Adds default for host vars
* Adds log when device responds again
* Revert host alias default
* Removes unncessary host var
* Removes host var
* Get device details from sysinfo
* Use host and alias for log msg
* Gets hosts from smartbulb
* Changes retry logging to debug
* Attempts coverage add
* Removes unused import
* Updates tests for new retry
* Runs through isort
* Removes unneeded try
* Prevents static entries from failing integration
* Format black
* Forces an update after turn on off
* Remove common test
* Revert update after turn_on off
* Adds patch for sleep_time 0
* Returns False when update fails
Co-authored-by: Anders Melchiorsen <amelchio@nogoto.net>
* Adjust dts warning messages
* Wait for second packet with overflow dts condition
* Rename dts gap watch variable
* Remove out of order packet warning
* Add new display categories from Alexa Smart Home API
* Update Vacuum entities to use VACUUM_CLEANER category.
* Update Automation entities to use ACTIVITY_TRIGGER category.
* Update tests for Automation entities to use ACTIVITY_TRIGGER category.
* already_setup->already_configured
* auth_error->invalid_auth
* rm default
* auth_timeout->oauth2_authorize_url_timeout
* enable auto format black
* add oauth2_missing_configuration
* Use standard helper keys
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add Ruckus Unleashed integration
* Tweak catches to better rely on CoordinatorEntity error handling, rename LoginError to AuthenticationError
* Make router_update be a callback function
* Make name property return hint match the newer value
* Add entity to tracked set when restoring on boot
* Add a device's MAC to the attributes
* Allow users to update their iCloud password when auth fails after successful setup
* remove trailing comma
* use new reauth source instead of custom one so frontend can do the right thing
* add quentames text suggestion with a slight tweak
* fix test
* use common string for successful reauth and remove creation and dismissal of persistent notification
* Update homeassistant/components/icloud/account.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Adding mute as a separate command as per the Bluesound API, rather than the current pseudo-mute which is achieved via lowering the volume to 0 then detecting whether the volume is 0 < volume < 0.001
* awair use common strings
* Use common strings: 'auth' to invalid_access_token
* Use reauth successful ref
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add already_configured_location key
* Use already_configured_location in Airly
* Use already_configured_location in Flu Near You
* Use already_configured_location in OpenUV
* Use already_configured_location in Open Weather Map
* Use already_configured_location in AirVisual
* Don't set config_entry.unique_id from setup entry. Fixes#40168
* Ensure entry has a unique_id
* Add test test_flow_import_incomplete
* Add test test_flow_import_duplicate
* Re-add testing import_info
* Simplify import flow
* Remove not needed line
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update axis to use common strings
* Update common str device_unavailable to cannot_connect
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* Don't set config_entry.unique_id from setup entry. Fixes#40168
* Ensure entry has a unique_id
* Add test test_flow_import_incomplete
* Add test test_flow_import_duplicate
* Re-add testing import_info
* Simplify import flow
* Remove not needed line
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
The template engine would collect all the states in
a domain or all states while iterating even though
they were already included in all or the domain
This lead to the rate limit not being applied to
templates that iterated all states that also
accessed a collectable property because the engine
incorrectly believed they were specifically
referenced.
The template engine would collect all the states in
a domain or all states while iterating even though
they were already included in all or the domain
This lead to the rate limit not being applied to
templates that iterated all states that also
accessed a collectable property because the engine
incorrectly believed they were specifically
referenced.
* Indicate to user that remote was turned off when call was attempted
* Catch exception in test
* Switch to warning log
* Apply suggestions from code review
Add suggested change to loggin
* Rewrite min_max unittest tests to pytest style test function
For: #40866
* Use uppercase letters for constants
* Remove not needed line
* Fix missing rename to uppercase
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* add websocket commands to retrieve and set config parameters for a node
* move set_config_parameter into generic function and refactor service and WS API
* add payload to return to make service call behave the same way it did before
* create response class
* update error message to pass tests
* move things a bit to reduce LOC
* add tests
* handle logging errors better and make new response class more generic to prepare for lock user code work
* remove unused function parameter
* invert check
* add additional error checking
* refactor a bit to remove repeat code
* revert log msg change
* one more refactor to create generic get_config_parameters function
* change if logic for consistency
* fix test
* add support to provide bool value in set_config_parameter service call
* standardize parameter names on service call
* add test coverage
* fix tests and message sending
* remove unnecessary logging import
* fix one test to get missing coverage
* update per martin and kpines reviews
* remove false assertion
* string line length
* add support for Decimal config param, remove node instance ID as input, and move helper functions to node.py
* cast Decimal appropriately
* revert change to support Decimal for config params since they are not supported as a config param type
* revert to using error arguments to make next PR for WS lock commands easier
* switch to class method and add guard for list Value not being a number
* update logic to use new openzwavemqtt util methods
* add support for bitsets
* use parent exception class
* bump openzwavemqtt version, remove node.py from .coveragerc and put file references in the right place
* add comment
* improve config validation
* remove bitset support from config validation
* re-add bitset support with some additional tests
* move send_result out of try block
* Use common strings for Onvif config flow
* Fix tests
* Update homeassistant/components/onvif/strings.json
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
We currently serialize the event data for state change events
and then replace it because we save the state in the states table.
Since the old state and new state are both contains in the event
the cost of serializing the data has a noticable impact when there
are many state changed events.
Increase default rate limit for all states and entire
domain states to one minute
Ensure specifically referenced entities are excluded from
the rate limit
Change #40666 used mutagen's ID3 TextFrame to wrap metadata information.
While this is the correct behavior for container formats that use ID3
metadata tags, such as MP3 and linear PCM, Ogg container formats use
a different metadata format. For these containers, the metadata needs to
be a bare str, not wrapped in a TextFrame.
* Fix slack message icon override
Allows overriding the icon for individual slack
messages using either an emoji or a URL.
* Run python3 -m script.gen_requirements_all
* Add period to first line
* Add support for python 3.7 testing
AsyncMock is only available from python 3.8+. Prior to this,
CoroutineMock is used which doesn't mock the method so it
needs to be done manually.
* Fix tests for python3.7 compatibility
The Python3.7 mock call object doesn't have the kwargs helper property.
* Update default emoji test docstring
Increase default rate limit for all states and entire
domain states to one minute
Ensure specifically referenced entities are excluded from
the rate limit
Change #40666 used mutagen's ID3 TextFrame to wrap metadata information.
While this is the correct behavior for container formats that use ID3
metadata tags, such as MP3 and linear PCM, Ogg container formats use
a different metadata format. For these containers, the metadata needs to
be a bare str, not wrapped in a TextFrame.
* Replace unexpected_error with unknown key in Neato
* Replace string with reference
* Revert the specific language json files back to unexpected_error
* Use reference for already_configured
* Change invalid_credentials to invalid_auth key
* Use reference for invalid_auth
* Use invalid_auth in the neato test
* Replace abort.invalid_credentials with invalid_auth
Disable expire_on_commit for the event writer. Since we never expect the
old_state_id to change in the database, it was never worth the expense of
refetching the id after the commit.
* ✅ rewrite remember_the_milk tests to pytest tests
* ✅ rewrite reddit tests to pytest tests
* Revert "✅ rewrite reddit tests to pytest tests"
This reverts commit 7eae35f69a.
Forgot to switch to a new branch 🙈
Disable expire_on_commit for the event writer. Since we never expect the
old_state_id to change in the database, it was never worth the expense of
refetching the id after the commit.
* Prepare test code for complex devices.
push entity_id to conftest, to make it common for all devices.
Add device to base_setup.
* Add test coverage for modbus switch (coil part).
* Update .coveragerc
* Update .coveragerc
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* cleanup goalzero code
* more cleanup
* mroe cleanup
* log defined exception to error
* return None if not configured
* return False if not configured
* Added missing unit for signal strength
* Added one more unit
* Replaced string with variable
* Fixed wrong import
* Fix import
* Replaced string with variable
* Fixed wrong import
* Apply suggestions from code review
* Black
* Again a fix :-(
* iSort
* iSort after merge
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Add service that can clean up by deCONZ orphaned entries from device and entity registry
* Fix existing tests
* Add new test
* Add some inline comment to the service
* Use camera name as device name
* Add Surveillance Station home mode switch for Synology DSM
- camera uses Surveillance Station as device parent
- camera uses camera name instead of NAS name + camera name
* Without device_class otherwise no icon
* Update .coveragerc
* Update zha.permit schema to support install code
* Move install code to core helpers
* QR code converter for enbrighten
* Fix schemas
* Update test for permit service
* Refactor zha.permit to accept install codes
* Test zha.permit from QR code
* Fix regex for Embrighten QR code
* Add regex for Aqara QR codes
* Add Consciot regex for QR code
* Reuse test params for WS tests
* ZHA WS permit command with install code
* Tests for zha.permit WS service
* Refactor zha.permit and zha.remove service to use ATTR_IEEE for the address
* Make pylint happy
* Deprecate only ieee_address param for now
* Add test coverage of binary sensor.
Update conftest to be generic.
* Pass total config structure to run_base_test.
Simple devices like sensor/switch do only have one entry in the
dict array, whereas e.g. switch have multiple entries.
* Use STATE_ON / _OFF for binary_sensor test.
* Update coveragerc
Only exclude files that uses a third party library.
* Remove modbus/* from coveragerc
* Remove modbus from .coveragerc
* Update .coveragerc
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
The Default Values Suggest That The User enters 'light' as a parameter for the theme name. 'Light' is, however, not a valid option on a fresh install of HA unless a user manually downloads a theme with the name 'light'.
* Use set not list
* Events are not entities
* Don't await unload_events
* Remove checks of entities content in tests
* List to set comprehension
* Why is it so hard to remember that sets arent parenthesis...
* Add Modbus cover
* Fix improper commands written for Modbus cover via coil
* Make changes per review comments
* Fix default hub not defined
Since support for multiple hubs was added, the default hub option
was not implemented correctly. Now I added necessary logic to make
it work. First hub in a list will be used as a default hub.
* Move Cover config under Modbus section
* Revert setting up a default hub alias
* Make hub mandatory for Cover
* Add default scan interval
* Read scan_interval from discovery info
* Fix linter error
* Use default scan interval from Cover platform
* Handle polling for Modbus cover directly inside entity
* Move covers under hub config
* Fix for review comment
* Call update() from Cover actuator methods
* Fix time validation
* Store all entities in dict
* Use stored unique id to select if to create entity or not
* Remove unnecessary init
* Change so same physical sensor doesnt try to create multiple battery sensors
Change so groups get created properly
* Add controls in tests that entities are logged correctly
* Scaffold
* Added the en translation
* Modified the name
* Basic functionality for config flow.
* Pulled in enough to validate config flow works.
* Update manifest.json
* initial data polling (water and air temp sensors)
* Adding sensors, debugging update function
* polling updates working
* support for new data format from library
* Updated entity_id, friendly name, conversion for ppm, attributes for hayward display units, MSPSystemID and component systemID
* Fixed errors for PR
* clean up
* Add login exc, check if configured, test login.
* Remove debug print.
* Black formatting, ran isort, update requirements.
* Updated w isort. fix flake8 failures.
* Fix flake8 errors
* Fixed self.attrs to remove invalid self._ values - small change
* Missed on small change - fixing attributes
* Updated naming, updated unit of measure, updated icon, bumped omnilog…
* Updated to fix flake8 issues in __init__.py and config_flow.py
* Updated test_config_flow.py to pass, updated config_flow.py to correct errors in test
* Remove comments in preparation for PR
* update .covezragerc
* Formatting fix
* Rewrote sensors to dynamically add all BOWs, pumps, clorinators. Still to do - add CSAD sensors.
* Rewrote sensors to dynamically add all BOWs, pumps, clorinators. Still to do - add CSAD sensors.
* Added CSAD sensors for pools that have them.
* Added CSAD sensors for pools that have them.
* Fixed CSAD to not create if blank or don't exist, removed broad except usage to pass linting.
* Updated entity naming convention. Fixed linting issues.
* Added device association to the back yard / omnilogic system
* Removed .0 from ppm values when returning imperial values for salt sensor
* Updated to return state = None for water temp when pump is off, handled Chlorinator operatingMode = 2, and added PlatformNotReady check
* Corrected exception from Omnilogic library
* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.
* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.
* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.
* Removed nested_lookup dependency, bumped omnilogic.py to 0.3.8.
* Fixed lint error
* Added logging for sensor creation.
* Fixed linting errors with logging.
* Fixed explicit chaining of raised error. Fixed issue with alarm sensor.
* Fixed manifest.json based on feedback.
* Fixed self.attrs, should_poll, CoordinatorEntity, SCAN_INTERVAL from comments in PR.
* Addressed unique_id, moved data update coordinator, addressed minor other issues from testing
* Created main OmniLogic entity for common items, reworked DataUpdateCoordinator to it's own class.
* Addressed config_schema not used in __init__.py
* Fixed linting issues.
* Addressed several comments, still todo - separate sensor classes.
* Split the Omnilogic Sensors into separate logical classes for simpler logic.
* Fixed snake case lint error for AddAlarms (to add_alarms)
* Addressed config_flow issues from comments.
* Changed addressed ConfigNotReady issue from comments.
* Updated strings.json and generated corrected en.json with translations.
* Updated en.json to standard generated file.
* Added config_flow tests and updated issue with config_flow on cannot_connect
* Added test case for incomplete information entered.
* Compressed logic in the sensor classes to reduce duplication.
* Updated strings.json for polling_interval, added generic exception handling on config flow.
* Removed omnilogic from the .coveragerc omit file.
* Updated test_config_flow to follow recommended pattern.
* Excluded sensor.py from test coverage tests.
* Corected minor issues in test_config_flow from comments
* Fixed linting issues on last commits
* Fixed linting issues.
* Corrected issue when temp state is not available from Omnilogic
* Added omnililogic_common.py from .coveragerc to bypass test coverage check.
* Return false on Login Exception, handle OmniLogicException in config_flow and in tests.
* Handle all exceptions and in config_flow and tests, clarified test naming.
* Broke out test cases per comments.
* Regenerated en.json file.
* Addressed changes from comments in PR.
* Added session and bumped API to 0.4.0, addressed other comments from PR.
* Addressed entitydata (missed earlier).
* Fixed pylint issue
* Added test case for options flow in test_config_flow.py
* Removed super() and used self when calling methods in current class.
* Addressed comments in PR.
* Addressed comments in PR.
* Updated translations file.
* Rewrote data coordinator to output dict for easy searching.
* Updated chlorinator unit when chlorinator is on/off only
* Scaffold
* Added the en translation
* Modified the name
* Basic functionality for config flow.
* Pulled in enough to validate config flow works.
* Update manifest.json
* initial data polling (water and air temp sensors)
* Adding sensors, debugging update function
* polling updates working
* support for new data format from library
* Updated entity_id, friendly name, conversion for ppm, attributes for hayward display units, MSPSystemID and component systemID
* Fixed errors for PR
* clean up
* Add login exc, check if configured, test login.
* Remove debug print.
* Black formatting, ran isort, update requirements.
* Updated w isort. fix flake8 failures.
* Fix flake8 errors
* Fixed self.attrs to remove invalid self._ values - small change
* Missed on small change - fixing attributes
* Updated naming, updated unit of measure, updated icon, bumped omnilog…
* Updated to fix flake8 issues in __init__.py and config_flow.py
* Updated test_config_flow.py to pass, updated config_flow.py to correct errors in test
* Remove comments in preparation for PR
* update .covezragerc
* Formatting fix
* Rewrote sensors to dynamically add all BOWs, pumps, clorinators. Still to do - add CSAD sensors.
* Rewrote sensors to dynamically add all BOWs, pumps, clorinators. Still to do - add CSAD sensors.
* Added CSAD sensors for pools that have them.
* Added CSAD sensors for pools that have them.
* Fixed CSAD to not create if blank or don't exist, removed broad except usage to pass linting.
* Updated entity naming convention. Fixed linting issues.
* Added device association to the back yard / omnilogic system
* Removed .0 from ppm values when returning imperial values for salt sensor
* Updated to return state = None for water temp when pump is off, handled Chlorinator operatingMode = 2, and added PlatformNotReady check
* Corrected exception from Omnilogic library
* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.
* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.
* Bumped omnilogic to 0.3.7. Added alarm sensor/data to sensors. Handle pump off condition for ph and orp sensors.
* Removed nested_lookup dependency, bumped omnilogic.py to 0.3.8.
* Fixed lint error
* Added logging for sensor creation.
* Fixed linting errors with logging.
* Fixed explicit chaining of raised error. Fixed issue with alarm sensor.
* Fixed manifest.json based on feedback.
* Fixed self.attrs, should_poll, CoordinatorEntity, SCAN_INTERVAL from comments in PR.
* Addressed unique_id, moved data update coordinator, addressed minor other issues from testing
* Created main OmniLogic entity for common items, reworked DataUpdateCoordinator to it's own class.
* Addressed config_schema not used in __init__.py
* Fixed linting issues.
* Addressed several comments, still todo - separate sensor classes.
* Split the Omnilogic Sensors into separate logical classes for simpler logic.
* Fixed snake case lint error for AddAlarms (to add_alarms)
* Addressed config_flow issues from comments.
* Changed addressed ConfigNotReady issue from comments.
* Updated strings.json and generated corrected en.json with translations.
* Updated en.json to standard generated file.
* Added config_flow tests and updated issue with config_flow on cannot_connect
* Added test case for incomplete information entered.
* Compressed logic in the sensor classes to reduce duplication.
* Updated strings.json for polling_interval, added generic exception handling on config flow.
* Removed omnilogic from the .coveragerc omit file.
* Updated test_config_flow to follow recommended pattern.
* Excluded sensor.py from test coverage tests.
* Corected minor issues in test_config_flow from comments
* Fixed linting issues on last commits
* Fixed linting issues.
* Corrected issue when temp state is not available from Omnilogic
* Added omnililogic_common.py from .coveragerc to bypass test coverage check.
* Return false on Login Exception, handle OmniLogicException in config_flow and in tests.
* Handle all exceptions and in config_flow and tests, clarified test naming.
* Broke out test cases per comments.
* Regenerated en.json file.
* Addressed changes from comments in PR.
* Added session and bumped API to 0.4.0, addressed other comments from PR.
* Addressed entitydata (missed earlier).
* Fixed pylint issue
* Added test case for options flow in test_config_flow.py
* Removed super() and used self when calling methods in current class.
* Addressed comments in PR.
* Addressed comments in PR.
* Updated translations file.
* Rewrote data coordinator to output dict for easy searching.
* Updated chlorinator unit when chlorinator is on/off only
* Fixed ORP method not being @property, fixed unique_id potential issue. Does not address comments from PR.
* Rewrote coordinator for updated dict structure, rewrote sensors to parse new data structure.
* Added alarms as attributes on all entities which support alarm reporting.
* Updated SENSOR_TYPES to sensor_types to adhere to snake case in pylint.
* Addressed PR comments.
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Removed binary sensor conditions (alarms, on/off sensor types) and added ability for multiple guard conditions
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Updated per comments in PR for Pump Type and removal of force_update().
* Update homeassistant/components/omnilogic/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/omnilogic/common.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Correctly asserting conditions for the login exception case.
* Update .coveragerc
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Mike Hershberger <mike.hershberger@gmail.com>
Co-authored-by: Chad <54695185+chadlyy@users.noreply.github.com>
Co-authored-by: Tim Empringham <tim.empringham@live.ca>
Co-authored-by: djtimca <60706061+djtimca@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add more units and device classes
* Battery level is a value beteen 0 and 9 where 9 indicate full
Actual 0 battery can't occur since since then we would get to signal
* Adjust tests
* Add wind direction and adjust rain rate
* Adjust data types to be None rather than empty string
* Set counter values to count unit
* Forgotten unit
Since most of the json serialize work for the websocket was done
multiple times for the same message, we can avoid the overhead
of serializing the same message many times (once per websocket
client) with a cache.
* Add logging to Bond fireplace entity for troubleshooting turn off problem
* Update homeassistant/components/bond/light.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update homeassistant/components/bond/light.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Updates xknx to 0.14.0
* Review: Explicity add state attributes to weather device
* Review: Remove state attributes from weather device
* Review: Add `counter` as a state attribute to binary_sensors
* Add binary_sensor for cloud connectivity to HomematicIP Cloud
* Fix Test
* Remove device_class
* Switch from _device to _home
* Switch from _device to _home for sensor
* Added UniFi Uptime sensor
Added the UniFi uptime data as a sensor. Untested.
* Update sensor.py
Updated code as a result of the tests.
* Changed timestamp format and device class
Converted state to iso timestamp and changed device class to DEVICE_CLASS_TIMESTAMP.
* Updated unit of measurement to None
* Added import
* Update homeassistant/components/unifi/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Removed whitespace
* Added the uptime sensors option to the config flow
* All the unit tests should be there now
* Whoops
* Fixed translation
* Properly formatted the code
* Flake8 really has angel eyes
* Black should also be satisfied now
* Should have satisfied all static code analysis tools
* Fixed add uptime sensor function
* Fixed overintendation
* Fixed unit tests
* Made a spelling mistake during editing of unit tests
* Test verifies if utc time is correct
* Converted to iso format
* Converted unit test to iso format
* Unit test sensor json had the wrong uptime name
* Added options_updated handler
* Fixed remove sensors unit test
* Update homeassistant/components/unifi/sensor.py
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* Update homeassistant/components/unifi/sensor.py
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* Update test_device_tracker.py
Removed uptime from the devices
* Fixed black formatting issue
* I think the code coverage should be good now
* Trying to add the sensors again
* Using signals to hopefully trigger the controller to add them again
* Forgot import
* Sorted components
* fixed isort comments
* Removed CLASS and DEVICE_CLASS
* Added TYPE again
* Removed double underscores
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
Fix pilight lights would always turned on at max brightness instead of just turning on. Some 433mhz dimmers (like the KAKU series) remember their last brightness setting.
Fix pilight lights would not respect configured dimlevel_min
* Prompt to reauth when the august password is changed or token expires
* augment missing config flow coverage
* augment test coverage
* Adjust test
* Update homeassistant/components/august/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* block until patch complete
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Move setup without devices
* Remove not needed tests
* Move set temp test
* Move set temp cool mode test
* Run black
* Move test target temperature
* Move test current temperature
* Move test current humidity
* Move test hvac mode
* Move test hvac modes
* Move test fan modes
* Move test service fan modes
* Move test fan state
* Move test supported features
* Move test idle state
* Move test humidity invalid state
* Move test humidity without state
* Move test device cool
* Rename test
* Move test set mode service
* Clean imports
* Clean strings
* Only load climate platform for climate tests
* Use http status codes and add HTTP_BAD_GATEWAY constant
* Address review comments:
- using constants in tado integration
- using constant in media_player init.py
* Add and use HTTP_ACCEPTED constant
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
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
* add unique_id to canary alarm_control_panel
* Update test_alarm_control_panel.py
* Update alarm_control_panel.py
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* 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
As a result of refactoring, there is duplicate code
we can now reduce.
Additionally `_wrap_state` can be removed because
it had unreachable checks for `None`
* Use entity_class: 'safety' in storage sensors
and more meaningful icons then 'mdi:test-tube', not sure if these are even necessary, given the device_class that defines the icons too?
* Set device_class, not icon
Still, the temperature sensors have both set, should I take these out in this go too? While we're at it....
* added device_class temperature to temp sensors
and removed explicit icons
do we need to set a D_c also on the Status sensor? line 187
* revert device_class Safety
which is now set in const.py
following up on https://github.com/home-assistant/core/pull/39757#pullrequestreview-483705147
* Use DEVICE_CLASS_SAFETY from const
+ revert temp to avoid conflict
* const from binary
* reverted non binary status sensors
to use: "mdi:checkbox-marked-circle-outline" and set None to device_class
Co-authored-by: Quentame <polletquentin74@me.com>
* Added check for mandatory "arg" of sensors
* Make pylint happy
* Moved to vol validator function for "arg" checks
* Make pylint happy once again
* Adjustments from code review
The powerview hub, seemingly randomly, will occasionally not
provide data for cover positions. Some requests will return the
desired response, but minutes later the same request might not.
It appears this issue is being experienced by a number of people:
https://community.home-assistant.io/t/hunter-douglas-powerview-component-expanding-this-api/88635/48
While an unfortunate bug with the hub, crashing the integration
as a result of this missing data appears somewhat excessive.
This patch adds a simple check to ensure the 'position' key
has been returned by the hub before attempting to access its
data.
The powerview hub, seemingly randomly, will occasionally not
provide data for cover positions. Some requests will return the
desired response, but minutes later the same request might not.
It appears this issue is being experienced by a number of people:
https://community.home-assistant.io/t/hunter-douglas-powerview-component-expanding-this-api/88635/48
While an unfortunate bug with the hub, crashing the integration
as a result of this missing data appears somewhat excessive.
This patch adds a simple check to ensure the 'position' key
has been returned by the hub before attempting to access its
data.
* Update ZHA dependencies
* Update zigpy-zigate
* Move ZNP on top of the radios so it's probed 1st
Some stick don't like if there was some unexpected traffic on the port
prior the initialization.
* Update dependencies
* Fibaro climate improvements
1, Implemented support for multinode climate devices, such as Danfoss HC10, differentiating zones based on endPointId
2, Improved recognition of temperature sensor subdevice for climate devices
3, Changed default opmode for devices without an opmode to "auto" instead of "fan_only", for better clarity and to avoid misunderstandings
* pylint inspired code restructuring to reduce depth
gotta love pylint
* Add support for events from Loitering guard and Motion guard
* Improve naming of events originating from applications Fence guard and VMD4 (Loitering guard and motion guard also benefit from this)
* Improvements for systemmonitor
* Use MDI CPU icon (bit architecture determined at runtime)
* Consistent usages of "percent" (ensured backwards compatibility by explicity setting the entity_id)
* Default value "/" (root) for disk_* sensors to prevent runtime issues if not specified in configuration
* Added CPU temperature sensor to systemmonitor
* Code streamlining of CPU temperature retrieval
* Corrected sensor state handling and added "available" logic
* Corrected ENTITY_ID to include argument
* Optimized "available" handling & CPU temperature detection
* Corrected tuple for CPU temperature determination
* - Do not create CPU temperature entity if no sensor data can be read
- Re-use temperature sensor labels from "glances" integration
* Array fix
* Corrected sensor array access
* Handle empty temperature sensor labels (same logic as used by "glances")
* PR comments: Setting unique_ID and f-strings
* Removed unused constants
* Revert entity rename (wait until next release)
* Replace old source prefixing for channels with new media browser
* Restore support to call select source with prefix
* Drop warning log for deprecated call method
* Implement local media finder and integrate into cast
* update to media source as a platform
* Tweak media source design
* fix websocket and local source
* fix websocket schema
* fix playing media
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add resolve_media websocket
* Register that shit
* Square brackets
* Sign path
* add support for multiple media sources and address PR review
* fix lint
* fix tests from auto whitelisting config/media
* allow specifying a name on the media source
* add tests
* fix for python 3.7
* Apply suggestions from code review
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* add http back to cast and remove guess_type from executor as there is no i/o
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add tests for Broadlink remotes
* Reformat the tests with Black
* Add a helper method for device setup
* Rename device.setup() to device.setup_entry()
* Apply suggestions from code review
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Make sure we set discreteOnlyOpenClose for binary sensors
* Mark switches that are assumed state as commandOnlyOnOff
* Drop stray extra line
* Fix pylint error
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Linter suggestions
* Store coordinator in hass.data[supla_coordinators]
* Server cleanup
* Spelling mistake
* Fixes suggested in review
* Pass server and coordinator during async_setup_platform
* Linter changes
* Rename fetch_channels to _fetch_channels
* Linter suggestions
* Store coordinator in hass.data[supla_coordinators]
* Server cleanup
* Fixes suggested in review
* Pass server and coordinator during async_setup_platform
* Linter changes
* Remove scan interval configuration option
* Linting
* Isort
* Disable polling, update asyncpysupla version
* Black fixes
* Update manifest.json
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
As documented in the OWM API (https://openweathermap.org/api/one-call-api), rain and snow are reported on a 1h basis:
current.rain
current.rain.1h (where available) Rain volume for last hour, mm
current.snow
current.snow.1h (where available) Snow volume for last hour, mm
* add reload service
* test for reload service
* missing file
* Revert "missing file"
This reverts commit 24391fe3b9.
* Revert "test for reload service"
This reverts commit 5bda48d070.
* Rename ipaddr to ip_addr
* Move custom services to entity services
* Remove platform data
* Change service setup to callback
* Rename ip_addr to host
* Use _host inside class
* Provide a logbook option entity_matches_only to optimize for single entity id lookup
When entity_matches_only is provided, contexts and events that do not
contain the entity_id are not included in the logbook response.
* Update homeassistant/components/logbook/__init__.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* api only takes a single entity
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Store printer instances in hass.data
* Add SyncThru device registry support
* Use config entry id as hass.data key
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Use printer hostname as device registry name
* Handle non-syncthru device more gracefully on entry setup
* Use device identifiers rather than connections to link entities with devices
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Prior 0.113 all lights and switches were reported as dimmable devices and this was fixed by #37978.
However, under some circumstances Alexa will not smoothly transition from those broken devices to the new ones as it cache the list of entities.
It is imperative to have Alexa rediscover all devices and then remove the now non-responding duplicates using the Alexa phone App. This can take quite a while if you have lots of devices.
An alternative would be to log to the Alexa web site and remove all the lights instead and then re-discover them all.
If you have multiple echo devices on your network, it is possible that the entries would continue to show as duplicates. This is due to an individual echo devices caching the old list and re-using it.
The only known solution for this is to remove your echo devices from your Amazon account and re-add them.
After that, have Alexa rediscover all your devices.
This is a one-off requirement.
Fixes#39503
It is no longer necessary to provide a list of entities to monitor
to the template platforms.
The template is now re-evaluated whenever
a referenced entity changes state, and new entities are automaticlly
discovered.
Automatic analysis can now determine the entities for all templates
without the need for manual setup.
* Start moving stuff to iOS
* Load config on to hass.data
* Remove un used logging
* Switch to Rest API
* Add schema
* Return whole config in new view and leave old 100 % the same
* Update doc strings
* MartinHjelmare feedback
* Move register view to async_setup_entry
* Make async_track_template_result track multiple templates
Combine template entity updates to only write ha
state once per template group update
* Make async_track_template_result use dataclasses for input/output
* black versions
* naming
after_dependencies were checking hass.config.components
to see if something was already setup. We did not do
the same for dependencies which resulted in trying
to set them up more then once.
Noticed when `homeassistant.setup` was set to debug
logging and many integrations were announcing
waiting on http when it was already setup.
* Move options import to async_setup_entry
* Add tests for insteon init
* Move common constants to const
* Clean up to adhear to standards
* Create mock insteon device manager
* Update for HA standards
* Use keys and align to config_flow steps
* Fix default port for hub v1
* Update doc string to represent function
* Remove dump print commands
* Add modem_type entry
* Simplify dict key test
* Setup platforms in async_setup_entry
* Black
* Black tests
* Opened a new fresh page to clean my mess.
* Solved pylint warnings
* Fixing pylint issue of defining attr outside init.
* Excluded files from being tested by codecov.
* Solved binary sensor error.
* Fixed some stylisation errors.
* Resolved input not updating problem.
* Added port entry to test file.
* Added tests for create_entry.
* Added support for better state management.
* Increased code coverage of config_flow.py & made some tweaks.
* Increased coverage of config_flow.py by adding tests for unknown exceptions.
* A small bugfix.
* Stylised code as per Chris' suggestions.
* Stylised code again.
* Improved quality of test code.
* Added step_id in config flow tests.
* Update meteo_france to use CoordinatorEntity
* Update homeassistant/components/meteo_france/sensor.py
* Update homeassistant/components/meteo_france/weather.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Close the ADB connection when there is an exception
* Add a test
* Split a comment onto two lines
* Fix test ('async_update' -> 'async_update_entity')
* 'close' -> 'Close'
Updated the calendar event dict to contain a `summary` key so that the
title will display on the calendar panel. Also update the start/end
date to not include time information if the event is all day so that it
renders as an all day event on the calendar panel.
* Add device name to all webhook logs to help with multiple devices
* Reload notifications when we update the registration, update from rebase
* Make hassfest happy
* Adjust caplog test to accomodate log message change
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add basic light platform
* Add sensor support
* Bump aioshelly to 0.2.1
* Lint
* Use UNIT_PERCENTAGE
Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
* Format sensor.py
Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
* Use icmplib for ping when available
* Update homeassistant/components/ping/binary_sensor.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Revert "Update homeassistant/components/ping/binary_sensor.py"
This reverts commit 618f42512a.
* move it up so its easier to see
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Remove unnecessary exception re-wraps
* Preserve exception chains on re-raise
We slap "from cause" to almost all possible cases here. In some cases it
could conceivably be better to do "from None" if we really want to hide
the cause. However those should be in the minority, and "from cause"
should be an improvement over the corresponding raise without a "from"
in all cases anyway.
The only case where we raise from None here is in plex, where the
exception for an original invalid SSL cert is not the root cause for
failure to validate a newly fetched one.
Follow local convention on exception variable names if there is a
consistent one, otherwise `err` to match with majority of codebase.
* Fix mistaken re-wrap in homematicip_cloud/hap.py
Missed the difference between HmipConnectionError and
HmipcConnectionError.
* Do not hide original error on plex new cert validation error
Original is not the cause for the new one, but showing old in the
traceback is useful nevertheless.
* Improve next_rain sensor attributes
* Add log message to identify missing condition
* Add a condtion
* Set the coordinator for 1 hour rain forecast in English
* Attribut dict keys shorten
* reverse transalate the API results for next rain
* Use f string for the keys in the dict
* Remove Logging from state property
* Remove other logging from state property
We're not operating on the installed package anyway, and necessary
dependencies are handled with tox deps.
As a nice bonus side effect, doing this sidesteps breakage caused by
pip's (up to 20.2.2 at least) behavior of prepending site-packages to
sys.path in certain cases, which in turn results in failures e.g. if a
version of typing that is incompatible with the (now overridden)
stdlib is installed there. And that combined with also pip's behavior
of installing a default build system consisting of setuptools and
wheel under the hood when it sees our pyproject.toml without a
build-system defined would provoke the breakage before we have a
chance to uninstall typing. (There are ways around this too, but
skipping the install makes the issue moot at least with our current
dependency set.)
Some new HomeKit climate devices, like XiaoMi Air Conditioning Controller P3 are heater-cooler devices rather than
thermostat devices. This commit adds support for the heater-cooler class via homekit_controller.
* 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 ZwaveStringSensor to OZW integration
* Remove unnecessary new line
* Set enabled default to false for ZwaveStringSensor
* Add missing decorator for property
* Add a test for ZwaveStringSensor
* Also test state of ZWaveStringSensor
* Remove entity type check
* Add binary sensors to Risco integration
* Minor cleanups
* RiscoEntity base class
* Platinum score
* Remove alarm parameter in _setup_risco
* Avoid zones and partitions sharing unique ids
Before this proposed change, all of the zones related to a running program turn "on", but it's not possible to know which zone is actually running (vs. queued). Adding the mapped state values (they are the same as program status values) as an attribute will allow inspection of all 3 states.
* Wait for broker to ACK MQTT operations
* Deduplicate new code
* Fix tests
* Improve test
* Don't hold PAHO lock when waiting for ACK
* Fix tests
* Add constant for ACK timeout
Now that python 3.7 is the minimum supported version, we can
use the more efficient SimpleQueue in the recorder as it does
not have to use threading.Lock
* Implement config flow in the Broadlink integration
* General improvements to the Broadlink config flow
* Remove unnecessary else after return
* Fix translations
* Rename device to device_entry
* Add tests for the config flow
* Improve docstrings
* Test we do not accept more than one config entry per device
* Improve helpers
* Allow empty packets
* Allow multiple config files for switches related to the same device
* Rename mock_device to mock_api
* General improvements
* Make new attempts before marking the device as unavailable
* Let the name be the template for the entity_id
* Handle OSError
* Test network unavailable in the configuration flow
* Rename lock attribute
* Update manifest.json
* Import devices from platforms
* Test import flow
* Add deprecation warnings
* General improvements
* Rename deprecate to discontinue
* Test device setup
* Add type attribute to mock api
* Test we handle an update failure at startup
* Remove BroadlinkDevice from tests
* Remove device.py from .coveragerc
* Add tests for the config flow
* Add tests for the device
* Test device registry and update listener
* Test MAC address validation
* Add tests for the device
* Extract domains and types to a helper function
* Do not patch integration details
* Add tests for the device
* Set device classes where appropriate
* Set an appropriate connection class
* Do not set device class for custom switches
* Fix tests and improve code readability
* Use RM4 to test authentication errors
* Handle BroadlinkException in the authentication
* Convert template lock to use async_track_template_result
* Convert template switch to use async_track_template_result
* Convert template fan to use async_track_template_result
* Convert template binary_sensor to use async_track_template_result
Co-Authored-By: Penny Wood <Swamp-Ig@users.noreply.github.com>
* Convert template cover to use async_track_template_result
* Convert template light to use async_track_template_result
* Convert template vacuum to use async_track_template_result
* Remove unused code from the template integration
Co-authored-by: Penny Wood <Swamp-Ig@users.noreply.github.com>
* Convert template lock to use async_track_template_result
* Convert template switch to use async_track_template_result
* Convert template fan to use async_track_template_result
* Convert template binary_sensor to use async_track_template_result
Co-Authored-By: Penny Wood <Swamp-Ig@users.noreply.github.com>
* Convert template cover to use async_track_template_result
* Convert template light to use async_track_template_result
* Convert template vacuum to use async_track_template_result
Co-authored-by: Penny Wood <Swamp-Ig@users.noreply.github.com>
* Convert template lock to use async_track_template_result
* Convert template switch to use async_track_template_result
* Convert template fan to use async_track_template_result
* Convert template binary_sensor to use async_track_template_result
Co-Authored-By: Penny Wood <Swamp-Ig@users.noreply.github.com>
* Convert template cover to use async_track_template_result
* Convert template light to use async_track_template_result
Co-authored-by: Penny Wood <Swamp-Ig@users.noreply.github.com>
* Convert template lock to use async_track_template_result
* Convert template switch to use async_track_template_result
* Convert template fan to use async_track_template_result
* Convert template alarm_control_panel to use async_track_template_result
* Convert template lock to use async_track_template_result
* Convert template switch to use async_track_template_result
* Convert template fan to use async_track_template_result
* catch KeyError and UnboundLocalError in light setup
* add check for no dimmer info from control4
* use existence of light_level data to enable dimming
* check if light data is not in dimmer and non_dimmer
* add item_variables logging
* add await to item_variables call
* add full item dump
* remove full item list
* change logging message
* fix typo
* reduce code inside try and add all entities at once
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
* format with black
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add audio to stream component
* Use container options to do most fmp4 formatting
* Add test for treatment of different audio inputs
* Add test for treatment of different audio inputs
* pcm_mulaw frames should be s16
* Use seek to get BytesIO length
* Remove unused utcnow
* Remove peek_next_audio_pts
* only demux audio and video packets - ignoring data and subtitle streams
Co-authored-by: Jason Hunter <hunterjm@gmail.com>
* Run scaffold script
* Update version
* Bump version
* Initial commit
* Move meter and ESIID to device attributes
* Update internal to hourly due to api limit
* Format with Black
* Fix typo
* Update tests
* Update description
* Disable Pylint error
* Don't commit translations
* Remove meter number from sensor name
* Allow multiple meters per account
* Move data updates to a DataUpdateCoordinator
* Use setdefault to setup the component
* Move strings to const.py
* Fix tests
* Remove meter last updated attribute
* Bump smart-meter-texas version
* Fix logger call
Co-authored-by: J. Nick Koston <nick@koston.org>
* Remove unneeded manifest keys
Co-authored-by: J. Nick Koston <nick@koston.org>
* Remove icon property
Co-authored-by: J. Nick Koston <nick@koston.org>
* Handle instance where user already setup an account
Co-authored-by: J. Nick Koston <nick@koston.org>
* Remove icon constant
* Fix indentation
* Handle config flow errors better
* Use ESIID + meter number as unique ID for sensor
* Update config flow tests to reach 100% coverage
* Avoid reading meters on startup
Cherrypick @bdraco's suggestion
* Run scaffold script
* Update version
* Bump version
* Initial commit
* Move meter and ESIID to device attributes
* Update internal to hourly due to api limit
* Format with Black
* Fix typo
* Update tests
* Update description
* Disable Pylint error
* Don't commit translations
* Remove meter number from sensor name
* Allow multiple meters per account
* Move data updates to a DataUpdateCoordinator
* Use setdefault to setup the component
* Move strings to const.py
* Fix tests
* Remove meter last updated attribute
* Bump smart-meter-texas version
* Fix logger call
Co-authored-by: J. Nick Koston <nick@koston.org>
* Remove unneeded manifest keys
Co-authored-by: J. Nick Koston <nick@koston.org>
* Remove icon property
Co-authored-by: J. Nick Koston <nick@koston.org>
* Handle instance where user already setup an account
Co-authored-by: J. Nick Koston <nick@koston.org>
* Remove icon constant
* Fix indentation
* Handle config flow errors better
* Use ESIID + meter number as unique ID for sensor
* Update config flow tests to reach 100% coverage
* Remove unnecessary try/except block
This checks for the same exception just prior in execution on L51.
* Remove unused return values
* Add tests
* Improve tests and coverage
* Use more pythonic control flow
* Remove all uses of hass.data
Co-authored-by: J. Nick Koston <nick@koston.org>
* catch KeyError and UnboundLocalError in light setup
* add check for no dimmer info from control4
* use existence of light_level data to enable dimming
* check if light data is not in dimmer and non_dimmer
* add item_variables logging
* add await to item_variables call
* add full item dump
* remove full item list
* change logging message
* fix typo
* reduce code inside try and add all entities at once
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
* format with black
Co-authored-by: J. Nick Koston <nick@koston.org>
* async_update
* isort and pylint
* @shenxn suggestions
Co-authored-by: Xiaonan Shen <s@sxn.dev>
* async_update
* store the command from the beginning
* command as string
* f-string instead of str.format
* create_subprocess_shell > create_subprocess_exec
more logs
* isort
* types
* use asyncio.wait_for
* Update homeassistant/components/ping/binary_sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* @bdraco review changes
* Update homeassistant/components/ping/binary_sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Xiaonan Shen <s@sxn.dev>
Co-authored-by: J. Nick Koston <nick@koston.org>
On startup we run an sqlite3 quick_check to verify the database
integrity. In the majority of cases, the quick_check takes under
10 seconds.
On systems with very large databases and very slow disk/cpu,
this can take much longer so we freeze the timeout.
* Update __init__.py
Further fixes for HC3 compatibility.
* Update homeassistant/components/fibaro/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
INFO:homeassistant.setup:Setting up ffmpeg
DEBUG:haffmpeg.core:Start FFmpeg with ['ffmpeg', '-version', '']
ERROR:haffmpeg.core:FFmpeg fails [Errno 2] No such file or directory: 'ffmpeg': 'ffmpeg'
On startup we run an sqlite3 quick_check to verify the database
integrity. In the majority of cases, the quick_check takes under
10 seconds.
On systems with very large databases and very slow disk/cpu,
this can take much longer so we freeze the timeout.
* Update __init__.py
Further fixes for HC3 compatibility.
* Update homeassistant/components/fibaro/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Verify and case
* Review comments
* Update homeassistant/helpers/event.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/helpers/event.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Merge original changes from #23590
* guard
* adjust
* adjust
* adjust
* Update async_render_to_info for recent codebase changes
* no more protected access
* do not fire right away per review comments
* update test to not fire right away
* closer
* rework tests for non firing first
* augment coverage
* remove cruft
* test for complex listen add/remove
* update docs to match review feedback to not fire right away
* preserve existing behavior
* fix test
* Ensure listeners are cleaned up
* de-dupe and comment
* de-dupe and comment
* coverage
* test to login again if we go from exception to ok to exception
* Update homeassistant/core.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/helpers/event.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* rename _boolean_coerce to result_as_boolean and move it out of event
* additional coverage
* Add more tests (may still be able to trim this down)
Co-authored-by: Swamp-Ig <github@ninjateaparty.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
With this change, we should still be able to startup
in under 10 minutes if something really goes wrong.
The testing done in #38661 was used to determine
these values.
If a device on the network presented a bad name, zeroconf
would throw zeroconf.BadTypeInNameException and the service
browser would die off. We now trap the exception and continue.
The default on python 3.8 is for max_workers is significantly
lower than the default on python 3.7 which means we can get starved
for workers.
To determine a reasonable maximum, the maximum was increased to large
number on 5 production instances.
The number of worker threads created during startup that were
needed to avoid waiting for a thread:
HOU 1 - 71
HOU 2 - 48
OGG 1 - 60
OGG 2 - 68
OGG 3 - 64
This lead to a selection of 64 as it was reliable in all cases
and did not have a significant memory impact
* Review: if not to pop
* Review: async_add_job --> async_add_executor_job
* Review: const
* Review: start logging messages with capital letter
* Review : UTC isoformated time --> fix "Invalid date""
* Fix hail forecast condition
* Review: _show_setup_form is a callback
* Fix update option
* Review: no icon for next_rain
* Review: inline cities form
* Review: store places as an instance attribute
* UNDO_UPDATE_LISTENER()
With this change, we should still be able to startup
in under 10 minutes if something really goes wrong.
The testing done in #38661 was used to determine
these values.
* Abort flow if MAC-address can't be found
* Apply suggestions from code review
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Adjust homekit controller pairing errors back to a single step
* adjust test
* Revert "Adjust homekit controller pairing errors back to a single step"
This reverts commit e5ed89bbbb.
* Revert "adjust test"
This reverts commit c2e9f21a8401c144315260f6fdf71ea8060f8ca3.
* adjust
* prune
* prune
* merge
* Update tests
* remove debug
* adjust
* Multiple steps
* adjust the test
* Review: if not to pop
* Review: async_add_job --> async_add_executor_job
* Review: const
* Review: start logging messages with capital letter
* Review : UTC isoformated time --> fix "Invalid date""
* Fix hail forecast condition
* Review: _show_setup_form is a callback
* Fix update option
* Review: no icon for next_rain
* Review: inline cities form
* Review: store places as an instance attribute
* UNDO_UPDATE_LISTENER()
* Add support for slack bot icons via URL
* Removed as_user property from message send
* Use f-strings rather than concatenation
* Don't span lines with complex expression
If a device on the network presented a bad name, zeroconf
would throw zeroconf.BadTypeInNameException and the service
browser would die off. We now trap the exception and continue.
* Bump pysyncthru version to 0.7.0
This change includes a heavier refactoring, using a more reliable source for the device status and parsing display strings only for additional details
* Fix test flow to ensure a status is set
* Don't allow duplicate nightscout configs
* Fix nightscout translations
* Remove unnecessary should_poll method
* Remove SVG attribute, as it was duplicating the state
* Use aiohttp client session from HA
* Move validate_input outside the config class
* Use the entry unique_id on the sensor
* Move create entity logic
* Handle unexpected exception on Nightscout config
* update device
* add binary sensor
* updates post rebase
* fix entity type post rebase
* fix post rebase
* fix add entities
* fix name
* review comments
The default on python 3.8 is for max_workers is significantly
lower than the default on python 3.7 which means we can get starved
for workers.
To determine a reasonable maximum, the maximum was increased to large
number on 5 production instances.
The number of worker threads created during startup that were
needed to avoid waiting for a thread:
HOU 1 - 71
HOU 2 - 48
OGG 1 - 60
OGG 2 - 68
OGG 3 - 64
This lead to a selection of 64 as it was reliable in all cases
and did not have a significant memory impact
* Add ozw refresh_node_info websocket api
* Remove extra unsubs definition
* Remove unused bits from refresh_node_info websocket
* Add tests
* Add unsubscribe test
* Wait for response in unsubscribe test
* Squashed
* Fix requirements_all
* Update homeassistant/components/insteon/__init__.py
Only update options if the result is to create the entry.
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/insteon/__init__.py
No return value needed.
Co-authored-by: J. Nick Koston <nick@koston.org>
* Ref RESULT_TYPE_CREATE_ENTRY correctly
* Return result back to import config process
* Make DOMAIN ref more clear
Co-authored-by: J. Nick Koston <nick@koston.org>
* Speed up OZW availability check
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Move DwdWeatherWarningsAPI to a library hosted on PyPI
PyPI library uses new DWD WFS API
WFS API allows a more detailed query with reduced data sent as return
Change CONF_REGION_NAME from Optional to Required because it was never really optional
Set attribute region_state to "N/A" because it is not available via the new API
Add attributes warning_i_parameters and warning_i_color
* Use constants instead of raw strings
Streamline methods state and device_state_attributes
* Wrap api, use UTC time
* Update homeassistant/components/dwd_weather_warnings/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/dwd_weather_warnings/manifest.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add hourly forecast
* fix tests to assert for 2 entities created
* fix test to assert for 4 calls
* correct test tracking home number of calls
* fox tests
* fix test
* Apply suggestions from code review
* black
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Fix homekit_controller pairing retry
If the device was busy on the first pairing attempt, it
was not possible to retry.
* always restart pairing on recoverable execptions
* move code
* malformed pin is safe to restart
* make busy_error an abort
* switch max retries, simplify tests
* try pairing later
* try pairing later
* merge
* s/tlv_error/protocol_error/g
* Adjust wording
* Use global CONF_UNIQUE_ID for mqtt
* Update __init__.py
* Update __init__.py
* Update __init__.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
when changing the color for a hive light, keep the brightness at the
previous level.
Co-authored-by: Adam Charlton <ad5665@live.co.uk>
Co-authored-by: Adam Charlton <ad5665@live.co.uk>
* Add missing Short type to set_config_param
* Forgot to fix the for loop
* Remove leftover return
* Guard the for loop
* Changed from if to else
* Fixed list iteration for validating input
* Adjusted per linter
* [KODI] Fix casing issue
Alexa and the Services UI on HA feeds in a media type of "channel" for media type.
The Kodi code looks for a "CHANNEL" instead, as a result the functionality fails.
* Update homeassistant/components/kodi/media_player.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update homeassistant/components/kodi/media_player.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update homeassistant/components/kodi/media_player.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update homeassistant/components/kodi/media_player.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Add more tests
* Add tests for sensor platform
* Add more tests
* More tests
* Simplify parsing of attributes
* Change Quality scale to platinum
* Patch the library in the manual update entity test
* Add unsupported condition icon test
* Do not patch _async_get_data
* Apply suggestions from code review
* Update config_flow.py
* Apply suggestions from code review
* Apply suggestions from code review
* Apply suggestions from code review
* Update tests/components/accuweather/test_weather.py
* Apply suggestions from code review
* Add return_value
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
Support the action.devices.commands.mute intent to mute and unmute
media_players that declare support for mute/unmute.
For media players with support for volume up/down, but no support for
setting the volume to a specific number, allow use of the
action.devices.commands.relativeMute intent to control volume up/down.
This will improve support for IR blasters and other open-loop
media_player integrations.
Pre calc domain when an entity id created to avoid
having to call the property method which had to call
split_entity_id every time. If there are a lot of
zone related automations, async_active_zone can call
async_entity_ids frequently which results in 100000s
of split_entity_id via the domain property every
second.
```
2020-08-07 22:38:10 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.3903193064] local variable 'response' referenced before assignment
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/rest_command/__init__.py", line 115, in async_service_handler
async with getattr(websession, method)(
File "/usr/local/lib/python3.8/site-packages/aiohttp/client.py", line 1012, in __aenter__
self._resp = await self._coro
File "/usr/local/lib/python3.8/site-packages/aiohttp/client.py", line 582, in _request
break
File "/usr/local/lib/python3.8/site-packages/aiohttp/helpers.py", line 586, in __exit__
raise asyncio.TimeoutError from None
asyncio.exceptions.TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 125, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1281, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1316, in _execute_service
await handler.func(service_call)
File "/usr/src/homeassistant/homeassistant/components/rest_command/__init__.py", line 137, in async_service_handler
_LOGGER.warning("Timeout call %s", response.url, exc_info=1)
UnboundLocalError: local variable 'response' referenced before assignment
```
* Make sure groups are initialized before template sensors
This way users may use the `expand` function in templates to expand
groups and have HA listen for changes to group members.
Fixes#35872
* Patch async_setup_platform instead of async_setup
* Cleanup
* Use an event to avoid sleep
* Update tests/components/template/test_sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Make sure groups are initialized before template sensors
This way users may use the `expand` function in templates to expand
groups and have HA listen for changes to group members.
Fixes#35872
* Patch async_setup_platform instead of async_setup
* Cleanup
* Use an event to avoid sleep
* Update tests/components/template/test_sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Don't set SUPPORT_EFFECT on DemoLight if there are no effects
This requires an update to the group test - previously the other lights
instantiated by the DemoLight component had nothing in ATTR_EFFECT_LIST, but
still had SUPPORT_EFFECT set. This appears to have resulted in the light
group test code setting an effect on the group and expecting it to apply to
all lights, but given that two of the bulbs didn't actually support any
effects (due to the empty ATTR_EFFECT_LIST) this seems like a broken
assumption and updating the test to verify only the bulb that supports
effects has had one applied seems reasonable.
* Add support for exposing light effects via Google Assistant
The LightEffects trait only supports a fixed (and small) list of lighting
effects, but we can expose them via the Modes trait - this requires saying
"Set (foo) effect to (bar)" which is a little clumsy, but at least makes it
possible.
* added device classes for electrical measurement
(cherry picked from commit 2409fe19ed43bef568a0cca826652867d3a2d71a)
* upadte power factor unit (%)
* update power factor unit (%)
* Add support for reload_on_update to _abort_if_unique_id_configured
async_update_entry now avoids firing update listeners and writing
the storage if there are no actual changes.
* Actually add the tests
* collapse branch
* Update homeassistant/config_entries.py
Co-authored-by: Franck Nijhof <git@frenck.dev>
* handle entries that lack the ability to reload
* reduce
* adjust konnected tests
* update axis tests
* fix blocking
* more mocking
* config flow tests outside of test_config_flow
* reduce
* volumio
* Update homeassistant/config_entries.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* set reload_on_update=False for integrations that implement self._abort_if_unique_id_configured(updates= and a reload listen
* get rid of copy
* revert test change
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
```
2020-08-07 22:38:10 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.3903193064] local variable 'response' referenced before assignment
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/rest_command/__init__.py", line 115, in async_service_handler
async with getattr(websession, method)(
File "/usr/local/lib/python3.8/site-packages/aiohttp/client.py", line 1012, in __aenter__
self._resp = await self._coro
File "/usr/local/lib/python3.8/site-packages/aiohttp/client.py", line 582, in _request
break
File "/usr/local/lib/python3.8/site-packages/aiohttp/helpers.py", line 586, in __exit__
raise asyncio.TimeoutError from None
asyncio.exceptions.TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 125, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1281, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1316, in _execute_service
await handler.func(service_call)
File "/usr/src/homeassistant/homeassistant/components/rest_command/__init__.py", line 137, in async_service_handler
_LOGGER.warning("Timeout call %s", response.url, exc_info=1)
UnboundLocalError: local variable 'response' referenced before assignment
```
* Update Tesla to use DataUpdateCoordinator
* Update Tesla to use DataUpdateCoordinator
* Fix linting errors
* Apply suggestions from code review
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Address requested changes
* Apply suggestions from code review
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Fix lint errors
* Remove controller from hass.data
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Automatically switch between resume and start playing
* Fix Black issue
Weirdly when i run it i had an error `1544 files left unchanged, 3313 files failed to reformat.`
I didn't watch the commit check output afterward.
* track all settings and add service to update a setting
* sort setting types
* reduce frequency of updates due to the increase in API calls per update
* change dict call to a get in case audio settings aren't available
unlikely to occur but less error prone
* Update if statement to be more consistent
* revert changes to track all settings and store in state machine
* revert one more change
* force setting_type and setting_name to lowercase to make it easier to understand how to make service call
* make service calls even simpler by attempting to transform certain parameters as much as possible
* Support Next/Previous for InputSelector
* Update homeassistant/components/google_assistant/trait.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Adjust to match new version of _next_selected
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Fix webhook registration
* Only load camera platform with valid scope
* Add initial data handler and netatmo base class
* Update camera to use data handler
* Update init
* Parallelize API calls
* Remove cruft
* Minor tweaks
* Refactor data handler
* Update climate to use data handler
* Fix pylint error
* Fix climate update not getting fresh data
* Update climate data
* update to pyatmo 4.0.0
* Refactor for pyatmo 4.0.0
* Exclude from coverage until tests are written
* Fix typo
* Reduce parallel calls
* Add heating request attr
* Async get_entities
* Undo parallel updates
* Fix camera issue
* Introduce individual scan interval per device class
* Some cleanup
* Add basic webhook support for climate to improve responsiveness
* Replace ClimateDevice by ClimateEntity
* Add support for turning camera on/off
* Update camera state upon webhook events
* Guard data class registration with lock
* Capture errors
* Add light platform
* Add dis-/connect handling
* Fix set schedule service
* Remove extra calls
* Add service to set person(s) home/away
* Add service descriptions
* Improve service descriptions
* Use LightEntity instead of Light
* Add guard if no data is retrieved
* Make services entity based
* Only raise platform not ready if there is a NOC
* Register webhook even during runtime
* Fix turning off event
* Fix linter error
* Fix linter error
* Exclude light platform from coverage
* Change log level
* Refactor public weather sensor to use data handler
* Prevent too short coordinates
* Ignore modules without _id
* Code cleanup
* Fix test
* Exit early if no home data is retrieved
* Prevent discovery if already active
* Add services to (un-)register webhook
* Fix tests
* Not actually a coroutine
* Move methods to base class
* Address pylint comment
* Address pylint complaints
* Address comments
* Address more comments
* Add docstring
* Use single instance allowed
* Extract method
* Remove cruft
* Write state directly
* Fix test
* Add file to coverage
* Move nested function
* Move nested function
* Update docstring
* Clean up code
* Fix webhook bug
* Clean up listeners
* Use deque
* Clean up prints
* Update homeassistant/components/netatmo/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/camera.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/camera.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/camera.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/camera.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/camera.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/netatmo/camera.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Rename data_class variable
* Break when match
* Extract method
* Extract methods
* Rename variable
* Improve comment
* Some refinements
* Extra
* Extract method
* Simplify code
* Improve reability
* Code simplification
* Simplify code
* Simplify code
* Code cleanup
* Fix import
* Clean up
* Clean up magic strings
* Replace data_class_name with CAMERA_DATA_CLASS_NAME
* Replace data_class_name with CAMERA_DATA_CLASS_NAME
* Replace data_class_name with HOMEDATA_DATA_CLASS_NAME
* Replace data_class_name in public weather sensor
* Clean up
* Remove deprecated config options
* Schedule immediate update on camera reconnect
* Use UUID to clearly identify public weather areas
* Use subscription mode
* Move clean up of temporary data classes
* Delay data class removal
* Fix linter complaints
* Adjust test
* Only setup lights if webhook are registered
* Prevent crash with old config entries
* Don't cache home ids
* Remove stale code
* Fix coordinates if entered mixed up by the user
* Move nested function
* Add test case for swapped coordinates
* Only wait for discovery entries
* Only use what I need
* Bring stuff closer to where it's used
* Auto clean up setup data classes
* Code cleanup
* Remove unneccessary lock
* Update homeassistant/components/netatmo/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update tests/components/netatmo/test_config_flow.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Clean up dead code
* Fix formating
* Extend coverage
* Extend coverage
Co-authored-by: J. Nick Koston <nick@koston.org>
Fixed a rarely occuring problem (maybe a change with Fibaro HC3) where some scenes don't have a "visible" parameter, which was assumed to be mandatory in the past.
* Wait for the state of the entity to actually change before resolving PUT request
Additionally, we cache the entity's properties for up to two seconds for the successive GET state request
When Alexa issues a command to a Hue hub; it immediately queries the hub for the entity's state to confirm if the command was successful.
It expects the state to be effective immediately after the PUT request has been completed.
There may be a delay for the new state to actually be active, this is particularly obvious when using group lights.
This leads Alexa to report that the light had an error.
So we wait for the state of the entity to actually change before responding to the PUT request.
Due to rounding issue when converting the HA range (0..255) to Hue range (1..254) we now cache the state sets by Alexa and return those cached values for up to two seconds so that Alexa gets the same value as it originally set.
Fixes#38446
* Add new tests verifying emulated_hue behaviour.
* Increase code test coverage.
The remaining uncovered lines can't be tested as they mostly check that the hass framework or the http server properly work.
This commit doesn't attempt to fix exposed issues as it would be out of scope ; it merely create the tests to exercise the whole code.
* Update homeassistant/components/emulated_hue/hue_api.py
* Add test for state change wait timeout
* Preserve the cache long enough for groups to change
* Update tests/components/emulated_hue/test_hue_api.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Reduce time to reload yaml and check configuration
We spend a significant amount of time compiling templates
that we have already compiled.
Use an LRU cache to avoid re-compiling templates that
we frequently use.
* pylint
* switch to WeakValueDictionary
* preen
* Add config flow to HLK-SW16
* Use entry_id for unique_id
* Add options update capability
* Refactor entry_id under domain
* Remove name from config
* Set options
* Remove options flow
* remove unneccesary else block from validate_input and move domain cleanup to async_unload_entry
* Add tests and config import
* Add back config schema
* Remove config import
* Refactor unload
* Add back config import
* Update coveragerc
* Don't mock validate_input
* Test duplicate configs
* Add import test
* Use patch for timeout test
* Use mock for testing timeout
* Use MockSW16Client for tests
* Check mock_calls count
* Remove unused NameExists exception
* Remove title from strings.json
* Mock setup for import test
* Set PARALLEL_UPDATES for switch
* Move hass.data.setdefault(DOMAIN, {}) to async_setup_entry
* Bump the numato-gpio dependency
This relaxes the pyserial dependency to >=3.1.1 as requested by the
project with respect to the upcoming, stricter pip resolver.
* Update numato-gpio due to deprecation of class BinarySensorDevice
* Add new python library
* Update requirements
* Remove old libs
* config flow with client.search_places
* WIP: UI config + weather OK
* WIP: sensors
* WIP: add pressure to weather + available to sensor
* WIP: coordinator next_rain + alert
* Make import step working
* migrate to meteofrance-api v0.0.3
* Create coordinator for rain only if data available in API
* Fix avoid creation of rain sensor when not available.
* Add options flow for forecast mode
* Fix import config causing bug with UI
* Add alert sensor
* Add coastal alerts when available (#5)
* Use meteofrance-api feature branch on Github
* Update unit of next_rain sensor
* Test different type of attibutes
* Typo for attribute
* Next rain sensor device class as timestamp
* Better design for rain entity attributes
* use master branch for meteofrance-api
* time displayed in the HA server timezone.
* fix bug when next_rain_date_locale is None
* Add precipitation and cloud cover sensors
* Add variable to avoid repeating computing
* Apply suggestions from code review
Co-authored-by: Quentame <polletquentin74@me.com>
* Attributes names in const.
* Cleaning
* Cleaning: use current_forecast and today_forecast
* Write state to HA after fetch
* Refactor, Log messages and bug fix. (#6)
* Add messages in log
* Refactor using 'current_forecast'.
* Use % string format with _LOGGER
* Remove inconsistent path
* Secure timestamp value and get current day forecast
* new unique_id
* Change Log message to debug
* Log messages improvement
* Don't try to create weather alert sensor if not in covered zone.
* convert wind speed in km/h
* Better list of city in config_flow
* Manage initial CONF_MODE as None
* Review correction
* Review coorections
* unique id correction
* Migrate from previous config
* Make config name detailed
* Fix weather alert sensor unload (#7)
* Unload weather alert platform
* Revert "Unload weather alert platform"
This reverts commit 95259fdee84f30a5be915eb1fbb2e19fcddc97e4.
* second try in async_unload_entry
* Make it work
* isort modification
* remove weather alert logic in sensor.py
* Refactor to avoid too long code lines
Co-authored-by: Quentin POLLET <polletquentin74@me.com>
* Update config tests to Meteo-France (#18)
* Update meteo_france exception name
* Update MeteoFranceClient name used in tests
* Update 'test_user'
* Make test_user works
* Add test test_user_list
* Make test_import works
* Quick & Dirty fix on exception managment. WIP
* allow to catch MeteoFranceClient() exceptions
* remove test_abort_if_already_setup_district
* bump meteofrance-api version
* We do not need to test Exception in flow yet
* Remove unused data
* Change client1 fixture name
* Change client2 fixture name
* Finish cities step
* Test import with multiple choice
* refactor places
* Add option flow test
Co-authored-by: Quentin POLLET <polletquentin74@me.com>
* Fix errors due to missing data in the API (#22)
* fix case where probability_forecast it not in API
* Workaround for probabilty_forecast data null value
* Fix weather alert sensor added when shouldn't
* Add a partlycloudy and cloudy value options in condition map
* Enable snow chance entity
* fix from review
* remove summary
* Other fix from PR review
* WIP: error if no results in city search
* Add test for config_flow when no result in search
* Lint fix
* generate en.json
* Update homeassistant/components/meteo_france/__init__.py
* Update homeassistant/components/meteo_france/__init__.py
* Update homeassistant/components/meteo_france/__init__.py
* Update homeassistant/components/meteo_france/sensor.py
* Update homeassistant/components/meteo_france/__init__.py
* Update homeassistant/components/meteo_france/__init__.py
* string: city input --> city field
Co-authored-by: Quentin POLLET <polletquentin74@me.com>
* Add zeroconf discovery for bond integration
* Add zeroconf discovery for bond integration (fix typo)
* Add zeroconf discovery for bond integration (PR feedback)
* Add zeroconf discovery for bond integration (PR feedback)
* Add zeroconf discovery for bond integration (PR feedback)
* fix error when unique id is re-used
* add test for the logging
* Update homeassistant/helpers/entity_platform.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/helpers/entity_platform.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add Abode camera controls
* Add tests for camera turn on and off service
* Bump abodepy version
* Bump abodepy version and updates to reflect changes
* Update manifest
* Restore the ability to tell when a harmony activity is starting
* adjust for poweroff
* switch to activity name for activity starting
* adjust
* do not set starting on initial update
* 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>
* Simplify generate_entity_id
Use similar optimized logic for async_generate_entity_id
from entity_registry that was already optimized
* pylint
* make generate_entity_id a wrapper around async_generate_entity_id instead
* Add support for dimmable lights
* Fix formatting
* Add supported features test on Bond Light
* Add more tests to bond light and fixes comments
* Fix rebase conflict resolution
* Apply suggestions from code review
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Add support for multiple time triggers in automations
* Attach with single callback
* Patch time in tests
* Improve test coverage
* Adjusting my facepalm moment
Through some testing with the samsungtvws library, it was determined
that the issue is related to the short read timeout (1s). Increasing
the timeout to 10s should solve the issue.
When speedtest starts up, it would saturate the network interface and cause other
integrations to randomly fail to setup. We now wait to do the first speed test
until after the started event is fired.
We would connect to the hub via discovery and via setup
around the same time. This put additional load on the hub
which can increase the risk of timeouts.
Through some testing with the samsungtvws library, it was determined
that the issue is related to the short read timeout (1s). Increasing
the timeout to 10s should solve the issue.
* Don't schedule an update if the hass instance isn't instantiated
If we get a status update packet before self.hass exists, we trip a
"assert self.hass is not None" that was added in 0.112 and setup fails.
* Fix callback hander properly
The right fix is to register the callback after hass is ready for it.
* Remove unnecessary check
This is now guaranteed by the core code.
* Don't request an immediate device update and do an async connect.
* Remove unnecessary return
When speedtest starts up, it would saturate the network interface and cause other
integrations to randomly fail to setup. We now wait to do the first speed test
until after the started event is fired.
* Dimming duration fix
Fixes#38068 - allows dimming duration to 7620 (default of 7621)
* Forgot to commit my test updates
* Added backwards compatibility with pre-150+ builds
Added tests for backwards compatibility
* Upped the build number cut off
* Add check for major.minor version as well
* Fix major.minor detection
* Adjust variable name
* Adjust version checking logic
* Math is hard
* Rename files, adjust test names
* Update doc string
Automations or HomeKit may turn the device on multiple times
when the current activity is already active which will cause
harmony to lose state. This behavior is unexpected as turning
the device on when its already on isn't expected to reset state.
* Add Abode camera controls
* Add tests for camera turn on and off service
* Bump abodepy version
* Bump abodepy version and updates to reflect changes
* Update manifest
* Refactor bond unit tests to reduce boilerplate
* Refactor bond unit tests to reduce boilerplate (PR feedback)
* Refactor bond unit tests to reduce boilerplate (PR feedback, nullcontext)
* Support multiple camera stream in HomeKit
* Update homeassistant/components/homekit/type_cameras.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Revert "Update homeassistant/components/homekit/type_cameras.py"
This reverts commit d7624c5bff.
* Update homeassistant/components/homekit/type_cameras.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/homekit/type_cameras.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* black
* bump pyhap
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
We would connect to the hub via discovery and via setup
around the same time. This put additional load on the hub
which can increase the risk of timeouts.
Added support for new 2020 version of the Aqara D1 double wall switch (lumi.remote.b286acn02)
Confirmed that all button press events use the same codes after updating deconz rest api to add support for this switch.
A contributor of the API currently has the working version @ git clone --branch Legrand-teleruptor https://github.com/Smanar/deconz-rest-plugin.git
* Fix Xbox Live component
The API moved to a different domain, so the integration was broken.
The library upgrade contains the required fixes.
* Fix API connectivity check
* Access dict values directly
* Fix SimpliSafe to work with new MFA
* Code review (part 1)
* Input needed from Martin
* Code review
* Code review
* Restore YAML
* Tests
* Code review
* Remove JSON patching in tests
* Add reauth test
* One more reauth test
* Don't abuse the word "conf"
* Update homeassistant/components/simplisafe/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Test coverage
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fix Xbox Live component
The API moved to a different domain, so the integration was broken.
The library upgrade contains the required fixes.
* Fix API connectivity check
* Access dict values directly
* Add binary sensor support to motion sensors and smoke detectors
* Add support for new sensor events as binary sensors
Adds a default device_class for motion sensors and smoke detector
* Use device type instead of event to set class
* Add some additional binary values
* Fix SimpliSafe to work with new MFA
* Code review (part 1)
* Input needed from Martin
* Code review
* Code review
* Restore YAML
* Tests
* Code review
* Remove JSON patching in tests
* Add reauth test
* One more reauth test
* Don't abuse the word "conf"
* Update homeassistant/components/simplisafe/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Test coverage
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
for scenarios of enabling/disabling (~ creating/removing) entities,
so it does not trigger in removal if a `to: xxx` is defined, and also
does not trigger in creation if a `from: xxx` is present.
* Add set_central_heating_ovrd service to opentherm_gw
* Use await instead of async_create_task
Use await instead of async_create_task as per review.
Co-authored-by: J. Nick Koston <nick@koston.org>
* Use boolean values for service call to opentherm_gw.set_central_heating_ovrd
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update const.py
Added device class "IPKeyBlindMulti" to const.py in order to support HomematicIP device HmIP-DRBLI4. The site package pyhomematic supports this class already in actors.py.
* Update const.py
Every second we were calling the getrandom() syscall to generate a uuid4
for a context that will never be looked:
* In most setups there are no more time_changed listeners
* The ones that do exist never care about context
* time_changed events are never saved in the database
* Refactor bond integration to centralize update state logic in single superclass
* Refactor bond integration to centralize update state logic in single superclass
* Ensure we do not start discovered flows until after the start event has fired
This change makes zeroconf and ssdp match discovery behavior of not
creating config flows until the start event has been fired. This
prevents config flow creation/dependency installs for discovered
config flows from competing for cpu time during startup.
* Start discovery/service browser/ssdp when EVENT_HOMEASSISTANT_STARTED is fired instead of EVENT_HOMEASSISTANT_START
* Implement unload entry
* Change async_remove to remove
* Pop data from hass.data
* Change sequence order in unload
* Dont unload internal when unload platforms fail
* Use event loop scheduling for tracking time patterns
* make patching of time targetable
* patch time tests since time can tick to match during the test
* fix more tests
* time can only move forward
* time can only move forward
* back to 100% coverage
* simplify since the event loop time cannot move backwards
* simplify some more
* revert simplify
* Revert "revert simplify"
This reverts commit bd42f232f6.
* Revert "simplify some more"
This reverts commit 2a6c57d514.
* Revert "simplify since the event loop time cannot move backwards"
This reverts commit 3b13714ef4.
* Attempt another simplify
* time does not move backwards in the last two
* remove next_time <= now check
* fix previous merge error
* Fix color temp math
* Ran black --fast
* Update test_light.py
* tweaking mireds
* updating comments
* fixing test_light to match standards
* fixing comments, need coffee
* WOLF Smart-set integration
* Removed translations. Changed device class of timestamp. Added new test for unknown exception
* Remove unit_of_measurement from hours sensor
* Code cleanup. Pull Request comments fixes
* ConnectError import change. Removed DEVICE_CLASS_TIMESTAMP
* Add unique id guard with tests. Use common translations. Move device_id resolution to config_flow.
* Remove debug print
This issue has been corrected and then reverted multiple times.
It seems that the core issue was a casing one (On/off vs On/Off) ; for better
matching with a real Hue hub, also add the productname.
Tested to work with echo 2 and echo 5.
* Close the ADB connection on HA stop
* Get the test to pass
* Remove unnecessary test code
* Register the callback sooner
* '_async_stop' -> 'async_close'
* 'async_close' method -> '_async_close' function
* Passes secure parameter when setting up Nuki (#36844)
* Adds an additional configuration option for soft bridges instead of passing True when setting up the bridge
* Revert "Adds an additional configuration option for soft bridges instead of passing True when setting up the bridge"
This reverts commit af1d839ab1.
* Make sensor and binary_sensor inherit from base class
* Drop several pointless public properties
* Make sure base function has same parameters
* Drop pass
* Missed one
* Adjust inherit order
* Passes secure parameter when setting up Nuki (#36844)
* Adds an additional configuration option for soft bridges instead of passing True when setting up the bridge
* Revert "Adds an additional configuration option for soft bridges instead of passing True when setting up the bridge"
This reverts commit af1d839ab1.
* Add event attribute to display last received event
* Restore state using event attribute
* Allow empty dict for device config
* Must also validate normal case
* Do early return
* Refactor cached ZHA channel reads.
If doing a cached ZCL attribute read, do "only_from_cache" read for
battery operated devices only. Mains operated devices will do a network
read in case of a cache miss.
* Use cached attributes for ZHA electrical measurement
* Bump up ZHA zigpy dependency.
* Refactor cached ZHA channel reads.
If doing a cached ZCL attribute read, do "only_from_cache" read for
battery operated devices only. Mains operated devices will do a network
read in case of a cache miss.
* Use cached attributes for ZHA electrical measurement
* Bump up ZHA zigpy dependency.
* Remove support for legacy logbook events created before 0.112
Reduce the complexity of the logbook code. This
should also have a small performance boost.
* None is the default
Most of the the template platforms would check for
extract_entities failing to extract entities and avoid
setting up a state change listner for MATCH_ALL after
extract_entities had warned that it could not extract
the entities and updates would need to be done manually.
This protection has been extended to all template platforms.
Alter the behavior of extract_entities to return the
successfully extracted entities if one or more templates
fail extraction instead of returning MATCH_ALL
async_track_state_change_event is faster than async_track_state_change
and since we do not care about the data being returned to the callback
this is a simple speedup
async_track_state_change_event is faster than async_track_state_change
and since we do not care about the data being returned to the callback
this is a simple speedup
* Switch async_track_state_change to the faster async_track_state_change_event part 4
Calling async_track_state_change_event directly is faster than async_track_state_change (see #37251) since async_track_state_change is a wrapper around async_track_state_change_event now
* pylint
Calling async_track_state_change_event directly is faster than async_track_state_change (see #37251) since async_track_state_change is a wrapper around async_track_state_change_event now
Calling async_track_state_change_event directly is faster than async_track_state_change (see #37251) since async_track_state_change is a wrapper around async_track_state_change_event now
Previously, the media_content_id field would contain the track name, which
appears was a regression when the Spotify integration was rewritten in
7e4b9adc. The media_content_id now reverts to containing the Spotify
track 'uri' field, which has the form 'spotify:track:...'
* Support multiple MQTT availability topics
* Make availability list and availability_topic exclusive
* Make availability list and availability_topic exclusive
* Add missing abbreviation
* Switch to config flow setup
* Add minimal test for config flow
* Add myself as codeowner and address some review concerns
* Address some further review comments
* Created a binary sensor and corrected some review comments.
* Updated the poolsense class and its interface to handle credentials better
* Moved the client session to the PoolSense class.
* Apply suggestions from code review
* Update binary_sensor.py
* Update homeassistant/components/poolsense/__init__.py
* Update sensor.py
* Update binary_sensor.py
* Removed unnecessary class variable
* Correcting a merge error.
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Switch to integration level config
* Switch to per device config rather than per entity type
* All roller shutters should be added as covers
(there are non lighting types)
* Fixup tests that used invalid packets for platforms
* Avoid variable re-use
* Allow control events on sensors too
That way we get signal level sensors for these too
* Lint correction
* Don't filter sensors from config
Disable sensors from GUI if the entities are not wanted
* Correct usage of ATTR_ instead of CONF_
* Make sure the logging when a new entity is added includes the event
* Introduce Bond Hub concept
* Read Hub version information when setting up entry
* Link entities to Hub using via_device
* Add test to verify created Hub device properties
* Created a binary sensor and corrected some review comments.
* Updated the poolsense class and its interface to handle credentials better
* Moved the client session to the PoolSense class.
* Apply suggestions from code review
* Update binary_sensor.py
* Update homeassistant/components/poolsense/__init__.py
* Update sensor.py
* Update binary_sensor.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Refactor Bond integration to remove duplication in Entity code and unit tests
* Refactor Bond integration to remove duplication in Entity code and unit tests (PR feedback)
* Support Fan domain in Bond integration
* Support Fan domain in Bond integration
* Support Fan domain in Bond integration (apply PR feedback)
* Support Fan domain in Bond integration (apply PR feedback)
* Use the shared zeroconf instance for homekit_controller
* bump version
* Update for upstream changes. Thank you @Jc2k !
* naming
* bump version
* empty commit to reset CI as re-run is not working
* Re-add remote file support for Slack
* More work
* Ensure Slack can only upload files from whitelisted directories
* Cleanup
* Finish work
* Code review
* Messing around
* Final cleanup
* Add comment explaining why we use aiohttp for remote files
* Typo
* Declare Bond covers as having assumed state, setup local polling for state updates
* Declare Bond covers as having assumed state, setup local polling for state updates (apply feedback from PR review)
* Declare Bond covers as having assumed state, setup local polling for state updates (apply feedback from PR review)
* Declare Bond covers as having assumed state, setup local polling for state updates (apply feedback from PR review)
* Update type_cameras.py
* Apply suggestions from code review
Support both 24kHz and 16kHz sample rate
Co-authored-by: J. Nick Koston <nick@koston.org>
* Adjust formatting
* Reformat
Co-authored-by: J. Nick Koston <nick@koston.org>
* Detect lingering threads after tests
* Make sure cast is setup before checking state
* Make sure we ask executors of old hass to shutdown
We are not waiting here, just hoping for the best
* Make sure all instances of hass and executors is stopped.
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Also apply hass stopping to scripts
* Adjust to changes how we set up executor
* Add new CoreState.stopped
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
This way _handle_event can contain things available
when entity has been added to home assistant,
and _apply event can remain internal and used on init.
* Add public weather sensors back in
* Remove stale code
* Cleanup after before adding entities
* Fix pylint complaint
* Add test for options flow
* Change mode to listbox
* Update .coveragerc
* Address comments
* Don't process empty list
* Address comment
* Fix mistake
* Make signal unique
* Make string more unique
* Fix merge conflict
* First step of an EnOcean integration refactoring, including code reorganisation and support of a setup config flow
* Moved title to root of strings file
* Fixed pre-commit checks failures
* Fixed linter errors
* Updated formatted string format in logs
* Removed leftover comment
* Multiple changes after PR change requests.
Using an import flow for yaml config, removed unnecessary logs, added proper unload in __init__ and EnOceanDongle
Replaced config state machine by several flows.
Serial port validity check done in the EnOceanDongle class asynchronously, removed unique ID from config flow
Multiple cosmetic changes
* Multiple changes after PR change requests
* Added variable to store default value, as setdefault was caught returning None when the empty dict literal was passed as an argument
* Literal used directly
* Added tests for EnOcean config flows, changed static methods to bundle methods for bundle
* Updated variable name
* Added missing mock to test, replaced repeated magic strings by constants
* Changed imports to avoid an unused import warning from pylint on DOMAIN
* Adding pylint exception for unused import
* Added proper propagation of setup and unload to platforms, removed dead code, some syntax changes
* Removed setup_entry forwarding as the entities can only be configured using yaml
* Removed forwarding of unload
* Enabled code coverage for config flow only
* Clean up coveragerc
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* make ip check hostname aware
* add executor job for sync function doing IO and remove errant comma
* revert change to update new_data explicitly for options keys since it is already done later
* empty commit to retrigger CI
* Add support for set_config_parameter service
* Adjusted elif to if
* More if/else cleanup
* More if/else cleanup
* Less nesting
* End loop properly
* Added byte type
* Convert break to return
* fix presets and mode conversion
* fix mapping issues in ozw climate
* build mapping table in advance
* Copying a dict to a list copies the keys by default
* Switch what is used for device identifier
type_string can be changed if new device types are added based
on same driver.
* No need to slugify unique id
* Make devices and activities visibile as harmony attributes
* Allow restoring previous activity, add tests
* fix test
* Kill activity_notify with fire
* remove trailing ,
The icon for Withings sleep sensor was using `mdi:bed` (which is correct for MDI v5.0.45 and later). However Home Assistant still uses an older version of Material Design Icons (4.9.95), so this `mdi:bed` icon was not displaying at all. It should be`mdi:hotel` instead, which you can see here: https://cdn.materialdesignicons.com/4.9.95/
- Bumps bravia-tv lib to 1.0.6 which fixes is_connected() to actually
return True only when API is connected, instead of just returning whether
or not cookies are cached (regardless if they actually worked).
- Wrap is_connected() because it now performs io.
- Remove unnecessary logic to refresh cookies. Now that
is_connected() works, the bravia instance only needs to be
reconnected when is_connected is False and TV is not off.
* Move logbook continuous domain filtering to sql
sensors tend to generate a significant amount of states
that are filtered out by logbook. In testing 75% of
states can be filtered away in sql to avoid the
sqlalchemy ORM overhead of creating objects that will
be discarded.
* remove un-needed nesting
* 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
* Cleanup async_track_state_change and augment docstrings.
Skip from_state and to_state matching in
async_track_state_change when they are None
Optimize the state change listener for the most
common use case: no to_state and from_state
matching.
* Update benchmark to be more realistic (previously we assumed only one entity was present in the whole instance)
* Add more tests to ensure behavior is preserved
* Ensure new behavior matches test
* remove MATCH_ALL from zone automation since its the default anyways
* Might as well use async_track_state_change_event instead since MATCH_ALL is removed
* Switch to dispatcher
* Adjust tests for dispatcher
* Store device in sensor
* Move state application into binary sensor entity class
* Move more specifics into per platform classes
* Should not apply event in init of sensor
* Switch to call_later
* Make apply_event public
* No point in slugifying debug logs
* Adjust error in off delay and event
* Make sure we match with masked id
* Migrate Guardian to use the DataUpdateCoordinator
* Finish work
* Cleanup
* Don't use UpdateFailed error
* Code cleanup
* Code cleanup
* Remove unnecessary change
* Code review
* Code review
* Use a subclass of DataUpdateCoordinator
* Make sure to pop client upon unload
* Adjust coverage
* Switch tests to use hass objects instead of direct
* Make sure sensor update state
* Add some initial binary sensor tests
* Add initial binary sensor tests
* Add tests for pt2262
* Add test for off delay
Calling async_track_state_change_event directly
is faster than async_track_state_change (see #37251) and has
slightly lower latency triggering state updates
* Convert Android TV integration to async
* pylint
* Remove unused test code
* Require async versions of androidtv and adb-shell
* Cleanup
* Remove commented out code
* Use constants SHELL_RESPONSE_OFF and SHELL_RESPONSE_STANDBY
* Prebake common history queries
The python overhead of to construct
the queries exceeded the database overhead. We now
prebake the queries that get frequently polled.
This reduces the time it takes to update history_stats
sensors and can make quite a difference if there
are a lot of them.
When using the mini-graph-card card, all the entities
on the card being graphed are queried every few seconds
for new states. Previously this would tie up the database if there
are lot of these graphs in the UI.
* Update homeassistant/components/history/__init__.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/history/__init__.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* cache entity_filter in the lambda
* switch to yield
* Revert "switch to yield"
This reverts commit f8386f4940.
* get_states always returns a list
* query wasnt actually reusable so revert part of the breakout
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add NetdataAlarms alarm sensor to additionally collect alarm information from the netdata host
* Incorporate suggested changes by @MartinHjelmare
* Change from pictures to icons
* Simplify API callbacks following home-assistant-ecosystem/python-netdata/pull/5 and home-assistant-ecosystem/python-netdata/pull/6
* Bring back lost empty line
* Update the library version in manifest.json
* Update the library version in requirements_all.txt
* Linting
* Linting
* Fix typo
* Do not count cleared and undefined alarms as warnings
* Do not count cleared, undefined and uninitialized alarms as warnings
- Bumps bravia-tv lib to 1.0.6 which fixes is_connected() to actually
return True only when API is connected, instead of just returning whether
or not cookies are cached (regardless if they actually worked).
- Wrap is_connected() because it now performs io.
- Remove unnecessary logic to refresh cookies. Now that
is_connected() works, the bravia instance only needs to be
reconnected when is_connected is False and TV is not off.
The icon for Withings sleep sensor was using `mdi:bed` (which is correct for MDI v5.0.45 and later). However Home Assistant still uses an older version of Material Design Icons (4.9.95), so this `mdi:bed` icon was not displaying at all. It should be`mdi:hotel` instead, which you can see here: https://cdn.materialdesignicons.com/4.9.95/
* GitHub Actions: Add yamllint problem matcher
* Introduce YAML issue to test problem matcher
* Revert "Introduce YAML issue to test problem matcher"
This reverts commit fa88c9484e.
* GitHub Actions: Add check executables problem matcher
* Create a problem for testing
* Revert "Create a problem for testing"
This reverts commit 3532b3777f.
* GitHub Actions: Add pylint problem matcher
* Create a pylint issue to test
* Create another pylint issue to test
* Register problem matcher in same step
* Apply possible workaround
* Disable problem matcher to catch raw output
* Trying again with new CI containers
* Extend problem matcher with errors and warnings
* Improve matching, keep error code in message
* Revert "Create another pylint issue to test"
This reverts commit a90e23656e.
* Revert "Create a pylint issue to test"
This reverts commit 9dd5148eb4.
* Fix stable name in job description
* GitHub Actions: Add codespell problem matcher
* Add some spelling issues for test
* Disable color, might throw off matcher
* Revert "Add some spelling issues for test"
This reverts commit 3afb59c8d9.
* Support multiple MQTT availability topics
* Make availability list and availability_topic exclusive
* Make availability list and availability_topic exclusive
* Add missing abbreviation
* add more unit tests for plum_lightpad
* add more unit tests for plum_lightpad
* add more unit tests for plum_lightpad
* add more unit tests for plum_lightpad
* Update tests/components/plum_lightpad/test_init.py
apply suggested way to invoke async_setup_entry
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
apply suggested way to invoke async_setup_entry
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
apply suggested way to invoke async_setup_entry
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
remove now unused import
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
import Mock from tests.async_mock as suggested
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
remove now unused import
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* fix unit tests that were failing after suggested changes
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Rework and re-enable rfxtrx tests
* Add missed change to _signal_event
* Fixup the dummy serial that causes max cpu
* Make sure we cleanup thread here too
* Make sure we always wait for tasks before we check state
* Some more places we need to wait before checking
* Improve unifi device tracker performance
The unifi websocket sends an update every second
which generates a significant amount of state
changed updates.
Avoid creating callback functions when they
are not going to be used.
* make _no_heartbeat/_make_disconnected instance methods
* remove extra empty line
* revert is_wired change
* remove extra line
* 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>
* Initial commit for Dexcom integration
* Dexcom config flow testing
* Clarify errors during setup
* Resolve minor test issues
* Update sensor availability, resolve linting issues
* Add sensor tests
* Remove title due to 0.109, add abort
* >94.97% codecov/patch
* Move .translations/ to translations/
* Add constants for servers and unit of measurements
* Bump pydexcom version
* Updated domain schema, Dexcom creation
* Support for different units of measurement
* Update tests
* Remove empty items from manifest
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Raise UpdateFailed if fetching new session fails
* Switch everything over to required
* Simplify state information
* Simplify async_on_remove
* Pydexcom package now handles fetching new session
* Only allow config flow
* Remove ternary operator
* Bump version, pydexcom handling session refresh
* Using common strings
* Import from test.async_mock
* Shorten variable names
* Resolve tests after removing yaml support
* Return false if credentials are invalid
* Available seems to handle if data is empty
* Now using option flow, remove handling import
* Add fixture for JSON returned from API
* Overhaul testing
* Revise update options
* Bump pydexcom version
* Combat listener repetition
* Undo update listener using callback
* Change sensor availability to use last_update_success
* Update sensor availability and tests
* Rename test
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add service to support setting timer on water heater component
* Update water_heater.py
Remove info logging
Return if unsupported option used
* Added default temperature as it is optional
* Update homeassistant/components/tado/services.yaml
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/tado/services.yaml
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/tado/services.yaml
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/tado/water_heater.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Fix to remove else statement, and fix lint error
* Reinstate entity id on schema, allow setting with temperature on devices that dont support it
* Remove entity id from schema as not required
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
This effectively fixes an important bug where the graph would go negative because 1.2.0 used the 32-bit counters and 1.3.0 uses 64-bit counters will not realistically go negative any time soon.
Since we now base all of exposure checks on data that
will not change, we can cache the result instead
of calculating it every loop.
This change complements the work done in #32718
* refactoring to share logic and sensor startup error test
* Added handling for V1 InfluxDBServerError to start-up and runtime and test for it
* Added InfluxDBServerError test to sensor setup tests
* Raising PlatformNotReady exception from sensor for setup failure
* Proper testing of PlatformNotReady error
This effectively fixes an important bug where the graph would go negative because 1.2.0 used the 32-bit counters and 1.3.0 uses 64-bit counters will not realistically go negative any time soon.
* add first unit test to config flow for Plum Lightpad
* add first unit test to config flow for Plum Lightpad (add changed requirements_test_all.txt)
* add first unit test to config flow for Plum Lightpad
* add first unit test to config flow for Plum Lightpad (bring coverage to 100%)
* add first unit test to config flow for Plum Lightpad
* add first unit test to config flow for Plum Lightpad (updated patch path as suggested)
* add first unit test to config flow for Plum Lightpad (add unit test for abort)
* Move logbook continuous domain filtering to sql
sensors tend to generate a significant amount of states
that are filtered out by logbook. In testing 75% of
states can be filtered away in sql to avoid the
sqlalchemy ORM overhead of creating objects that will
be discarded.
* remove un-needed nesting
* add support for config flow for Plum Lightpad integration
* add support for config flow for Plum Lightpad integration (remove unintended change to requirements_test_all.txt)
* add support for config flow for Plum Lightpad integration (fix lint issues)
* add support for config flow for Plum Lightpad integration (PR feedback)
* add support for config flow for Plum Lightpad integration (fix lint)
* Update homeassistant/components/plum_lightpad/__init__.py
use debug instead of info for logging
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/plum_lightpad/strings.json
switch to use generated references instead of hard-coded strings
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/plum_lightpad/strings.json
switch to use references instead of hard-coded string
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/plum_lightpad/strings.json
removing translated title per suggestion
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/plum_lightpad/strings.json
removing per suggestion
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* remove unnecessary deepcopy
* remove unnecessary logging warning, since ignoring is expected for configuration.yaml scenario
* switch to hass.loop.create_task per PR feedback
* show login errors when configuring integration via UI (PR feedback)
* disable wrongly flag pylint violation
* add except handler to handle connection errors when setting up config flow entry
* address PR feedback regarding exception handling
* Update homeassistant/components/plum_lightpad/config_flow.py
use helper instead of custom code/message-id
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* 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
Cleanup indexes as >50% of the db size was indexes,
many of them unused in any current query
Logbook search was having to filter event_types without
an index:
Created ix_events_event_type_time_fired
Dropped ix_events_event_type
States had a redundant keys on composite index:
Dropped ix_states_entity_id
Its unused since we have ix_states_entity_id_last_updated
De-duplicate storage of context in states as
its always stored in events and can be found
by joining the state on the event_id.
Dropped ix_states_context_id
Dropped ix_states_context_parent_id
Dropped ix_states_context_user_id
After schema v9:
STATES............................................ 10186 40.9%
EVENTS............................................ 5502 22.1%
IX_STATES_ENTITY_ID_LAST_UPDATED.................. 2177 8.7%
IX_EVENTS_EVENT_TYPE_TIME_FIRED................... 1910 7.7%
IX_EVENTS_CONTEXT_ID.............................. 1592 6.4%
IX_EVENTS_TIME_FIRED.............................. 1383 5.6%
IX_STATES_LAST_UPDATED............................ 1079 4.3%
IX_STATES_EVENT_ID................................ 375 1.5%
IX_EVENTS_CONTEXT_PARENT_ID....................... 347 1.4%
IX_EVENTS_CONTEXT_USER_ID......................... 346 1.4%
IX_RECORDER_RUNS_START_END........................ 1 0.004%
RECORDER_RUNS..................................... 1 0.004%
SCHEMA_CHANGES.................................... 1 0.004%
SQLITE_MASTER..................................... 1 0.004%
* Changes to be committed:
modified: homeassistant/components/solaredge/const.py
modified: homeassistant/components/solaredge/sensor.py
Solaredge as recently changed its policy about local api access, so solaredge-local doesn't work with last firmware update for almost users.
Please check https://github.com/home-assistant/core.git
Anyway the solardge remote api is still working, but doesn't got some usefull sensor information as Power SelfConsumption, Power Exported, Power Imported.
With my update, I'll fetching API energy details where we got these new sensors.
* Grammar/syntax fix
* Indentation fix
* Black formatting fix
* isort fix
* To force re-check
* Fix too-many-nested-blocks
* Fix indentation
* Fix Black formatting :D
* Fix Redefining built-in var
* Removed comment to force check
* adj
* time_fired_isoformat
* remove unused code
* tests for processing timestamps
* restore missing import lost in merge conflict
* test for None case
* Squeezebox add config flow and player discovery
* Fixes to config flow
* Unavailable player detection and recovery
* Improved error message for auth failure
* Testing for squeezebox config flow
* Import configuration.yaml
* Support for discovery integration
* Internal server discovery
* Fix bug restoring previously detected squeezebox player
* Tests for user and edit steps in config flow
* Tests for import config flow
* Additional config flow tests and fixes
* Linter fixes
* Check that players are found before iterating them
* Remove noisy logger message
* Update requirements_all after rebase
* Use asyncio.Event in discovery task
* Use common keys in strings.json
* Bump pysqueezebox to v0.2.2 for fixed server discovery using python3.7
* Bump pysqueezebox version to v0.2.3
* Don't trap AbortFlow exception
Co-authored-by: J. Nick Koston <nick@koston.org>
* Refactor validate_input
* Update squeezebox tests
* Build data flow schema using function
* Fix linter error
* Updated en.json
* Update homeassistant/components/squeezebox/media_player.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/squeezebox/media_player.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/squeezebox/media_player.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/squeezebox/media_player.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update .coveragerc for squeezebox config flow test
* Mock TIMEOUT for faster testing
* More schema de-duplication and testing improvements
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
* Testing and config flow improvements
* Remove unused exceptions
* Remove deprecated logger message
* Update homeassistant/components/squeezebox/media_player.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Implement suggestions from code review
* Add async_unload_entry
* Use MockConfigEntry in squeezebox tests
* Remove unnecessary config schema
* Stop server discovery task when last config entry unloaded
* Improvements to async_unload_entry
* Fix bug in _discovery arguments
* Do not await server discovery in async_setup_entry
* Do not await start server discovery in async_setup
* Do not start server discovery from async_setup_entry until homeassistant running
* Re-detect players when server removed and re-added without restart
* Use entry.entry_id instead of unique_id
* Update unittests to avoid patching homeassistant code
Co-authored-by: J. Nick Koston <nick@koston.org>
* Now supports Hydrawise API v1.4
* Removed dependency and codeowners name.
* Update CODEOWNERS to include hydrawise
* Changes made from review comments.
* Clean up update.
* Added device class for timestamp and switch. Consolodate methods to parent class.
* Cap next_cycle at 2 years to prevent time overflow.
* Addressed review comments.
* Updated DEVICE_MAP and icon() based on review comments.
* Refactor / update Awair integration
This commit does a few things, all in service of making the Awair
integration more modern and reliable. Specifically we do the following:
- Update to python_awair 0.1.1
- Begin using config entries / flow for setting up the integration.
- YAML support is completely removed.
- The integration now allows adding multiple Awair accounts, should a
user wish to do so (I found it _very_ useful in development).
- Group various Awair sensors into devices, using the device registry.
- Renames various sensors and treats the "dust" sensor as a particulate sensor.
- Device update rate-limits are no longer dynamically calculated; the
Awair API now separates rate-limits on a per-device basis.
- Supports sound pressure and illuminance sensors found on some Awair devices.
- We report the "awair index" for certain sensors as part of device_state_attributes.
The "index" is a subjective measure of whether or not a sensor reading
is "good" or "bad" (and to what extent). It's a component of the Awair
score, and it is useful on its own as an input for those who wish to
do things like "display this color if the value is 'bad'".
This is a breaking change, and requires updates to documentation and a
warning in the README. The breaking changes in detail, are:
- Support for all YAML configuration is removed, and users will need to
re-add the integration via the UI.
- We no longer support overriding device discovery via manual
configuration of device UUIDs. This was previously supported because
the Awair API had severe limits on the device list endpoints; however
those have since been removed.
- Gen 1 devices no longer show a "dust" sensor; rather we create a PM2.5
sensor and a PM10 sensor and just keep the values in sync. This better
reflects the sensor capabilities: it can detect particles in a range
from 2.5 -> 10, but cannot differentiate between sizes.
- Sensors are renamed as follows:
- "sensor.devicename_co2" -> "sensor.devicename_carbon_dioxide"
- "sensor.devicename_voc" -> "sensor.devicename_volatile_organic_compounds"
- "sensor.devicename_score" -> "sensor.devicename_air_quality_index"
- I've chosen to call the "Awair Score" an "air quality index" sensor,
because fundamentally the "Awair Score" and other air quality indices
(such as CAQI) do the same thing: they calculate a value based on a
variety of other inputs.
Under the hood, the integration has seen some improvements:
- We use the DataUpdateCoordinator class to handle updates, rather than
rolling our own update class.
- The code no longer tracks availability based on a timestamp returned
from the Awair service; we assert that if we have received a response
and the response has data for our device, then we are available (and
otherwise, not available). We don't need to test the actual Awair API
so heavily.
- Test coverage has been expanded to handle a variety of products that
Awair produces, not just the one I happen to own.
- Test coverage no longer concerns itself with testing behavior that is
now handled by the DataUpdateCoordinator; nor is it concerned with
ensuring that the overall component sets up and registers properly.
These are assumed to be well-tested functionaity of the core and not
things we need to re-test ourselves.
Finally - between library updates and integration updates, this
integration is well-positioned to support future updates. I have a
proof-of-concept patch for device automations, and the underlying
library now supports subclassing authentication (which clears the way
for us to use OAuth authentication for Awair).
* Wrap test fixture in mock_coro
Truthfully I'm not sure why this was passing on my local dev
environment, but I was developing with python 3.8 before. After
installing python 3.7, I was able to reproduce the CI failures and fix
them.
* Fix broken tests after #34901 and/or #34989
* Do not rename sensors so broadly
We're going to keep the sensors named as they were before, pending the
outcome of any decisions around the air_quality component and what names
should be standardized for air-quality-like devices.
If standardized names are selected (which does seem likely), then we
will update this integration to match them - at which point, it would be
a breaking change.
But for now, we'll keep names mostly identical to what users had before.
Notable in this commit is that we generate the entity_id ourselves,
rather than just allowing it to be auto-generated from the name
attribute. This allows us to provide more human friendly names, while
keeping the old format for entity ids. For example, given an Awair
device called "Living Room", we'll generate an entity id of
"sensor.living_room_voc" but show set the name of the device to "Living
Room Volatile organic compounds".
* Support import from config.yaml
We'll create a config entry from config.yaml the first time we're
loaded, and then defer to it from then on.
We ignore all keys other than the access_token, since we no longer need
to deal with per-account rate-limits (rather, everything is per-device
now).
* Add myself to CODEOWNERS
Since I wrote the initial integration, and now this re-write, it feels
appropriate for me to take care of the integration along with `danielsjf`.
* Remove name mangling
* Update homeassistant/components/awair/manifest.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/awair/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/awair/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/awair/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Address some review feedback
* Set up reauth flow in a job, rather than awaiting
* Remove unnecessary title string
* Remove unnecessary config schema checking
As pointed out in review, because this comes in via import from
`configuration.yaml`, we can rely on the `PLATFORM_SCHEMA` validation instead.
* Fix tests
* Set unique_id appropriately for legacy devices
For users who have had this integration already installed (and who have
updated their home assistant installation sometime in recent history),
we want to ensure that unique_id's are set to the same thing as before,
to facilitate the upgrade process.
To do that, we add an additional property to the `SENSOR_TYPES` dict
(`ATTR_UNIQUE_ID`) which allows us to map modern sensor names from
python_awair to what older versions called them - ie: `humidity` ->
`HUMID`. We then use that value when constructing the unique ID. This
should allow users to upgrade and not lose configuration even if entity
IDs would otherwise change (because we have changed the name format that
generates entity IDs).
One note is that for the gen1 `DUST` sensor, we have to treat it
differently. This integration used to call that a "PM2.5" sensor, but
the unique_id generated would be something like `awair_12345_DUST`. So
we special-case that sensor, and do the same thing. We do not need to
special-case the PM10 sensor for gen1 devices, because we didn't create
a PM10 sensor in the past (we do now, because the "DUST" sensor is
really a hybrid PM2.5/PM10 sensor).
* Patch async_setup_entry for two tests
* Update awair config_flow to require / use an email address for unique_id
Also, only start one re-auth flow.
* Add a few more tests, try to get coverage up.
* Add another test
* Move attribution to device_state_attributes
* Don't require email
* Switch from Union[dict, None] to Optional[dict]
* Use a mock where requested
* Fix missing constant rename
* Use async_create_task
* Bump test coverage a bit for config_flow
* s/CONF_UNIQUE_ID/UNIQUE_ID/g
* Add warning about deprecated platform config
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* 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
* Adding PM2.5 and PM2.5 24hr Average
* Corrected unit to const.py CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
* Imported CONCENTRATION_MICROGRAMS_PER_CUBIC_METER for PM2.5 units
* Fixed code formatting with `black`
* TTS seems unsupported on heos media player #32862
TTS seems unsupported on heos media player #32862
The type media_type music which is required by TTS was not covered.
* Update homeassistant/components/heos/media_player.py
Co-authored-by: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com>
* Update to test_media_player.py
Test for TTS support to Heos #35386
* Update test
Add TTS support to Heos #35386
* Update to test_play_media_music
assert set to "Unable to play music: Failure (1)" seems to cause an issue.
* test_play_media_music
syntax
Co-authored-by: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com>
* Allow activity change on start of switch
Allow activity to be updated when a switch to a new activity is initiated instead of when it is completed.
* Updates based on feedback
Some items are not required to be done as YAML is not used anymore.
Cleaned-up some code.
* Fix for change on how to set callbacks
How callbacks are set now one has to set the new_activity and new_activity_starting as well, even just with None.
* Added callback update
Added so that when it is changed in the UI the callbacks will be changed as well.
* Added test cases for notify setting
Added test cases for config flow to test new setting for activity notifications.
* Add discovery to NUT integration
* implement async_step_zeroconf
* Update test to make sure unique id not set
* Remove host/port import when coming from discovery, add title placeholders
* fix mis-paste
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add expiration timestamp to cert_expiry sensors
* Clear timestamp if cert becomes invalid
* Use timezone-aware timestamps
* Use DataUpdateCoordinator, split timestamp to separate sensor
* Use UTC, simpler add/remove handling
* Review fixes
* Fix incomplete mock that fails in 3.8
* Use static timestamps, improve helper method name
* Add old_state_id to states, remove old/new state data from events since it can now be found by a join
* remove state lookup on restart
* Ensure old_state is set for exisitng states
* Add precipitation probability attribute
* bump env_canada version to 0.0.38 in manifest
* bump env_canada version to 0.0.38 in requirements
* Add support for percipiation probability
* formated project with black
* make sure prob is an int
* fix build break
* update usage to correct naming
* revert bad change and apply fix build break
* add tests
* 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.
This builds on #35822
Minimize the amount of data selected from
the database
Testing:
History API Response time for 1 day
Average of 10 runs with minimal_response
Before: 9.47s
After: 4.43s
* Add sensor platform for vicare (heatpump)
* Formatting and fixes
* Formatting and fixes 2
* Fixes and formatting 3
* Fixes and formatting 4
* Add binary_sensor and more sensors
This moves some more climate attributes to sensors and adds
binary_sensors
* Move ActiveError back to climate component
The data returned by ActiveError is more complex.
It takes further investigation on how to interpret it a s a binary sensor.
Therefore it is moved back as an attribute of the climate component
* Update PyViCare library
* PR changes
* PR changes 2
Co-authored-by: Hans Oischinger <hans.oischinger@gmail.com>
* Vera now polls for all status data, no only incremental.
Vera polling is not handled using hass event loops with proper backoffs.
* Using long polling.
* Addressing PR feedback.
* Addressing PR feedback.
Adding controller stop on config unload.
Since zigpy change to support bitmap classes, formatting string was incorrectly generated for the newly joined devices with SmartEnergy metering clusters.
Since zigpy change to support bitmap classes, formatting string was incorrectly generated for the newly joined devices with SmartEnergy metering clusters.
* add ip to discovery title of xiaomi miio gateway
* add flow title to identify multiple gateways by IP
* clearify gateway token
* black formatting
* grammer improvements
Co-authored-by: Franck Nijhof <git@frenck.dev>
* grammer improvements
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Franck Nijhof <git@frenck.dev>
* add ip to discovery title of xiaomi miio gateway
* add flow title to identify multiple gateways by IP
* clearify gateway token
* black formatting
* grammer improvements
Co-authored-by: Franck Nijhof <git@frenck.dev>
* grammer improvements
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Franck Nijhof <git@frenck.dev>
* Add playbase as a model
* Sonos queue
* Match counting of the queue with service play_queue
* Add service remove_from_queue
* Change description of remove_from_queue
* Use ATTR_QUEUE_POSITION instead of ATTR_CURRENT_QUEUE_POSITION
* Removed queue and show queue_position only when playing local
* Add property queue_position
* Return None instead of -1
* Change docstring from -1 to None
* Update ZHA config flow Zigbee radio description
Update ZHA config flow Zigbee radio descriptions to match docs https://github.com/home-assistant/home-assistant.io/pull/13437
* Make protocol plus model names more readable for end-users
* Update homeassistant/components/zha/core/const.py
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
* Update homeassistant/components/zha/core/const.py
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
* Update homeassistant/components/zha/core/const.py
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
* Zigbee radio description simplified and examples listed in alphabetical order
* Fix exceptions.Unauthorized.permission type
* Use auth.permission consts more
* Auth typing improvements
* Helpers typing improvements
* Calculate self.state only once
* initial commit
* small corrections
* fix linting error
* add new files to coveragerc
* rename devolo_sensor to devolo_device
* use correct import
* use binary_switch platform
* use binary_switch platform
* add binary_sensor to coverage
* adjustments according PR review
* make super call easier to read
* use f-string instead of concatenating
* update docstrings - remove device_id property
* add will_remove_from_hass
* changed back to check for class in DEVICE_CLASSES
* created a flow that would go through everything as it was blocking the commit
and the cv rules prevent an input that would get to that flow
* moved DEFAULT_COVER_CLASS from const to cover
* Remove period from logging messages
* Save indentation using guard clauses
* Typo
* Walk other files
* Rewalk all files
* Not cleanup, but adding indicatd missing measurements
* Revert new sensors
* Bump python-synology to 0.8.2
* state_attributes to device_state_attributes
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add support for showing text on Keba EV chargers
* Changed implementation to use the notify interface
* Removed stale references to set_text
* Clean up
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add config_flow to the dunehd integration
* Add tests
* Run gen_requirements_all
* Fix pylint error
* Better hostname validation
* Build device info in the class
* Allow configuration to specify a host name.
This will default to "synology", so the sensors would be named
sensor.synology_... which is the original implementation.
By specifying a name, which is required for multiple synology hosts,
you can then have sensor.hostA_... and sensor.hostB_...
* Get the base name for the sensors from the Synology DSM hostname
* Don't need the name for the config
* Added missing import
* Fixed another typo
* Removed definition of unused BASE_NAME
* Removed end of line to revert
* Moved for ordering
* add non-root container user
* fix dockerfile and homeassistant editable install
* just install in home directory
* less impactful default changes
* separate RUN for better layer caching
* use vscode-remote base image
* Fix SP2-CL (0x7544) sensor update
This device does not support get_energy(). We need to ignore the CommandNotSupportedError in the update method.
* Format with Black
* Only wrap code that throws with catch
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Sort the players_list attribute of the minecraft_server players_online sensor in order to eliminate uneccessary state updates and ease comparisons in state changes.
* 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
* Part 1 of 2 (no breaking changes in part 1).
When integrations configured via the UI block startup or fail to start,
the webserver can remain offline which make it is impossible
to recover without manually changing files in
.storage since the UI is not available.
This change is the foundation that part 2 will build on
and enable a listener to start the webserver when the frontend
is finished loading.
Frontend Changes (home-assistant/frontend#6068)
* Part 1 of 2 (no breaking changes in part 1).
When integrations configured via the UI block startup or fail to start,
the webserver can remain offline which make it is impossible
to recover without manually changing files in
.storage since the UI is not available.
This change is the foundation that part 2 will build on
and enable a listener to start the webserver when the frontend
is finished loading.
Frontend Changes (home-assistant/frontend#6068)
* Part 2 of 2 (breaking changes in part 2).
When integrations configured via the UI block startup or fail to start,
the webserver can remain offline which make it is impossible
to recover without manually changing files in
.storage since the UI is not available.
This change is the foundation that part 2 will build on
and enable a listener to start the webserver when the frontend
is finished loading.
* bump timeout to 1800s, adjust comment
* bump timeout to 1800s, adjust comment
* bump timeout to 4h
* bump timeout to 4h
* remove timeout failsafe
* remove timeout failsafe
* and the test
* and the test
* find the test that needs mocking
* find the test that needs mocking
* Revert "find the test that needs mocking"
This reverts commit 064e7787a8e9bc65df965530726fa1c41f8bcd36.
* Revert "find the test that needs mocking"
This reverts commit 064e7787a8e9bc65df965530726fa1c41f8bcd36.
* fix the one that was missed due to the conflict
* Add switch component
* Update homeassistant/components/plugwise/switch.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/plugwise/switch.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Improvements by @bdraco
Co-authored-by: J. Nick Koston <nick@koston.org>
* Stable device id when a deleted device is restored.
* Tweak
* Store only basic data for deleted devices
* Simplify code
* Simplify code
* Address review comments.
* Improve test
* Fix missing save
* Part 1 of 2 (no breaking changes in part 1).
When integrations configured via the UI block startup or fail to start,
the webserver can remain offline which make it is impossible
to recover without manually changing files in
.storage since the UI is not available.
This change is the foundation that part 2 will build on
and enable a listener to start the webserver when the frontend
is finished loading.
Frontend Changes (home-assistant/frontend#6068)
* Address review comments
* bump timeout to 1800s, adjust comment
* bump timeout to 4h
* remove timeout failsafe
* and the test
- add Synology DSM Security binary sensor (enabled by default)
- use device name instead of id in names
- add device type to name
- show disk manufacturer, model and firmware version in devices
- some entries are disabled by default (`entity_registry_enabled_default`)
- binary sensor + sensor uses `device_class` when possible
- do not fetch a concerned API if all entries of it are disabled
- entity unique_id now uses key instead of label
- entity entity_id changes for disk and volume: example from `sensor.synology_status_sda` to `sensor.synology_drive_1_status`, or from `sensor.synology_average_disk_temp_volume_1` to `sensor.synology_volume_1_average_disk_temp`
- now binary sensor:
- disk_exceed_bad_sector_thr
- disk_below_remain_life_thr
- removed sensor:
- volume type (RAID, SHR ...)
- disk name (Drive [X])
- disk device (/dev/sd[Y])
* Re-add connections to device_info
* Fix typo in identifiers
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Support stream profile and configuring it through options flow
* Options flow test
* Allow configuration of not using a stream profile
* Shorten default stream profile string
The OpenCV image_processing component accepts a `min_size` argument in
each classifier that is then passed into the OpenCV library. The
`min_size` argument is expected to be a tuple of 2 ints, and is entered
into the platofrm schema as such. However, yaml will always produce a
list instead of a tuple, which means in practice it's impossible to use
the `min_size` argument. This changes the schema to accepts any sequence
of 2 ints that is then coerced into a tuple suitable for passing to the
OpenCV library.
* Improve configuration
* Read new properties for basic device information
Improve tests by mocking less improving stability of tests
* Clean up in device tests
* Support new port management api
* Improve initializing data
* Bump dependency to v28
It is not correct to show warning about "unexpected event type" if EVENT_STATE_CHANGED have no new_state field.
We should show this warning only if it is real unexpected event type.
Run task_done() before continue, because we should tell the queue that the processing on the task is complete
after get().
* Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const
* Fix pylint
* Use in tests
* Search for "client_id"
* Fix tests
* Fix test
* Fix test
* Periodicly log when intergrations are taking a while to setup
When one or more intergrations are taking a while to setup
it is hard to determine which one is the cause. We can
help narrow this down for the user with a periodic log
message about which domains are still waiting to be setup
every 30s.
* 30 -> 60 per discussion
* only log when the integration is actually doing setup
* reduce, fix race in test
* Requires 0.7.18 of elkm1 library to decode LD messages, and uses those messages to reliably set the arming/disarming user when there are more than one area. See https://github.com/home-assistant/core/issues/35310.
* Fixed typo
* Fixed off by one error -- LD command reports 1-based user-numbers which is the changed_by_id we want, but we need 0-based indices as argument to username.
* Bump required version of elkm1, remove logging message I was using for testing; prepping for PR.
* Black formatted
* Fixed bug whereby I needed to ref elements when running against released build of elkm1-lib
* Check that due date is not None
Check that due date is not None, prevents taks without due dates from breaking Calendar API
* Invert None check to reduce indentation
* Add ability to ignore heos discovery
* Fetch player_id, update tests
* Handle failure state
* Update tests as there are two players in the mock now
* Adjust and add more tests
* Strip out player id lookup
* reverts per review
* one more revert
* Update plugwise async, config_flow and multi entity
* Update battery percentage
* Fix yamllint on services
* Fix yamllint on services
* Fix formatting for pyupgrade
* Update homeassistant/components/plugwise/__init__.py
Co-Authored-By: Robert Svensson <Kane610@users.noreply.github.com>
* Add try/except on setup
* Bump module version, battery version and valve position
* Removing sensor, switch, water_heater for later (child) PRs
* Catchup and version bump
* Remove title from strings.json
* Readd already reviewd await try/except
* Readd already reviewed config_flow
* Fix pylint
* Fix per 0.109 translations
* Remove unused import from merge
* Update plugwise async, config_flow and multi entity
* Update battery percentage
* Fix yamllint on services
* Fix yamllint on services
* Bump module version
* Bump module version, battery version and valve position
* Removing sensor, switch, water_heater for later (child) PRs
* Catchup and version bump
* Remove title from strings.json
* Fix pylint
* Fix per 0.109 translations
* Translations and config_flow, module version bump with required changes
* Translations and config_flow, module version bump with required changes
* Fix requirements
* Fix requirements
* Fix pylint
* Fix pylint
* Update homeassistant/components/plugwise/__init__.py
Improvement
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/plugwise/__init__.py
Improvement
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/plugwise/__init__.py
Improvement
Co-authored-by: J. Nick Koston <nick@koston.org>
* Include configentrynotready on import
* Update __init__.py
* DataUpdateCoordinator and comment non-PR-platforms
* Fix reqs
* Rename devices variable in favor of entities
* Rework updates with DataUpdateCoordinator
* Peer review
* Peer review second part
* Cleanup comments and redundant code
* Added required config_flow test
* Peer review third part
* Update service was replaced by DataUpdateCoordinator
* Corrected testing, version bump for InvalidAuth, move uniq_id
* Remove according to review
* Await connect (py38)
* Remove unneccesary code
* Show only when multiple
* Improve config_flow, rename consts
* Update homeassistant/components/plugwise/climate.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/plugwise/climate.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Process review comments
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add support for Insteon 2444-222 Micro Open/Close Module
* Avoid breaking changes on cover
* Update homeassistant/components/isy994/cover.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Proceed with startup if an integration setup blocks for more than 30m
* Fix test location
* Fix log call
* naming
* revert
* do not shield from cancelation
* Adjust test since we now cancel when we hit the timeout
* added optional argument to command service
* Fixed crash when optional argument is not provided
* Updated argument description
* fixed lint error
* Fix isort error
* switched to use dict for optional field instead of json string
* switched to use ATTR_PAYLOAD
* fixed test
* actually fixed test
* Improve history api performance
A new option "minimal_response" reduces the amount of data
sent between the first and last history states to only the
"last_changed" and "state" fields.
Calling to_native is now avoided where possible and only
done at the end for rows that will be returned in the response.
When sending the `minimal_response` option, the history
api now returns a json response similar to the following
for an entity
Testing:
History API Response time for 1 day
Average of 10 runs with minimal_response
Before: 19.89s. (content length : 3427428)
After: 8.44s (content length: 592199)
```
[{
"attributes": {--TRUNCATED--},
"context": {--TRUNCATED--},
"entity_id": "binary_sensor.powerwall_status",
"last_changed": "2020-05-18T23:20:03.213000+00:00",
"last_updated": "2020-05-18T23:20:03.213000+00:00",
"state": "on"
},
...
{
"last_changed": "2020-05-19T00:41:08Z",
"state": "unavailable"
},
...
{
"attributes": {--TRUNCATED--},
"context": {--TRUNCATED--},
"entity_id": "binary_sensor.powerwall_status",
"last_changed": "2020-05-19T00:42:08.069698+00:00",
"last_updated": "2020-05-19T00:42:08.069698+00:00",
"state": "on"
}]
```
* Remove impossible state check
* Remove another impossible state check
* Update homeassistant/components/history/__init__.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Reorder to save some indent per review
* Make query response make sense with to_native=False
* Update test for 00:00 to Z change
* Update homeassistant/components/recorder/models.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add fan platform
* Add fan discovery schema
* Use constants for dispatcher signal
* Move fan platform to ozw
* Fix fan discovery schema
* Add previous speed to handle value 255
* Make fixture reading more robust
* Add fan tests
* Remove not needed fixture info
* Validate speed
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Decouple media lookup from play_media service
* More explicit input/search validation, cleanup, more tests
* Minor cleanup
* Normalize media_type string in lookup call
* Move key lookup, add tests via service calls
* Always allow play_media service calls
* No need to pass arguments to nested functions
* Add ability to ignore heos discovery
* Fetch player_id, update tests
* Handle failure state
* Update tests as there are two players in the mock now
* Adjust and add more tests
* Strip out player id lookup
* reverts per review
* one more revert
* Check that due date is not None
Check that due date is not None, prevents taks without due dates from breaking Calendar API
* Invert None check to reduce indentation
* Add support for Elexa Guardian water valve controllers
* Zeroconf + cleanup
* Sensors and services
* API registration
* Service bug fixes
* Fix bug in cleanup
* Tests and coverage
* Fix incorrect service description
* Bump aioguardian
* Bump aioguardian to 0.2.2
* Bump aioguardian to 0.2.3
* Proper entity inheritance
* Give device a proper name
* Code review
* fallback to device serial number if no mac available
* make password optional to fix#35904
* update tests to reflect new flow
* fix snake case and AsyncMock
* add comments around why weird things are being done
* add tests
* better error handling in dependency
* dont suppress errors
* add support for multiple devices
* add test for Unauthorized status
* raise error on service call failure
* add last_update_success_time and a failed update interval
* add failed update interval annd valid times to nws
* Revert "add last_update_success_time and a failed update interval"
This reverts commit 09428c9686.
* extend DataUpdateCoordinator
By default media players get a chrome cast icon, which feels
quite wrong for my old style amplifier that doesn't have any
connection to the rest of the word, except for a RS232 port.
* Working PoC
* Store
* Handle subscribing to MQTT and stopping stream when first telegram arrives
* Improve naming
* Now with test
* Better strings
* Fix Martins comments
* Improve mock device patching
* Bump dependency to v27
Add MQTT as after dependency
* Ensure a deleted intergration can be removed
* Update homeassistant/config_entries.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add support for Velux Gates
* Comment expanded and listing sorted alphabetically.
* There are constants in the cover entity integration for the valid device classes. Import and use those here.
* Blank line deleted
* Reformate code because of "CheckFormat" error
* Import only the names we need instead of the whole module
* Reformate code because of "CheckFormat" error
* isort error
* fallback to device serial number if no mac available
* make password optional to fix#35904
* update tests to reflect new flow
* fix snake case and AsyncMock
* add comments around why weird things are being done
* allow lib to create AsyncTransport
* fix transport close issue
* fix zoom only cameras without PTZ presets
* catch profiles without encoding configuration
* also catch ServerDisconnectedError for ptz
* Centralite specific control seq of operation
* Remove Fan safeguards
* Split hvac_action property.
* Refactor hvac_action property.
Current hvac_action logic is Zen Within thermostat specific and differs
a bit from ZCL specs. Implement it as a separate class.
* Refactor hvac_action property for default thermostat
Follow more closely ZCL specs in parsing hvac state of the thermostat.
* allow lib to create AsyncTransport
* fix transport close issue
* fix zoom only cameras without PTZ presets
* catch profiles without encoding configuration
* also catch ServerDisconnectedError for ptz
* Ensure HomeAssistant can startup if homekit fails to load
* Update homeassistant/components/logbook/manifest.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Ensure HomeAssistant can startup if homekit fails to load
* Update homeassistant/components/logbook/manifest.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Initial ZHA climate implementation.
* Add retryable_request decorator.
sort helpers imports.
* Check manufacturer for Climate implementation.
* Default zha.climate.operation_list to [Off]
* Migrate to climate 1.0
* Sort imports, properties and methods.
* Handle 'PRESET_NONE' presets.
* Use pi_heating/cooling_demand for HVAC action prop.
* Implement `running_state` HVAC channel property.
For ZHA thermostats which don't support `pi_heating_demand` or
`pi_cooling_demand' attributes.
* wip fan support
* Refactor retryable request logging.
* Rebase cleanup.
* Update climate discovery.
* Fix ZHA climate restoration.
* Bulk configure attribute reports.
* Use configure_reporting_multiple command for Light
More detailed response parsing of configure_reporting_multiple.
* Use ordered list for HVAC cluster attribute reports.
* Don't mutilate HVAC mode list.
* Add fan_mode property to fan channel.
* Fix type hinting.
* Expose fan mode only.
* Implement fan mode setting.
Drop support for HVAC_FAN_ONLY mode.
* Use ClimateEntity as base class.
* Cleanup debug code.
* Update time display for Sinope.
* Don't do many retries.
* Don't use multi attr reporting configuration.
* Make tests pass.
* Drop support for setpoint change source/amount.
* Cleanups.
* Drop aux heat
* Update tests.
* Drop Sinope temperature display code.
* Update tests.
* Refactor temperature setting.
* Update tests.
* Update Fan tests.
* Lint
* Black.
* Use correct logging levels
* Async remove call removed too much, resulting in disabled entities coming back after a restart
* Calling super().async_remove is no longer needed, changed to self.async_remove
* Yes, they should be sets...
* Add services remote_set_led_on/remote_set_led_off to control changmi_ir led
* pylint: elif => if
* Fix services.async_register => platform.async_register_entity_service
* Update homeassistant/components/xiaomi_miio/remote.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* more fixes
* async
* more fixes
* fix
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Async remove call removed too much, resulting in disabled entities coming back after a restart
* Calling super().async_remove is no longer needed, changed to self.async_remove
* Yes, they should be sets...
The database fields are timezoned via DateTime(timezone=True), so the
default value should be timezoned too. When using cockroachdb this is
fatal and results in the recorder crashing.
* 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>
* Update to garminconnect 0.1.13
This will fix body composition sensors being unavailable
* Update requirements_all to garminconnect 0.1.13
* Update requirements_test_all.txt
* Avoid a context switch in the history api
The history api was creating a job to fetch the
states and another job to convert the states to
json. This can be done in a single job which
decreases the overhead of the operation.
* Ensure there is only one sqlalchemy session created per history
query.
Most queries created three sqlalchemy sessions which was
especially slow with sqlite since it opens and closes the
database.
In testing the UI is noticeably faster at generating history
graphs for entites.
* Add additional coverage
* pass hass first to _states_to_json and _get_significant_states
* Avoid a context switch in the history api
The history api was creating a job to fetch the
states and another job to convert the states to
json. This can be done in a single job which
decreases the overhead of the operation.
* Revert to original solution to avoid function redefine each call
* add BleBox lights support
* cherry pick refactoring from #35552
* Inherit from LightEntity instead of Light
Co-authored-by: J. Nick Koston <nick@koston.org>
* import LightEntity instead of Light
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* PyWeMo version bump to 0.4.43
Changes necessary to safely upgrade to pyWeMo 0.4.43. This includes catching ActionExceptions that may be thrown by pyWeMo when it is unable to interact with a physical device.
* Black formatting fix
* Fix isort issues
* Code review changes
* More code review fixes
* Linting fix
* Undo dict.get change
* Change a couple instances of dict[key] to dict.get
* Add and use ELECTRICAL_CURRENT_AMPERE constant
* Add and use ELECTRICAL_VOLTAGE_AMPERE constant
* Rename ELECTRICAL_VOLTAGE_AMPERE to ELECTRICAL_VOLT_AMPERE
* Fix imports
* Migrate to pyinsteon from insteonplm
* Rename devices entities
* Print ALDB even if not loaded
* Add relay to name map
* Change insteonplm to pyinsteon
* Update requirements_all correctly
* Code review updates
* async_set_speed receive std speed value
* default speed to std medium value
* Call async methods for fan on/off
* Comment await required in loop
* Remove emtpy and add codeowner
* Make services async and remove async_add_job call
* Remove extra logging
* New device as async task and aldb load in loop
* Place lock in context bloxk
* Limiting lock to min
* Remove .env file
* Avoid locking in the logging queue handler
We do not need a lock here as the underlying queue is already
thread safe.
* Add coverage for logging handle
* First cut of Rollease Acmeda Pulse Hub integration.
* Acmeda integration improvements:
- Moved common code into a base entity
- Battery level sensor added
- Localisation now working
* Added requirement for aiopulse now that it has been uploaded to PyPI.
* Exclude acmeda integration from coverage check as it relies on a hub being present.
* Fix Travis CI build issues.
* Remove unused constants.
* Remove unused group logic from cover.py
* Removed commented code from base.py
* Remove sensors (battery entities) on removal of hub.
* Remove unused groups from sensor.py
* Acmeda device and entity update made fully asynchronous using subscriptions to remove need for config polling.
* Updated aiopulse version dependency.
Removed non-functional battery charging indication.
* Rationalised common code to update entities into helpers.py
* Fix linting issue.
* Correct additional CI pylint errors.
* Index config_entries by entry_id.
Move entity loading and unloading to __init__.py
Add entry_id to dispatcher signal
Removed now unused polling code hub
Added config_flow unit tests
* Tweak to integration config_entry title.
* Bumped aiopulse module to 0.3.2.
Reduced verbosity of aiopulse module.
* Changed to using direct write of device state.
Removed old style async_step_init config_flow step.
* Remove superfluous battery_level and device_state_attributes from battery entity.
* Removal of unused strings.
Removal of unused create_config_flow helper.
Removal of stale comment.
* Remove use of shared container to track existing enities.
Moved removal and deregistration of entities to base class through use of dispatch helper.
* Fixed strings.json
* Fix incorrect use of remove instead of pop on dict.
* Add support for tilting covers, bump aiopulse version number.
* Bump aiopulse version to v0.3.4.
Fixed bug in cover supported_features.
* Bumped aiopulse version to 0.4.0
Update acmeda .coveragerc exclusions
* Removed already configured hub check from __init__.py async_setup_entry
Removed passing in hass reference to base entity class
Renamed entity async_reset to async_will_remove_from_hass
Changed device_info and properties
Migrated to CoveEntity from CoverDevice
Added dispatched_connect cleanup on hub removal
Removed unused entries from manifest
Removed override of battery icon
Renamed translations folder
* Reversed unintended change to .coveragerc
* Fixed config flow for multi-hub discovery.
* Acmeda enhancements as requested by MartinHjelmare
* Force import to connect to hub to retrieve id prior to creating entry
* Remove YAML configuration support.
* Tidied up config_flow and tests:
- removed unnecessary steps
- fixed typos
* Removed storage of hub in config_flow.
* add config option to set timeout for wiffi devices
Wiffi devices allow to configure the update period (=
full_loop_minutes). The integration shall respect the configured update
period and therefore need a configuration for the timeout, too.
* Move timeout from config flow to option flow
* add test for option flow
* Add support for "Window covering controller"
Some window cover devices such as Sunricher SR-ZG9080A are identified in deconz as "Window covering controller".
We need to include this device type in const.py to be integrated as type "cover" in home-assistant.
* Added Window covering controller to deconz tests
* Prevent updater from delaying startup
The updater sometimes times out as seen in
#33833 and the linked issues. The issue was
presenting again today as it appears the service
is overloaded again.
* s/hass.loop/asyncio/g
* Add config flow to gogogate2 component.
* Using a more stable gogogate api.
* Getting config flows working better by using different downstream library.
* Fixing options not getting default values.
Adding availability to cover entity.
* Simplifying return types of function.
* Address PR feedback.
* Making user config flow not abort.
* Using DataUpdateCoordinator.
* Addressing PR feedback.
* Using standard method for using hass.data
* Split auth fail test into separate tests.
* Use built in queue log handlers to avoid formatting logs in the event loop
Logging is now formatted and written in another thread to
ensure there is minimal impact on the event loop when
a log message is processed.
This change replaces the existing AsyncHandler log handler
as python 3.7+ now offers an off the shelf solution
* add a simple test
* s/async_migrate_log_handlers_to_queue/async_activate_log_queue_handler/g
* Fix for creating the device name
Creating the devicename included a typo and was missing the custom (preferred) name set by the OZW Admin tool.
* update comments
* Add device triggers to support setting turn_on event
* Add turn on event
* Add unique_id based on config entry
* Adjust tests for addition of uuid
* Supported features are now always same
* Switch to player_setup fixture that actually start platform
* Update homeassistant/components/arcam_fmj/const.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* openwindow0: this is the part for the HA itself
* Update homeassistant/components/tado/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/tado/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* new version after review
Co-authored-by: J. Nick Koston <nick@koston.org>
* Provide yeelight unique_id using ssdp discovery
* Fixes
* Comment fix
* Cleanup initialization logic and add unique id to binary sensor
* Update homeassistant/components/yeelight/__init__.py
Co-authored-by: Teemu R. <tpr@iki.fi>
* Update homeassistant/components/yeelight/__init__.py
Co-authored-by: Teemu R. <tpr@iki.fi>
* Update comment
* Update comment
* Fix wrong model docstring
Co-authored-by: Teemu R. <tpr@iki.fi>
* Fix for creating the device name
Creating the devicename included a typo and was missing the custom (preferred) name set by the OZW Admin tool.
* update comments
* Add config flow to pi-hole
* Add config flow tests
* Change PlatformNotReady to ConfigEntryNotReady
* Improve config flow
* Add @shenxn as codeowner
* Use entity_id as unique id
* Remove .get with [] for required fields
* Remove unique id from config flow
* Replace some strings with references
* Fix api_key string
* Fix service api_key check
* Remove unused DuplicatedNameException
- add expose attribute function and default value
- default climate havc_mode to "heat" if modes are not supported
- support `update_entity` service call
* New forked_daapd component
* Bunch of changes
Add config flow and zeroconf
Add zones on callback when added by server
Add password auth
Add async_play_media for TTS
Add media_image_url
Add support for pipe control/input from librespot-java
Improve update callbacks
* Refactor as per code review suggestions
Move config_flow connection testing to pypi library (v0.1.4)
Remove use of ForkedDaapdData class
Decouple Master and Zone data and functions
Add updater class to manage websocket and entity updates
* More changes as per code review
Avoid direct access to entities in tests
Bump pypi version
Mark entities unavailable when websocket disconnected
Move config tests to test_config_flow
Move full url creation from media_image_url to library
Move updater entity from master to hass.data
Remove default unmute volume option
Remove name from config_flow
Remove storage of entities in hass.data
Use async_write_ha_state
Use signal to trigger update_options
Use unittest.mock instead of asynctest.mock
* Yet more changes as per code review
Add more assertions in tests
Avoid patching asyncio
Make off state require player state stopped
Only send update to existing zones
Split up some tests
Use events instead of async_block_till_done
Use sets instead of lists where applicable
Wait for pause callback before continuing TTS
* Remove unnecessary use of Future()
* Add pipes and playlists as sources
* Add support for multiple servers
Change config options to add max_playlists+remove use_pipe_control
Create Machine ID in test_connection and also get from zeroconf
Modify hass.data storage
Update host for known configurations
Use Machine ID in unique_ids, entity names, config title, signals
* Use entry_id as basis for multiple entries
* Use f-strings and str.format, abort for same host
* Clean up check for same host
* Add integration for wiffi devices
wiffi devices are DIY board manufactured by stall.biz.
Several devices are available, e.g. a weather station (weatherman), an
indoor environmental sensor (wiffi-wz) and some more.
This intgration has been developed using a weatherman device, but should
also work for other devices from stall.biz.
* Fix pylint warning
* Use WIFFI / STALL WIFFI instead of wiffi to be consistent with stall.biz
* Don't update disabled entities.
* fix complains
- move wiffi specific code to pypi
- remove yaml configuration code
* incorporate various suggestions from code review
* fix remaining comments from Martin
* fix comments
* add tests for config flow
* fix comments
* add missing requirements for tests
* fix pylint warnings
* fix comments
* fix comments
remove debug log
rename .translations to translations
* rebase and adapt to latest dev branch
* Update homeassistant/components/wiffi/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/wiffi/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* fix missing import
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use helper functions for exception handling
* Create a separate class to handle communication with the device
* Update manifest
* Use coroutine for service setup
* Fix sensor update
* Update tests
* Fix MP1 switch
* Add device.py to .coveragerc
* Remove unnecessary blocking from test_learn_timeout
* Change access method for entries with default values
* Make the changes suggested by MartinHjelmare
* Remove dot from debug message
* Use underscore for unused variable
* Patch aiohttp client session close
* Add test
* Restore close regardless of auto_cleanup
* Close session instead of detaching and do not restore
* Delint test
* Add frame helper
* Use frame helper
* Test warning log when closing session
* Clean up
* Correct docstring
* Do not change shutdown
* Fix tests
* Ensure homekit_controller recieves zeroconf c# updates
If an integration has a homekit config flow step
homekit controller would not see updates for
devices that were paired with it and would not
rescan for changes.
* Only send updates to homekit controller if the device is paired
This avoids the device showing up a second time.
* remove debug
* fix refactor error
* add binary sensor platform to zwave_mqtt
* add tests for binary_sensor
* fix tests
* device class is required value
* Update homeassistant/components/zwave_mqtt/binary_sensor.py
use colon as separator
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* extend tests
* code optimize
* add test for enabling a legacy binary sensor
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
When the websocket is created `SSLContext.load_default_certs` is called
each time which opens up the system default ssl certs file and reads it in
Normally this goes unnoticed, however since there are frequent connects
and disconnects of the websocket it was noticeable.
* Add validator for battery scan option
Add a validator for the track battery option.
Also add the possibility of configuring the battery scan interval.
* Set config defaults on the validator
Set the defaults on the platform schema, and not in the initialization code.
* Update requirements_all.txt
Updated to vigilancemeteo version 3.0.1
* Update requirements_test_all.txt
Updated to vigilancemeteo version 3.0.1
* Update manifest.json
Update to correct typo error
* rewrite library
* Update strings.json
* fix updated with empty reply
* dont use entity_id
* atag_id
* use super init instead
* original ids to prevent breaking change
* Universal Powerline Bus - Link Event
* Bump lib version.
* Update homeassistant/components/upb/__init__.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Consolidate value conversion functions
* Update to sensor
* Fix property name
* Revise sensors and state reporting per code standards
* Update uom function and revert to property
Each ServerBrowser currently runs in its own thread which
processes every A or AAAA record update per instance.
As the list of zeroconf names we watch for grows, each additional
ServiceBrowser would process all the A and AAAA updates on the network.
To avoid overwhemling the system we pre-filter here and only process
DNSPointers for the configured record name (type)
* 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
* lutron_caseta: allow for multiple bridges; use config entries
Refactor to use config entries/flows, but only implemented import
(async_setup) flow handler for now.
* lutron_caseta: config_flow.py pylint hint
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* lutron_caseta: tweaks to __init__.py per PR feedback
* lutron_caseta: add config_flow tests
* lutron_caseta: verify connectivity to bridge
check connectivity before creating config entry; cleanup translation/strings
* lutron_caseta: allow for multiple bridges; use config entries
Refactor to use config entries/flows, but only implemented import
(async_setup) flow handler for now.
* lutron_caseta: config_flow.py pylint hint
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* lutron_caseta: tweaks to __init__.py per PR feedback
* lutron_caseta: add config_flow tests
* lutron_caseta: verify connectivity to bridge
check connectivity before creating config entry; cleanup translation/strings
* lutron_caseta: add error logging when exception is encountered checking connectivity
* lutron_caseta: tests mock bridge creation, not ha-side connectivity check
* lutron_caseta: catch more specific Error types while checking bridge conn.
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Move opengarage code to separate library
* Move opengarage code to separate library
* Move opengarage code to separate library
* remove unique_id
* style
* Add names for the homematic garage door states
* Use None instead of "unknown"
Co-authored-by: Pascal Vizeli <pascal.vizeli@syshack.ch>
Co-authored-by: Pascal Vizeli <pascal.vizeli@syshack.ch>
* Re-evaluate template on group member state change
* Use named groups for entity extraction regex
This will avoid unnecessary edits of match indices if the regex is
amended in the future
* Improve test coverage
* increase coverage and cleanup BleBox cover
* test entity properites via the `state` property
* properly test entity properities
* properly mock io call
* ISY994 Add support for climate platform
Remove services from Climate (not added yet)
* Incorporate suggestions based on review.
* Collect string literals to Const. Rename device to entity
* Fix merge error
* Simplification of upnp component
* Make update interval configurable
* Description
* Require minimal value of 30
* Black
* Linting
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Use tests.async_mock instead of asynctest
* Remove unnecessary existence check
* Improve songpal service registering
* Add tests
* Seperate device api from entity api
* Improve disconnect log messages
* Improve tests
* Rename SongpalDevice to SongpalEntity
* Improve reconnecting
* Remove logging and sleep patch from tests
* Test unavailable state when disconnected
* Rename SongpalEntity.dev to _dev
* Add quality scale to manifest
* Initial commit for BSBLan Climate component
The most basic climate functions work.
* Delete manifest 2.json
wrongly added to commit
* fix incorrect name
current_hvac_mode
* update coverage to exclude bsblan
* sorted and add configflow
* removed unused code, etc
* fix hvac, preset mix up
now it sets hvac mode to none and preset to eco
* fix naming
* removed commented code and cleaned code that isn't needed
* Add test for the configflow
* Update requirements
fixing some issues in bsblan Lib
* Update coverage file to include configflow bsblan
* Fix hvac preset is not in hvac mode
rewrote how to handle presets.
* Add passkey option
My device had a passkey so I needed to push this functionality to do testing
* Update constants
include passkey and added some more for device indentification
* add passkey for configflow
* Fix use discovery_info instead of user_input
also added passkey
* Fix name
* Fix for discovery_info[CONF_PORT] is None
* Fix get value CONF_PORT
* Fix move translation to new location
* Fix get the right info
* Fix remove zeroconf and fix the code
* Add init for mockConfigEntry
* Fix removed zeroconfig and fix code
* Fix changed ClimateDevice to ClimatEntity
* Fix log error message
* Removed debug code
* Change name of device.
* Remove check
This is done in the configflow
* Remove period from logging message
* Update homeassistant/components/bsblan/strings.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add passkey
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add integration for Flick Electric NZ
* Start adding Config Flow and external API
* Second Wave of Config Flow and API implementation
* Fix test (errors is None instead of blank array?)
* Don't update sensor if price is still valid
* Add input validation
* Fix linting for DOMAIN
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Remove platform schema (config is by entries only)
* Don't catch AbortFlow exception
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update test
* Re-arrange try-catch in config flow
* Fix linting in sensor.py
* Staticly define list of components
* Fix test exceptions
* Fix _validate_input not being awaited
* Fix tests
* Fix pylint logger
* Rename test and remove print debug
* Add test for duplicate entry
* Don't format string in log function
* Add tests __init__ file
* Remove duplicate result assignment
* Add test for generic exception handling
* Move translations folder
* Simplify testing
* Fix strings/translation
* Move to "flick_electric" as domain
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* ISY994 Add Config and Options Flow
Add tests for config flow
Fix test
Update Tests
* Fix merge errors
* Update homeassistant/components/isy994/strings.json
Co-authored-by: J. Nick Koston <nick@koston.org>
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
* Fix patching in tests to not actually start Home Assistant
Co-authored-by: J. Nick Koston <nick@koston.org>
* Refactor ZHA config flow
Present more descriptive list of radio types when user has to pick one.
* Update docstring.
* Add some common models to EZSP radio.
* Add more model names
More model names, less english since radio types won't be translated.
* Split BinarySensor Entity
* Fix Device Class for Insteon
* ISY994 Improved device sorting (incl Z-Wave Cats) post-PyISYv2
- Z-Wave device classification using new properties.
- ISY Z-Wave Devices can be classified by their Z-Wave categories, since `node_def_id` does not provide useful information for these nodes.
- Better classification of binary_sensors.
- Incorporate better classifications of different types of binary_sensor devices supported by the ISY. These are all field tested/requested based on the HACS-ISY994 version and feedback given through the Community.
- State Unknown updates for binary_sensors.
- Properly fix unknown states on startup for binary_sensors with multiple sub-nodes that don't report the status after an ISY restart until that subnode is activated/triggered the next time. Now instead of adding nodes as unknown status, it adds them in the "assumed safe" state (usually off). This his helpful for things like motion sensor low battery nodes, which may show "unknown" for 12 months before turning "ON" (low batt).
- Fix for heartbeat devices (home-assistant/core#21996)
- Heartbeat devices toggle between both DON and DOF commands, each day when it sends the heartbeat it sends the opposite. Update heartbeat nodes to look for both.
* Additional sorting fixes
* Improve client tracker to be more comprehensible and streamlined
Improve block switches
Improve tests
* Small clean up
* Add descriptions on ssid test
* Improve test
* Make polling default off, only POE clients left to verify
* Minor improvements
* On removal cancel scheduled updates
* POE works without polling now
* Combine else and if to an elif
* Initial version.
* Tests.
* Refactored tests.
* Update requirements_all
* Increase test coverage. Catch exception.
* Update .coveragerc
* Fix lint msg.
* Tweak test (more to force CI build).
* Update based on PR comments.
* Change unique_id to use stable string.
* Add Universal Powerline Bus "link" support.
* Fix missed call.
* Revert botched merge.
* Update homeassistant/components/upb/light.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Three changes.
Update service schema to require one of brightness/brightness_pct.
Fix bug in setting brightness to zero.
Replace async_update_status and replace with async_update.
Co-authored-by: J. Nick Koston <nick@koston.org>
* modbus sensor: string data_type
Adds support for a string data_type. This allows the reading of holding registers that contain ascii string data
* Add modbus sensor string data_type #35269
Fingers crossed that I am putting these file in the correct location this time
* Delete const.py
* Delete sensor.py
* Add files via upload
* modbus sensor - add string support. Upload from local dev environment
* fix executable stauts
* fix flake8 failure
* Remove unnecessary pylint exceptions
* Move up some change to binary_sensors and switch. Fix program d.s.a's.
* ISY994 Basic support for PyISYv2
- Bare minimum changes to be able to support PyISYv2.
- Renaming imports and functions to new names.
- Use necessary constants from module.
- **BREAKING CHANGE** Remove ISY Climate Module support.
- Climate module was retired on 3/30/2020: [UDI Annoucement](https://www.universal-devices.com/byebyeclimatemodule/)
- **BREAKING CHANGE** Device State Attributes use NodeProperty
- Some attributes names and types will have changed as part of the changes to PyISY. If a user relied on a device state attribute for a given entity, they should check that it is still there and formatted the same. In general, *more* state attributes should be getting picked up now that the underlying changes have been made.
- **BREAKING CHANGE** `isy994_control` event changes (using NodeProperty)
- Control events now return an object with additional information. Control events are now parsed to the friendly names and will need to be updated in automations.
Remove cast
* PyISY v2.0.2, add extra UOMs, omit EMPTY_TIME attributes
* Fix typo in function doc string.
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* 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 config flow to songpal
* Add config flow to songpal
* Add songpal to migrated service in discovery
* Improve songpal/set_sound_setting service
* Remove songpal config flow from .coveragerc omit
* Bump python-songpal to 0.12 and fix exception handling
* Revert "Improve songpal/set_sound_setting service"
This reverts commit 9be076ab52e21f268322572c36709a17d41db771.
* Code style fix
* Add connections to device_info
* Fix pylint
* Ignore braava tv
* Fix test warning
* Add @shenxn as codeowner
* Remove model from configuration data
* Get name from device in user step
* Add unload entry support
* Delete translations as it will get generated as part of CI
* Code cleanup
* Fix typo
* Remove _show_setup_form
* Change configuration from media_player to songpal
Co-authored-by: Raman Gupta <7243222+raman325@users.noreply.github.com>
* Start gateway using new zigpy init.
Update config entry data import.
Use new zigpy startup.
Fix config entry import without zha config section.
Auto form Zigbee network.
* Migrate config entry.
* New ZHA config entry flow.
Use lightweight probe() method for ZHA config entry validation when
available. Failback to old behavior of setting up Zigpy app if radio lib
does not provide probing.
* Clean ZHA_GW_RADIO
* Don't import ZHA device settings.
* Update config flow tests.
* Filter out empty manufacturer.
* Replace port path with an by-id device name.
* Rebase cleanup
* Use correct mock.
* Make lint happy again
* Update tests/components/zha/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zha/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zha/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use executor pool for IO
* Address comments.
Use AsyncMock from tests.
* Use core interface to test config flow.
* Use core interface to test config_flow.
* Address comments. Use core interface.
* Update ZHA dependencies.
* Schema guard
* Use async_update_entry for migration.
* Don't allow schema extra keys.
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* pyload API statusServer doesn't take parameters
Remove json payload from API call to statusServer for retrieving current download speed.
See maintainers message in: pyload/pyload#3622 (comment)
Skip duplicated call to update function.
* Lint sensor.py
remove empty line
- Move core Entity Class definitions to separate file.
- New ISYNodeEntity and ISYProgramEntity base classes.
- Update inheriances on other classes.
- Move helper functions to separate file.
* Add sensor platform
* Fix signal name
* Add sensor discovery schema
* Add test for disabled entities
* Add test for enabling advanced sensor
* Add additional fake sensors and tests for device classes
* More device class tests
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* ISY994 Structure updates in prep for PyISYv2 (Part 1)
- Correct node categorization.
- Move constants to separate file.
- Consolidate Logging to Constants file.
- Use Home Assistant Constants where possible.
- Use string literals where possible.
- Rename "domain" to "platform" in most places.
- Add additional device support (NODE_FILTER updates).
* Update categorize_programs per review
* add @shbatm as codeowner for ISY994 integration
* 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>
* start implementation
* handle members correctly
* fix group member info
* align groupable devices with group members
* handle group endpoint adding and removing
* update add group
* update group and group member
* update create group
* remove domain check
* update test
* remove temporary 2nd groupable device api
* update test
* rename validator - review comment
* fix test that was never running
* additional testing
* fix coordinator descriptors
* remove check that was done twice
* update test
* Use AsyncMock()
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
* Add query and sync
* Update description of call_query
* Remove backup files accidentally committed to repo
* Update after pysqueezebox refactor
* Use entity service helper
* Implement suggested changes
* Fix linter error in services.yaml
* Fix long lines in services.yaml
* Make emulated hue detectable by Busch-Jaeger free@home SysAP
* Emulated hue: Remove unnecessary host line from UPnP response
* Test that external IPs are blocked for config route
* Add another test for unauthorized users
* Change hue username to nouser
nouser seems to be used by the official Hue Bridge v1 Android app and is
used by other projects as well
Co-authored-by: J. Nick Koston <nick@koston.org>
* edl21: Add 'name' option
* edl21: Include domain and electricity ID in unique ID
As a side-effect, this makes electricity IDs mandatory, i.e. devices
which don't transmit their ID won't register any sensors.
* edl21: Implement upgrade path for unique IDs
* Update homeassistant/components/edl21/sensor.py
Drop DOMAIN from unique ID.
Co-Authored-By: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Return emulated hue id for update requests
* Emulated Hue: Rename function argument to match its content
* Use HTTP status consts throughout the test
* Use HTTP status consts in UPnP test
* Add support for refreshing synology_dsm sensors
Now supports `home_assistant.update_entity` service
* Don't immediately update sensors on add
This fixes all sensors being forcefully refreshed when setup.
* Fix typing in component service method
* Add required features to cover service registration
* Fix template cover tilt features
* Delint template cover tests
* Retrieve the name of the Proliphix thermostat before adding the entities
* The proliphix module provides hvac_state, not hvac_mode
* Removed update before add_entities. Moved the setting of the name into the update function instead.
* Disentangled hvac_mode and hvac_action
* Ran black and isort
* added support for more SNMP variable types
* Fix SNMP pull request formatting
* retry fix linting errors
* Created SNMP vartype dict
* Moved to Integer instead of Integer32 as default vartype
* Update homeassistant/components/snmp/switch.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/snmp/switch.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/snmp/switch.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Get rid of internal library code and use pulsectl library to communicate
with PulseAudio server.
This is a breaking change as the library uses the much more powerful
native interface instead of the CLI interface, requiring the need to
change the default port.
On the bright side, this also solves some issues with the existing
implementation:
- There was no test if the complete list of loaded modules was
already received. If not all data could be read at once, the
remaining modules not yet in the buffer were considered absent,
resulting in unreliable behavior when a lot of modules were loaded
on the server.
- A switch could be turned on before the list of loaded modules was
loaded, leading to a loopback module being loaded even though this
module was already active (#32016).
Improve Serial sensor platform with full options for configuring the serial port.
bytesize, parity, stopbits, xonxoff, rtscts, dsrdtr.
The default values are unchanged so it is 100% compatible with previous config.
* 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>
* add overlay options wrapper to rpi_camera
* Refactor to set config yaml section under the top level integration domain key
* Remove return values that are not checked
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Remove superfluous debug log messages
* Return if not set up via discovery
* Add convenience reference to hass.data[DOMAIN]
* Black formatting
* Isort
* Exclude all rpi_camera modules
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Some amplifiers/receivers do not report any volume (due to them not
knowing), for example NAD C 356BEE is documented to return an empty
string for volume.
At least don't crash when we get None back.
* Add support for Numato 32 port USB GPIO boards
Included are a binary_sensor, sensor and switch component
implementations. The binary_sensor interface pushes updates via
registered callback functions, so no need to poll here.
Unit tests are included to test against a Numato device mockup.
* Refactor numato configuration due to PR finding
* Resolve minor review findings
* Bump numato-gpio requirement
* Load numato platforms during domain setup
According to review finding
* Guard from platform setup without discovery_info
According to review finding
* Move numato API state into hass.data
According to review finding.
* Avoid side effects in numato entity constructors
According to review finding
* Keep only first line of numato module docstrings
Removed reference to the documentation. Requested by reviewer.
* Minor improvements inspired by review findings
* Fix async tests
Pytest fixture was returning from the yield too early executing teardown
code during test execution.
* Improve test coverage
* Configure GPIO ports early
Review finding
* Move read_gpio callback to outside the loop
Also continue on failed switch setup, resolve other minor review
findings and correct some error messages
* Bump numato-gpio requirement
This fixes a crash during cleanup. When any device had a communication
problem, its cleanup would raise an exception which was not handled,
fell through to the caller and prevented the remaining devices from
being cleaned up.
* Call services directly
Define local helper functions for better readability.
Resolves a review finding.
* Assert something in every test
So not only coverage is satisfied but things are actually tested
to be in the expected state.
Resolves a review finding.
* Clarify scope of notification tests
Make unit test for hass NumatoAPI independent of Home Assistant (very basic test of notifications).
Improve the regular operations test for notifications.
* Test for hass.states after operating switches
Resolves a review finding.
* Check for wrong port directions
* WIP: Split numato tests to multiple files
test_hass_binary_sensor_notification still fails.
* Remove pytest asyncio decorator
Apears to be redundant. Resolves a review finding.
* Call switch services directly.
Resolves a review finding.
* Remove obsolete inline pylint config
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Improve the numato_gpio module mockup
Resolves a review finding.
* Remove needless explicit conversions to str
Resolves review findings.
* Test setup of binary_sensor callbacks
* Fix test_hass_binary_sensor_notification
* Add forgotten await
Review finding.
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fix async scene conversion in hunter douglas powerview
* Update homeassistant/components/hunterdouglas_powerview/scene.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Bump arcam-fmj with better connection failed support
* Log unexpected exceptions in arcam client
* Consider undetected as 2ch to match OSD
* Ask for explicit update on start
* Manual Alarm Control Panel: use proper "Arming" state
* Update previous and next attributes
* add CONF_ARMING_TIME
* Split up arming and pending time, pending_time --> arming_time
* update tests
* fix issort
* fix issort
* fix demo platform
* fix alarm test
* remove arming_time from the triggered state
* Match previous default "delay_time"
* fix tests
* fix arming state when triggering
* fix arming _arming_time_by_state for Triggering state
* change to not in list
* Update homeassistant/components/manual/alarm_control_panel.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* async_update_ha_state -> async_write_ha_state
* black formatting
* add Callback
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* import callback
* update device triggers alarm_control_panel
* Update test_device_trigger.py
* Update device_trigger.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Rename BinarySensorDevice to BinarySensorEntity
* Tweak
* Move deprecation warning to __new__, add test
* Move deprecation warning back to __init__
* Move deprecation warning to __init_subclass
* Rollback modbus to version 0.107.7
Update manifest to not use async.
Rollback entities to sync version.
Keep newer modifications apart from async.
Rollback __init__ to sync version but keep the new functionality.
add async sub directory
Adding the current (not working) version in a sub directory,
to allow easy sharing with a few alfa testers.
The async version are to be updated to use the serial/tcp already
available instead of the flaky pymodbus version. pymodbus is still
needed to encode/decode the messagess.
Update test cases to reflect sync implementation, but
keep the new functionality like e.g. conftest.py.
* do not publish async version
The async version will be made available in a forked repo, until
it is ready to replace the production code.
* add pyserial to manifest
pymodbus is very developer oriented and assumes every developer
adapt the requierements.txt to his/hers needs.
Our requirements.txt is different it contains all posibilities allowing
user to later change configuration without having to install extra
packages.
As a consequence manifest.json needs to include the pyserial.
* modbus: make truly async client creation
Make hass call listen_once async.
Integrate content of start_modbus into async_setup.
Do not use the boiler plate create tcp client function from
pymodbus as it is sync, and also does not work well with asyncio,
instead call the init_<type> directly, since that is async.
* both component/modbus and component/serial uses pyserial-async
but with slighty different version requirements.
Combined the 2.
* Review 1
* Review 2
* Review
@staticmethod is no good, because the function uses class variables.
* Review
Pytest is sometimes a bit cryptic, lets hope this does it.
* Display a QR code for homekit pairing
This will reduce the failure rate with HomeKit
pairing because there is less chance of entry
error.
* Add coverage
* Test that the qr code is created
* I cannot spell
* Update homeassistant/components/homekit/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/homekit/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* bravia-tv version bump
* Fix Auth Cookies
- Fix authentication cookie expiration.
- Remove obsolete error handling (since bravia-tv==1.0.2)
- Remove obsolete mac address references. (since bravia-tv==1.0.2)
- Update tests.
* fix async_refresh_playing_info
* Improve code format
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Config_entry needs mac address for HA restart
This was mistakenly taken out. Home-Assistant needs to store mac address in
case restarted. TV needs to be on to acquire mac address. This is neccesary
to allow TV to be turned on by Home-Assistant after Home-Assistant is
restarted.
* Skip update() during state changes
It is best for performance to skip updates during state change because
bravia.turn_on() will commonly push async_update() beyond it's update
interval.
* update tests
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* 0.2.0 of the btsmarthub_devicelist package makes it compatable with BT's home hub 2.
The API has changed in the new version so this change also makes the component code compatible with the changes to the library.
* Update homeassistant/components/bt_smarthub/device_tracker.py
Co-Authored-By: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/bt_smarthub/device_tracker.py
Co-Authored-By: Franck Nijhof <frenck@frenck.nl>
* Remove dep on config in BTSmartHubScanner
This should make BTSmartHubScanner easier to test as you can pass in a mock smarthub_client
* Black format bt_smarthub
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Add support for Lutron Keypad LEDs
* Removed unneeded attribute definitions
* Pull initial state from Lutron on startup
* Format updates per code review
* Altered caching code to only fetch state if needed
* Update homeassistant/components/lutron/switch.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Cloud pylint is also offended by this ;)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update state after adding a new torrent
* Use cached torrents list in check_started_torrent_info
* Add torrent_info to all sensors
* Add torrent_info for active torrents
* Fix typo
* Update codeowners
* Do not set eta if it's unknown
* Fix codeowners
* Extract TransmissionSpeedSensor
* Extract TransmissionStatusSensor
* Extract TransmissionTorrentsSensor
* Refactor device_state_attributes() and update()
* Remove unused methods
* Use async_on_remove
* Fix sensor update
* Add transmission.remove_torrent service
* Add transmission_removed_torrent event
* Fix naming
* Fix typo in services.yaml
* Added support for white value in Template Light integration.
* Tests now working.
* Clean up
* Make template more robust
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add Islamic Prayer Times config_flow
* Add Islamic Prayer Times config_flow
* handle options update and fix tests
* fix sensor update handling
* fix pylint
* fix scheduled update and add test
* update test_init
* update flow options to show drop list
* clean up code
* async scheduling and revert state to timestamp
* fix update retry method
* update strings
* keep title as root key
* Fix serial integration connection stability
Retry to connect if serial device is not available on start, or connection is lost.
Added some more log entries upon connection or when errors are encountered.
* Updated code based on review
* Fixed exception indentation
* Handle SerialException
* Sort imports
* Update homeassistant/components/serial/sensor.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/serial/sensor.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* More clean up
* Format and delint
* Extract error handler
* Clean up stop handler
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Move removal of sensor entities into a base class
* Fix martins comments on sensors
* Reflect sensor changes on device_tracker platform
* Reflect sensor changes on switch platform
* Improve layering
* Make sure to clean up entity and device registry when removing entities
* Fix martins comments
* HomeKit: Store generated aid against unique_id where possible
* Fix conflict
* Fix max accessories check
* homekit counts the bridge as an accessory
* Add coverage for aidmanager
* prepare for merge
Co-authored-by: J. Nick Koston <nick@koston.org>
nad_receiver received a few fixes in 0.0.12, which enables the integration
for me. I assume it may depend on the receiver model, but my receiver only reports
mute state and volume when it's on, while the library used to assume to always
get a reply. With 0.0.11 the nad integration simply excepts on startup,
after bumping the version up it works.
Fixes this:
2020-04-18 22:59:38 ERROR (MainThread) [homeassistant.components.media_player] nad: Error on device update!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 324, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 476, in async_device_update
await self.hass.async_add_executor_job(self.update)
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/src/homeassistant/homeassistant/components/nad/media_player.py", line 195, in update
if self._nad_receiver.main_mute("?") == "Off":
File "/usr/local/lib/python3.7/site-packages/nad_receiver/__init__.py", line 71, in main_mute
return self.exec_command('main', 'mute', operator, value)
File "/usr/local/lib/python3.7/site-packages/nad_receiver/__init__.py", line 62, in exec_command
return msg.decode().strip().split('=')[1]
IndexError: list index out of range
* Remove side effects from properties
* Remove redundant return value in async_send_command
* Move callback registeration to async_added_to_hass
* Code cleanup for roomba
* Add device type
* Use snake_case for devtype
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Validate device type as positive int
* Add device type 0x5f36 to switch
* Use default type for sensors
* Add RM4 to switch platform
* Use snake_case for devtype
* Support multiple types of remote
* Validate ip address
* Improve code readability
* Add const.py to .coveragerc
* Use None for unknown device types
* Fix sensors and standardize platform schemas
* Fix if statement
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Fix signal collision in tado with multiple accounts
Tado signals were not unique enough to prevent collisions
between accounts with the same zone ids.
* Bump upstream to fix multiple tado accounts
* switch signal undo to async_on_remove
* Bump version now that upstream is released
* bump python-tado
* While its only the dep that changed since the last run, best to force another CI to be sure
* Add Braava support to iRobot Roomba component
* Replace async_add_job with async_add_executor_job in roomba
* Improve readability in roomba
* Improve error handling in roomba
* Cleanup async_update in roomba
* Split into multiple files in roomba
* Hide protocal details in braava
* Switch to push in braava
* Bump roombapy version to 1.5.1
* Add roomba files to .coveragerc
* Fix typo
* Remove side effects from init in roomba
* Implement StateVacuumDevice in Roomba
* Add IRobotEntity base class to braava
* Fix state in roomba
* Add @shenxn as a codeowner of braava
* Updating the panasonic_viera component
* Updating .coveragerc
* Removing testplatform
* Updating strings.json
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Adding tests and stuff
* Fixing permission issues
* Ignoring Pylint warnings
* Fixing one more Pylint warning
* Refactoring
* Commiting changes - part 1
* Commiting changes: part 2
* Turning unknown error logs into exception logs
* Update strings.json
* Rebasing
* Updating the panasonic_viera component
* Removing testplatform
* Updating strings.json
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Adding tests and stuff
* Fixing permission issues
* Ignoring Pylint warnings
* Fixing one more Pylint warning
* Refactoring
* Commiting changes - part 1
* Commiting changes: part 2
* Turning unknown error logs into exception logs
* Adding pt-BR translation
* Removing Brazilian Portugues translations
* Modifying error handling
* Adding SOAPError to except handling
* Updating translation
* Refactoring async_step_import
* Fixing indentation
* Fixing requirements after rebase
* Fixing translations
* Fixing issues after rebase
* Routing import step to user step
* Adding myself as a codeowner
* Extend knx brightness with rgb brightness if brightness addresses are not supported
* Fix explicit return value
* Check for None
* Remove not needed check
* Disable false positive pylint warning
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fix emulated_hue brightness off by one
Hue uses a max brightness of 254, Home Assistant
uses a max brightness of 255. Values > 127 were
off by one.
* use constant
* fix test
* add debug
* Revert "add debug"
This reverts commit 242220a02e.
* verify that the config in hass is not empty
* changed to use MockConfigEntry
* Update tests/components/ios/test_init.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/ios/test_init.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* changed the test per suggestions
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Rollback modbus to version 0.107.7
Update manifest to not use async.
Rollback entities to sync version.
Keep newer modifications apart from async.
Rollback __init__ to sync version but keep the new functionality.
add async sub directory
Adding the current (not working) version in a sub directory,
to allow easy sharing with a few alfa testers.
The async version are to be updated to use the serial/tcp already
available instead of the flaky pymodbus version. pymodbus is still
needed to encode/decode the messagess.
Update test cases to reflect sync implementation, but
keep the new functionality like e.g. conftest.py.
* do not publish async version
The async version will be made available in a forked repo, until
it is ready to replace the production code.
* Allow disable wired bug work around
* Move small improvements from closed PR #34065
* Fix failing test
* Add new test
* Some extra logging
* Harmonize log outputs
* Add config flow string
* Fix Balloobs comments
* Add device tracker based on arris-tg2492lg
* Return name of device and update version of arris_tg2492lg
* Update CODEOWNERS, requirements_all.txt and .coveragerc
* Change default url to host
* Use f-strings
Co-Authored-By: Franck Nijhof <frenck@frenck.nl>
* Clean up
* Fix formatting
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* add config flow to nws and remove yaml
* Don't duplicate scan_time
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Use _abort_if_unique_id_configured
Co-Authored-By: J. Nick Koston <nick@koston.org>
* fix abort
* Add unavailable tests
* update and use better strings
* lint
Co-authored-by: J. Nick Koston <nick@koston.org>
* maxcube: Make it possible to return to auto mode
It's currently not possible to switch back to auto (schedule) mode after
changing to manual or vacation. Add `PRESET_NONE` to list of presets
that will return thermostat back into auto (schedule) mode.
Additionally, use `PRESET_AWAY` instead of custom preset name for
vacation mode.
* maxcube: Provide `hvac_action` based on valve state
Not supported for wall thermostats.
* maxcube: Add support for Comfort, Eco, Off and On modes
Off is mapped to HVAC_OFF, while On - to HVAC_HEAT.
* maxcube: Add `hvac_action` support for wall thermostats
We check all thermostats in the same room as the wall thermostat. If at
least one of them has its valve open - the room is being heated.
* maxcube: Expose valve position as state attribute
Also fix a small logical error in `hvac_action`.
* maxcube: Fix linter errors and formatting
* maxcube: Adjust mapping between MAX! and HA modes and presets
MAX! 'Manual' mode now corresponds to 'Heating' mode of HA. MAX! 'Eco'
and 'Comfort' temperatures are 'Heating' mode presets. MAX! 'On' mode is
now a 'Heating' preset, too.
* maxcube: Address review comments
* Prevent a single accessory setup failure from breaking all HomeKit accessories
Raise the max devices to 150 as the spec allows for this
many. Previously 100 made sense because of the event
storms when homekit started would sometimes break pairing,
as these have largely been fixed in 0.109 (still a few
to cleanup) using the HAP spec limit of 150 is now possible.
* Handle both failure states
* Convert homekit fans to use service callbacks
* Convert homekit fans to use service callbacks
Service callbacks allow us ensure that we call
fan services in the correct order.
* Avoid calling turn_on if a speed is sent and the device is on
* Fix test to not leave files behind
* Fix test
* Update homeassistant/components/homekit/type_fans.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Set homekit alarm/sensor/switch state as soon as possible
This change is part of a multi-part effort to fix the
HomeKit event storms on startup.
Previously we would set the states after HomeKit
had started up which meant that when the controller
client connected it would request the states and get
a list of default states so all the initial states
would always be wrong. The defaults states generally went
unnoticed because we set the state of each HomeKit device
soon after which would result in an event storm in the log
that looked like the following for every client and every
device:
Sending event to client: ('192.168.x.x', 58410)
Sending event to client: ('192.168.x.x', 53399)
Sending event to client: ('192.168.x.x', 53399)
To solve this, we now set the state right away when we
create the entity in HomeKit, so it is correct on
initial sync, which avoids the event storm. Additionally,
we now check all states values before sending an update
to HomeKit to ensure we do not send events when nothing
has changed.
* pylint
* Fix event storm in covers as well
* fix refactoring error in security system
* cover positions, now with constants
* Add NUT tests for an Eaton 5E650I UPS
* add a test to make sure multiple ups get setup
* Add a few more upses
* fix missing status key
* cover
* Force CI run
* fixed what seems to be a typo
* added load_mock_device in common.py so it loads all the required things into the mocks
so they don't throw exceptions for mocks not being able to convert to int
* reverted change in homeassistant/components/dyson/sensor.py
added both values to the mock device (volatil and volatile)
* Allow async_setup changes to config entry data be taken into account
* Fix tests
* Limit scope try…finally
* Update tests/test_config_entries.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Fix import
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Run scripts
* Improvement strings
* Fix FlowOptions update listener
* Update .ceveragerc
* Add tests
* Better strings
* Add test for OptionsFlow
* Run gen_requirements_all.py once again
* Fix pylint errors
* Log error when there is no bravia.conf file during import
* Improvement strings
* Use braviarc object from hass.data in options flow
* Use async_add_executor_job for IO
* Fix options flow test
* Fix tests
* Remove host_reachable method
* Remove dependencies
* Change setup_platform method to async
* Remove calling system_info
* Save mac in the config entry
* Fix get ignore sources
* Fix read config from file
* Remove the side effect from init
* Fix user_input for user step
* Switch OrderedDict to dict
* New config_entry instance for each test
* Revert change
* Patch async_setup_entry in test_import
* Change a way to create source list
* Consolidate repeated block of code
* Update tests
* Suggested change
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Suggested channge
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Suggested change
* Patch async_setup_entry
* Remove unnecesary if
* suggested change
* Suggested change
* Fix tests
* Fix pylint error
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
In order to make this automatically discoverable via the registry
there needs to be a DEVICE_CLASS_BATTERY_CHARING in binary sensor
so we can tell what is a battery and what is a charge sensor.
* Reduce loss of precision when setting light percent brightness
This part of an effort to fix all the round trip light
brightness percentages that cause errors with homekit
, alexa, and other devices that use percentage.
* fix demo light test
* Move consts to const, general cleanup
* Add unique id
* Add default icon
* Set supported features based on sound output
* Update homeassistant/components/webostv/media_player.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Set device class
* Add software_info to client mock
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Implemented snapcast latency attributes
* Code review changes and Snapcast maintenance
Updated how entity services get called - now conforms to most
current method
* Cleanup tasks
Moved constants into separate file
Removed unnecessary logger message
Remove unnecessary schemas
* FIx linting errors
* Sort imports
* Update with requested change
Better - use next()
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Add guards for bad service calls
* Add back in platform schema
* Add check for unjoin service call
* Fix lint/format
* remove comma inserted by black
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Convert sense to use DataUpdateCoordinator for trends
* remove unused
* request update right away
* clarify
* call async refresh later
* Update homeassistant/components/sense/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/sense/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Convert sense to use DataUpdateCoordinator for trends
* remove unused
* request update right away
* clarify
* call async refresh later
* Update homeassistant/components/sense/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/sense/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Handle all zero serial numbers in NUT
* Add additional nut tests
* Update homeassistant/components/nut/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* remove re
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Bump skybellpy to 0.4.0
* Bump skybellpy to 0.4.0 in requirements_all.txt
* Added extra states for STATE_ALARM_TRIGGERED to allow users to know if
it is a burglar or fire or carbon monoxide so automations can take
appropriate actions. Updated TotalConnect component to handle these new
states.
* Fix const import
* Fix const import
* Fix const imports
* Bump total-connect-client to 0.26.
* Catch details of alarm trigger in state attributes.
Also bumps total_connect_client to 0.27.
* Change state_attributes() to device_state_attributes()
* Move totalconnect component toward being a multi-platform integration. Bump total_connect_client to 0.28.
* add missing total-connect alarm state mappings
* Made recommended changes of MartinHjelmare at
https://github.com/home-assistant/home-assistant/pull/24427
* Update __init__.py
* Updates per MartinHjelmare comments
* flake8/pydocstyle fixes
* removed . at end of log message
* added blank line between logging and voluptuous
* more fixes
* Adding totalconnect zones as HA binary_sensors
* fix manifest.json
* flake8/pydocstyle fixes. Added codeowner.
* Update formatting per @springstan guidance.
* Fixed pylint
* Add zone ID to log message for easier troubleshooting
* Account for bypassed zones in update()
* More status handling fixes.
* Fixed flake8 error
* Another attempt at black/isort fixes.
* Bump total-connect-client to 0.50. Simplify code using new functions in
total-connect-client package instead of importing constants. Run black
and isort.
* Fix manifest file
* Another manifest fix
* one more manifest fix
* more manifest changes.
* sync up
* fix indent
* one more pylint fix
* Hopefully the last pylint fix
* make variable names understandable
* create and fill dict in one step
* Fix name and attributes
* rename to logical variable in alarm_control_panel
* Remove location_name from alarm_control_panel attributes since it is
already the name of the alarm.
* Multiple fixes to improve code per @springstan suggestions
* Update homeassistant/components/totalconnect/binary_sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Multiple changes per @MartinHjelmare review
* simplify alarm adding
* Fix binary_sensor.py is_on
* Move DOMAIN to .const in line with examples.
* Move to async_setup
* Simplify code using new features of total-connect-client 0.51
* First crack at config flow for totalconnect
* bump totalconnect to 0.52
* use client.is_logged_in() to avoid total-connect-client details.
* updated generated/config_flow.py
* use is_logged_in()
* Hopefully final touches for config flow
* Add tests for config flow
* Updated requirements for test
* Fixes to test_config_flow
* Removed leftover comments and code
* fix const.py flake8 error
* Simplify text per @Kane610 https://github.com/home-assistant/home-assistant/pull/32126#pullrequestreview-364652949
* Remove .get() to speed things up since the required items should always
be available.
* Move CONF_USERNAME and CONF_PASSWORD into .const to eliminate extra I/O
to import from homeassistant.const
* Fix I/O async issues
* Fix flake8 and black errors
* Mock the I/O in tests.
* Fix isort error
* Empty commit to re-start azure pipelines (per discord)
* bump total-connect-client to 0.53
* Update homeassistant/components/totalconnect/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/totalconnect/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Fixes per @balloob comments
* Fix imports
* fix isort error
* Fix async_unload_entry
It still referenced CONF_USERNAME instead of entry.entity_id
* Added async_setup so not breaking change. Fixed imports.
* Update tests/components/totalconnect/test_config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Remove TotalConnectSystem() per @MartinHjelmare suggestion
* Moved from is_logged_in() to is_valid_credentials()
The second is more accurate for what we are checking for, because is_logged_in() could return False due to connection error.
* Fix import in test
* remove commented code and decorator
* Update tests/components/totalconnect/test_config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* fix test_config_flow.py
* bump total-connect-client to 0.54
* remove un-needed import of mock_coro
* bump to total-connect-client 0.54.1
* re-add CONFIG_SCHEMA
* disable pylint on line 10 to avoid pylint bug
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Convert homekit thermostats to use service callbacks
Service callbacks allow us to get all the temperature
changes in one request so we can avoid all the
need to store state and debounce.
* remove excess debug
* Fix lock and light tests
* Ensure all code for Thermostats has coverage
* I am answering all the homekit cases anyways so might as well be aware of regressions
* Make lock notifications reliable
* Update homeassistant/components/homekit/type_lights.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Handle all zero serial numbers in NUT
* Add additional nut tests
* Update homeassistant/components/nut/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* remove re
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* add test and fix tests for update logging.
* Fix update logging.
* Remove assert is True
* guard against platform config and use async_write_ha_state
* fix discovery info passing to platform
* Improve testing for entities in init
* Fix reversed door closing/opening states in HomeKit
When we closed the door we would set state 2 which
is "Opening" it should have been 3 which is
"Closing"
When we opened the door we would set state 3 which
is "Closing" it should have been 2 which is
"Opening"
Add constants to make this easier to catch
in the future.
* Remove debug
* Add note about target door state
* deCONZ support for new device trigger for Feller EDIZIOdue Friends of hue Switch
* Rename to general name -friends of hue switch
* translation for top and bottom buttons
* add pyserial to manifest
pymodbus is very developer oriented and assumes every developer
adapt the requierements.txt to his/hers needs.
Our requirements.txt is different it contains all posibilities allowing
user to later change configuration without having to install extra
packages.
As a consequence manifest.json needs to include the pyserial.
* modbus: make truly async client creation
Make hass call listen_once async.
Integrate content of start_modbus into async_setup.
Do not use the boiler plate create tcp client function from
pymodbus as it is sync, and also does not work well with asyncio,
instead call the init_<type> directly, since that is async.
* both component/modbus and component/serial uses pyserial-async
but with slighty different version requirements.
Combined the 2.
* Review 1
* Review 2
* Review
@staticmethod is no good, because the function uses class variables.
* Review
Pytest is sometimes a bit cryptic, lets hope this does it.
* Add homekit configuration option to bind to default interface
Homekit can fail to be discoverable because the
zeroconf default is to bind to all interfaces
(InterfaceChoice.All). This does not work
on some systems and (InterfaceChoice.Default) which
binds to 0.0.0.0 is needed for homekit to zeroconf
to function.
A new option is available for homekit
zeroconf_default_interface: true
* Update tests
* Update homeassistant/components/homekit/__init__.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Update homeassistant/components/homekit/__init__.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Review items
* has a default
* Revert "has a default"
This reverts commit 24ecf0920f.
Breaks the tests
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Clean up demo camera
* Complete test_motion_detection
* Clean up image reading
* Clean up camera integration async methods
* Fix and clean camera integration tests
* Fix image processing patch
* Add config_flow for roomba
* Get options to connect
* Fix options in config flow
* Fix syntax in config_flow
* Remove name (not necessary)
* Add bin sensor
* Add Battery sensor
* Add async_connect
* Fix typo
* Add Model and Software version
* Update Roombapy 1.5.0
* Add validate_input
* Add connect and disconnect functions
* Remove test config flow
* Add variables after loop
* Fix translate
* Fix typo
* Fix state of bin
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Remove invalid auth
* Add call function reported_state
* Add options reload
* Fix tracelog
* Set entry_id for config_entry
* Fix DOMAIN unsed-import
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add unique_id for entry
* Fix device info
* Add config_flow for roomba
* Get options to connect
* Fix options in config flow
* Fix syntax in config_flow
* Remove name (not necessary)
* Add bin sensor
* Add Battery sensor
* Add async_connect
* Fix typo
* Add Model and Software version
* Update Roombapy 1.5.0
* Add validate_input
* Add connect and disconnect functions
* Remove test config flow
* Add variables after loop
* Fix translate
* Fix typo
* Fix state of bin
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Remove invalid auth
* Add call function reported_state
* Add options reload
* Fix tracelog
* Set entry_id for config_entry
* Fix DOMAIN unsed-import
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add unique_id for entry
* Fix device info
* syntax for mac (pyupgrade)
* Change single key to BLID
* Resolve dict conflict
* Update homeassistant/components/roomba/binary_sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/.translations/en.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/strings.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add description
* Revert "Remove test config flow"
This reverts commit 26a89422e8.
* Add tests
* Remove check if user none
* Replace CONF_USERNAME to CONF_BLID (breaking change)
* Update test_config_flow.py
* Add code owners
* Remove CONF_USERNAME (unused)
* Add multiple vacuum
* Add multiple vacuum
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Fix syntax name
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Remove CONF_PREFIX (unused)
* Update homeassistant/components/roomba/sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add import UNIT_PERCENTAGE
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add last_user_name to alarm device_state_attributes
changed_by_entity_id was removed in 0.108 and replaced
with changed_by_keypad. This didn't provide enough
data to discover the last user that changed the alarm.
* Switch to changed_by and restore since
we loose the attributes on restart
* use built-in
* Add support to the Econet integration for new attributes: lower_temp, upper_temp, ambient_temp & is_enabled
* Removing support for ambient temperature
* Rewrite parts of upnp component
* Linting
* Add SCAN_INTERVAL
* Get values simultaneously
* Move to time related constants, as per #32065
* Linting
* Move constant KIBIBYTE to homeassistant.const
* Simplify code
* Fix tests for #33344
* Changes after review
* Update homeassistant/components/upnp/sensor.py
* Changes after review
* Formatting
* Formatting
* Use ST from discovery info to avoid swapping device_types if device advertises multiple versions
* Linting
* Requirements for upnp + dlna_dmr components
* Linting
* Regen requirements
* Changes after review by @MartinHjelmare
* Changes after review by @MartinHjelmare
* Formatting
* Linting
* Changes after review by @MartinHjelmare
* Changes after review by @MartinHjelmare
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* added the ability to mock a "long poll" get request by setting up the
waiting request and feeding responses to it
with this, refactored the qwikswitch test so it doesn't use global variables
and is more understandable and maintainable
* added import asyncio from merge
* added assert that first call with long_poll has empty content
* passing json instead of the binary string
* use json instead of text in mock requests
* refactored to use a proxy
* return the proxy also for the http methods other than get
* refactored so any side_effect can be used and created the long_poll side effect
* simplified by using kwargs
needed to move the json->text->content logic from mocker to mockrequest
* no need to explicitly define method and url
* HS220 dimmers are handled as lights with a limited feature set
* Dimmers look up has has_emeter every call so this is cached as well now
to resovle the performance issue.
* update common test for modbus integration
* remove log messages from modbus setup function.
* Make global method local
* Change parameter name to snake_case
Since all entity test functions are going to use
the modbus class, isolate the common parts in
conftest.py, and thereby make it simpler to write
additional test cases.
cleaned up test_modbus_sensor.py while splitting the code.
* solve modbus issue #33872
CONF_DELAY was used in a serial connection, which is not
permitted.
Sometimes async_update is called after async_setup is completed,
but before event EVENT_HOMEASSISTANT_START is issued, leading to
a missing object.
* resolve review comment.
Do not wait for start event, but activate pymodbus directly in
async setup.
* review 2
Remark, this does not work, async_setup hangs.
clean start_modbus() from async calls, leaving only the pymodbus
setup.
* review 2a
Moved listen_once back to start_modbus, since it is sync.
* Improve Plex debounce/throttle logic
* Use Debouncer helper, rewrite affected tests
* Mock storage so files aren't left behind
* Don't bother with wrapper method, store debouncer call during init
* Test cleanup from review
* Don't patch own code in tests
* HS220 dimmers are handled as lights with a limited feature set
* Dimmers look up has has_emeter every call so this is cached as well now
to resovle the performance issue.
* Improve Plex debounce/throttle logic
* Use Debouncer helper, rewrite affected tests
* Mock storage so files aren't left behind
* Don't bother with wrapper method, store debouncer call during init
* Test cleanup from review
* Don't patch own code in tests
* solve modbus issue #33872
CONF_DELAY was used in a serial connection, which is not
permitted.
Sometimes async_update is called after async_setup is completed,
but before event EVENT_HOMEASSISTANT_START is issued, leading to
a missing object.
* resolve review comment.
Do not wait for start event, but activate pymodbus directly in
async setup.
* review 2
Remark, this does not work, async_setup hangs.
clean start_modbus() from async calls, leaving only the pymodbus
setup.
* review 2a
Moved listen_once back to start_modbus, since it is sync.
* fix bug when search for string in dict fails when dict is null
* another bug fix that I only noticed because of this other bug
* add test to cover failure scenario
* update docstring
* add additional assertions to cover failure scenario that's being fixed
Sometimes a modbus server do not respond to a transaction,
this is a contradiction to the modbus protocol specification,
but merely a matter of fact.
Use asynio.await_for() to provoke a timeout, and close the
transaction.
* Speed up TP-Link lights
* Color temp kan be None
* hs as int, force color temp=0
* Fix color temp?
* Additional tplink cleanups to reduce api calls
* Update test to return state, remove Throttle
* Fix state restore on off/on
* Fix lights without hue/sat
Co-authored-by: J. Nick Koston <nick@koston.org>
* fix bug when search for string in dict fails when dict is null
* another bug fix that I only noticed because of this other bug
* add test to cover failure scenario
* update docstring
* add additional assertions to cover failure scenario that's being fixed
* Add a config flow for flume
* Sensors no longer block Home Assistant startup
since the flume api can take > 60s to respond on
the first poll
* Update to 0.4.0 to resolve the blocking startup issue
* Missed conversion to FlumeAuth
* FlumeAuth can do i/o if the token is expired, wrap it
* workaround async_add_entities updating disabled entities
* Fix conflict
Sometimes a modbus server do not respond to a transaction,
this is a contradiction to the modbus protocol specification,
but merely a matter of fact.
Use asynio.await_for() to provoke a timeout, and close the
transaction.
Some providers have set their wait_timeout to 60s
in order to pack as many users as they can on a machine.
The mysql default is 28800 seconds (8 hours)
Since mysql connection build and tear down is relativity
expensive, we want to avoid being disconnected.
We now accommodate this scenario with the following:
1. Raise the mysql session wait_timeout 28800 when we connect
2. The event session now does a 30 second keep alive to
ensure the connection stays open
* Speed up TP-Link lights
* Color temp kan be None
* hs as int, force color temp=0
* Fix color temp?
* Additional tplink cleanups to reduce api calls
* Update test to return state, remove Throttle
* Fix state restore on off/on
* Fix lights without hue/sat
Co-authored-by: J. Nick Koston <nick@koston.org>
* Load integrations with requirements in device_automation
- Split cached loader behavior out of async_get_integration
- Use cached loader for both async_get_integration and
async_get_integration_with_requirements
- Use async_get_integration_with_requirements for device_automation
resolves#33104
* Duplicate caching logic in requirements, remove loader mods
* Update homeassistant/requirements.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Use asynctest patch instead of mock_coro
* Add test for supervisor ip ban
* Do not ban supervisor ip if set
* Extract supervisor ip helper
* Check supervisor ip before banning
* Remove added blank line
* Clean up get supervisor ip
Co-Authored-By: Pascal Vizeli <pvizeli@syshack.ch>
Co-authored-by: Pascal Vizeli <pvizeli@syshack.ch>
* Convert nut to a multi step config flow
* Users can now choose the ups they want in
step 2 (or skipped if only one)
* Users can now select the resources they want
to monitor based on what is actually available
on the device
* CONF_NAME has been removed as we now get the
name from NUT
* Device classes have been added which allows
the battery charge state to be seen in the
devices UI
* Remove update_interval as its for a followup PR
* explict
* reduce
* fix bug, add tests for options flow
* Test for dupe import
* Test for dupe import
* Call step directly
* Update homeassistant/components/nut/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* convert nws to component configuration
* add more debug logging
* remove assumed state
* move initialization of data into init
* refactor update logic
* use forecast success for checking available entities
* Split unique_id into more usable pieces.
use a base_unique_id for each entry. Add domain for signaling to entities. Each entity in each platform can use base_unique_id to form individual unique_id's.
* Revert "move initialization of data into init"
This reverts commit 09eb0220469285b10f0500f5f6def67415931a81.
* add silver quality scale to manifest
* unsubscribe listener in will_remove_from_hass
* initialize _unsub_listener in __init__
* use async_on_remove
* remove scan interval from configuration
* Use better name
Co-Authored-By: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* replaced MagicMock with CoroutineMock to avoid exception
* added conversion to str so mock returns unique-id that doesn't throw json exception
* added non-empty config since hass throws exception when config is empty
* Add discovery support to synology_dsm
* Remove debug
* black
* Fix mocks
* Merge strings
* Move placeholders
* add missing placeholders
* reorder
* use constants in test
* Remove CONF_NAME (only displayed in discovery now)
* test reduction
* Shorten long name
* Use name for name but NOT for unique_id, remove CONF_NAME from yaml config
* Use Synology for the name for now, hopefully we can use the hostname later
* lint
* Remove name from strings
* remove =None
* show login errors at username field
* Update tests/components/synology_dsm/test_config_flow.py
Co-Authored-By: Quentame <polletquentin74@me.com>
* Update tests/components/synology_dsm/test_config_flow.py
Co-Authored-By: Quentame <polletquentin74@me.com>
* Update homeassistant/components/synology_dsm/const.py
Co-authored-by: Quentame <polletquentin74@me.com>
* used coroutinemock to avoid exception
* added spec to mock to remove exception
* added the current_user return value so it doesnt throw exception
* fix the mocks so properties do not need .return_value
* fixed missing mock values that were causing exceptions
* moved patch to asynctest so no need to define m_init
* fixed black error
* update common test for modbus integration
* remove log messages from modbus setup function.
* Make global method local
* Change parameter name to snake_case
* Added support for the Pi4ioe5v9xxxx binary IO expanders.
* Correction for black failure
* Correction for black failure
* Fix for manifest.json
* Fix for flake8 fault missing a period
* Some modifications I made during tests seem to be disapeared, fixed flake8 and black test now
* WIP virtual thermostat
* WIP virtual thermostat
* WIP
* 100% tests coverage
* Manifest, codeowners, typo fix
* Lint problem
* Test file blacked
* Add a test case for b4dpxl's question
* Update CODEOWNERS
* Replacement of generic thermostat
* Cleaning
* Lint
* More lint
* Using external PyPI package, removed get()
* Fix flake8 checks
* removed virtual thermostat
* Re-fix black & isort
* Re-fix isort 2
* Update homeassistant/components/pi4ioe5v9xxxx/binary_sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/binary_sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* black for switch
* update to latest version manual merge
* Delete test_generic_thermostat.py
* Delete .gitignore
* Delete climate.py
* Delete manifest.json
* Delete test_climate.py
* Delete test_climate.py
* fix thermostat interference
* fix thermostat interference 2
* Fix pylint
* Update .pre-commit-config.yaml
Co-authored-by: Cyril <cyril.dubus@effipilot.com>
Co-authored-by: Niflou <dubuscyr@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Skip parsing session if incomplete
* Schedule an update if session data is incomplete
* Mark as callback
* Remove update() & convert to async, abort if any session is incomplete
* Skip parsing session if incomplete
* Schedule an update if session data is incomplete
* Mark as callback
* Remove update() & convert to async, abort if any session is incomplete
* replaced MagicMock with CoroutineMock to avoid exception
* added conversion to str so mock returns unique-id that doesn't throw json exception
* added non-empty config since hass throws exception when config is empty
* MQTT Alarm Control Panel to have all available states
* MQTT Alarm Control Panel to have all available states
* test_arm_custom_bypass_* tests added
* MQTT payload_arm_custom_bypass abbreviation
Since all entity test functions are going to use
the modbus class, isolate the common parts in
conftest.py, and thereby make it simpler to write
additional test cases.
cleaned up test_modbus_sensor.py while splitting the code.
* Add config flow to Synology DSM
* Use proper sensor unique ID from flow + sensor name
* Add description to api_version
* Add authentication flow check
* Add device_info
* Add test_login_failed test
* Bump python-synology to 0.5.0
* 0.5.0 test updates
* Use NAS S/N as config_flow unique_id
* Add missed conf disks + volumes
* Review: async_unload the async_track_time_interval
* Fix NoneType for disks or volumes
* Keep all disks and volumes forever
* Update homeassistant/components/synology_dsm/.translations/en.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/synology_dsm/strings.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Fix "Keep all disks and volumes forever" for empty import
* Fix prettier
* Remove useless LOGGER in config flow
* Fix Synology DSM tests doing I/O
Co-authored-by: J. Nick Koston <nick@koston.org>
Home Assistant auto mode is described as
"The device is set to a schedule, learned behavior, AI."
HomeKit Accessory Protocol expects "heating or cooling to maintain
temperature within the heating and cooling threshold of the
target temperature"
Since HomeKit is expecting to set temperatures in this mode,
mapping homekit state 3 ("Auto") to Home Assistant HVAC_MODE_HEAT_COOL
is more inline with how Home Assistant defines HVAC_MODE_HEAT_COOL
as "The device supports heating/cooling to a range"
* Add prettier (in pre-commit and CI)
* Make all file prettier
* Change order
* Add to Azure Pipelines
* Fix a YAML file prettier caught as invalid
* Remove flow mapping using curly braces from all YAML service files
Homekit only has Off/Heat/Cool/Auto at this time, but
at least we can prevent the device from erroring
by mapping dry and fan to cool so it continues
to function.
* Add yamllint (in pre-commit and CI)
* Fix linting for all YAML files
* Bump and add it to requirements
* Fix gen_requirements for pre-commit, remove 'v' from version
* Handle race condition in harmony setup
If the remote was discovered via ssdp before the yaml config import
happened, the unique id would already be set and the import
would abort.
* Update homeassistant/components/harmony/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* reduce
* black
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Debounce calls to Plex server
* Simplify debounce by recommendation
* Update tests to handle debounce
* Test debouncer, fix & optimize tests
* Use property instead
* Removal of extraneous parenthesis
* Process review suggestions
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Small code style improvements to Insteon integration
* Update homeassistant/components/insteon/utils.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* reordered the clearing of the closed Event so it can stay set at the end and not
leave a task waiting on close
* fixed the side effect so it returns one TimeoutError and after that success
Previously it reached the end of the single item list and threw an exception
* fixed the error. it doesn't happen on python 3.7.5 but CI is on 3.7.0
* fixed comment
* Handle race condition in harmony setup
If the remote was discovered via ssdp before the yaml config import
happened, the unique id would already be set and the import
would abort.
* Update homeassistant/components/harmony/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* reduce
* black
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Debounce calls to Plex server
* Simplify debounce by recommendation
* Update tests to handle debounce
* Test debouncer, fix & optimize tests
* Use property instead
When placeholders are in use, flow_title needs to be
set in the json to prevent an empty name in the
integrations dashboard. This affected doorbirds
that were found via ssdp.
* Switch homekit lights to use service callbacks
Service callbacks allow us to get the on/off, brightness, etc
all in one call so we remove all the complexity that was
previously needed to handle the out of sync states
We now get the on event and brightness event at the same time
which allows us to prevent lights from flashing up to 100%
before the requested brightness.
* Fix STATE_OFF -> STATE_ON,brightness:0
* Add available property and raise exception
* Add entity available property
* Refactoring and fixes
* Refactoring and fix for multi sensor
* Bump abodepy version
Integration configuration cannot complete as it is currently looking for /states after authentication. Replacing with /lovelace to allow the script to complete after successful authentication with Automatic.
* Adding support for Mi AirPurifier 3
* Adding support for Mi AirPurifier 3H
* Enabled setting fan level for AirPurifier 3/3H
* Get rid of isinstance for MIOT AirPurifier
* Bumping xiaomi-miio dependency
* Fixed lint error
* Update manifest.json
* Fixed requirements files for 0.5.0.1
Co-authored-by: Piotr Król <Piotr@gorszyportal.pl>
* Adding vera config entries support.
* Fixing lint error.
* Applying minimal changes necessary to get config entries working.
* Addressing PR feedback by further reducing the scope of the change.
* Addressing PR feedback.
* Fixing pyvera import to make it easier to patch.
Addressing PR feedback regarding creation of controller and scheduling of async config flow actions.
* Updating code owners file.
* Small fixes.
* Adding a user config flow step.
* Adding optional configs for user config flow.
* Updating strings to be more clear to the user.
* Adding options flow.
Fixing some PR feedback.
* Better handling of options.
PR feedback changes.
* Using config registry to update config options.
* Better managing config from file or config from UI
Disabling config through UI if config is provided from a file.
More tests to account for these adjustments.
* Address PR feedback.
* Fixing test, merging with master.
* Disabling all Vera UI for configs managed by configuration.yml.
Adding more tests.
* Updating config based on unique_id.
Addressing additional PR feedback.
* Rebasing off dev.
Addressing feedback.
* Addressing PR feedback.
* force_update added
As per this discussion we need to update last_changed when active timer restarted.
One way to do that is to force HA update the state on each request even if it remains the same.
More details here - https://github.com/home-assistant/architecture/issues/345
* add test for force_update
make sure state_change event fired every time timer (re)started
* remove whitespaces
* remove whitespace
* Update tests/components/timer/test_init.py
Co-Authored-By: Alexei Chetroi <lexoid@gmail.com>
* fix lint
* fix isort
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
When placeholders are in use, flow_title needs to be
set in the json to prevent an empty name in the
integrations dashboard. This affected doorbirds
that were found via ssdp.
* Async fix
* Update homeassistant/components/rachio/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/rachio/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Fix format
* Remove from hass
* undo dispatcher
Co-authored-by: J. Nick Koston <nick@koston.org>
* add sound mode support for devices that support it
* make setting and unsetting flag better
* move eq and audio settings into constants
* fix missed statement to use constant instead of hardcoded string
* further fixes based on review
* bump pyvizio version to include newly identified app
* Switch homekit lights to use service callbacks
Service callbacks allow us to get the on/off, brightness, etc
all in one call so we remove all the complexity that was
previously needed to handle the out of sync states
We now get the on event and brightness event at the same time
which allows us to prevent lights from flashing up to 100%
before the requested brightness.
* Fix STATE_OFF -> STATE_ON,brightness:0
If the harmony hub was not ready for connection or
was busy when importing from yaml, the import validation
would fail would not be retried.
To mitigate this scenario we now do the validation in
async_setup_platform which allows us to raise
PlatformNotReady so we can retry later.
* Handle unavailabe entities
* Remove some logging
* Set valve to lowest temp when turned off
* Remove some logging
* Address comments
* Report entity as connected if update is successful
* Fix stupidness
* Fix
* Use backend-provided fan speed presets for Xiaomi vacuums
This needs input from Xiaomi vacuum owners to verify that it does not break anything.
I have personally tested this on rockrobo v1 (old mapping).
Related issues/PRs:
home-assistant/core#32821home-assistant/core#31268home-assistant/core#27268
This is a WIP as it requires a new upstream release.
The PR is https://github.com/rytilahti/python-miio/pull/643
* Bump version requirement for 0.5.0
* Bump requirements_test_all.txt, too
* Fix linting; missing setup.cfg on local checkout caused wrong settings for black..
* Add tests for both fan speed types
* Remove useless else..
* bump python-miio to 0.5.0.1 due to broken 0.5.0 packaging
* Support for returning NULL in color or temperature. Fixes#33469
* Added further support for ‘None’ returns in level template
* Removed assumption that template render may not be a string
* Streamlined code per cloud pylint
* Updates per code review suggestions
* Added improved error handling and logging for brightness
* Additional exception handling for temperature
* lib version
* unit-test refactoring
* added type hints
* added cover
* added test to see that consts have the same value as library consts
* Update tests/components/dynalite/test_init.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* removed trigger template
* Update homeassistant/components/dynalite/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/dynalite/const.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* removed CONF_TRIGGER from const
corrected type hints - not clear why mypy didn't catch it
* conversion of the config to library CONFs
* moved to use the value since it should come from the library
* taking CONF_HOST from homeassistant.const instead of module const
* use dict.get
removed leftover log
* force device_class to be from homeassistant consts
* move dict.get to inline
* removed CONF from values
changed "channelcover" to "channel_cover"
* moved some CONF values out of const.py and taking them from homeassistant.const
* verifying that device class is a valid HA device class
* moved shutter to home assistant const
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Don't write storage to disk while stopping
* rework change
* lint
* remove delay save and schedule final write at stop
* update tests
* fix test component using private methods
* cleanup
* always listen
* use stop in restore state again
* whitelist JSON exceptions for later
* review comment
* make zwave tests use mock storage
If the harmony hub was not ready for connection or
was busy when importing from yaml, the import validation
would fail would not be retried.
To mitigate this scenario we now do the validation in
async_setup_platform which allows us to raise
PlatformNotReady so we can retry later.
* Handle unavailabe entities
* Remove some logging
* Set valve to lowest temp when turned off
* Remove some logging
* Address comments
* Report entity as connected if update is successful
* Fix stupidness
* Fix
* Store device_registry entry id in HueEvent
so it can be retrieved with that key when using device triggers
* Add device_trigger for hue_event from hue remotes
* supporting Hue dimmer switch & Hue Tap
* State mapping and strings are copied from deCONZ
* refactor mock_bridge for hue tests
and also share `setup_bridge_for_sensors`
for test_sensor_base and test_device_trigger.
* Add tests for device triggers with hue remotes
* Remove some triggers
* replace asyncio.wait with asyncio.gather since wait ignores exceptions
fix for test_entity_platform so it expects the exception
* changed to log on failed domains
* discovered that this fix actually removes other uncaught exceptions
* fix in the list of ignored exceptions
* replaced a few ignores on dyson tests that work locally but fail in the CI
* two more tests that are failing on the CI and not locally
* removed assertion on multiple entries with same unique_id - replaced with log and return
reverted test_entity_platform to its original since now there is no exception thrown
* entered all the dyson tests. they all pass locally and probabilistically fail in the CI
* removed unnecessary str() for exception
* added log message for duplicate entity_id / unique_id
* removed log in case of False return value
* added exc_info
* change the use of exc_info
* Convert nut to config flow
* Add a test for importing
* lint
* Address review items (part 1)
* Address review items (part 1)
* Cleanup unique id handling
* Update tests for new naming scheme
* No unique id, no device_info
* Remove sensor types
* Update tests to use resources that still exist
* Fix setting zone overlays for tados that support swing
* Support for changing swing mode will come at a later
time as another upstream update is required.
* remove debug
* style
* The api reports success before the state change
takes effect
* We now set state optimistically and followup with
an update 4 seconds in the future after any state change to
verify it actually happens.
* When hvac_mode is passed to the set_temperature service
we now switch to the desired mode.
* Add remote platform to hue integration
supporting ZGPSwitch, ZLLSwitch and ZLLRotary switches.
* Ported from custom component Hue-remotes-HASS from @robmarkcole
* Add options flow for hue, to toggle handling of sensors and remotes
* Sensors are enabled by default, and remotes are disabled,
to not generate any breaking change for existent users.
Also, when linking a new bridge these defaults are used,
so unless going explicitly to the Options menu,
the old behavior is preserved.
* SensorManager stores the enabled platforms and ignores everything else.
* Bridge is created with flags for `add_sensors` and `add_remotes`,
and uses them to forward entry setup to only the enabled platforms.
* Update listener removes disabled kinds of devices when options are changed,
so device list is in sync with options, and disabled kinds disappear from HA,
leaving the enable/disable entity option for individual devices.
* Fix hue bridge mock with new parameters
* Revert changes in hue bridge mock
* Remove OptionsFlow and platform flags
* Extract `GenericHueDevice` from `GenericHueSensor`
to use it as base class for all hue devices, including those without any entity,
like remotes without battery.
* Add `HueBattery` sensor for battery powered remotes
and generate entities for TYPE_ZLL_ROTARY and TYPE_ZLL_SWITCH remotes.
* Remove remote platform
* Add HueEvent class to fire events for button presses
* Use `sensor.lastupdated` string to control state changes
* Event data includes:
- "id", as pretty name of the remote
- "unique_id" of the remote device
- "event", with the raw code of the pressed button
('buttonevent' or 'rotaryevent' property)
- "last_updated", with the bridge timestamp for the button press
* Register ZGP_SWITCH, ZLL_SWITCH, ZLL_ROTARY remotes
* fix removal
* Exclude W0611
* Extract GenericHueDevice to its own module
and solve import tree, also fixing lint in CI
* Store registered events to do not repeat device reg
* Minor cleaning
* Add tests for hue_event and battery entities for hue remotes
* Best effort state initialization of bayesian binary sensor.
Why:
* https://github.com/home-assistant/home-assistant/issues/30119
This change addresses the need by:
* Running the main update logic eagerly for each entity being observed
on `async_added_to_hass`.
* Test of the new behavior.
* Refactor in order to reduce number of methods with side effects that
mutate instance attributes.
* Improve test coverage
Why:
* Because for some reason my commits decreased test coverage.
This change addresses the need by:
* Adding coverage for the case where a device returns `STATE_UNKNOWN`
* Adding coverage for configurations with templates
* rebase and ensure upstream tests passed
* Delete commented code from addressing merge conflict.
* Add HomeKit support for slat tilting
* Reset tilt-specific attribute, not position attribute
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add explanation why we fix HomeKit's targets
We have to assume that the device has worse precision than HomeKit. If it
reports back a state that is only _close_ to HK's requested state, we'll
"fix" what HomeKit requested so that it won't appear out of sync.
Co-authored-by: J. Nick Koston <nick@koston.org>
* Create __init__.py
* Create manifest.json
* Update zeroconf.py
* more work on integration
* more work on integration.
* add more sensor tests.
* Update const.py
* Update sensor.py
* more work on ipp.
* Update test_config_flow.py
* more work on ipp.
* Update config_flow.py
* Update config_flow.py
* Update Meteo_France Weather constants
Updating Meteo_France integration with more weather "condition" returned by the web service.
Adding:
- "Nuit claire" (note the lower 'c') mapped to "clear-night"
- "Brume" mapped to "fog"
* Black formatting update
* add services for DSP
* add homeassistant/components/kef/const.py
* add services.yaml
* fix set_mode
* fix services
* media_player.py fixes
* bump aiokef to 0.2.9
* update requirements_all.txt
* add basic sensor.py
* add DSP settings as attributes
* add message about kef.update_dsp
* remove sensor.py
* fix pylint issues
* update_dsp inside async_added_to_hass
* use {...} instead of dict(...)
* get DSP settings when connecting to HA or once on update
* simplify condition
* do not get mode twice
* remove async_added_to_hass
* use async_register_entity_service
* remove entity_id from schema and prepend _value
* invalidate self._dsp after setting a DSP setting
* schedule update_dsp every hour
* subscribe and unsubscribe on adding and removing to HA
* don't pass hass and set _update_dsp_task_remover to None after removing
* add third stage to hass shutdown
* use 3rd stage in storage
* update core state
* add writing data to multi stop ignore
* update core test
* review comment
* update name based on feedback
* Add include_location_attributes
* Add check for different state
* Fix things
* Drop filter
* significant changes only
* Change default behavior
* Remove trailing commas
* Tado climate state moved to python-tado
* Resolve various incorrect states and add tests for known tado zone states
* Write state instead of calling for an update
This is a redux of pr #32564 with all of the zone state now moved into
python-tado and tests added for the various states.
* stale string
* add missing undos to dispachers
* remove unneeded hass
* naming
* rearrange
* fix water heater, add test
* fix water heater, add test
* switch hvac mode when changing temp if in auto/off/smart
* add test to for importing multiple output settings
* provide option to set multiple output states
* tweaks after testing
* Update homeassistant/components/konnected/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Prevent nut from doing I/O in the event loop
device_state_attributes would call for an update if the
throttle happened to expire.
* _format_display_state no self use
* Modbus: remove legacy code
flexit and stiebel_el are updated to import modbus.const,
therefore legacy code can be removed.
* Flexit: update const reference from modbus
climate.py imports from modbus direct, this is legacy and will
result in errors.
update import to be modbus.const.
* Stiebel_el: update reference to modbus
__init.py references modbus directly, this is legacy and will
give errors.
Update import to be modbus.const.
* modbus: bumb pymodbus version to 2.3.0
pymodbus version 1.5.2 did not support asyncio, and in general
the async handling have been improved a lot in version 2.3.0.
updated core/requirement*txt
* updated core/CODEOWNERS
committing result of 'python3 -m script.hassfest'.
* modbus: change core connection to async
change setup() --> async_setup and update() --> async_update()
Use async_setup_platform() to complete the async connection to core.
listen for EVENT_HOMEASSISTANT_START happens in async_setup()
so it needs to be async_listen.
But listen for EVENT_HOMEASSISTANT_STOP happens in start_modbus()
which is a sync. function so it continues to be listen().
* modbus: move setup of pymodbus into modbushub
setup of pymodbus is logically connected to the class modbushub,
therefore move it into the class.
Delay construction of pymodbus client until event
EVENT_HOMEASSISTANT_START arrives.
* modbus: use pymodbus async library
convert pymodbus calls to refer to the async library.
Remark: connect() is no longer needed, it is done when constructing
the client. There are also automatic reconnect.
* modbus: use async update for read/write
Use async functions for read/write from pymodbus.
change thread.Lock() to asyncio.Lock()
* Modbus: patch for slow tcp equipment
When connecting, via Modbus-TCP, so some equipment (like the
huawei sun2000 inverter), they need time to prepare the protocol.
Solution is to add a asyncio.sleep(x) after the connect() and before
sending the first message.
Add optional parameter "delay" to Modbus configuration.
Default is 0, which means do not execute asyncio.sleep().
* Modbus: silence pylint false positive
pylint does not accept that a class construction __new__
can return a tuple.
* Modbus: move constants to const.py
Create const.py with constants only used in
the modbus integration.
Duplicate entries are removed, but NOT any entry that would
lead to a configuration change.
Some entries were the same but with different names, in this
case renaming is done.
Also correct the tests.
* Modbus: move connection error handling to ModbusHub
Connection error handling depends on the hub, not the
entity, therefore it is logical to have the handling in
ModbusHub.
All pymodbus call are added to 2 generic functions (read/write)
in order not to duplicate the error handling code.
Added property "available" to signal if the hub is connected.
* Modbus: CI cleanup
Solve CI problems.
* Modbus: remove close of client
close() no longer exist in the pymodbus library, use
del client instead.
* Modbus: correct review comments
Adjust code based on review comments.
* Modbus: remove twister dependency
Pymodbus in asyncio mode do not use twister but still throws a
warning if twister is not installed, this warning goes into
homeassistant.log and can thus cause confusion among users.
However installing twister just to avoid the warning is not
the best solution, therefore removing dependency on twister.
* Modbus: review, remove comments.
remove commented out code.
* Plum Lightpad - glowIntensity is represented as a float/percentage
Calculate brightness from the glowIntensity instead of the glowIntensity from brightness.
* Renamed `_glowIntensity` to `_glow_intensity`
* Added Rounding, converting to an int, min and max boxing
* Added codeowners to the Plum Lightpad manifest.json
This upgrades to PyVicare 0.1.10 which allows to combine multiple
requests into a single HTTP GET. This in turn allows us to increase
the scan_interval to 60 seconds by default.
Additionally scan_interval has been introduced as a config parameter.
When in run schedule mode, setting the temperature will switch
the device to a temporary hold. If you set the temperature
again, we should stay in temporary hold mode and not switch
to permanent hold.
The underlying nuheat package contains a default to a
permanent hold if no setting was passed. We now always
pass the setting.
* Implement Alexa.CameraStreamController.
* Add dependencies.
* Add camera helpers for image url, and mjpeg url.
* Remove unsupported AlexaPowerController from cameras.
* Refactor camera_stream_url to hass_url
* Declare HLS instead of RTSP.
* Add test for async_get_image_url() and async_get_mpeg_stream_url().
* Sort imports.
* Fix camera.options to camera.stream_options. (#32767)
(cherry picked from commit 9af95e8577)
* Remove URL configuration option for AlexaCameraStreamController.
* Update test_initialize_camera_stream.
* Optimize camera stream configuration.
* Update Tests for optimized camera stream configuration.
* Sort imports.
* Add check for Stream integration.
* Checks and Balances.
* Remove unnecessary camera helpers.
* Return None instead of empty list for camera_stream_configurations().
In PR#24804 the step size was changed to match the step size
of the device that HomeKit is controlling. Since HomeKit
is always working in TEMP_CELSIUS and the step size is based on
the Home Assistant units setting, we were mixing data with different
units of measure when Home Assistant was using imperial units.
This regression presented the symptom that setting the
temperature to 73F would result in 74F. Other values are affected
where the math doesn't happen to work out.
HomeKit currently has a default of 0.1 in the spec and the override
of this value has been removed.
* Config flow for elkm1
* As entity ids can now be changed, the “alarm_control_panel”
attribute “changed_by_entity_id” is now “changed_by_keypad”
and will show the name of the Elk keypad instead of the entity id.
* An auto configure mode has been introduced which avoids the
need to setup the complex include and exclude filters. This
functionality still exists when configuring from yaml for power
users who want more control over which entities elkm1 generates.
* restore _has_all_unique_prefixes
* preserve legacy behavior of creating alarm_control_panels that have no linked keypads when auto_configure is False
* unroll loop
* Add integration for Schluter
New integration for Schluter DITRA-HEAT thermostats. Interacts with Schluter API via py-schluter to implement climate platform.
* Fix for manifest issue on build
Removed unnecessary configurator logic
* Flake8 & ISort issues fixed
* Code review modifications for Schluter integration
- Removed unnecessary strings.json file
- Removed unnecessary DEFAULT_SCAN_INTERVAL from __init__.py
- Removed persistent notification for authentication error in __init__.py
- Removed string casts from log statements in __init__.py
- Removed unnecessary logging of entity creations in climate.py
- Removed unnecessary lookup for hvac_mode in climate.py
* Work started on Update Coordinator
* Further Coordinator work
* Update to DataUpdateCoordinator complete
* Flake8 fix
* Removal of unnecessary SchluterPlatformData
Coordinator also now using SCAN_INTERVAL
* Disable polling, use coordinator listeners
* Isort on climate.py
* Code review modifications
- Hass data stored under domain
- Since platform only likely to be climate, removed array, load explicitly
- Remove unnecessary fan mode implementation
* Switch to HVAC action for showing current heating status
* Isort fix
* HVAC Mode return list, set_hvac_mode function added
* __init__.py modifications from code review
* Climate.py code review modifications
- Device info property removed
- Write state function on set temp failure
- Add "available" property
- Delegate sync function in coordinator update to the executor
* Serial number as unique identifier
- Now using serial number & thermostat dictionary to protect against scenarios where a device is removed and enumerable index is no longer accurate
- Removed async_write_ha_state() from set temp exception, not needed
- Removed unnecessary SCAN_INTERVAL definition
* Linting
* Update homeassistant/components/schluter/climate.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/schluter/climate.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Changed timeout from config, load platform discover to None
* Proposed change for discover info issue
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* start of fan groups
* update fan classes
* update group entity domains
* add set speed
* update discovery for multiple entities for groups
* add fan group entity tests
* cleanup const
* cleanup entity_domain usage
* remove bad super call
* remove bad update line
* fix set speed on fan group
* change comparison
* pythonic list
* discovery guards
* Update homeassistant/components/zha/core/discovery.py
Co-Authored-By: Alexei Chetroi <lexoid@gmail.com>
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
* Abort rachio homekit config when one is already setup.
We can see rachio on the network to tell them to configure
it, but since the device will not give up the account it is
bound to and there can be multiple rachio controllers on a single
account, we avoid showing the device as discovered once
they already have one configured as they can always
add a new one via "+"
* doc string freshness
* doc string freshness
* Update tests/components/rachio/test_config_flow.py
Co-Authored-By: Franck Nijhof <git@frenck.dev>
Co-authored-by: Franck Nijhof <git@frenck.dev>
* Update PySwitchbot to 0.8.0 and added password configuration
* Removed unchanged retry_count attribute
* Fix dependencies and formatting
* Removed default value for password and use config.get instead
If the database server disconnects there were exceptions
that were not trapped which would cause the recorder event
loop to collapse. As we never want the loop to end
we trap exceptions broadly.
Fix a bug in the new commit interval setting which caused
it to always commit after 1s
If the database server disconnects there were exceptions
that were not trapped which would cause the recorder event
loop to collapse. As we never want the loop to end
we trap exceptions broadly.
Fix a bug in the new commit interval setting which caused
it to always commit after 1s
* bump pyvizio and update app_id to show app config to aid in HA config generation. squashed from multiple commits to make a rebase on dev easier
* bump pyvizio for bug fixes
* fix pyvizio version number
* only return app_id if app is unknown and explicitly create the dict that's returned
* fix tests
* fix docstring for app_id
* split entity into base and entity
* add initial light group support
* add dispatching of groups to light
* added zha group object
* add group event listener
* add and remove group members
* get group by name
* fix rebase
* fix rebase
* use group_id for unique_id
* get entities from registry
* use group name
* update entity domain
* update zha storage to handle groups
* dispatch group entities
* update light group
* fix group remove and dispatch light group entities
* allow picking the domain for group entities
* beginning - auto determine entity domain
* move methods to helpers so they can be shared
* fix rebase
* remove double init groups... again
* cleanup startup
* use asyncio create task
* group entity discovery
* add logging and fix group name
* add logging and update group after probe if needed
* test add group via gateway
* add method to get group entity ids
* update storage
* test get group by name
* update storage on remove
* test group with single member
* add light group tests
* test some light group logic
* type hints
* fix tests and cleanup
* revert init changes except for create task
* remove group entity domain changing for now
* add missing import
* tricky code saving
* review comments
* clean up class defs
* cleanup
* fix rebase because I cant read
* make pylint happy
* Run-in-env script.gen_requirements_all and hassfest in pre-commit
* Apply suggestions from code review and change `language` to script
Co-authored-by: Ville Skyttä <ville.skytta@iki.fi>
We can see myq on the network to tell them to configure
it, but since the device will not give up the account it is
bound to and there can be multiple myq gateways on a single
account, we avoid showing the device as discovered once
they already have one configured as they can always
add a new one via "+"
* Fix minor issues mentioned in #30837 after it was closed
* Update homeassistant/components/bmp280/sensor.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* some sensors working in homeassistant
* bring up to date
* add codeowner
* update requirements
* overhaul data imports from api & sensor discovery
* remove print statement
* delete requirements_test_all
* add requrements_test_all.txt
* Update homeassistant/components/nextcloud/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Update homeassistant/components/nextcloud/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* describe recursive function
* clarify that dict is returned
* remove requirements from requirements_test_all
* improve and simplify sensor naming
* add basic tests
* restore pre-commit config
* update requirements_test_all
* remove codespell requirement
* update pre-commit-config
* add-back codespell
* rename class variables as suggested by @springstan
* add dev branch to no-commit-to-branch git hook
Because my fork had the same 'dev' branch i wasn't able to push. Going forward I should probably name my branches differently.
* move config logic to __init__.py
* restore .pre-commit-config.yaml
* remove tests
* remove nextcloud test requirement
* remove debugging code
* implement binary sensors
* restore .pre-commit-config.yaml
* bump dependency version
* bump requirements files
* bump nextcloud reqirement to latest
* update possible exceptions, use fstrings
* add list of sensors & fix inconsistency in get_data_points
* use domain for config
* fix guard clause
* repair pre-commit-config
* Remove period from logging
* include url in unique_id
* update requirements_all.txt
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Added support for Minecraft SRV records
* Switched from dnspython to aiodns, improved server ping and log messages, use address instead of host and port in config flow
* Updated component requirements
* Fix state_automation_listener when new state is None (fix#32984)
* Listen to EVENT_STATE_CHANGED instead of using async_track_state_change
and use the event context on automation trigger.
* Share `process_state_match` with helpers/event
* Add test for state change automation on entity removal
* Use async_call_later for retrying, instead of async_track_point_in_time
* Normalize test filename renaming it to `test_sensor`
* Remove link to docs in docstring
* Adjust test results to new behavior with async_call_later
* Update firmware version in device registry.
Parse recevied OTA requests for firmware version and update device
registry.
* Update tests.
* Cleanup sw_id_update listener.
* Update ZHA test devices list.
* Add aircleaner and humidify service to nexia climate
* These were removed from the original merge to reduce review scope
* Additional tests for binary_sensor, sensor, and climate states
* Switch to signals for services
Get rid of everywhere we call device and change to zone or thermostat
as it was too confusing
Renames to make it clear that zone and thermostat are tightly coupled
* Make scene activation responsive
* no need to use update for only one key/value
* stray comma
* use async_call_later
* its async, need ()s
* cleaner
* merge entity platform services testing branch
* Updated tado integration climate.py to allow for presence change
* Updated tado integration __init__.py to allow for presence change
* Black formatting
* Added missing docstring
* Added missing period to docstring
* Using constants from climate component
* Filter out other preset_modes
* Linting error fix
* Isort error fix
* Filtering of unwanted presence mode in init
* Bumped python-tado version to 0.5.0
Removed unnecessary preset mode check
* Update requirements_all.txt
* Config flow for doorbird
* Discoverable via zeroconf
* Fix zeroconf test
* add missing return
* Add a test for legacy over ride url (will go away when refactored to cloud hooks)
* Update homeassistant/components/doorbird/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* without getting the hooks its not so useful
* Update homeassistant/components/doorbird/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* fix copy pasta
* remove identifiers since its in connections
* self review fixes
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add support for Lutron Caseta occupancy/vacancy sensors
This follows updates to pylutron-caseta to add support for these
devices. This code works for me as a custom component in Home Assistant
Core with pylutron-caseta 0.6.0 (currently unreleased).
* black formatting
* Update requirements_all.txt
* Apply black formatting
* Resolve some review comments
* serial -> unique_id
* Black formatting
* Resolve linting errors
* Add code owner...
* Fix isort complaint
* Fix remaining isort complaints
* Update codeowners
* Resolve outstanding review comments
* Remove caseta_
* Modernize nuheat for new climate platform
* Home Assistant state now mirrors the
state displayed at mynewheat.com
* Remove off mode as the device does not implement
and setting was not implemented anyways
* Implement missing set_hvac_mode for nuheat
* Now shows as unavailable when offline
* Add a unique id (serial number)
* Fix hvac_mode as it was really implementing hvac_action
* Presets now map to the open api spec
published at https://api.mynuheat.com/swagger/
* ThermostatModel: scheduleMode
* Revert test cleanup as it leaves files behind.
Its going to be more invasive to modernize the tests so
it will have to come in a new pr
* Config flow for nuheat
* codeowners
* Add an import test as well
* remove debug
If the IP address of the harmony hub changed it would
not be rediscovered. We now connect to get the
unique id and then update config entries with
the correct ip if it is already setup.
* Add gate support to myq, fix bouncy updates
Switch to DataUpdateCoordinator, previously
we would hit the myq api every 60 seconds per device.
If you have access to 20 garage doors on the account it means
we would have previously tried to update 20 times per minutes.
* switch to async_call_later
* Add new integration: pvpc_hourly_pricing
to add a sensor with the current hourly price of electricity in Spain.
Configuration is done by selecting one of the 3 reference tariffs, with
1, 2, or 3 billing periods.
* Features config flow, entity registry, RestoreEntity, options flow
to change tariff, manual yaml config as integration or sensor platform
* Cloud polling sensor with minimal API calls (3/hour at random times)
and smart retry; fully async
* Only 1 state change / hour (only when the price changes)
* At evening, try to download published tomorrow prices, to always store
prices info for a window of [3, 27] hours in the future.
* Include useful state attributes to program automations to be run
at best electric prices.
* Add spanish and english translations.
* Requires `xmltodict` to parse official xml file with hourly prices
for each day.
* Update requirements and add to codeowners
* Avoid passing in hass as a parameter to the entity
Instead, create time change listeners in async_added_to_hass and
call async_generate_entity_id before async_add_entities
* Fix lint issues
* Add tests for config & options flow
* Add tests for manual yaml config
with entity definition as integration and also as a sensor platform
* Fix placement of PLATFORM_SCHEMA and update generated config_flows
* Store prices internally linked to UTC timestamps
- to deal with days with DST changes
- and work with different local timezones
* Add availability to sensor
to 'expire' the sensor if there is no connection available
and current hour is not in the stored prices.
Also, turn off logging and retrying if prices can't be downloaded
repeatedly, by flagging `data_source_available` as False, so there is no
log-flood mess.
* Add more tests
- to cover behavior in DST changes and complete coverage of sensor logic
- to cover abort config flow
* fix linter
* Better handling of sensor availability and minor enhancements
- Emmit 1 error if data source is marked as unavailable
(after some retries), and be silent until cloud access is recovered,
then emmit 1 warning.
- Follow standard of camel_case keys in attributes
* Mock aiosession to not access real API, store fixture data
- Store a set of daily xml files to test sensor logic for all situations
- Mock time and session to run tests with stored API responses
- Add availability test to simulate a lost + recovery of cloud access,
checking that logging is reasonable: 1 error to flag the continued
disconnection + 1 warning in recovery.
* Change API endpoint to retrieve JSON data
and remove xmltodict from reqs.
It seems that this endpoint is more reliable than the XML.
* Adapt tests to new API endpoint
* Translate tariff labels to plain English
and sync the default timeout value for all ways of configuration.
* Relax logging levels to meet silver requirements
- 1 warning when becoming unavailable, another warning when recovered.
- Warnings for unexpected TimeoutError or ClientError
- Move the rest to debug level, leaving info for HA internals
Also reduce number of API calls from 3 to 2 calls/hour.
* Fix requirements
* Mod tests to work with timezone Atlantic/Canary
and fix state attributes for timezones != reference, by using 3 price
prefixes: 'price_last_day_XXh', 'price_next_day_XXh' and 'price_XXh',
all generated with local time (backend timezone)
* Try to fix CI tests
* Externalize pvpc data and simplify sensor.py
* add new `aiopvpc` to requirements
* Remove data parsing and price logic from here
* Replace some constant properties with class variables
* Simplify tests for pvpc_hourly_pricing
* Fix updater for options flow
* Updater always reloads
* `tariff` value comes 1st from entry.options, 2nd from entry.data
* Fix lint
* Bump aiopvpc
* Remove options flow and platform setup
- Remove PLATFORM_SCHEMA and async_setup_platform
- Generate config_entry.unique_id with tariff instead of entity_id, in flow step.
- Remove TariffSelectorConfigFlow
- Adapt tests to maintain full coverage
* Fix docstring on test
and rename SENSOR_SCHEMA to SINGLE_SENSOR_SCHEMA to avoid confusion
* Remove timeout manual config, fix entry.options usage, simplify unique_id
* Simplify tests
- No need for a test_setup now, as platform setup is removed and integration
setup is already used in `test_availability`
- Simplified `_process_time_step`: only one async_fire(EVENT_TIME_CHANGED)/hour
* Fix possible duplicated update
when source is not available.
* Do not access State last_changed for log messages
* Do not update until entity is added to hass
and call to async_update after 1st download or when recovering access, so
async_write_ha_state is not called twice on those.
* minor changes
* Rename method to select current price and make it a callback
* General code cleanups for lutron_caseta component
* black
* Update homeassistant/components/lutron_caseta/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* filter out additional app config names from pyvizios app list
* add test
* change where filtering app list occurs
* fix test
* fix mistake in change
* hopefully final test fix
* fix test scenario that unknowingly broke with test change
* Clear state on exception
Clear state if querying the device fails. The state is then set to unknown, so it can be tracked if a miflora device isn't responding any more.
* Add available()
Signal valid data via available()
* miflora: add timeout to go unavailable
* code cleanup
* miflora: tox cleanup
* Fix scheduled update time-drift in data update coordinator
As next schedule is calculated **after** the update is done,
setting now + update_interval makes 1 second drift in practice,
as the tick is 1Hz.
* Floor the utcnow timestamp
to remove sub-second error precision, and generate constant frequency updates
as long as the update takes < 1s.
* Fix tankerkoenig with more than 10 stations
There seemed to be a problem, if more than 10 fuel stations were tracked.
Added a warning in this case, and split the calls to the API in chunks of
10, so that the data can be fetched anyway.
* Update homeassistant/components/tankerkoenig/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Split ZHA device loading and entities adding.
Load zha devices from ZHA gateway, but add entities after integration
was setup.
* Use hass.loop.create_task()
* Split ZHA device initialization from loading.
Restore and initialize ZHA devices separately.
* Use hass.async_create_task()
Load devices prior group initialization.
* Fix tankerkoenig with more than 10 stations
There seemed to be a problem, if more than 10 fuel stations were tracked.
Added a warning in this case, and split the calls to the API in chunks of
10, so that the data can be fetched anyway.
* Update homeassistant/components/tankerkoenig/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Split ZHA device loading and entities adding.
Load zha devices from ZHA gateway, but add entities after integration
was setup.
* Use hass.loop.create_task()
* Split ZHA device initialization from loading.
Restore and initialize ZHA devices separately.
* Use hass.async_create_task()
Load devices prior group initialization.
* Validate UUIDs against custom validator
Instead of just validating against strings, use a custom validator,
so that the format can be checked.
* Add tests for custom UUID4 validator
* Add support for nexia automations
Bump nexia to 0.7.1
Start adding tests
Fix some of the climate attributes that were wrong (discovered while adding tests)
Pass the name of the instance so the nexia UI does not display "My Mobile"
* fix mocking
* faster asserts, scene
* scene makes so much more sense
* pylint
* Update homeassistant/components/nexia/scene.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* docstring cleanup
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add a config flow for myq
* Discovered by homekit
* Fix gates being treated as garage doors
* Offline devices now show as unavailable
* Homekit flow
* strip out icon
* return -> raise
* Modernize nuheat for new climate platform
* Home Assistant state now mirrors the
state displayed at mynewheat.com
* Remove off mode as the device does not implement
and setting was not implemented anyways
* Implement missing set_hvac_mode for nuheat
* Now shows as unavailable when offline
* Add a unique id (serial number)
* Fix hvac_mode as it was really implementing hvac_action
* Presets now map to the open api spec
published at https://api.mynuheat.com/swagger/
* ThermostatModel: scheduleMode
* Empty commit to re-run ci
* Revert test cleanup as it leaves files behind.
Its going to be more invasive to modernize the tests so
it will have to come in a new pr
Add new "amcrest.ptz_control" service to specify a PTZ camera movement or zoom direction (up, down, right, left, right_up, right_down, left_up, left_down, zoom_in, zoom_out). An optional travel_time attribute specifies the amount of movement between start/stop.
* Wait for cloud connection
* Just wait
* Remove redundant entry
* Drop webhook before unloading other platforms
* Add missing scope
* Update homeassistant/components/netatmo/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Fix test
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Wait for cloud connection
* Just wait
* Remove redundant entry
* Drop webhook before unloading other platforms
* Add missing scope
* Update homeassistant/components/netatmo/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Fix test
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add tests for states of the sensors
* Revert async_update method
* Tests improvement
* Fix icon name
* Tests improvement
* Simplify tests
* Test improvement
* Patch the library instead of the coordinator
* Suggested change
* Remove return_value
* Convert amcrest binary sensors from poll to stream
- Bump amcrest package to 1.6.0.
- For online binary sensor poll camera periodically to test communications in case
configuration & usage results in no other communication to camera.
- Start a separate thread to call camera's event_stream method since it never returns.
- Convert all received events into signals that cause corresponding sensors to update.
- Use camera's generic event_channels_happened method to update sensors at startup,
and whenever camera comes back online after being unavailable.
* Changes per review
* Changes per review 2
* Changes per review 3
- Move event stream decoding to amcrest package.
- Change name of event processing threads so global
counter is no longer required.
- Bump amcrest package to 1.7.0.
* An unwanted character had found its way into a stream string, reverting f-string work to remove duplication of code and improve readability
* Fix failing tests
* Update powerwall unique id
* Fix somfy optimistic mode when missing in conf (#32995)
* Fix optimistic mode when missing in conf #32971
* Ease code using a default value
* Client id and secret are now inclusive
* Bump aiohomekit to fix Insignia NS-CH1XGO8 and Lennox S30 (#33014)
* Axis - Fix char in stream url (#33004)
* An unwanted character had found its way into a stream string, reverting f-string work to remove duplication of code and improve readability
* Fix failing tests
* deCONZ - Add support for Senic and Gira Friends of Hue remote… (#33022)
* Update the test
* Harmony config flow improvements (#33018)
* Harmony config flow improvements
* Address followup review comments from #32919
* pylint -- catching my naming error
* remove leftovers from refactor
* Update powerwall unique id
* Update the test
Co-authored-by: tetienne <thibaut@etienne.pw>
Co-authored-by: Jc2k <john.carr@unrouted.co.uk>
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* Merge nexia
* Restore original work
* Merge cleanups
* config flow
* Add config flow
* Add missing files
* Fix import of old yaml config
* More cleanups from self review
* Additional self review
* Update homeassistant/components/nexia/services.yaml
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* fix io in event loop
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* avoid using ternary statements if they span multiple
* Cleanup strings and remove unneeded attributes
* more cleanup
* more cleanup of yaml
* remove coordinator boiler plate
* nuke services for now for the inital pr, add back later
* remove copy pasta
* this can be reduced more
* Update homeassistant/components/nexia/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* review
* comments
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* more review adjustments
* nuke unused constants
* Update homeassistant/components/nexia/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* map states
* add update
* zone id is unique
* Fix humidfy check
* target_humidity should be a property instead of in attributes
* remove aux heat as its already there
Co-authored-by: Ryan Nazaretian <ryannazaretian@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* An unwanted character had found its way into a stream string, reverting f-string work to remove duplication of code and improve readability
* Fix failing tests
* Config flow for harmony
* Fixes unique ids when using XMPP
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Find the unique id for the config flow
* move shutdown to init
* Add test for ssdp (still failing)
* Fix ssdp test
* Add harmony to MIGRATED_SERVICE_HANDLERS (this is a breaking change)
* more cleanups
* use unique id for the config file
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
The existing sensor icons, while descriptive - dead = dead - are perhaps too matter of fact and don't accurately convey the tragedy. I changed emoticon-dead-outline to emoticon-cry-outline, as I think it better conveys the reality of the situation along with the emotions tied to the statistic.
* Fix iCloud init while pending
Continue if device is pending while setup
Create devices and fetch 15s if pending, otherwise determine interval to fetch.
* Add retried_fetch guard
The existing sensor icons, while descriptive - dead = dead - are perhaps too matter of fact and don't accurately convey the tragedy. I changed emoticon-dead-outline to emoticon-cry-outline, as I think it better conveys the reality of the situation along with the emotions tied to the statistic.
* Fix iCloud init while pending
Continue if device is pending while setup
Create devices and fetch 15s if pending, otherwise determine interval to fetch.
* Add retried_fetch guard
* here_travel_time: Add modes arrival and departure
* convert arrival/departure from datetime to time
* Default departure is set by external lib on None
* Use cv.key_value_schemas
* Initial commit
* Restricting conditions by supported_features, drop pending condition
* Added tests for no and minimum amount of conditions
* Address review comments
* Sort impors with isort
* Sort impors with isort v2
* Add 'Yeelight LED Ceiling Light' model
Add new model https://www.yeelight.com/en_US/product/luna
* Update requirements_all.txt bump to yeelight 0.5.1
Update requirements_all.txt bump to yeelight 0.5.1
* Update manifest.json, bump to 0.5.1
Update manifest.json, bump to 0.5.1
* set alarmdecoder code_arm_required to False
* rm unnecessary f strings
* add code_arm_required config option
* add self as codeowner :-)
* add self as codeowner the right way
* Updating SynologySRM device trakcers to show additional information
* Fixes
* Aliasing attributes to snake case
* Sugguested changes as per MartinHjelmare
* add feet to meter conversion
* convert pressure and wind. fix wind for metric.
* dont convert wind speed in metric.
pymetno already converts it.
* add units to setup_platform constuctor
* Add tests for several devices
* Update coveragerc
* Code review changes and minor clean up
* More code review changes
* Update manifest and minor test updates
* Add test for locks and covers
* Add tests for switch on and off
* Add more complete test for alarms
* Fix for camera test
* Patch abodepy.mode for tests
* Add test for unknown alarm state and minor cleanup
* Update to make tests more robust
* More specific tests
* Update quality scale to silver
* Remove integration quality scale
* Add model to rachio device info
Address followup items
* Address review items, retest zone updates back and forth, and standby mode
* Remove super
* Revert "Remove super"
This reverts commit 02e2f156a9.
* Update homeassistant/components/rachio/switch.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/rachio/binary_sensor.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Require a hyphen in lovelace dashboard url
* Keep storage dashboards working
* register during startup again
* Update homeassistant/components/lovelace/dashboard.py
Co-Authored-By: Paulus Schoutsen <balloob@gmail.com>
* Comments
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Catch asyncio.TimeoutError, show a proper message instead
* Throttle updates to max once per 30s
* Change code owner
* Fix CODEOWNERS + linting
* Warn on connection timeout
* Require a hyphen in lovelace dashboard url
* Keep storage dashboards working
* register during startup again
* Update homeassistant/components/lovelace/dashboard.py
Co-Authored-By: Paulus Schoutsen <balloob@gmail.com>
* Comments
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Catch asyncio.TimeoutError, show a proper message instead
* Throttle updates to max once per 30s
* Change code owner
* Fix CODEOWNERS + linting
* Warn on connection timeout
* Do not fail when a user has a controller with shared access on their account
* Add config flow for rachio
Also discoverable via homekit
* Update homeassistant/components/rachio/switch.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Split setting the default run time to an options flow
Ensue the run time coming from yaml gets imported into the option flow
Only get the schedule once at setup instead of each zone (was hitting rate limits)
Add the config entry id to the end of the webhook so there is a unique hook per config entry
Breakout the slew of exceptions rachiopy can throw into RachioAPIExceptions
Remove the base url override as an option for the config flow
Switch identifer for device_info to serial number
Add connections to device_info (mac address)
* rename to make pylint happy
* Fix import of custom_url
* claim rachio
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* emulated_hue: Optimize is_entity_exposed
Switch all list transversals in is_entity_exposed to
hash lookups
get_deprecated is now only called if explict_expose is
set
This funciton was iterating multiple lists per enitity
every time there was an update. It was responsible for
a chunk of execution time when there are large number
of entities in home assistant.
* Complete deprecation of ATTR_EMULATED_HUE attribute
* Complete deprecation of ATTR_EMULATED_HUE attribute (remove const)
* Remove ATTR_EMULATED_HUE_HIDDEN and Rewrite tests
* Extend rtorrent sensor functionality.
* Remove blank line from end of file.
* After using black formatter.
* Update sensor.py using snake_case for variable names.
* Update PR by using true value in condition.
* move apps configuration to options flow
* add additional assertion to new test
* add additional assertions for options update
* update docstrings, config validation, and tests based on review
* Add set_memo_text service
* Apply template rendering for memo text
* Update constants to comply to naming conventions
* Local variable for module address and extended error description
* fixed typo
* Use platform tag to register components on hue SensorManager
instead of a boolean flag to decide between sensor and binary sensor,
so it could be used externally (or to get ready for inclusion of other comps)
* Make new item discovery platform agnostic for SensorManager
instances whenever the volume was requested a division calculation was made
resulting in a TypeError. The volume adjustment from `0-100` to `0-1` is now
calculated during the `update()` method.
* Fix delijn sensor stuck on last passage
If the returned passage is an empty list that means there are
no next passages, so the sensor should be updated accordingly
* Mark the sensor as unavailable instead of emptying data
* use available property
* add available property
instances whenever the volume was requested a division calculation was made
resulting in a TypeError. The volume adjustment from `0-100` to `0-1` is now
calculated during the `update()` method.
* Add limit parameter to service call methods
* Break out prep part of async_call_from_config for use elsewhere
* Minor cleanup
* Fix improper use of asyncio.wait
* Fix state update
Call change listener immediately if its a callback
* Fix exception handling and logging
* Merge Script helper if_running/run_mode parameters into script_mode
- Remove background/blocking _ScriptRun subclasses which are no longer needed.
* Add queued script mode
* Disable timeout when making fully blocking script call
* Don't call change listener when restarting script
This makes restart mode behavior consistent with parallel & queue modes.
* Changes per review
- Call all script services (except script.turn_off) with no time limit.
- Fix handling of lock in _QueuedScriptRun and add comments to make it
clearer how this code works.
* Changes per review 2
- Move cancel shielding "up" from _ScriptRun.async_run to Script.async_run
(and apply to new style scripts only.) This makes sure Script class also
properly handles cancellation which it wasn't doing before.
- In _ScriptRun._async_call_service_step, instead of using script.turn_off
service, just cancel service call and let it handle the cancellation
accordingly.
* Fix bugs
- Add missing call to change listener in Script.async_run
in cancelled path.
- Cancel service task if ServiceRegistry.async_call cancelled.
* Revert last changes to ServiceRegistry.async_call
* Minor Script helper fixes & test improvements
- Don't log asyncio.CancelledError exceptions.
- Make change_listener a public attribute.
- Test overhaul
- Parametrize tests.
- Use common test functions.
- Mock timeout so tests don't need to wait for real time to elapse.
- Add common function for waiting for script action step.
* Add config flow to Freebox
* Add manufacturer in device_tracker info
* Add device_info to sensor + switch
* Add device_info: connections
* Add config_flow test + update .coveragerc
* Typing
* Add device_type icon
* Remove one error log
* Fix pylint
* Add myself as CODEOWNER
* Handle sync in one place
* Separate the Freebox[Router/Device/Sensor] from __init__.py
* Add link step to config flow
* Make temperature sensors auto-discovered
* Use device activity instead of reachablility for device_tracker
* Store token file in .storage
Depending on host if list of Freebox integration on the future without breaking change
* Remove IP sensors + add Freebox router as a device with attrs : IPs, conection type, uptime, version & serial
* Add sensor should_poll=False
* Test typing
* Handle devices with no name
* None is the default for data
* Fix comment
* Use config_entry.unique_id
* Add async_unload_entry with asyncio
* Add and use bunch of data size and rate related constants (#31781)
* Review
* Remove useless "already_configured" error string
* Review : merge 2 device & 2 sensor classes
* Entities from platforms
* Fix unload + add device after setup + clean loggers
* async_add_entities True
* Review
* Use pathlib + refactor get_api
* device_tracker set + tests with CoroutineMock()
* Removing active & reachable from tracker attrs
* Review
* Fix pipeline
* typing
* typing
* typing
* Raise ConfigEntryNotReady when HttpRequestError at setup
* Review
* Multiple Freebox s
* Review: store sensors in router
* Freebox: a sensor story
* Clean up use of get_characteristic_types
* Get rid of get_hk_char_value helper
* Get rid of _update_fn callbacks
* Call async_write_has_state directly as async_state_changed doesnt do anything any more
* cleanup timer handle when device is removed
* separate unavailable times for mains vs battery
* better name
* remove light refresh handle when removing light
* remove unused parallel updates
* don't steal HA const for different purpose
* don't flood network every hour for lights
* update test to test both intervals
* add test for light refresh interval
* fix tests
* update test
* put parallel updates back for now...
* fix async_schedule_update_ha_state usage
* review comment
* review comment
* update test - review conversation
* review comments
* await count not call count
* flip some state
* adkj
* reduce
* Convert august to async
Async io was added to py-august 0.24
* Fix lint
* Lock operation sensors for august
* Tracking lock operation method allows user presence detection at the lock
* revert lock changes
* fix activity count merge conflict reversion
* Fix revert that come back with the conflict
* Start webhook implementation
* Add webhook implementation
* Bump pyatmo 3.2.5
* Fire event after data evaluation
* Setup webhooks after components
* Fix logging
* Wrap non async call
* Wrap non async call
* Add smoke detector and door tag webhook support
* Catch when webhook registration fails
* Log to debug
* Fix persons lookup
* Add dependency
* Remove false requirements
* Fix requirements
* Replace netatmo events by a single one
* Slim down code
* Clean up code
* Address review vomments
* Undo attribute removal
* Bump pyatmo to v3.3.0
* Only create webhook id once and reuse
* Store and reuse cloudhook url
* Wait for hass core to be up and running
* Register webhook once HA is ready
* Delay webhook registration
* Use f-strings in integrations starting with "M"
* Format mqtt light init with black
* Fix lint error
* Fix pylint error
* Restore constants
* Update homeassistant/components/mqtt/discovery.py
* Update homeassistant/components/mqtt/discovery.py
* Update homeassistant/components/mqtt/discovery.py
* Update homeassistant/components/mqtt/discovery.py
* Format with Black
* input_datetime guard for unexpected state
If state is a time and has_date = true, or the other way around, restore state would error
* Update __init__.py
* Add test
* Fix for door_lock_state attribute error
* Updates based on review comments
* Remove update_time
* Remove update time in lock
* Remove update time in sensor
* Remove unused variable
* Change return for device_state_attributes
* Add griddy integration
* Griddy is a wholesale power provider in Texas
* Supports all four load zones in Texas
* Provides real time power price which is useful for automations to handle demand response
* Update homeassistant/components/griddy/sensor.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/griddy/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Add ability request updated via entity update service.
* Improve error message about already configured
* Remove DEVICE_CLASS_POWER since we do not have a device class for cost
* remove setdefault that was left from previous refactor
* More detail on data naming
* Bump translation for testing
* git add the config flow tests
* s/PlatformNotReady/ConfigEntryNotReady/
* Review items
* git add the other missing file
* Patch griddypower
* reduce
* adjust target
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Fetch iCloud devices again if the status is pending
* Remove "No iCloud device found" double check
* fix default api_devices value
* Remove useless unitialisation declarations
* Add support for melcloud Air-to-Water devices
* Add water_heater entity for the water heater component.
* Add individual climate entities for 0-2 supported radiator zones.
* Add sensors for zone room temperatures, outdoor temperature and tank
temperature.
* Update .coveragerc
* Use device_state_attributes
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Apply suggestions from code review
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Complete state_attributes -> device_state_attributes migration
* Move constants to top of file
* Remove async_turn_on/off
* Drop mac from ATW unique_ids
* Add MAC to device_info connections
* Remove redundant ABC inheritance
* Update homeassistant/components/melcloud/water_heater.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Added support for newer SamsungTV models
* Fixed legacy port
* store token in HA config directory
* Change token name
* rebasing and exception handling
* implement update
* fix error creating mediaplayer
* Debug logging
* Increase timeout
* Restore update timeout
* Store token_file path in config_entry
* Introduction of samsung bridge class
* Added bridge class functions
* Code cleanup
* more fixes
* Begin testing
* samsungtvws 1.2.0
* Config flow tests 0.1
* Fixed some mediaplayer tests
* Fixed fixture in media player
* use of constants and turn off
* more media player tests
* samsungtvws 1.3.1 and other fixes
* WS tv update rewritten
* more tests
* test_init
* fixed tests
* removed reset mock
* tests reset mock
* close_remote and tests
* deprecate port config
* deprecate port config 2
* deprecate port config 3
* save token only if needed
* cleanup
* better websocket protocol detection
* config removal
* Breakout tado zone code into a single place
* Resolve various incorrect states and add tests for known tado zone states
* Fix home and away presets
* Upgrade to PyTado 0.4.0 which improves http performance and fixes setting fan speed.
* Write state instead of calling for an update
* adjust codeowners
* Add tests for michael's tado and fix heatingPower.value
* Guards are much cleaner
* Adjust per review
* Remove hass passing
* Add a commit interval setting to recorder
* Make the default every 1s instead of immediate
* See attached py-spy flamegraphs for why 1s
* This avoids disk thrashing during event storms
* Make Home Assistant significantly more responsive on busy systems
* remove debug
* Add commit forces for tests that expect commits to be immediate
* Add commit forces for tests that expect commits to be immediate
* make sure _trigger_db_commit is in the right place (all effective "wait_recording_done" calls)
* De-duplicate wait_recording_done code
* alexa/capabilities.py: Fix TypeError Exception
- Remove division by zero try/catch -- there is no division
- Handle TypeError exception when current_volume = None
- Simplify math and return logic
* Add test for Alexa.Speaker's valid volume range
* Bump aiohomekit to get better reconnection handling and cleaner shutdowns.
* Read the ACTIVE characteristic and set ok/problem state
Also gets test coverage to 100%.
* Update Steam intergration to list screenshot paths and Steam game ID
* Steam entity_picture now changed to game art when in-game
* Steam - changing API endpoints to constants
* Steam - formatting code for lint
* Update sensor.py
*Removing entity_picture image switching based on current playing game
* Steam - tidying up code
* Update homeassistant/components/steam_online/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Update PyUbee to 0.9
Adds support for Ubee Router DVW32CB
* Add support for Ubee Router DVW32CB
* Update pyubee to 0.9
Adds support for router DVW32CB
* Refactor zha core device _check_available().
Make it async, so we don't run it in a sync worker.
* Use random keep alive interval for zha device pings.
* Update tests.
* Update Yandex transport after API change (home-assistant#32431)
* Update mocked response for test (home-assistant#32431)
* Codestyle fixes (home-assistant#32431)
* multi attribute reads for lights
* catch specific exceptions
* get attributes
* fix mains powered update
* add guards and use get_attributes
* use debug for read failures
* cleanup
* update return value for read_attributes
* fix on with timed off
* specify rtsp_transport for onvif camera
* remove used variable
* Update homeassistant/components/stream/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* change options to stream_options
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Adding support for PTZ move modes
Adding support for other PTZ move modes.
Onvif intergration used to only support RelativeMove where it should also supports AbsoluteMove, ContinuousMove and Stop.
For exemple Goke GK7102 based IP camera only support ContinuousMove mode.
This commit add those new modes with avaibility to select mode and params in service call.
* Adding support for PTZ move modes
Adding support for other PTZ move modes.
Onvif intergration used to only support RelativeMove where it should also supports AbsoluteMove, ContinuousMove and Stop.
For exemple Goke GK7102 based IP camera only support ContinuousMove mode.
Update service helper for new avaibility to select mode and params in service call.
* RelativeMode as default move_mode to avoid breakchange
RelativeMode as default move_mode to avoid breakchange
* add missing attribute
add missing continuous_duration attribute
* change service attribute label for continuous_duration
* update description
fix wrong assertion for move_mode attr description
* Update services.yaml
* Update services.yaml
fix wrong wording for move_mode
* Update camera.py
Using defined constants instead of raw strings in conditions
* Update camera.py
Replace integer to floating point in logger debug PTZ values
* Update services.yaml
* Update services.yaml
* Update camera.py
* Update camera.py
* use dict[key] for required schema keys and keys with default schema values
* remove async for setup_ptz method
* lint error
* remove unecessary PTZ_NONE = "NONE"
changed request by @MartinHjelmare
* addressing @ MartinHjelmare comments
- Remove None in defaluts and dicts
- Replace long if blocks
* remove NONE
* lint issue
* Update camera.py
* Fix lint error - typo
* rename onvif_ptz service to just ptz
* rename onvif_ptz service to just ptz
* use dict[key] when default values are set
use service.data[key] instead of service.data.get[key] when default value is set in service schema
* adresse comment: use dict[key] for pan tilt zoom
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* add app support
* code cleanup, add additional test, add CONF_APPS storage logic for import
* simplify schema defaults logic
* remove unnecessary lower() and fix docstring
* remove default return for popping CONF_APPS during import update because we know entry data has CONF_APPS due to if statement
* further simplification
* even more simplification
* fix type hints
* move app configuration to separate step, fix tests, and only make app updates if device_type == tv
* remove errors variable from tv_apps and move tv_apps schema out of ConfigFlow for consistency
* slight refactor
* remove unused error from strings.json
* set unique id as early as possible
* correct which dictionary to use to set unique id in pair_tv step
* Returns an unencrypted location of all persons with device trackers
* Handle encrypted messages and exclude the poster's location
* Friends is by default False. Reformats with Black
* Updates the context init to account for the Friends option
* Fix Linter error
* Remove as a config option
* No longer imports encyrption-related functions in encrypt_message
* Fix initialization in test
* Test the friends functionality
* Bugfix for persons not having a location
* Better way to return the timestamp
* Update homeassistant/components/owntracks/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Linting and tid generation
* Fix test
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* bugfix: correctly handle non-UTC TZs
* bugfix: system mode is always permanent
* bugfix: handle where until is none
* tweak: improve logging to support above fixes
* Fetch iCloud devices again if the status is pending
* Remove "No iCloud device found" double check
* fix default api_devices value
* Remove useless unitialisation declarations
* added presets for switch devices
* added channel type to __init and const
* ran pylint on library so needed a few changes in names
* removed callback
* bool -> cv.boolean
* Add attribute
latest release tag
* add attrs =
and only create attr Tag if exists
made requested changes
* change condition for _latest_release_tag
to use self._github_data.latest_release_url
* Correct changes
* Update sensor.py
* blackify
* Emoncms API provides a Unit
The EmonCMS API has been amended to include a 'unit' as part of it's payload. By using this information, all the sensors can be created without the need for individual sensors to be setup by type.
The change is backward compatible so if a unit type has been specified in the configuration, this will be used by default.
If no unit is pecified either by the Home Assistant configuration, or the Emoncms API, then the default of W will be used as before.
* Update sensor.py
Check the 'unit' key is in the API call. Older systems may not have that key in the payload.
* Modified approach with new configuration item
* Removed new config item
Removed the configuration item. The integration attempts to get the unit from the API.
If this fails *or* the unit key of the API is blank, either the specified unit, or the default will be used.
If approved, documentation will be updated.
* Update homeassistant/components/emoncms/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Update homeassistant/components/emoncms/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Apply suggestions from code review
* Apply suggestions from code review v2
* Update homeassistant/components/emoncms/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Update sensor.py
Update `config_unit`
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* [soundtouch] workaround for API bug when removing multiple slaves from a zone at once
* [soundtouch] added additional attributes exposing multiroom zone info
* Fix update with slave entities
* Add zone attributes test
* Fix and clean up tests
* Fix typo
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add edl21 component for SML-based smart meters
* edl21: Remove unused variable
* [edl21] Add 1 minute throttle to the sensor
* Update homeassistant/components/edl21/manifest.json
Fix documentation URL
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* edl21: Move imports to top
* edl21: Remove special case for STATE_UNKNOWN, which replicated default behavior
* edl21: Implement blacklist for and warn about unhandled OBIS values
* edl21: Make blacklist global
* edl21: Add filter to issues URL
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* edl21: Rename device to entity
* edl21: Don't schedule async_add_entities
* edl21: Use dispatcher, implement own throttling mechanism
* edl21: Simplify keeping track of known obis
* edl21: Use whitelist for state attributes
* edl21: Remove dispatcher on shutdown
* edl21: Convert state attributes to snakecase
* edl21: Annotate handle_telegram with @callback
* edl21: Call async_write_ha_state instead of schedule_update_ha_state
Co-authored-by: David Straub <straub@protonmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Allow string values on zwave.set_node_value
This allows for:
* Accessing longer value_ids. In some cases, value ids in z-wave nodes are very large (17 digits in my case). Passing them as int does not seem to work well (python probably truncates the number), but passing them as string works fine
* Changing color values, which are represented as hex string
reformat test
* update services.yaml with string set_node_value
The documentation for google_travel_time was at odds with the
implementation. The documentation stated a default scan time of
5 minutes, but the implementation was using Throttle which resulted
in the sensor updating at a maximum rate of one API call every
5 minutes. This was especially at odds with a given example at
the end of the documentation, which showed updating the sensor
every 2 minutes during commute times.
This change brings the implementation in line with the docs by
adopting the `SCAN_INTERVAL` constant set to the stated default
of 5 minutes and removing the Throttle.
* Update image_processing.py
Adds save timestamp file and adds last_detection attribute
* Update test_image_processing.py
Adds test
* Adds assert pil_img.save.call_args
* Test timestamp filename
* Add test bad data
* Update test_image_processing.py
* Fix bad image data test
* Update homeassistant/components/sighthound/image_processing.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Reduce log level for initial error and bump library version
* Use new buienradar library version which reduces the log level
for some types of warnings.
* Initially logs at a lower level and only logs at WARN for repeated
errors.
This should serve to reduce confusion with users such as in
issue #32301.
* Fix linter error with new linter settings.
* Fix linter warning
* Update homeassistant/components/buienradar/util.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* code quality improvements
* code quality improvements and fixed tests
* explicitly set unique ids
* improve unique id creation
* remove entities from entity registry
* added test for removing entities from entity registry
* revert entity registry handling from sensor and test code
* check for entity registry removal in geolocation test case
* make import absolute; isort
* change quality scale
* add is_muted property and update tests
* black
* manually set is_muted on async_mute_volume calls to set state early
* combine two lines into one
* set is_muted to None when device is not on
* Flume Cleanups
* Sensors now show the name
* include_devices and exclude_devices are now available in the config.
* Address review items
* bump as 0.3.0 is published
* Move keypad battery implementation details into py-august
* Upgrade to py-august 0.22.0 which also adds gen2 doorbell battery data
* remove cruft from previous refactor
* refactoring for multi platform
* adopted test_bridge to refactoring
* refactoring tests for multi-platform
additional coverage in config and init
* comment for clarity
* more specific imports from lib
* library version bump
* removed async_update
* changed parameter order to start with hass
* removed pylint disable
* unsubscribe from signal dispatcher
inherit from Entity
* use device.unique_id
* changed hass_obj to hass
* added test for remove entity
bug fix from the test
* removed the polling try_connect. hate polling... it is now part of the async_setup()
significantly makes the code clearer and simplifies the tests
* removed leftover debug logs in the library
* changed tests to get the entry_id from hass
* changed place to assign hass.data only after success
* fixes for test_init
* removed assert
* removed device_info
* removed bridge internal from common
* modified test_bridge to work without the bridge directly
* removed bridge from test_existing_update
* changed update to not use bridge internals
* dyn_bridge fixture no longer used - removed
* Initial version
Parse configuration, but return a fixed value
* Add basic functionality
Request real data from the server
Currently the prices are not getting updated, but the petrol station
data is real
* Update values regularly
The tankerkoenig values get updated regularly with real data.
* Move base functionality for the sensor to a base class
And move that to an own file, so that it can be inherited
* Reduce calls to tankerkoenig api
Use a master/slave concept for sensors; one master gets the data and
updates it into the slaves.
* Update requirements files
* Update all gas stations at once
* Remove tests directory
Currently there are no tests for the integration; will be added in
a future commit.
* Fix slaves not being updated
Let the base class regularly poll, so that slaves are also updated
* Refactor entity creation
Create an auxiliary method to add a station to the entity list,
in preparation to allowing extra stations.
* Add possibility to manually add stations
Add a new configuration option "stations" to manually add extra stations
* Fix style issues
Make the code more pythonic
* Remove redundant code
Implement suggestions from the code review
* Change to platform component
Remove the master/slave concept, in favor of a platform with dummy sensors.
The platform takes care of contacting the server and fetching updates
atomically, and updating the data on the sensors.
* Rename ATTR_STATE
Rename the attribute to "IS_OPEN", to avoid confusion with the sensor state.
* Minor updates
Combine two consecutive error logs into a single one.
Update the sensor's icon
* Separate address into different fields
* Style updates
Use "[]" syntax instead of ".get()" for required parameters
Use warning log level for not available fuel types
* Implement review comments
Fix style issues
Improve error messages
Remove redundant options
* Refactor using DataUpdateCoordinator
Use the new DataUpdateCoordinator to fetch the global data from
the API, instead of implementing an own method.
Also fix comments from the PR
* Implement PR comments
Implement suggestions to improve code readability and keep the Home Assistant style.
Also separate fetching data to an async thread
* Add a shadow for covers that do not support postion
* Rename shadow as optimistic
* Set optimisic default mode
* fix black error
* Remove redundant check
* optimisitc variable name consistency with config
* Various code review items from previous PRs
* Add a test for fetching the doorbell camera image
* Switch to using UNIT_PERCENTAGE for battery charge unit
* Add tests for changed_by
* Allow managing Lovelace storage dashboards
* Make sure we do not allow duplicate url paths
* Allow setting sidebar to None
* Fix tests
* Delete storage file on delete
* List all dashboards
* Use f-strings in integrations starting with "H"
* Use f-strings in integrations starting with "I"
* Use f-strings in integrations starting with "J"
* Use f-strings in integrations starting with "K"
* Use f-strings in integrations starting with "L"
* Fix lint error
* Use join instead of f-string in homekit_controller
* Use local variables with f-strings
* Fix lint error
* Escape the characters in f-string
* Sort imports with isort in homeworks light
* Fix pylint error
* Fix broken tests
* Fix broken tests v2
* change state to latest_release_url
to have a meaningful frontend representation.
self._github_data.latest_commit_sha is still available in the attributes, so no info is lost
* template state to show only the tag
and not the full url to the tag
* add guard to update(self) for state
* add empty line 150
black...
* Update sensor.py
* add SHA if no release url
* Correct sha to 7 digits
* take out fallback on state
* Add Avri waste collection sensor
* Apply black formatting
* Update manifest
* Add requirements
* Add sensor to coverage
* Update import order
* Bump dependency to include todays pickup
* Bump avri version in requirements_all.txt
* Code review comments
* Reduce scan interval to 4 hours
This makes sure that no matter what happens, in
the morning the correct dates have been pulled
without the old ones lingering for too long.
* Better logging
* Made scan interval a timedelta
* Fix import order
* Update homeassistant/components/avri/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Update homeassistant/components/avri/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Use filter instead of break statement
* Use positive int for house number extension
* Switch voluptuous types for house number and house number extension
* Update homeassistant/components/avri/sensor.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Implement `available`
* Bump avri api
* Code review comments
* Replace `postcode` with `zip_code`
* Update logic for `available`
* Remove variable for delimiter
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* added entry listener that reloads the component
* fixed update with existing entry
* fixed import in test
* fixes
* library version
* removed unique_id
* fix
* fixed for no entries in hass.data
* fixed return value on abort
* moved to use async_entries
* removed unused import
* support pairing through config flow
* simplify import failure log messages
* remove unnecessary list comprehension
* bump pyvizio to add passing ClientSession in where it was missed
* show different message if user completes pairing through import
* remove dupe failure message since reasons for failure are the same in both instances
* remove extra constant
* add host reachability check during pairing workflow
* revert redundant connection check since check is implicitly done during pairing process
* fix rebase errors
* fix string
* updates based on review
* update docstring
* missed commit
* update import confirmation message to be less wordy
* use ConfigFlow _abort_if_unique_id_configured
* fix test
* Removing polling from august
* Now using subscribers to the detail and activity
* Fix hash to list keys
* continue to the next house if one fails
* Add async_signal_device_id_update
* Fix double initial update
* Handle self.hass not being available until after async_added_to_hass
* Remove not needed await
* Fix regression with device name
When battery sensors gets created before other platforms loading deconz sensors gets created first the other platform would not create entities related to those battery sensors
When battery sensors gets created before other platforms loading deconz sensors gets created first the other platform would not create entities related to those battery sensors
* async_step_user to async_configure
* fix for lint
* fix for pylint
* fix isort and black
* fix miss-fixed black
* fixing for the python37 coverage
* fix transmission definition
* fix for Black formatting
* fix type to abort
* clean up
* clean up for the test
* fix for the test
* refactor
* split test_flow_works to three tests
* revert the assert
* remove whitespaces for flake8
* apply patch function
* fix for the patch
* fix for the black
* remove mock_coro
* fix for the black
* hue to heos
* try to fix import
* fix for the black
* revert try to fix import
* Add a pytest fixture
* fix for the black
* Reduce August doorbell detail updates
* Doorbell images now get updates from the activity feed
* Tests for activity updates
* py-august now provides bridge_is_online for available state
* py-august now provides is_standby for available state
* py-august now provides get_doorbell_image (eliminate requests)
* remove debug
* black after merge conflict
* Centralize august activity updates
* Updates appear significantly more responsive
* Should address the community complaints about "lag"
* Reduce detail updates (device end points) to one hour interval
* Signal entities to update via dispatcher when new activity arrives
* Resolves out of sync state (skipped test is now unskipped)
* pylint
* fix merge conflict
* review comments
* Remove stray
* Address review items that can be done without refactor
* Reduce August doorbell detail updates
* Doorbell images now get updates from the activity feed
* Tests for activity updates
* py-august now provides bridge_is_online for available state
* py-august now provides is_standby for available state
* py-august now provides get_doorbell_image (eliminate requests)
* remove debug
* black after merge conflict
* Config Flow for sense
* Fix unique ids so they are actually unique (and migrate the old ones)
* Fix missing solar production
* Do not mark sensors available until they have data
* Address review items
* Address review round #2
* dedup config flows
* use default (imported) options until user goes thru options flow
* address pr feedback
* correct key used to distinguish pro model
* [recorder] Use orjson to parse json faster
* Remove from http manifest
* Bump to orjson 2.5.1
* Empty commit to trigger CI
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* dedup config flows
* use default (imported) options until user goes thru options flow
* address pr feedback
* correct key used to distinguish pro model
* Add observed entities to bayesian sensor
* Update binary_sensor.py to comply with style guidelines and test_binary_sensor.py to verify the entity_id
* Update binary_sensor.py and test_binary_sensor.py to include an additional attribute for observed entities
* Use of ATTR_ENTITY_ID and numeric key of observed entity
* Update binary_sensor.py
* Update test_binary_sensor.py to verify behavior
* Update to return a list without duplicates in the state attribute
* Update binary_sensor.py: rename of ATTR_ENTITY_ID into ATTR_OBSERVED_ENTITIES
* Rename new attribute into ATTR_OCCURRED_OBSERVATION_ENTITIES and fix test
* Migrate HomematicIP Cloud services to admin services
* remove unused dict
* vacation and eco mode are usable by users
* add verify_domain_control, make service user accessible
* Remove friendly_name attribute twitch sensor
* Use deepcopy to only copy the content
* Update homeassistant/components/twitch/sensor.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/twitch/sensor.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Use f-strings in integrations starting with F
* Use f-strings in tests for integrations starting with F
* Use f-strings in integrations starting with G
* Use f-strings in tests for integrations starting with G
* Fix pylint error
* Fix broken test
* Add and use speed constants
* Add and use meter based volume and area constants
* Add and use more mass unit constants
* Add and use concentration unit constants
* Add and use watts per square meter constant
* Use more time constants
* Use more data constants
* Add tests for legacy Script helper behavior
* Add Script helper if_running and run_mode options
- if_running controls what happens if Script run while previous run
has not completed. Can be:
- error: Raise an exception
- ignore: Return without doing anything (previous run continues as-is)
- parallel: Start run in new task
- restart: Stop previous run before starting new run
- run_mode controls when call to async_run will return. Can be:
- background: Returns immediately
- legacy: Implements previous behavior, which is to return when done,
or when suspended by delay or wait_template
- blocking: Returns when run has completed
- If neither is specified, default is run_mode=legacy (and if_running
is not used.) Otherwise, defaults are if_running=parallel and
run_mode=background. If run_mode is set to legacy then if_running must
be None.
- Caller may supply a logger which will be used throughout instead of
default module logger.
- Move Script running state into new helper classes, comprised of an
abstract base class and two concrete clases, one for legacy behavior
and one for new behavior.
- Remove some non-async methods, as well as call_from_config which has
only been used in tests.
- Adjust tests accordingly.
* Change per review
- Change run_mode default from background to blocking.
- Make sure change listener is called, even when there's an unexpected
exception.
- Make _ScriptRun.async_stop more graceful by using an asyncio.Event for
signaling instead of simply cancelling Task.
- Subclass _ScriptRun for background & blocking behavior.
Also:
- Fix timeouts in _ScriptRun by converting timedeltas to float seconds.
- General cleanup.
* Change per review 2
- Don't propagate exceptions if call from user has already returned
(i.e., for background runs or legacy runs that have suspended.)
- Allow user to specify if exceptions should be logged. They will still
be logged regardless if exception is not propagated.
- Rename _start_script_delay and _start_wait_template_delay for
clarity.
- Remove return value from Script.async_run.
- Fix missing await.
- Change call to self.is_running in Script.async_run to direct test of
self._runs.
* Change per review 3 and add tests
- Remove Script.set_logger().
- Enhance existing tests to check all run modes.
- Add tests for new features.
- Fix a few minor bugs found by tests.
* Use f-strings in integrations starting with B
* Use f-strings in integrations starting with C
* Use f-strings in integrations starting with D
* Use f-strings in integrations starting with E
* Fix pylint errors
* Fix pylint errors v2
* Fix tests
* Fix tests v2
* Add support for Supla gate with sensor
* Fix Supla switch module description and state access
* Add docs to methods of Supla gate
* Add missing comma
* Remove unused import
* Sort imports of Supla cover
* Add returning availability for every Supla device
* Use direct access to dict
* Remove deprecated property "hidden"
* Remove unused constant
* Revert using get function on dict
* hookid : isort fix
* New platform: Ezviz
* updated CODEOWNERS for ezviz
* proper test requirements
* resolved conflict
* regenerated requirements
* removed stale comments, only one call to add_entities, removed unnecessary attributes
* setup is sync, not async. Removed stale comments
* Compatible with pyezviz 0.1.4
* pyezviz 0.1.4 is now requiredf
* Added PTZ + switch management
* added services.yaml
* proper requirement
* PTZ working in async mode
* Now updates the entity
* Compatible with pyezviz 0.1.5.1
* Fixed switch ir service registering
* now requires pyezviz 0.1.5.2
* now requires pyezviz 0.1.5.2
* Revert "regenerated requirements"
This reverts commit 848b317cf9.
* Rollbacked to a simpler version
* snake_case names everywhere, logging sanatizing, voluptuous proper check
* pyezviz 0.1.5, reworked the PR so that it's intelligible
* no need for services.yaml for now
* proper voluptuous validation
* Removed stale code, use proper conf variable, describe attributes
* regenerated requirements
* stale
* removed status from attributes, since we use it for available we don't need it here then.
* Fixed log message
* Deduplicate code in the august integration
* Add additional tests for august (more coming)
* Door state is now updated when a lock or unlock call returns
as the state is contained in the response which avoids
the confusing out of sync state
* revert
* document known issue with doorsense and lock getting out of sync (pre-existing)
* Address review comments
* Additional review comments
* Use f-strings in integrations starting with A
* Use f-strings in tests for integrations starting with A
* Fix pylint by renaming variable
* Fix nested for loop in f-string for aprs device_tracker
* Break long lines into multiple short lines
* Break long lines into multiple short lines v2
* Add and use time related constants
* Sort time constants and reuse them in data rate constants
* Fix greeneyemonitor import
* Fix greeneyemonitor import V2
* Fix failing here_travel_time test
* Add TIME_MONTHS and TIME_YEARS
* Use TIME_MINUTES in opentherm_gw and isy994
* Add and use TIME_MILLISECONDS
* Change inconsistent ones
* Add TIME_MICROSECONDS and TIME_WEEKS
* Use constants in apcupsd and travisci
* Fix import error in upnp sensor.py
* Fix isy994 sensor.py using TIME_YEARS
* Fix dyson tests
* Use TIME_SECONDS in more places
* Use TIME_DAYS in google wifi
* add unique_id to directv entities.
* add addiitional debug and fix tests.
* fix lint error.
* rework unique_id and flow a bit.
* review adjustments.
* review adjustments
* review adjustments
* review adjustments.
* review adjustments
* review adjustments
* review adjustments
* review adjustments
* lint
* use serial number for host unit and mac address for client units
* fix elsif
* update test with realistic client id
* lint
* Fixed volume control for Frontier Silicon media players.
* Removed unnecessary else which caused pylint test to fail.
* Removed whitespace on empty line.
* Tweaks from on springstan's suggestions and other fixes
* Apply suggestions from code review
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Comment to explain why 1 is subtracted from volume_Steps
Also reformatted using black after code review changes.
* Split up the set volume functions into steps rather than all in-line as suggested.
* Renamed _volume_steps to _max_volume.
* Prevent asnyc_update from failing if we can't get the volume steps
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Added the option to specify the name of the device in confirguration.yaml
* Adding missing default name parameter in auto-discovery FSAPIDevice constructor.
* Fixed Black formatting.
* Removed DEFAULT_NAME constant.
* Apply suggestions from code review
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
The player would report itself as ‘off’ when in certain modes (e.g ‘Music player’ or ‘Spotify’) which meant HA would lose all control (it can’t change input or set volume etc. as it thinks it’s off). Now reports STATE_IDLE in these cases and only STATE_OFF if it is actually off.
This fixes issue #20728.
* fixes per Martin Hjelmare
* pylint fix
* final fixes per request
* fixed unit tests for new config flow
* Added unit-tests to increase coverage. at 97% now
* Added unit tests for 100% coverage of component
* removed configured_host function and updated config_flow unit tests
* added a pylint directive since it tells me by mistake DOMAIN is not used
* fixed path (removed __init__)
* Update homeassistant/components/dynalite/light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/dynalite/light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* fixed the test as we moved from schedule_update_... to async_schedule
* Update homeassistant/components/dynalite/bridge.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* removed context from config_flow
changed test_init to use the core methods
* moved test_light to also use the core interfaces
* moved to config_entries.async_unload
* additional fixes for the tests
* pylint fix and removed unnecessary code
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* added break in loop
* removed last mock_coro reference
pylint fix
* added coverage for try_connect
* added check for a successful connection before bridge.async_setup succeeds
also added a "nowait" config option (default False) that avoids this check
* changed log level
* fixed accidental chmod I did
* fixed accidental change
* not storing config in bridge
* not patching asyncio
* moved CONFIG_SCHEMA into component
* moved all logs to start capitalized (and revised some of them)
* moved test_config_flow to not patch the DynaliteBridge
* also took DynaliteBridge patching out of test_init
* removed NO_WAIT
* fixes to SCHEMA
* changed _ in multi-word CONF
moved imports to component const.py
* removed tries
* removed redundant tests
* fixed some small change i broke in the library. only version update
* fixed rewuirements
* Update tests/components/dynalite/test_config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* removed HIDDEN_ENTITY
removed hass in test fixture
* black fixes
* removed final piece of hidden_entity from light
fix in the library
updated config flow so if the entry is already set but with a different config, calls async_update_entry
* removed DATA_CONFIGS - no longer necessary
* pylint fixes
* added coverage
* use abort in config_flow
* test update
* removed logs
* test that update actually updates the entry
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add ZHA core typing helper.
* Add aux_channels to ZHA rule matching.
* Add match rule claim_channels() method.
* Expose underlying zigpy device.
* Not sure we need this one.
* Move "base" channels.
* Framework for channel discovery.
* Make DEVICE_CLASS and REMOTE_DEVICE_TYPE default dicts.
* Remove attribute reporting configuration registry.
* Refactor channels.
- Refactor zha events
- Use compound IDs and unique_ids
- Refactor signal dispatching on attribute updates
* Use unique id compatible with entities unique ids.
* Refactor ZHA Entity registry.
Let match rule to check for the match.
* Refactor discovery to use new channels.
* Cleanup ZDO channel.
Remove unused zha store call.
* Handle channel configuration and initialization.
* Refactor ZHA Device to use new channels.
* Refactor ZHA Gateway to use new discovery framework.
Use hass.data for entity info intermediate store.
* Don't keep entities in hass.data.
* ZHA gateway new discovery framework.
* Refactor ZHA platform loading.
* Don't update ZHA entities, when restoring from zigpy.
* ZHA entity discover tests.
* Add AnalogInput sensor.
* Remove 0xFC02 based entity from Keen smart vents.
* Clean up IAS channels.
* Refactor entity restoration.
* Fix lumi.router entities name.
* Rename EndpointsChannel to ChannelPool.
* Make Channels.pools a list.
* Fix cover test.
* Fix FakeDevice class.
* Fix device actions.
* Fix channels typing.
* Revert update_before_add=False
* Refactor channel class matching.
* Use a helper function for adding entities.
* Make Pylint happy.
* Rebase cleanup.
* Update coverage for ZHA device type overrides.
* Use cluster_id for single output cluster registry.
* Remove ZHA typing from coverage.
* Fix tests.
* Address comments.
* Address comments.
* fixes per Martin Hjelmare
* pylint fix
* final fixes per request
* fixed unit tests for new config flow
* Added unit-tests to increase coverage. at 97% now
* Added unit tests for 100% coverage of component
* removed configured_host function and updated config_flow unit tests
* added a pylint directive since it tells me by mistake DOMAIN is not used
* fixed path (removed __init__)
* Update homeassistant/components/dynalite/light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/dynalite/light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* fixed the test as we moved from schedule_update_... to async_schedule
* Update homeassistant/components/dynalite/bridge.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* removed context from config_flow
changed test_init to use the core methods
* moved test_light to also use the core interfaces
* moved to config_entries.async_unload
* additional fixes for the tests
* pylint fix and removed unnecessary code
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* added break in loop
* removed last mock_coro reference
pylint fix
* added coverage for try_connect
* added check for a successful connection before bridge.async_setup succeeds
also added a "nowait" config option (default False) that avoids this check
* changed log level
* fixed accidental chmod I did
* fixed accidental change
* not storing config in bridge
* not patching asyncio
* moved CONFIG_SCHEMA into component
* moved all logs to start capitalized (and revised some of them)
* moved test_config_flow to not patch the DynaliteBridge
* also took DynaliteBridge patching out of test_init
* removed NO_WAIT
* fixes to SCHEMA
* changed _ in multi-word CONF
moved imports to component const.py
* removed tries
* removed redundant tests
* fixed some small change i broke in the library. only version update
* fixed rewuirements
* Update tests/components/dynalite/test_config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_light.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/dynalite/test_config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* removed HIDDEN_ENTITY
removed hass in test fixture
* black fixes
* removed final piece of hidden_entity from light
fix in the library
updated config flow so if the entry is already set but with a different config, calls async_update_entry
* removed DATA_CONFIGS - no longer necessary
* pylint fixes
* added coverage
* use abort in config_flow
* test update
* removed logs
* test that update actually updates the entry
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Significantly reduce code in august integration
* Activity updates can now be processed by py-august
this allows us to eliminate the activity sync
code for the door sensors and locks
* Lock and door state can now be consumed from
the lock detail api which allows us to
remove the status call apis and reduce
the number of API calls to august
* Refactor the testing method for locks (part #1)
* Update homeassistant/components/august/binary_sensor.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Switch to asynctest instead of unittest for mock.patch
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update pil.py
* Update doods and tensorflow to use convert_to_pil_image
* Update pil.py
* Add log messages on bad data
* Drop convert_to_pil_image
Just perform conversion in the integrations without seperate convert_to_pil_image()
* Add support for MQTT device triggers
* Fix test, tweaks
* Improve test coverage
* Address review comments, improve tests
* Tidy up exception handling
* Fix abbreviations
* Rewrite to handle update of attached triggers
* Update abbreviation test
* Refactor according to review comments
* Refactor according to review comments
* Improve trigger removal
* Further refactoring
* Audit state handling of august bridges and sensors
This addresses issue #29980
* Prevent setting up august locks that do not have a bridge as they will never work
* Prevent locks showing available when their bridge is offline
* Prevent door sensors from showing available when their bridge is offline
* Prevent creating door sensors for locks that do not have them
* Prevent doorbells showing unavailable when they are in standby mode
* Set SCAN_INTERVAL for binary_sensors to 5 seconds as
data comes in from the activity endpoint more frequently
* Update homeassistant/components/august/__init__.py
raise if the detail is missing when checking doorsense
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Handle another place where the lock detail could not exist
* Address review comments
* Handle lock detail update failing and add test
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* add oauth functionality and additional attributes
* Add tests WIP
* Make mocks work the correct way
* Use CONF_TOKEN constant for config
* Remove twitch from .coveragerc
* Update homeassistant/components/twitch/sensor.py
Lets be consistent
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Computes the features of a hue group as the union of the features of the bulbs in the group
* Moved create item to a function
* Added test for hue group features
* add timestamp to media_image_url to update image correctly
* applying isort on source
* apply black formatting on source
* using f strings in media_image_url property
* remove unnecessary casting
* Updated MCP23017 component to use latest adafruit-blinka v-3.9.0 and Adafruit_CircuitPython_MCP230xx v-2.2.2
* Added updated dependencies to requirements_all.txt
* Adjust tests after speed up to restore coverage for HomematicIP Cloud
* Fix test data
* Fixes after review
* remove duplicate cade
* remove service marker
* fix detecting capsman support
* fix isort
* moved support_capsman to update_devices()
* moved support-checks to setup method
* moved setup method to get_hub_details
* implement suggestion for device lists
* fix black formatting
* remove not needed variable wireless_devices
* fix usage of force_dhcp to seperate wireless devs
* fix black fmt
* Support XML conversion for RESTful sensors
Many devices continue to use XML for RESTful
APIs. Interfacing with these APIs requires custom
integrations or command line fork()/exec() overhead
which many of these devices can work with as if
they were JSON using xmltojson via this spec:
https://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html
This change implements converting XML output to
JSON via xmltojson so it can work with the existing
rest sensor component. As the attributes that
usually need to be scraped are deeper in the document
support for passing in a template to find the
JSON attributes that have been added. JSON APIs that
do not have their attributes at the top level
can also benefit from this change.
* Auto convert xml, change out the template for jsonpath
* Address review items and potentially unexpected normalize behavior with jsonpath
* Revert "Address review items and potentially unexpected normalize behavior with jsonpath"
This reverts commit fe9e179092.
* json_dict[0] turned out to be needed
* Fix CalDAV parsing of recurring events
Some CaDAV servers (see: SOGo) return the original event that contains
the recurrence rules. The CalDAV calendar component sorts and filters
events based on their start and end dates, and was failing to properly
show recurring events based on these recurrence rules.
This this change checks if an event has recurrence rules and changes the
start/end dates of the event to today if the event is set to occur
today. This allows the rest of the component logic to function properly.
* Use date from nextmost occurence
* Adding unit tests
* Add endless event unit test
* Create new vevent for each event recurrence today
* Remove redundant unit test
* Add timezone to events that have none
Python cannot compare them otherwise.
* Simplify code, add comments & guard clause
* Add test for recurring all day event
* Account for all-day events
* Remove redundant code
* Remove redundant code
* Remove unnecessary deepcopy
* Add hourly recurring tests
* Add tests for hourly repeating event
* Fix unit test
* Use event.copy()
* Add support for displaying Daf Yomi
* Ran black --fast
* Added docstring to get_daf
* Further lint fixes
* Remove unnecessary else
* clarify code
* Use fstrings
* pull daf yomi from hdate
* Update manifest version for daf_yomi support
* fix variable usage
* Update requirements
* Also pass in today's date as well
* Rename date variable to daytime_date
* Add tests for daf yomi sensor
* Update stale test IDs
* Add Tado water_heater
* Don't use climate CONSTS
* Fix logging text
* Add changes for multiple bridge support
* Address remarks
* should_poll must be False
* Remove additional async_schedule_update_ha_state()
* Not for climate
* Remove services file, incorrect info
* Guard currently playing for being a NoneType
* Revert "Guard currently playing for being a NoneType"
This reverts commit f5f56b0db0.
* Guard currently playing item is None
* Process review suggestions
* Remove services file, incorrect info
* Guard currently playing for being a NoneType
* Revert "Guard currently playing for being a NoneType"
This reverts commit f5f56b0db0.
* Guard currently playing item is None
* Process review suggestions
An AtaDevice has a boolean flag describing whether it supports energy
consumption metering. The flag was ignored resulting in sensor entities
reporting constant 0 kWh consumption.
* Update pymelcloud dependency to support the has_energy_consumed_meter
flag.
* Add ATTR_ENABLED_FN to sensor definitions for filtering out
unsupported sensors.
* Fix typing issue in sensor constructor.
* Remove unused UnitSystem constructor parameter.
* update ipma component for pyipma 2.0
* fix wind speed; refactor forecast
* update requirements*.txt
* fix tests; update CODEOWNERS; update pyipma to 2.0.1
* minor changes as suggested in PR
* make lint happy
* fix mocking coroutines
* restore old unique id
* fix station lat/lon; update pyipma version
* add hourly forecast option to IPMA
* add forecast tests
* use for instead of lambda
* Added some measurement points for Family 26.
Added three attriubtes for each sensor, DEVICE_FILE, RAW_VALUE and SENSOR_TYPE
Added some comments.
Updated to get config values for owserver to get owport and owhost.
* Changed to _LOGGER.debug in some places
Resorted includes
* Fixup of code to reflect review comment, comply to Black and pass tests
* Added unique_id Entity property with device file id and added device_file as attribute that takes its data from Entities unique_id-.
* Missing blank line identified by fake8 and black
* Changed to let device_state_attributes return attribute device_file from the self._device_file member variable of the entity.
* Changed from info to debug logging
* Add support for real-time data from SimpliSafe
* Updated requirements
* Linting
* Ensure dispatcher topic contains the domain
* Don't bother with a partial
* Websovket dataclass and other code review
* Ensure initial_event_to_use works with error
* Don't inline methods
* Don't abuse loop variable
* Simplify initial event retrieval
* Add connection lost and restored events
* Revert "Add connection lost and restored events"
This reverts commit e7ffe05938.
* Make _on_disconnect a static method
* Code review comments
* Allow entities to opt out of REST and/or websocket API updates
* Revert "Allow entities to opt out of REST and/or websocket API updates"
This reverts commit 1989f2e00e.
* Code review comments
* Fix issues with events not triggering correct entities
* Bug fixes
* Make the set_runtime_value_int function work with template values
* Use newest version of the ihcsdk library
* Make the set_runtime_value_int function work with template values
* Use newest version of the ihcsdk library
* Updated to the newest ihcsdk 2.5.0
* Formatted changes to make it pass CI tests
* Update to version 2.6 of ihcsdk
* Initial implementation of Vilfo router integration.
This commit is a combination of several commits, with commit messages in bullet form below.
* Added additional files to Vilfo integration.
* Added generated files.
* Fixed alphabetic order in generated config_flows.
* Continued implementation of config flow for Vilfo integration.
* Continued work on config_flow for Vilfo.
* Updated requirements in manifest for Vilfo Router integration.
* Some strings added to Vilfo Router integration.
* Vilfo Router integration updated with sensor support.
* Code style cleanup.
* Additional cleanup of config flow.
* Added additional UI strings for Vilfo Router
* Updated tests of config flow and fixed formatting
* Updated requirement upon vilfo-api-client.
* Sensor refactoring including support for icons
* Code style changes for Vilfo Router integration
* Code cleanup
* Fixed linting issues in Vilfo Router integration
* Fixed import order in test for Vilfo integration.
* Updates to Vilfo Router integration based on feedback
Based on the feedback received, updates have been made to the Vilfo Router integration.
A couple of the points mentioned have not been addressed yet, since the appropriate action has not yet been determined. These are:
* https://github.com/home-assistant/home-assistant/pull/31177#discussion_r371124477
* https://github.com/home-assistant/home-assistant/pull/31177#discussion_r371202896
This commit consists of:
* Removed unused folder/submodule
* Fixes to __init__
* Fixes to config_flow
* Fixes to const
* Refactored sensors and applied fixes
* Fix issue with wrong exception type in config flow
* Updated tests for Vilfo integration config_flow
* Updated dependency upon vilfo-api-client to improve testability
* Import order fixes in test
* Use constants instead of strings in tests
* Updated the VilfoRouterData class to only use the hostname as unique_id when it is the default one (admin.vilfo.com).
* Refactored based on feedback during review.
* Changes to constant names,
* Blocking IO separated to executor job,
* Data for uptime sensor changed from being computed to being a timestamp,
* Started refactoring uptime sensor in terms of naming and unit.
* Updated constants for boot time (previously uptime) sensor.
* Refactored test of Vilfo config flow to avoid patching code under test.
* UI naming fixes and better exception handling.
* Removed unused exception class.
* Various changes to Vilfo Router integration.
* Removed unit of measurement for boot time sensor,
* Added support for a sensor not having a unit,
* Updated the config_flow to handle when the integration is already configured,
* Updated tests to avoid mocking the code under test and also to cover the aforementioned changes.
* Exception handling in Vilfo Router config flow refactored to be more readable.
* Refactored constant usage, fixed sensor availability and fix API client library doing I/O in async context.
* Updated signature with hass first
* Update call to constructor with changed order of arguments
* Refresh the august access token
when needed.
Currently august will stop working when the token
expires about every six month.
This resolves issue #23788
* Make refresh_access_token_if_needed private since we do not want additional callers
* Add init
* Suppress data get timeout exceptions for 30s after notify attempts
At least SMS send failures may put the API in a state where it times out
some (but not all) data get operations for some time, e.g. 25s.
Closes https://github.com/home-assistant/home-assistant/issues/30827
* Do not pile up duplicate data requests
Do not add another request for a piece of data for which a previous
request is still in progress. For example failing SMS sends are known to
stall some (but not all) requests for some time, and firing up more is
not going to help.
As polling for lock status is every 15 minutes,
we read lock and unlock events from the activity log.
An upstream update of py-august was needed to
expose the door open and close events.
Door open and close events are now seen within
a few seconds instead of delayed 15+ minutes.
* fix unique_id computation for switches
* update konnected component to use async, config entries, registries. Pro board support and tests
* clean up formatting comments from PR
* use standard interfaces in tests
* migrate config flow to use options
* address latest pr feedback
* format for import as part of config schema validation
* address pr feedback
* lint fix
* simplify check based on pr feedback
* clarify default schema validation
* fix other schema checks
* fix translations
Co-authored-by: Nate Clark <nate@nateclark.com>
* Significantly reduce the number of API calls that the august integration
makes.
The poll interval for the lock status API is now 15 minutes
instead of every 10 seconds because we can use the activity
API to see changes in lock state. The interval for the
activity API is 10 seconds which allows for the same
frequency of state monitoring without all the additional API calls.
With four locks, this change results in an ~80% reduction in the number
of API calls.
The result of the lock and unlock APIs now update the lock state instead
of waiting for the next poll. This change also has the added benefit of
making the UI appear far more responsive.
* Convert to using UTC times
* Added support of multiple Tado accounts
Changed geberation of sensor unique id (breaking change)
* Fixed lints
* Fixed error detecting opened window
* Changed gereration of unique id of climate
* Removed commented code and added comments
* Initial commit
* ran hassfest and gen_requirements_all scripts
* fixes per request from Paulus Schoutsen
* ran gen_requirements_all
* updated library version - removed some debug leftover
* get_requirements again...
* added documentation URL
* ran isort
* changed storage in hass.data[DOMAIN] to use entry_id instead of host
* adopted unit tests to latest fix
* Update const.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add MELCloud integration
* Provides a climate and sensor platforms. Multiple platforms on one go
is not the best option, but it does not make sense to remove them and
commit them later either.
* Email and access token are stored to the ConfigEntry. The token can be
updated by adding the integration again with the same email address. The
config flow is aborted and the update is performed on the background.
* Run isort
* Fix pylint errors
* Run black
* Increase coverage
* Update pymelcloud dependency
* Add HVAC_MODE_OFF emulation
* Remove print
* Update pymelcloud to enable device type filtering
* Collapse except blocks and chain ClientNotReadys
* Add preliminary documentation URL
* Use list comp for creating model info
Filters out empty model names form units.
* f-string galore
Dropped 'HVAC' from AtaDevice name template.
* Delegate fan mode mapping to pymelcloud
* Fix type annotation
* Access AtaDevice through self._device
* Prefer list comprehension
* Update pymelcloud to leverage device type grouping
The updated backend lib returns devices in a dict grouped by the device
type. The devices do not necessarily need to be in a single list and
this way isinstance is not required to extract devices by type.
* Remove DOMAIN presence check
This does not seem to make much sense after all.
* Fix async_setup_entry
Entry setup used half-baked naming from few experimentations back.
The naming conventiens were unified to match the platforms.
A redundant noneness check was also removed after evaluating the
possible return values from the backend lib.
* Simplify empty model name check
* Improve config validation
* Use config_validation strings.
* Add CONF_EMAIL to config schema. The value is not strictly required
when configuring through configuration.yaml, but having it there makes
things more consistent.
* Use dict[key] to access required properties.
* Add DOMAIN in config check back to async_setup. This is required if an
integration is configured throught config_flow.
* Remove unused manifest properties
* Remove redundant ClimateDevice property override
* Add __init__.py to coverage exclusion
* Use CONF_USERNAME instead of CONF_EMAIL
* Use asyncio.gather instead of asyncio.wait
* Misc fixes
* any -> Any
* Better names for dict iterations
* Proper dict access with mandatory/known keys
* Remove unused 'name' argument
* Remove unnecessary platform info from unique_ids
* Remove redundant methods from climate platform
* Remove redundant default value from dict get
* Update ConfigFlow sub-classing
* Define sensors in a dict instead of a list
* Use _abort_if_unique_id_configured to update token
* Fix them tests
* Remove current state guards
* Fix that gather call
* Implement sensor definitions without str manipulation
* Use relative intra-package imports
* Update homeassistant/components/melcloud/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fix ViCare water_heater set_temperature
This fixes a obvious but undiscovered bug in the water heater component:
Instead of the commanded value the prvious value was set on the API
* Bump PyVicare to 0.1.7
* add typing
* 100% battery_level is enough
* human-friendly datetime
* better enum usage
* add online and learning mode attrs
* use max two decimals in attrs
* use legacy style debug logging
* remove str usage of enums
* add feeder
* add feeder and adapt to new surepy version
* use ProductID instead of ThingID
* various changes and improvements
* add connectivity sensors for all devices & proper support for multiple hubs
* remove "side effects"/exception catching in attribs
* correct unique ids, reorder classes
* move Flap class from binary_sensor to sensor and add a sensore base class
* comments cleanup, minor typing and logging fixes
* remove commented code
* remove commented code
* add typing
* 100% battery_level is enough
* human-friendly datetime
* better enum usage
* add online and learning mode attrs
* use max two decimals in attrs
* use legacy style debug logging
* remove str usage of enums
* add feeder
* add feeder and adapt to new surepy version
* use ProductID instead of ThingID
* various changes and improvements
* add connectivity sensors for all devices & proper support for multiple hubs
* remove "side effects"/exception catching in attribs
* correct unique ids, reorder classes
* move Flap class from binary_sensor to sensor and add a sensore base class
* comments cleanup, minor typing and logging fixes
* remove commented code
* remove commented code
* fix spelling in comment to make the CI happy (seriously?!)
* fix manifest file
* fix requirements_all.txt file
* add missing docstrings
* fix available property
* remove typing from self
* remove commented code
* remove is_on property from sensor
* jump to new surepy version
* remove useles init methods
* added recorder vars db_max_retries and db_retry_wait
* fixed test_recorder_setup_failure
I failed because it was missing the two new variables. I simply added these with default values.
* fixed syntax error in test_recorder_setup_failure
* fixed formatting error in test_init_py for recorder component
* fixed typo in test case
* Updated the way the default keys for db_,max_wait and db_retry_wait is set
Implemented based on suggestions from @springstan
* Updated config_schema call to adhere to Black
* changed conf.get to conf[dict] for var retrieval
* removed 2 blank lines
* Add unique ID and device info data
* Don't get power info on switch models lacking it
* Move info fetching to update, update before adding
* Upgrade pyedimax to get device info
* Remove device info
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Only auth on enter_learning in response to errors.
* Remove extra newline.
* Add missing break on successful attempt.
* Avoid logging success message when auth is unsuccessful.
* Add Minecraft Server integration
* Add unit test for config flow
* Fixed some review findings and increased unit test coverage
* Fixed docstrings of new test cases
* Removed unnecessary debug log messages
* Added unique IDs and device infos and removed duplicate name validation
* Attempt to fix unit test on CI
* Return state OFF instead of UNAVAILABLE in case connection to server drops
* Added property decorator to server properties, even less debug messages, improved sensor dispatcher connection and other review findings fixed
* Moved special property handling to sensors, fixed name confusion in sensor entity, switch to HA const for scan_interval, simplified building players list string
* Improved periodic update, speeded up unit tests
* Added type hints, added callback decorator to entity update callback, added const.py to unit test exclusions
* Changed state sensor to binary sensor, removed empty unit test file, added constants for icons and units
* Let HA handle unknown state, check for None in description and players list sensor
* Removed periods at end of log messages, removed constant for default host
* Updated requirements_test_pre_commit.txt, fixed codespell findings
* Use localhost as default host
* Removed passing hass to entities, moved log message from init, moved host lower to vol, use proper patch library, patch library instead of own code
* Replaced server properties with global instance attributes, removed config option scan_interval, switch back to async_track_time_interval
* Removed description and players list sensors, added players list as state attributes to online players sensor, raise OSError instead of deprecated IOError, other minor review findings fixed
* Use MAC address for unique_id in case of an IP address as host, added getmac to manifest.json, added invalid_ip to strings.json, added new test cases for changes in config_flow, replace all IOError's with OSError, other review findings fixed
* Removed double assignment
* Call get_mac_address async safe
* Handle unavailable and unknown states to reach silver quality scale, added quality scale to manifest.json
- Bump amcrest package to 1.5.6. Includes networking improvements, no longer
communicates during Http.__init__(), and allows running snapshot command
without using stream mode.
- Handle login errors better, and not just at startup.
- Increase network connect & read timeout to 6.05 seconds.
- Increase network read timeout to 20 seconds for snapshot command.
- Run snapshot command in separate task, that cannot be cancelled, to eliminate
possibility of two snapshot commands running simultaneously (since
AmcrestCam.async_camera_image can be cancelled.) Also makes sure any exceptions
from the command are caught properly.
* Updated the provider name to blockchain.com
Blockchain.info moved from .info .com. Updated the name of the service to blockchain.com
* Updated the provider name to blockchain.com
Updated the provider name to blockchain.com
* initial version of gdacs integration
* updated translations
* generated files
* added abbreviation
* bumped library version
* small feed entry attribute fixes
* add unit tests
* need to use original mdi name
* bumped library version
* improved entity name for earthquakes
* round vulnerability number
* typo
* support for categories
* testing support for categories
* tie longitude and latitude together
* validating categories
* simplifying setup
* passing domain as parameter
* simplified test setup
* moved test code
* simplified test code
* removed superfluous code
* changed approach to unique identifier
* changed code structure
* simplified unit system handling
* made schema a constant
* comment added
* simplifying code
* added message if location already configured
* removed unnecessary code
* simplified test code
* avoid mocking __init__
* pylint
* simplified code
* fetch categories from integration library
* setting PARALLEL_UPDATES
* setting PARALLEL_UPDATES to zero/unlimited
* added quality scale
* Add support for belgian meter and rename some sensors
* DSMR Fixes
* Add test
* More tests
* Adjust test to latest dev
* Remove unused code
* Depend on dsmr_parser 0.18
* Update vizio host check to handle entries that don't have port
* add comment explaining no_port test for future
* remove _name_is_same function and support user updating name in config
* Update strings.json
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Use entity.async_request_call in service helper
* Clean up semaphore handling
* Address comments
* Simplify call entity service helper
* Fix stupid rflink test
* Update vizio host check to handle entries that don't have port
* add comment explaining no_port test for future
* remove _name_is_same function and support user updating name in config
* Update strings.json
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* keep track of the derivative for unit_time
In this way, you will get a better estimate of the derivate during
the timescale that is relavant to the sensor.
This solved a problem where sensors have a low output resolution.
For example a temperature sensor that can only be integer numbers.
It might report many values that are the same and then suddenly go up one value.
Only in that moment (with the current implementation) the derivative will be finite.
With my proposed implementation, this problem will not occur, because it takes the average
derivative of the last `unit_time`.
* only loop as much as needed
* treat the special case of 1 entry
* add option time_window
* use cv.time_period
* fix comment
* set time_window=0 by default
* rephrase comment
* use timedelta for time_window
* fix the "G" unit_prefix and add more prefixes
https://en.wikipedia.org/wiki/Unit_prefix
* add debugging lines
* simplify logic
* fix bug where the there was a division of unit_time instead of multiplication
* simplify tests
* add test_data_moving_average_for_discrete_sensor
* fix test_dataSet6
* improve readability of the tests
* better explain the test
* remove debugging log lines
* keep track of the derivative for unit_time
In this way, you will get a better estimate of the derivate during
the timescale that is relavant to the sensor.
This solved a problem where sensors have a low output resolution.
For example a temperature sensor that can only be integer numbers.
It might report many values that are the same and then suddenly go up one value.
Only in that moment (with the current implementation) the derivative will be finite.
With my proposed implementation, this problem will not occur, because it takes the average
derivative of the last `unit_time`.
* only loop as much as needed
* treat the special case of 1 entry
* add option time_window
* use cv.time_period
* fix comment
* set time_window=0 by default
* rephrase comment
* use timedelta for time_window
* fix the "G" unit_prefix and add more prefixes
https://en.wikipedia.org/wiki/Unit_prefix
* add debugging lines
* simplify logic
* fix bug where the there was a division of unit_time instead of multiplication
* simplify tests
* add test_data_moving_average_for_discrete_sensor
* fix test_dataSet6
* improve readability of the tests
* better explain the test
* remove debugging log lines
* Yield only one Speaker interface.
* Yield PowerController only is supported.
* Revert "Yield PowerController only is supported."
This reverts commit c0dbf7e4
* Add Alexa.Speaker interface properties.
* Refactor tests for Alexa.Speaker and Alexa.StepSpeaker.
* Code Smell Change.
* Fix R1705: Unnecessary "elif" after "return".
* bump pyvizio version and add additional device info
* add patches for get_model and get_version
* change keywrod argument to positional for _test_service
* Fix auto_bypass in alarmdecoder
* Address review comments: used dict[key] and renamed variable
* Use dict[key] for required or optional config keys with default values
* Add salt component
* Update files from development checklist
* Use warning log level when data cannot be retrieved
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Remove empty fields from manifest.json
* Remove default arguments for host and username
* Bump saltbox library version
* Refactor and improve error handling
* Dev checklist
* Fix linting errors
* Check for None and return empty list
* Log on debug level instead of info
* More compact None checks
* Remove redundant None check
* Return None on exception but store as empty list
* More compact syntax
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* added support for multiple attachments to signal_messenger integration
* updated pysignalclirestapi version in requirements_all.txt
* reworked multiple attachments feature in signal_messenger integration
* stay backwards compatible by both allowing the "attachment" and
the "attachments" attribute.
* reworked multiple attachments feature in signal_messenger integration
* stay backwards compatible by both allowing the "attachment" and
the "attachments" attribute.
* small change in signal_messenger integration
* added deprecation warning for 'attachment' attribute
* small changes in signal_messenger integration
* use 'warning' instead of 'warn' when logging the warning message
* re-generated requirements_test_pre_commit.txt
* added tests for signal_messenger integration
* regenerated requirements_test_all.txt for signal_messenger integration
* added more signal_messenger tests
* remove signal_messenger integration files from .coveragerc
BraviaRC is currently unmaintained for home-assistant. This commit
swaps it out with a new fork of BraviaRC called python-bravia-tv.
This captures all bug fixes from BraviaRC release 3.7 (previously
linked backend) to right before BraviaRC breaks when used by home-assistant.
The intent of forking is to be able to continue supporting home-assistant.
This is not intended to be a one off solution; this new fork will have
future updates and be maintain as needed.
This initial commit of python-bravia-tv improves the import process,
however overall preserves the original API.
Other fixes include:
* Fix set-volume slider
* Better error handling
* Increase input options
Resolves: #26351, #30964
See also: #12577, #14843, #17345, #18245
* KEF: add support for play, pause, next track, and previous track
* bump aiokef to 0.2.7
* run isort
* do not dynamically change the supported features
* Added lock support for tahoma
* Fixed logging to conform with pylint W1201 and E1205.
* Implemented @springstan suggestions.
* Fixed a typo...
* Implemented @springstan suggestions (v2).
* Implemented @springstan suggestions (v3).
* Bump skybellpy to 0.4.0
* Bump skybellpy to 0.4.0 in requirements_all.txt
* Added extra states for STATE_ALARM_TRIGGERED to allow users to know if
it is a burglar or fire or carbon monoxide so automations can take
appropriate actions. Updated TotalConnect component to handle these new
states.
* Fix const import
* Fix const import
* Fix const imports
* Bump total-connect-client to 0.26.
* Catch details of alarm trigger in state attributes.
Also bumps total_connect_client to 0.27.
* Change state_attributes() to device_state_attributes()
* Move totalconnect component toward being a multi-platform integration. Bump total_connect_client to 0.28.
* add missing total-connect alarm state mappings
* Made recommended changes of MartinHjelmare at
https://github.com/home-assistant/home-assistant/pull/24427
* Update __init__.py
* Updates per MartinHjelmare comments
* flake8/pydocstyle fixes
* removed . at end of log message
* added blank line between logging and voluptuous
* more fixes
* Adding totalconnect zones as HA binary_sensors
* fix manifest.json
* flake8/pydocstyle fixes. Added codeowner.
* Update formatting per @springstan guidance.
* Fixed pylint
* Add zone ID to log message for easier troubleshooting
* Account for bypassed zones in update()
* More status handling fixes.
* Fixed flake8 error
* Another attempt at black/isort fixes.
* Bump total-connect-client to 0.50. Simplify code using new functions in
total-connect-client package instead of importing constants. Run black
and isort.
* Fix manifest file
* Another manifest fix
* one more manifest fix
* more manifest changes.
* sync up
* fix indent
* one more pylint fix
* Hopefully the last pylint fix
* make variable names understandable
* create and fill dict in one step
* Fix name and attributes
* rename to logical variable in alarm_control_panel
* Remove location_name from alarm_control_panel attributes since it is
already the name of the alarm.
* Multiple fixes to improve code per @springstan suggestions
* Update homeassistant/components/totalconnect/binary_sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Multiple changes per @MartinHjelmare review
* simplify alarm adding
* Fix binary_sensor.py is_on
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Fix auto_bypass in alarmdecoder
* Address review comments: used dict[key] and renamed variable
* Use dict[key] for required or optional config keys with default values
* Refactor Hue Lights to use DataCoordinator
* Redo how Hue updates data
* Address comments
* Inherit from Entity and remove pylint disable
* Add tests for debounce
* Refactor Hue Lights to use DataCoordinator
* Redo how Hue updates data
* Address comments
* Inherit from Entity and remove pylint disable
* Add tests for debounce
* Rewrite UniFi integration to use push messaging
* Add signalling for new clients/devices
* Update list of known wireless clients when we get events of them connecting
* Reconnection logic for websocket
* Fix failing tests
* Bump requirement to v12
* Add new tests
* Update homeassistant/components/unifi/controller.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Register on HA stop event to gracefully shutdown HomematicIP Cloud connections
* fixes after review
* Fix lint
* switch to unload_entry
* Save listener
* Switch back to hap.async_reset()
* add media player test and update media player logic to qualify vizio for platinum quality score
* add SCAN_INTERVAL and log message once when device goes from available to unavailable and vice versa
* move test constants into one file to avoid defining dupes in each test file
* move constant to shrink diff
* move pytest fixtures to conftest.py
* remove commented out code
* move unload test to test_init
* updates to tests and logging based on review
* bypass notification service
* add fixture so component setup makes it through config flow
* split failure tests into two
* fix setup and entity check for test_init and setup failures in test_media_player
* make domain references consistent across test files
* remove logging steps that were introduced to help debug
* move common patches out to new fixture and use config entry everywhere appropriate
* fix docstring
* add test for update options to increase code coverage
* add one more assert
* refactor test_media_player to move boiler plate logic out of each test into _test_init function
* final refactor of test_media_player to move repeat logic into separate function
* update docstrings
* refactor setup failure tests to move shared logic into private function
* fix last new functions code to use variable instead of static config variable
* remove trailing comma
* test that volume_step gets properly passed to Vizio volume function
* fix comment language
* assert with unittest.mock.call in _test_service and use config_entries.async_setup instead of config_entries.async_add
* replace config_entries.async_add with config_entries.async_setup everywhere
* simplify if statement for argument assertion
* fix logging based on style guide
* remove accidentally committed changes
* update scan interval to something more reasonable and add tests for availability changes
* change filter function to list comprehension, simplify log messages, remove default entity id from logs since it is user configurable, fix docstrings
* Added support for the opening and closing states to MQTT covers
* Processed PR feedback on MQTT cover changes
* Add missing MQTT abbreviation to fix failing tests
* Fixed typo in MQTT abbreviations
* Added mqtt set cover position optimistic test
* add dispatching of groups to light
* added ha device registry device id
* added zha group object
* add group event listener
* add and remove group members
* get group by name
* api cleanup
* clean up get device info
* create and remove zigpy groups
* clean up create and remove group api
* use device id
* use device id
* cleanup
* update test
* update tests to allow group events to flow
* Update tests with rangeValue and rangeValueDelta to use int.
* Add support for rangeValueDeltaDefault for covers.
* Update tests for range changes.
* Test for AdjustRangeValue with rangeValueDeltaDefault True.
* Update tilt error.
* Add OPNSense device_tracker
This commit adds a new component for using an OPNSense router as a
device tracker. It uses pyopnsense to query the api to look at the
arptable for a list of devices on the network.
* Run black formatting locally to appease azure
* Apply suggestions from code review
Co-Authored-By: Fabian Affolter <mail@fabian-affolter.ch>
* Fix issues identified during code review
This commit updates several issues found in the module during code
review.
* Update homeassistant/components/opnsense/__init__.py
Co-Authored-By: Fabian Affolter <mail@fabian-affolter.ch>
* Update CODEOWNERS for recent changes
* Fix lint
* Apply suggestions from code review
Co-Authored-By: Martin Hjelmare <marhje52@kth.se>
* More fixes from review comments
This commit fixes several issues from review comments, including
abandoning all the use of async code. This also completely reworks the
tests to be a bit clearer.
* Revert tests to previous format
* Add device detection to opnsense device_tracker test
This commit adds actual device detection to the unit test for the setup
test. A fake api response is added to mocks for both api clients so that
they will register devices as expected and asserts are added for that.
The pyopnsense import is moved from the module level to be runtime in
the class. This was done because it was the only way to make the
MockDependency() call work as expected.
* Rerun black
* Fix lint
* Move import back to module level
* Return false on configuration errors in setup
This commit updates the connection logic to return false if we're unable
to connect to the configured OPNsense API endpoint for any reason.
Previously we would not catch if an endpoint was incorrectly configured
until we first tried to use it. In this case it would raise an unhandled
exception. To handle this more gracefully this adds an api call early in
the setup and catches any exception raised by that so we can return
False to indicate the setup failed.
* Update tests
* Add pyopnsense to test requirements
* Rerun gen_requirements script
* Fix failing isort lint job step
Since opening the PR originally yet another lint/style checker was added
which failed the PR in CI. This commit makes the adjustments to have
this pass the additional tool's checks.
* Fix comment
* Update manifest.json
Co-authored-by: Fabian Affolter <mail@fabian-affolter.ch>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Pascal Vizeli <pascal.vizeli@syshack.ch>
* Fix light.turn_on for emulated_hue
HarmonyHub sends `{'xy': [0, 0], 'on': True, 'bri': 0}` when turning on lights that do not support brightness control. Unfortunately current logic always uses brightness value to control on/off state which makes no sense for lights that don't support brightness at all. This change fixes that behavior, making light without brightness control usable with HarmonyHub and probably some other remotes.
* Test 'no_brightness' lights
* Update entity.py
* Fix Black
* Fix Black
* Update entity.py
* Use new style python
* Simplify
* Allow multible attribute with different channels
* Black
Co-authored-by: Pascal Vizeli <pascal.vizeli@syshack.ch>
* Add SSLError check and remove log spam
* Update homeassistant/components/proxmoxve/manifest.json
remove unnecessary requirement
* Remove log level change
Moved to proxmoxer library
* Update homeassistant/components/proxmoxve/__init__.py
* Update manifest.json
Update to new version of dependency which fixes log issue
* Run formatter and requires updates
* oops, tabs
* Fix quote marks
When you can't get black running, just fix whatever CI says is wrong!
* Track if request is local
* Cancel early if 2FA disabled
* Allow disabling 2FA for ack
* Do not mark devices with 2FA as reachable
* Add request source to GA events
* Webostv: add sound_output capability
Add the ability to read and set the sound_output
* Webostv: add sound_output capability
* Webostv: add sound_output capability
* fix blank spaces
* fix to long line
* add ,
* Import ATTR_SOUND_OUTPUT
Do not have the ability to test this change right now
* Add white space
* Create const.py
* Use const import
* Use import from const.py
* Add docstring
* Change order
* Change order
* Fix import
* Fix import
* Fix typo
* Change order again
* Change order again
* Change order of attributes
* use hapid as unique_id for config_entry of HomematicIP Cloud
* Add qualita_scale to manifest
* Update config_flow
* use core interface for config_flow tests
* refactor to fail earlier
* use asynctest
* rewrite tests
* rewrite tests
* fix test
* add assert
* Import constants sanely
* Linting
* Rename data constants for consistency
* Refactor RainMachine switch platform
* Comments
* Cleanup
* Refactor switch and sensor API calls to be separate
* Linting
* Make sure zones are updated in appropriate service calls
* Correctly decrement
* Linting
* Don't do weird inheritance
* Ensure service calls update data properly
* Docstring
* Docstring
* Errors can be logged without string conversion
* Code review comments
* Make the set_runtime_value_int function work with template values
* Use newest version of the ihcsdk library
* Make the set_runtime_value_int function work with template values
* Use newest version of the ihcsdk library
* Updated to the newest ihcsdk 2.5.0
* Formatted changes to make it pass CI tests
* Make SimpliSafe integration more resilient to SimpliSafe cloud issues
* Clear emergency refresh token
* Stop listening when appropriate
* Cleanup
* Saving refresh token should happen after all updates
* Code review
* Rewrite of Spotify integration
* Update homeassistant/components/spotify/config_flow.py
Co-Authored-By: Paulus Schoutsen <balloob@gmail.com>
* Remove configurator dependency
* Strip whitespace from device model in case Spotify product is missing
* Ensure domain dict exists in hass data on setup entry
* Simply config validation for client id and secret
* Abort flow on any exception from spotipy
* Add tests for config flow
* Gen requirements all
* Add test package __init__
* Remove Spotify from coveragerc
* Made alias handling more robuust
* Fix supported_features for Spotify free and open accounts
* Improve error message in the logs
* Re-implement Spotify media_player
* Change media content type when play a playlist
* Process review suggestions
* Move Spotify init, static current user and supported_features
* Remove unneeded me call
* Remove playlist content type due to frontend issues
* Improve playlist handling, when context is missing
* Handle entity disabled correctly
* Handle being offline/unavailable correctly
* Bump Spotipy to 2.7.1
* Update coverage RC, mark integration silver
* Remove URI limitation, lib supports all Spotify URI's now
* Final cleanup
* Addresses Pylint error
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update Hue existing config entry with discovery data
* Updated method documentation comments
* Update implementation to match latest dev
* Use named argument for clarity
* Buienradar Camera for Belgium
* Voluptuous check for country code
* Black formatting
* Testing for Buienradar Belgium
* Changed MULTIPLE CHOICE variable name
* Changes from frenck review
* remove connection check during setup since it is already done during config flow
* revert change and fix log message
* demote connection setup to warning
* upgrade to aiopylgtv 0.3.0 and corresponding simplification and cleanup of webostv state tracking
* properly handle case where Live TV is not reported in list of apps
* fix tests (entity state is no longer linked to source id)
* fix pylint checks
* avoid unnecessary retrieval of channel list
* use only standard home assistant states
* add missing tests
* readd removed test
* add zeroconf discovery support for vizio integration
* no mock_coro_func needed
* add reasonable timeout and don't log exceptions from pyvizio due to timeout
* add test to test options update and bump pyvizio to avoid timeout issues
* update requirements_*
* fix gaps in coverage
* change return hint for async_setup_entry
* use source variables instead of strings
* only get unique ID if about to create entry
* update based on review
* Revert "update based on review"
This reverts commit 0d612a90eb7d02c92061f902973e527267e3110a.
* f-string
* fix last review
* revert cleanup changes to simplify PR
* remove unnecessary ConfigFlow object variables to simplify logic
* revert cleanup changes to make review easier, noted for future cleanup
* revert cleanup changes to make review easier, noted for future cleanup
* move zeroconf service type constant to test module
* enhance zeroconf service info decoding to include raw bytes
* Update homeassistant/components/zeroconf/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* fix test based on last commit
* fix test based on last commit
* remove .keys() when asserting processed and raw service info properties
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Iteration on issue and PR templates
* Some small improvements to make it look better in the PR editor
* Better English
* Please keep template
* Consistency
* Adds www to website link, to make more clear it is our website
* Process review suggestion by Martin
* Added dep bump as type of change
* English
* support xiaomi miio sensor: cgllc.airmonitor.s1 & cgllc.airmonitor.b1
* support xiaomi miio sensor: cgllc.airmonitor.s1 & cgllc.airmonitor.b1
* rollback sensor, modify air_quality
* only set air_quality props
* remove set state from "zhimi.airmonitor.v1"
* unit_of_measurement return None when the pm25 isn't reported
* import libs by isort
* Improve sensor for automations
I've updated the sensor so that departure time and delay can be used in automatons.
Before, the departure time and delay time were only available wrapped in strings which makes it difficult to use them in automations. Using the extra attributes, one can easily use them in automations.
* Update homeassistant/components/nmbs/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Updates based on review
Changed min to minutes as requested
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* create derivation component
based on integration component
remove left and right
* Update test
(was'n saved)
* add some functionnal point test
* Change derivation to derivative
* Continue migration from derivation to derivative
* Add codeowners info
* fix tests typo and values
* Improve code from reviewer
add test case
fix test values
still a prefix issue that should not
* create derivation component
based on integration component
remove left and right
* Update test
(was'n saved)
* add some functionnal point test
* Change derivation to derivative
* Continue migration from derivation to derivative
* Add codeowners info
* fix tests typo and values
* Improve code from reviewer
add test case
fix test values
still a prefix issue that should not
* Update homeassistant/components/derivative/sensor.py
Fix test issue with unit of measurement
Co-Authored-By: Santobert <tobhaase@gmail.com>
* Fix review
Move ValueError to SyntaxError
* precise state test
* un comment original tests and remove error tests
* Fix isort issue
* Fix review
- update doc link
- migrate to general const import
* Rollback import conf_unit, just defined localy
Co-authored-by: Santobert <tobhaase@gmail.com>
* Add foundation for integration services
* Fix tests
* Remove async_get_platform
* Migrate Sonos partially to EntityPlatform.async_register_entity_service
* Tweaks
* Move other Sonos services to media player domain
* Move other Sonos services to media player domain
* Address comments
* Remove lock
* Fix typos
* Use make_entity_service_schema
* Add area extraction to async_extract_entities
Co-authored-by: Anders Melchiorsen <amelchio@nogoto.net>
* Improve config entry support, add device info
* async_dispatch_connect
* Fix I/O in event loop
* Do not raise PlatformNotReady inside dispatcher
* Make main discovery process async
* Do discovery as part of set up.
* Greatly simplify set up
* Add parallel updates to fan&switch
* mini cleanup
* Address comments
* Improve config entry support, add device info
* async_dispatch_connect
* Fix I/O in event loop
* Do not raise PlatformNotReady inside dispatcher
* Make main discovery process async
* Do discovery as part of set up.
* Greatly simplify set up
* Add parallel updates to fan&switch
* mini cleanup
* Address comments
* Improve config entry support, add device info
* async_dispatch_connect
* Fix I/O in event loop
* Do not raise PlatformNotReady inside dispatcher
* Make main discovery process async
* Do discovery as part of set up.
* Greatly simplify set up
* Add parallel updates to fan&switch
* mini cleanup
* Address comments
* Minor enhancement to jewish_calendar:
- Expose more halachic times from the underlying hdate module
- Correct and standardize some transliterations
* Undo breking name change
* Add icon for talit time
Co-authored-by: Andrew Marks <52414333+amarks-coatue@users.noreply.github.com>
* use media player defined device classes instead of custom ones, add options flow test, add timeout options parameter
* make options update error more generic
* fix config flow options update logic
* simplify logic for options update during import
* use platform list for load and unload
* update private config flow function name and description
* fix grammar in strings.json
* update mock config variable names to be more accurate
* remove timeout conf option, create device_class property
* update requirements
* update .coveragerc to indicate that config_flow has tests
* fix source of device_class property and move constants to const.py
* fix grammar in error message
* remove redundant device check in async_setup_entry since device connection is checked during config flow
* revert change to async_setup_entry, raise ConfigEntryNotReady if device can't be connected to
* update error text
* add more context to error text
* Refactor input_datetime.
Keep the state as datetime, but format accordingly to has_time and
has_date.
* Use config dict for input_datetime.
* Add tests.
* Lint
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* add config flow support, device registry support, available property
* raise PlatformNotReady if HA cant connect to device
* remove test logging statement and fix integration title
* store import and last user input values so user can see errors next to value that caused error
* add PARALLEL_UPDATES
* add missing type hints
* add missing type hints to tests
* fix options config flow title
* changes based on review
* better key name for message when cant connect
* fix missed update to key name
* fix comments
* remove logger from test which was used to debug and update test function names and docstrings to be more accurate
* add __init__.py to vizio tests module
* readded options flow and updated main component to handle options updates, set unique ID to serial, fixes based on review
* pop hass.data in media_player unload instead of in __init__ since it is set in media_player
* update requirements_all and requirements_test_all
* make unique_id key name a constant
* remove additional line breaks after docstrings
* unload entries during test_user_flow and test_import_flow tests to hopefully reduce teardown time
* try to speed up tests
* remove unnecessary code, use event bus to track options updates, move patches to pytest fixtures and fix patch scoping
* fix comment
* remove translations from commit
* suppress API error logging when checking for device availability as it can spam logs
* update requirements_all and requirements_test_all
* dont pass hass to entity since it is passed to entity anyway, remove entity unload from tests, other misc changes from review
* fix clearing listeners
* use config_entry unique ID for unique ID and use config_entry entry ID as update signal
* update config flow based on suggested changes
* update volume step on config import if it doesn't match config_entry volume step
* update config_entry data and options with new volume step value
* copy entry.data and entry.options before updating when updating config_entry
* fix test_import_entity_already_configured
* Store last working HTTP settings
* Add safe mode
* Fix tests
* Add cloud to safe mode
* Update logging text
* Fix camera tests leaving files behind
* Make emulated_hue tests not leave files behind
* Make logbook tests not leave files behind
* Make tts tests not leave files behind
* Make image_processing tests not leave files behind
* Make manual_mqtt tests not leave files behind
* Added custom validator function for speed list
* Replace CONF_SPEED_STATE_TOPIC with CONF_SPEED_COMMAND_TOPIC to determine SUPPORT_SET_SPEED
* Revert "Added custom validator function for speed list"
This reverts commit f000396fa6.
* Replace CONF_OSCILLATION_STATE_TOPIC with CONF_OSCILLATION_COMMAND_TOPIC to determine SUPPORT_OSCILLATE
* Support color light with nightlight
* Better nightlight mode support check
* Lint fixes
* Remove brightness control for color light with nightlight mode
* Updated NSAPI to version 3.0.0
* Fixed code style error
* Restructured API access
* Improved construction of attributes
* Fixed handling of API output
* Added @YarmoM as code owner
* Updated CODEOWNERS
* Reverted changes for full backwards compatibility
* Fixed bad conditional
* Simplify conditional
* Make met config flow tests more robust
* Fix test with default form values
* Remove not needed test
* Clean create entry test
* Clean double test
* Clean last tests
* Fix docstring
* ZHA cover device support
* flake8
* flake8, black
* isort
* pylint
* more test
* use zigpy provided functions
* black
* handle command errors, better state handling
* black
* more test
* lint
* Update ZHA cover tests coverage.
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
* Refactor to use ids in data class
* Use station_id
* Refactor Netatmo to use oauth
* Remove old code
* Clean up
* Clean up
* Clean up
* Refactor binary sensor
* Add initial light implementation
* Add discovery
* Add set schedule service back in
* Add discovery via homekit
* More work on the light
* Fix set schedule service
* Clean up
* Remove unnecessary code
* Add support for multiple entities/accounts
* Fix MANUFACTURER typo
* Remove multiline inline if statement
* Only add tags when camera type is welcome
* Remove on/off as it's currently broken
* Fix camera turn_on/off
* Fix debug message
* Refactor some camera code
* Refactor camera methods
* Remove old code
* Rename method
* Update persons regularly
* Remove unused code
* Refactor method
* Fix isort
* Add english strings
* Catch NoDevice exception
* Fix unique id and only add sensors for tags if present
* Address comments
* Remove ToDo comment
* Add set_light_auto back in
* Add debug info
* Fix multiple camera issue
* Move camera light service to camera
* Only allow camera entities
* Make test pass
* Upgrade pyatmo module to 3.2.0
* Update requirements
* Remove list comprehension
* Remove guideline violating code
* Remove stale code
* Rename devices to entities
* Remove light platform
* Remove commented code
* Exclude files from coverage
* Remove unused code
* Fix unique id
* Address comments
* Fix comments
* Exclude sensor as well
* Add another test
* Use core interfaces
* Use collections for input_number.
* Add tests.
* Typo fix.
* Make editable a public attribute.
* Move async_setup to top.
* Update homeassistant/components/input_number/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/input_number/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Cleanup.
* async_write_ha_state()
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* add device_info property and move component to async
* use new VizioAsync class to have proper async support
* remove hass from VizioDevice init since it is not needed
* update requirements_all
* missed type hint
* updates based on review
* pyvizio version bump
* additional fixes based on review
* mistake in last commit
* remove device_info property because it can't be used unless this integration has config flow support
* Added preset scheduling to radiothermostat. Added alternate scheduling & religious scheduling to climate/const.py
* Fix Flake8 Errors in climate.py
* Fixing more flake8 errors in climate.py
Removed duplicate set_preset_mode def
* Fixed more flake8 errors.
Please be the end of these errors.
* Fixed black formatting
* Fixed black, broke flake8, fixed flake8
* Fixed CODE_TO_FAN_STATE black error
* Fixed isort issues
* Local isort broke black formatting
Docs should run isort before black. Default isort will undo certain black formatting.
* Removed last commas from imports
* Added removed line
* Fixed formatting
Hopefully this is what the CI pipeline is looking for.
* Ran isort from git repo root, utilizing setup.cfg.
* One more try
* fixed added definition and fixed logger string
* fixed formatting
* lost a close-paren
* Update const.py
Removed radiotherm specific presets
* Update climate.py
Moved preset definitions into radiotherm climate.py
* added update listener if max_age is set
* remove commented out code
* streamline test code
* schedule next update based on the next state to expire
* fixed update process
* isort
* fixed callback function
* fixed log message
* removed logging from test case
* Add boundary name to state if it exists
If the robot is cleaning a pre defined area with a name, add the name to the state-attribute.
* Reformat patch
* Removing whitespace
* Even more formatting
That black did not catch on first run...
* Added support for template alarm panel
* Rewrote tests in new async format
* Fix stale docstring
* Update to tests, standardization on NAME vs FRIENDLY_NAME
* Steam Online: Add last_online and Level attributes
* Steam Online: Add last_online and Level attributes
* Fixes from comments on initial pull request
* Push attributes only if they are not None
* Split async_update
* Use pytest parameters to avoid duplicate code
* Fix UnboundLocalError
* Test error rendering for template state
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* move constants, move schema validation to init, prepare for zeroconf/config flow
* mistake in refactor
* update .coveragerc, move validate_auth to __init__, only attempt to get ESN if device setup is validated
* fix schema validation
* remove suppress warning config option
* remove config_flow from manifest since its not ready yet
* update requirements_all.txt
* fix issue with merge conflict
* Refactor input_boolean to use config dict for instantiation.
* Refactor input_boolean to use YamlCollection.
* Add storage collection to input_boolean.
* Update homeassistant/components/input_boolean/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Doh.
* Address comments.
* Add editable device state attribute.
* Clean up entities from entity registry on removal.
Reload yaml from correct source.
* Add tests.
* Update homeassistant/components/input_boolean/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Don't reset entity state on updates.
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* move constants, move schema validation to init, prepare for zeroconf/config flow
* update requirements_all and make setup validation more pythonic
* mistake in refactor
* un-revert change from previous PR
* rename schema var
* update .coveragerc, move validate_auth to __init__, only attempt to get ESN if device setup is validated
* reinstate validate_setup but change logic to use new connection test function
* fix schema validation
* simplify string empty check logic
* missed commit
* Initial implementation
* Passing autobypass parameter to constructor, as suggested
* Black formatting
* Removed default value from autobypass parameter of the constructor, as it's redundant
* Add pilight dimmer as light component
* fix CI errors
* fix missing new lines
* improve formatting and addresses comments of @springstan
* rename config parameter and remove super() call to match pylint
* import only used constants of the pilight component
* Add myself to the code owners
* fix CODEOWNERS
* Add tests
* Add FileSync test
* Fill in services.yaml for 'androidtv.adb_filesync' service
* Update example paths in services.yaml
* Bump androidtv to 0.0.37
* Bump androidtv to 0.0.37
* Bump androidtv to 0.0.37
* Import LockNotAcquiredException
* Import LockNotAcquiredException from androidtv.exceptions
* Rename 'host' to 'address'
* Add a logging statement when an ADB command is skipped
* Check hass.config.is_allowed_path(local_path)
* Add return
* Fix pylint
* Reduce duplicated code (AndroidTVDevice vs. FireTVDevice)
* Split 'adb_filesync' service into 'download' and 'upload' services
* Don't use '.get()' for required data; return if the services are already registered
* Replace "command" with ATTR_COMMAND
* Don't try to connect to a device if it is a duplicate
* add surepetcare
* cleanup
* remove unused imports and comments
* remove comment
* fix bug which prevented updating the sensors
* improve config validation
* fix voluptuous usage
* fix format & credential storage
* various fixes to hass-conform
* small format fixes
* change False to None
* still trying to be hass-conform
* remove unused class
* fix imports
* fix f-string
* add guard clause?!
* central data fetch
* do not pass in hass, will be provided automatically
* make the linters happy
* disable constant-test warning and add commas
* worksforme
* fix link in manifest
* remove icon
* bump surepy to 0.1.5
* worksforme
* small doc fixes
* add discovery_info guard
* result of another awesome review
* and again :)
* exclude surepetcare in .coveragerc
* Add LED control
* Bump python-velbus library to 2.0.35
To have LED control available in library
* Apply black formating
* Fix no-else-return pylint error
* Changed to f-string and more dry code
* Rewrite turn_on for LED control
* Preserve new BLE device name if one seen before the last scan but not on it
* Save an indented else block
* Use async_fire_time_changed and mock_device_tracker_conf in tests
* Migrate automatic tests from coroutine to async/await
* Remove unneeded side effect
* Replace unittest with asynctest, add additional asserts to tests
* add unique id property for Vizio devices so they get added to entity registry
* update requirements
* small change to make code more readable
* update to use f-string for consistency
* fix property name
* set unique_id to none if serial number couldnt be found
* set unique_id to none
* ESN should be globally unique so no device type needed. pyvizio will set ESN to None if ESN is unobtainable
* Simplify media player source list
Google don't need a whitelisted set of modes anymore. So let's just forward any mode that we have.
* Report current mode with the setting name, not a synonym
* Refactor mode generation to support other modes
* Support sound mode as mode as well
* Adjust failing test now with sound modes
* Make sure first poll happens after sub-platforms are loaded and entities are created.
* Function dosn't need to return anything
* Don't forward entry if already forwarded it
* Don't expose flows that aren't initialised.
If a flow init does not return immediately then there is a window where our
behaviour is screwy:
* Can try to configure a flow that isn't ready
* Can show notifications for discoveries that might yet return an abort
This moves the flow discovery events and notifications to after the flow is
initialised and hides flows that don't have a cur_step from async_progress
* Fix tradfri test
* Black.
* Lint fixes
* add KEF speakers platform for the integration
This will work with the KEF LS50 Wireless and KEF LSX speakers.
The development of this code happened on https://github.com/basnijholt/media_player.kef
* rename DATA_KEF -> DOMAIN
* use aiokef v0.2.0 and support LSX and new features
* sort imports
* fix @MartinHjelmare's suggestions
* remove _CONFIGURING
* change STATE_UNKNOWN to None
* use lat and long for unique_id
* bump aiokef to v0.2.2
* use config[ATTR] instead of config.get(ATTR)
* use getmac
* fix case when MAC is None
* use host as instance lifetime id
* fix requirements
* HomeKit: update position state characteristic for covers
position state is a mandatory characteristic for HK window coverings
* Test position state characteristic
Convert values to integer if rounding precision is zero. With that a
value which is an integer before filtering can be configured to stay
integer when using precision = 0. This also aligns behavior of filters
to how rounding behaves in tempaltes (homeassistant/helpers/template.py,
function forgiving_round).
* Use config entry unique id
* Clean up
* Backwards compatiblity note
* Fix some of Balloobs comments
* Bump dependency to v66
* Black somehow missed config flow tests...
* Move set unique ID til after possibility to update existing entry
* Add SUPPORT_STREAM to supported_features.
* Implement stream_source with channel RTSP URIs.
* Add Tests for Stream Support.
* Make stream_source async.
* Removed unused import.
* Re-wrote test to remove warning, and lint error.
* Add generic command functionality to denonavr
* add minimal unit tests for denonavr
* fix import order
* simplify denonavr unit test
* handle domain specific service calls with dispatcher
* update unit tests
* update unit tests
* remove unnecessary return value
* fix handling of mock instances in unit tests
* migrate webostv to new aiopylgtv version of the library and add support
for generic commands, input/button commands, and callback state updates
* update requirements
* cleanup and bump aiopylgtv version
* update webostv unit tests
* make webostv unit tests work with python 3.7
* cleanup for code checks
* cleanup and code review
* make all client request functions coroutines
* make host required for webostv configuration
* remove generic command and button functionality plus related cleanup
* fix previous track function
* update unit tests
* fix imports for unit tests
* update unit test
* further unit test updates
* remove unnecessary setup call in unit tests
* restore previous behaviour with client key config file in hass configuration directory
* Refactor ZHA component tests fixtures.
* Add tests for ZHA device discovery.
* Refactor ZHA registry MatchRule.
Allow callables as a matching criteria.
Allow sets for model & manufacturer.
* Minor ZHA class registry refactoring.
Less cluttered strict_matching registrations.
* Add entities only if there are any.
* Migrate rest of ZHA platforms to ZHA registry.
* Pylint fixes.
* Update lock.py
Allow different command and state topic + different command and state values.
* Formatting updated after black run
* TC updated to reflect different state & cmd values
* Abbreviations for lock states added
* additional non-default state test
* whitespaces fixed
* black formatting run
* [solaredge] Reduce Severity of Log Line
This log error happens frequently for some sites, but it shouldn't be an error.
It is expected, per the SolarEdge Monitoring API, that some sites do not
support this information, and the expected result is that this would be
empty (see comments on #27959).
Fixes#27959
* Fix a typo
Co-authored-by: Fabian Affolter <mail@fabian-affolter.ch>
* Added support for Somfy RTS wireless power socket and
Somfy Temperature Sensore Thermos Wirefree io
* Added code formatting fixes for commit 5faaf9c
* added support for RollerShutterRTSComponent from Somfy
* Added support for RTS roller shutter in set_cover_position
* Add support for Somfy RTS power socket and Somfy io temperature sensor
* black and isort fixes
* homematic: Add host port config for HMIP-only CCUs
When adding a host (CCU) to the homematic component currently the hardcoded port 2001 is used to communicate with it.
However that port is only available on the target if the target supports HM (wireless) protocol which is not the case e.g. for
the Hass.io Homematic CCU addon when running in HMIP-only mode with the HMIP-RFUSB stick.
This allows to change the port home assistant uses to talk to the CCU in order to provide services under hte homematic homain, e.g. homematic.set_variable_value
The default value for this option is the old hardcoded value this the change should be backwards compatible with existing configurations.
* Change style of config retrieval
* Added localip component
* Split config and core logic, and migrate to sensor platform (requested by @MartinHjelmare)
Also allow overriding the sensor name via the config
* Tweak docstring
Co-Authored-By: Fabian Affolter <mail@fabian-affolter.ch>
* Initial support for config entries
* Rename localip to local_ip (1/2)
* Rename localip to local_ip (2/2)
* Add test for config_flow
* Split and rename tests
* Remove unneeded code from config_flow
* Implement configuration as config entry import. Other misc requested changes from code review.
* Fix tests
* minor code review fixes
* remove unneeded code
Co-authored-by: Fabian Affolter <mail@fabian-affolter.ch>
* Store capabilities and supported features in entity registry
* Restore states at startup
* Restore non-disabled entities on HA start
* Fix test
* Pass device class from entity platform
* Clean up restored entities from state machine
* Fix Z-Wave test?
* fix handling of symlinked device decriptors
* make check for symlinked paths more efficient
* make variable names pylint compliant
* move sync io during setup and device connect/disconnect to executor thread pool
* move remaining sync io during setup to executor thread pool
* remove unnecessary lambda functions
* Added support for Somfy RTS wireless power socket and
Somfy Temperature Sensore Thermos Wirefree io
* Added code formatting fixes for commit 5faaf9c
* added support for RollerShutterRTSComponent from Somfy
* Added support for RTS roller shutter in set_cover_position
* added support for enocean window handle FA 10 00 (Hoppe)
* removed spaces in empty lines
* removal of rawdata attribute / code style
* isort fix
* PyLint fixes
* Improvements after review suggestions: rename device class to sensor type to avoid ambiguousness
* added import for DEVICE_CLASS_POWER from const.py
* removed window handle unit
* Pull track position from MPD status()
This allows the progress bar to work when using the media-control card in lovelace.
* Actually commit flake8 fix!
* Extra documentation.
Mainly to trigger CI rerun.
* Updated to use self._media_position
* Add support for HobbyBoards sensors: Hub, Humidity, Moisture, PulseCounter
Add support for an owserver running on a remote host
* Cleanup and fixes for style/etc
* Forgot to convert to f-strings.
* Update with changes requested by @MartinHjelmare
* Pylint
* Fix to None
* Reverse logic for hobbyboard test to eliminate pylint complaint
* Modified manifest to list myself as codeowner
* Move some functions down into OneWireProxy instead of the top OneWire
* Oops, missed some decode()'s
* And another!
The number of total blocks is always a round number. There can't be .1 or .11 blocks for example. The output is now always formatted with two decimals that are always 00.
* Add support for input_number entities
* Update homeassistant/components/alexa/capabilities.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Removed get methods to directly access required attributes dicts.
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* fixed parsing of current to float in service set_current
* Added optional name in the config file in order to get a better entety naming (easier to find)
* fix parsing of all parameters to service calls
* addressed code review comments + updated pypi dependency
* config name imported from cont.py + minor naming changes to be more clear about the meaning of a sensor
* removed name in config again, use product name gathered from the charging station instead
* implemented suggested changes
* changed variable naming as requested
* Mechanism to rediscover a discovery that was ignored
* Add core config entry tests for new rediscover step
* Add tests for homekit_controller implementation of async_step_rediscover
* Rename rediscover to unignore
* Comment the new ignore/unignore mechanisms
* fix binary sensor offline/online
fixed self._handle_update on line 66 to produce args, kwargs.
Updated the binary sensor to check the correct index in the tuple.
* Fixed Standby switch
Set standby switch to poll in order to get status when homeassistant starts up.
Updated the index for the switch to get the status from the tuple.
* Fix imports so it works in custom_components
* Rework tado component
* Code cleanup
* Remove water_heater
* Address pylint warnings
* Remove water_heater from components
* Raise PlatformNotReady when we couldn't connect
* Revert PlatformNotReady since we are not a platform
* Add debugging information
* Add fallback setting
* Import with relative path
* Address race condition
* Cleanup
* Catch 422 Errors and log the real error
* Use async_schedule_update_ha_state to update the entities
* Forgot the True
* Include all SSDP data in discovery info
* Use UPnP device description as discovery info, inject some SSDP attrs
* Clean up attribute names
* Adapt existing SSDP flows to changed attribute names
* Prefix all SSDP UPnP attribute name constants with ATTR_UPNP, tweak a bit
* Make name customizable for nmbs live sensors
* Change order of the live name
* Added unique id to live nmbs sensor
* Revert changing the name of the live sensor
* Refactor capabilityResources object into class.
Implement semantics object to support open, close, raise, lower utterences.
Replace covers PercentageController with RangeController.
Add semantics for covers.
Remove PowerController for covers.
Add new display categories.
Add new items to Alexa Global Catalog.
Implement garage door voice PIN code support though Alexa app.
Fixed bug with getting property for ModeController.
Fixed bug were PercentageController AdjustPercentage would exceed 100.
* Comment fixes in Tests.
* Reorder imports.
* Added additional tests for more code coverage.
* Added and additional test for more code coverage.
* Explicitly return None for configuration() if not instance of AlexaCapabilityResource.
* Add unit_of_measurement to various Transmission sensors
Without unit_of_measurement, the history graph card will not show those sensors as line chart.
* Change Counts to Torrents.
This brings back support for Z-Wave thermostats
of SETPOINT_THERMOSTAT specific device class.
Such devices don't have COMMAND_CLASS_THERMOSTAT_MODE
and are now handled separately.
* Fix https://github.com/home-assistant/home-assistant/issues/29853
* Run script.gen_requirements
* Update to store Token File in config directory
* Update to store Token File in config directory
* Update to store Token File in config directory
* fix binary sensor offline/online
fixed self._handle_update on line 66 to produce args, kwargs.
Updated the binary sensor to check the correct index in the tuple.
* Fixed Standby switch
Set standby switch to poll in order to get status when homeassistant starts up.
Updated the index for the switch to get the status from the tuple.
* Update manifest.json
Updated sensor to use the latest version of the API to be able to use the new features.
* Updated sensor to use new API features. Configurable credentials and Inverter last reported date.
* EnvoyReader is passed to Envoy uses async update()
* Fixed pydocstyle warnings
* Fixed merge issue. Had extra variable.
* Added warning message when authentication for Inverter data fails
* Added continue after exception for loop
* Moved if statement outside of try/except
* Removed unneeded boolean attribute
The Fibaro FGR-222/FGRM-2222 ZWave roller shutter devices have a proprietary
command class to support setting the tilt angle of venetian blinds (= type of
window cover). This PR adds the support to HA for this. This allows the user to
set the height of the blinds and the tilt angle separately.
Original patch by @ChristianKuehnel #24405.
* Making tplink light more responsive.
* Adding light platform tests.
* Addressing PR feedback.
* Mocking the module, not the api.
* Using sync method for background update.
* Show current effect in yeelight device
* Use device_state_attributes instead of state_attributes
* Add early return in set effect
* Make single if elif chain
* Fix if elif
* Fix if elif
* Add unique ID to config entries
* Unload existing entries with same unique ID if flow with unique ID is
finished
* Remove unused exception
* Fix typing
* silence pylint
* Fix tests
* Add unique ID to Hue
* Address typing comment
* Tweaks to comments
* lint
Using the locals parameter makes it so that the code of a Python script runs as
if it were in the body of a ``class``. One effect of this is that functions
defined as part of a script cannot call one another directly.
Fixes: #24704, #13653
This brings back support for Z-Wave thermostats
of SETPOINT_THERMOSTAT specific device class.
Such devices don't have COMMAND_CLASS_THERMOSTAT_MODE
and are now handled separately.
* Bump adb-shell to 0.1.0 and androidtv to 0.0.36
* Add test for setting up two devices
* Add test_setup_same_device_twice
* Fix test_setup_two_devices
* Fix coverage
* Coverage
* Fix flaky 'test_setup_two_devices'
* Another stab at coverage
* Rename 'address' back to 'host'
* Fix https://github.com/home-assistant/home-assistant/issues/29853
* Run script.gen_requirements
* Update to store Token File in config directory
* Update to store Token File in config directory
* Update to store Token File in config directory
* Implement Alexa.EventDetectionSensor Interface
* Removed references to PR #28218 not yet merged into dev.
* Update tests to include Alexa Interface
* Guard for `unknown` and `unavailible` states.
* Fixed Unnecessary "elif" after "return"
* Adding filters for keypad dimmers and smoke sensor
* ran black --fast as suggested
* Adding filters for keypad dimmers and smoke sensor
* ran black --fast as suggested
* Update configuration schema to support multiple Pi-holes
* Construct sensors for each configured Pi-hole
* Ensure each Pi-hole has a unique name
* Update services to handle multiple Pi-holes
* Update tests for multiple configurations
* Refactor tests to support service testing
* Fix else-raise per pyliunt
* Per code review, add all entities in a single call
* Per code review, add the default name as default.
* Per code review, add cv.ensure_list to prevent breaking change
* Per code review, move name validation to schema
* Remove default name
* Per code review, validate api_key in schema definition
* Per code review, rename variables
* Per code review, use list comprehension
* Ensure unique slug names in config validation
* Per code review, refactor to CoroutineMock
* Fix adding sensor entities
* Per code review, refactor mock function creation
* Per code review, refactor mock function return values
* Added dummy user-agent to http request to fix setup error
* Replace dummy user-agent with the user-agent of the global home assistant session
* Adjust comment and rename user-agent constant
* Added dummy user-agent to http request to fix setup error
* Replace dummy user-agent with the user-agent of the global home assistant session
* Adjust comment and rename user-agent constant
* Added a check for Connect actually returning something before telling the user the setup succeeded
* Added handling for KeyError in case API returns empty response, formatting
* Trying to please the linter
* Fixing issue where wrong sleep state entry was being used. closes #28370,#29397
* Fixing formatting.
* Sorting imports to get black checks to pass.
* Using lambda for getting latest sleep serie.
* Re-authorize Huawei LTE on login required error
Closes https://github.com/home-assistant/home-assistant/issues/29531
* Eliminate one indented "else" block
* Convert get_data from inline to instance method
* Use .get instead of [] for checking subscriptions for clarity
* Include MAC address in device state attributes for absent devices too
* Use MAC address as default name whether device is connected or not
* Fix initialization of known entities
Closes https://github.com/home-assistant/home-assistant/issues/29354
* Limit available heat/cool modes for HomeKit thermostats.
The Home app only shows appropriate modes (heat/cool/auto) for the device. Depending on the climate integration, disabling the auto start might be needed.
* Include improved mapping for HVAC modes in tests
* add skeleton to retrieve zigbee groups
* get single group
* add a group
* return group members with group
* add comment
* fix group members
* add function to add device to group
* add group members
* add remove from group method
* add api to remove members from group
* add remove groups method
* clean up group add and remove
* fix remove group
* fix remove groups
* add api to get only groupable devices
* change var init
* add tests
* address review comment
* use isort to sort imports for components starting with 'z'
* add skip to end of zha/core/channels/__init__.py
* put 'pylint: disable=import-error' at the right place
* remove the import of config_flow in zha/__init__.py
According to @balloob it is no longer needed.
* revert previous commit
* isort:skip homeassistant/components/zha/__init__.py completely
* iCloud: setup ConfigFlow and prepare for more platforms
- add config flow + tests
- fix existing services
- add play_sound & display_message services
- document services
- can use devices with the same name
- prepare to add sensor platform
* Review : not copy account conf
* Review: Safer test patch
* Review: remove reset_account
* Review: Use executor_job while IO
* Review: Use executor_job while IO 2
* Review: use hass.helpers.storage.Store()
* Review: no IO in tests
* Remove reset from services.yaml
* Review: remove authenticate.return_value = Mock()
* Review: do not initialize the api with the mocked service
* isort
* Review: @MartinHjelmare Test config flow with all steps
* Review: Fix failed tests names
* Codevov: Add one missing test
* Move imports to top for homekit
* Moved back a couple imports, added annotation to disable import-outside-toplevel
* Fix all tests in test_homekit.py
* Wrap connection attempt by try/except block so an individual downed doorbird does not fail the whole platform
* Fixed lint warning
* Disable too-broad-exception pylint warning since the whole point of this is to catch all exceptions and log them while letting processing continue; I don't disable a lint warning lightly, but this is the entire intent of this PR.
* Fixed name of pylint warning to broad-except
* Use _LOGGER.exception to get the stack trace too, per PEP8 recommendation for a bare Exception being caught.
* per @balloob, switch to just catching OSError on a narrow block; I'm not sure this protects all problems with Doorbird device startup, but it protects against the primary one I experience.
* added signalmessenger integration
* allows to send a message (with an attachment) to one or more
recipients
* added signalmessenger documentation to manifest file
* remove debug logging from signalmessenger integration
* add signalmessenger to .coveragerc
* fixed typo in signalmessenger manifes
* moved service specific code to own pypi library
* updated pysignalclirestapi dependeny in manifest.json
* added pysignalclirestapi requirement for signalmessenger component
* fixed typo in codeowners
* reworked signalmessenger integration based on code review input
* updated requirements for signalmessenger
* small code improvements in signalmessenger integration
* no need to use the get() method to access dict parameters that are
required
* small changes in signalmessenger integration
* re-ordered import statements
* removed empty "requirements" list (not needed)
* changed import order in signalmessenger integration according to PEP 8
* used isort to order includes in signalmessenger integration
* renamed signalmessenger to signal_messenger
* renamed signalmessenger to signal_messenger in CODEOWNERS file
* changed documentation url in signal_messenger integration to new name
* changed signal messenger naming in .coveragerc
* Adding tests for vera component.
Fixing update bug in the vera climate platform.
* Updating requrements file.
* Moving vera stop to a job.
Sorting imports.
* Addressing simple PR feedback.
* Splitting tests into platforms.
* Mocking controller instead of using requests_mock.
* Updating pyvera to use version that stops threads quickly.
* Updating requirements files.
* Mocking the pyvera module, not the API.
* Addressing PR feedback.
Handling start/stop of patch in fixture.
Removing unecessary code.
* Using generator
The obj["state"] contains already several named return states as
following: "grass cutting", "trapped recovery", "searching wire",
"following wire", "searching home", "home", "idle"
And with the batteryChargerState also the "charging"
Fixes#455
* Don't escape command parameters
Escaping should only be done when using the tcp socket cli interface which we aren't.
* Updated comment to reflect the changes
* Add clear traffic statistics service
* Add reboot service
* Register services as admin ones
* Make URL optional when there's only one router configured
* Eliminate one if/else indent level
* Remove unnecessary .keys() with sorted()
* Add quarterly tariff period to utility_meter
Many tariff cycles in Australia are 3 monthly (quarterly).
Add quarterly tariff cycle handling to the utility_meter component.
* Add quarterly tariff period to utility_meter
Many tariff cycles in Australia are 3 monthly (quarterly).
Add quarterly tariff cycle handling to the utility_meter component.
* Change date for test for utility_meter
* Add quarterly tariff period to utility_meter
Many tariff cycles in Australia are 3 monthly (quarterly).
Add quarterly tariff cycle handling to the utility_meter component.
* Move imports to top for google_assistant
* Fix pylint error caused by isorting the imports with noqa: F401
* Move back an import because of circular dependency, add annotations
* Add Elgato Key Light integration
* Remove passing in of hass loop
* Tweaks a comment
* Tweaks a function name
* Ensure domain namespace in data exists in entry setup
* Move imports to top for zha
* Move back some imports, add annotation for disabling import-outside-toplevel
* Move import config_flow before import api
* Include MAC address in device state attributes for absent devices too
* Use MAC address as default name whether device is connected or not
* Fix initialization of known entities
Closes https://github.com/home-assistant/home-assistant/issues/29354
* Move imports to top for soundtouch
* Format with black
* Fix pyling error by renaming variable
* Rename entity instances to include entity instead of device
* Limit available heat/cool modes for HomeKit thermostats.
The Home app only shows appropriate modes (heat/cool/auto) for the device. Depending on the climate integration, disabling the auto start might be needed.
* Include improved mapping for HVAC modes in tests
* Add input_boolean reload service.
* Add reload test.
* Address comments.
Register reload service as an admin service
Setup platform even if there're no entities
* Move imports to top for mochad
* Fix test test_light.py for mochad
* Fix test test_switch.py for mochad
* Make intra package imports relative in switch and light
* Move imports to top for statistics
* Added recorder to manifest.json
* Deleted recorder from manifest.json, moved import back into method, added pylint disable comment
* Moved recorder util imports away from the top
* Move recorder imports to top, add recorder as after_dependency to manifest.json
* Move imports to top for islamic_prayer_times
* Fix test_sensor.py for islamic_prayer_times
* Format test_sensor.py with black
* Fix tests for islamic prayer times sensor
* Report unavailable entites to google.
Entities should only removed when removed from HA. Removing a temporarily unavailable entity from google causes it to need to re-configured once it become available again.
* Fix test for unavailable entities
* Make async_report_state take agent_user_id
* Attempt to store synced agents
* Drop now not needed initialization
* Make sure cloud uses the all sync on changed preferences
* Some more places to use all version of sync
* Get the agent_user_id from the request context if available
* Minor cleanup
* Remove the old fixed agent_user_id for cloud
Instead pass along cloud_user where appropriate.
* async_delay_save takes a function
* Adjust test for delayed store
* Remove unused save function
* Add login check.
* Updated heatmiserV3 initial commit
* Fixing heatmiser component
* Updated codeowners and heatmiserV3 version
* Updating files as part of PR process
* Removed extra _LOGGER statements.
* Added in HVAC_MODE_OFF to allowed states to track whether heating on/off
* Handling PR comments
* Removed legacy tests
* fixing pylint errors
* Update homeassistant/components/heatmiser/climate.py
Removed .get from config
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/heatmiser/climate.py
Removed .get from config
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/heatmiser/climate.py
Removed .get from config
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Updated climate based on latest feedback
* Removed cast to int and update requirements
* Update requirements
* Updated heatmiser deps
delete incorrect 'mdi:brightness-3' in final
```
def icon(self):
"""Icon to use in the frontend, if any."""
return MOON_ICONS.get(self.state, "mdi:brightness-3")
```
which still shows in the sensors attributes
* Added check for "name" channelMetada attribute
* Added/changed smart home media player tests for added value name in chanelMetadata payload section
* Since Alexa only expects a number/callSign/affiliate in the returned response, returning "name" is not technically valid. Modified to return the value in the callSign field instead since it's a text value. Since there is no returned channel number, cannot return a true numeric value in "channel" field
* Improve Alexa interface selection for binary sensors
This allows the sensor to work correctly as a contact or motion sensor
in alexa, if the user overrides its display category as such.
* add tests
* Add broadlink remote control platform
* Fix order of the imports
* Add remote.py to .coveragerc
* Optimize MAC address validation
* Use storage helper class and improve code readability
* Add me to the manifest as a code owner
* Fix dosctring
* Add me to the code owners
* Remove storage schemas, rename storage keys and improve readability
* move service constants to const.py, move all custom xiaomi_miio services to xiaomi_miio domain
* update service names
* try to fix black error
* try black formatting again
* final black formatting attempt
* update service names to reflect platform
* fix typo
* Clear state on exception
Clear state if querying the device fails. The state is then set to unknown, so it can be tracked if a miflora device isn't responding any more.
* Add available()
Signal valid data via available()
* Add ATEN PE component for ATEN eco PDUs
* aten_pe: Require host configuration
* aten_pe: Do not import from other integrations
* aten_pe: Include unnamed outlets
* aten_pe: Avoid get() for config entries having default values
* aten_pe: Fix documentation URI
* aten_pe: Remove unused return value
* aten_pe: Update atenpdu lib to 0.2.0 for asyncio
* aten_pe: Raise exception if initialization fails
* aten_pe: Update atenpdu lib to 0.3.0 for improved exception handling
* Add Huawei LTE binary sensor support, mobile connection sensor
* Improve mobile connection sensor icon docstring
* Remove device class for permission to use a more descriptive icon
* Added device trigger to alarm control panel
* Added supported features to check that device has certain trigger
* Fixed tests for device_trigger
* Fixed pylint error
* Removed pending trigger and removed trigger condition
* Resolve hosts for fritzbox_callmonitor
If the configuration supplied "host" is not an IP address, try resolving it
* always use gethostbyname
Instead of just checking whether it is an IP and if it isn't try to resolve; just resolve it; IPs will be returned unchanged, and hostnames will be resolved.
* Catch error if the hostname cannot be resolved
* Don't fallback to default host
If the hostname cannot be resolved; don't try to fallback; just print the error message.
* Fail setup if hostname cannot be resolved
If the hostname cannot be resolved, log an error and stop the setup;
no entities will be then created.
* Added DSMR Reader platform
- Added DSMR Reader platform
- Updated codeowners for other components I added earlier
* Move sensor definitions to new file
* Sensor definitions in new file
* Add energy prices from MQTT
* lint fixes
* Black formatted some files
* Update .coveragerc
* Support transform methods on definitions
* Manifest mangled by Black, fixed
* Visual studio code reformatting dictionary error
* Fix issues with code, remove unrelated manifest changes
* Update CODEOWNERS
* Only create cloud user if cloud in use
* Pass context to alexa
* Update requirements
* Fix handing & design pattern for 0.30
* fix tests
* Fix lint & tests
* rename internal user
* update demo service domain and service description
* move DOMAIN and service name to const.py
* update per balloob's service name suggestion
* update service name in services.yaml
* update service name constant's name
* Adding lutron_caseta fan controller. Updated to pylutron 0.5.1
* Accidental import remain
* updating for black formatting
* Fix blank spaces
* Moving third party import
* update to 0.5.1 to pass checks
* fix deletion of new line
* Update fan.py
* Update with dev branch, update from comments, added mediumhigh
Instead of using the roku.power method, which toggles power,
implement the media_player.turn_on command for the roku component
by calling the new roku.poweron method.
Fixes#28961, but depends on upstream
https://github.com/jcarbaugh/python-roku/pull/53
* Add opentherm_gw device support
* Add support for enabling/disabling of opentherm_gw entities
* Disable sensors by default, base climate entity_id on gw_id instead of friendly_name to guarantee uniqueness
* Remove platform name from unique_id
Since 2019.1 has launched there is a perfectly reasonable (in fact the standard) case where ios component is loaded (i.e. actionable notifications) but no devices are registed for the now defunct `ios.notify` service. As such, the log warning relating to this case is no longer relevant.
* Upgrade upcloud-api to 0.4.5
* Fix UpCloud name spelling in manifest
* Update data at setup time for better initial states
* Clean up signal handlers on remove
* Signal data update on server start
To keep related binary sensor better up to date.
* Improve track_time_interval emulation for initial update
* Move request sync logic into GoogleConfig
* Return http status code for request_sync same as cloud
* agent_user_id is not optional for async_sync_entities now
* No need in checking parameter here
* Adjust some things for cloud tests
* Adjust some more stuff for cloud tests
* Drop uneccessary else
* Black required change
* Let async_schedule_google_sync take agent_user_id
* Assert return value on api call
* Test old api key method
* Update homeassistant/components/google_assistant/helpers.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Make rest sensor a little bit more flexible and allow the response to be a list with 0th element being a dictionary
* Black formatter wanted a different formatting
* Added test case for a list response with dict as 0th element
* Fixed lint error - it thinks a + STRING is an avoidance of using % sequences for log messages; I generally prefer explicit + rather than string juxtaposition for combining string literals, but sounds like that's not the standard
* Fixed test case -- I added it to the wrong scenario and need to use the one with json_attrs.
Although I originally contributed this component, I no longer use it myself and haven't been following the internal development of HA, so I'm no longer a good person to review any further changes to this component. I would therefore like to relinquish my CODEOWNER status over this component.
* Added Post Processing Jobs to NZBGet component
In the current implementation of the NZBGet component there is no way of
knowing whether NZBGet is still in the Post Processing phase of a download
job. This can be very useful information. For instance when you want to
suspend the NZBGet service when all queue items have been completed.
This change adds that additional sensor.
* Renamed Count to Jobs in NZBGet component
* change fromkeys to dict comprehension to prevent append working on a list by reference. Now each entity id has its own seperate list
* change fromkeys to dict comprehension to prevent append working on a list by reference. Now each entity id has its own seperate list
* use get instead of direct keys for dict
* change fromkeys to dict comprehension to prevent append working on a list by reference. Now each entity id has its own seperate list
* use get instead of direct keys for dict
* changed get back to []
* move service constants to const.py, update blackbird custom service domain
* Readd bluesound services.yaml entries since it should be part of a different branch
* update service domain for local_file from camera to local_file
* remove service.yaml entry in camera component as part of change
* fix test
* move constants to const.py
* add local_file/const.py to .coveragerc
* remove local_file/const.py from .coveragerc since component has tests
* add model and serial to caseta devices
* use just serial for unique id
* add display name for entity registry
* remove caseta device model
* just store device
* state and device are the same
* Update WazeRouteCalculator to 0.11
* Update WazeRouteCalculator to 0.11
* Adding new config options to Waze
* Fixing avoid subscription option
* Update WazeRouteCalculator to 0.12
There was an error in the underlying lib
* Update WazeRouteCalculator to 0.12
* Fix digest auth rest sensors
* Refactor to use request()
* Fix black complaints
* Don't rename data variable
Don't rename the data variable, appears several other sensors have been coded to rely on it
* Fix tests
test_setup_missing_schema:
Change the exception to check for to PlatformNotReady. With the change away from prepared statements, we no longer get the MissingSchema error during setup - we get it when we attempt to call the endpoint. Since the result is PlatformNotReady, which is what we want, and the error log clearly contains a note that the schema is incorrect I think this is fine.
test_setup_failed_connect & test_setup_timeout:
These aren't checking for minimum config, and they're not invoking the correct method to have the default config filled in. Therefore I've just added the correct minimum config so these can continue to test what they're there to test.
test_update_request_exception:
Testing a request exception with the assert on line 404! Excellent. Anyway, we've moved from using the requests Session object to the requests.request function - so the patch needed to be altered to ensure the RequestException was raised.
* Remove no longer needed import
* Fix binary sensor test in same way
* Explicitly include Alexa Interface to discovery response.
* Updated cloud component test to reflect additional Alexa interface.
* Updated test for recently added SeekController.
* Make sure to cast the volume_level of a universal media_player to a float
* Fix test that expects the wrong bahaviour
* Catch exception instead of checking for None
* Fix Onvif setup error with a premature end of connection on GetStreamUri wsdl call
Reconnect to onvif camera after getting profiles to fix this error :
[homeassistant.components.onvif.camera] Retrieving stream uri
[zeep.asyncio.transport] HTTP Post to http://192.168.1.15/onvif/Media:
b'<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<soap-env:Envelope xmlns:soap-env="http://www.w3.org/2003/05/soap-envelope"><soap-env:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecur
2019-09-20 01:08:51 ERROR (MainThread) [homeassistant.components.camera] Error while setting up platform onvif
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/aiohttp/client_reqrep.py", line 553, in write_bytes
await self.body.write(writer)
File "/usr/local/lib/python3.7/site-packages/aiohttp/payload.py", line 231, in write
await writer.write(self._value)
File "/usr/local/lib/python3.7/site-packages/aiohttp/http_writer.py", line 101, in write
self._write(chunk)
File "/usr/local/lib/python3.7/site-packages/aiohttp/http_writer.py", line 67, in _write
raise ConnectionResetError('Cannot write to closing transport')
ConnectionResetError: Cannot write to closing transport
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 150, in _async_setup_platform
await asyncio.wait_for(asyncio.shield(task), SLOW_SETUP_MAX_WAIT)
File "/usr/local/lib/python3.7/asyncio/tasks.py", line 442, in wait_for
return fut.result()
File "/usr/src/homeassistant/homeassistant/components/onvif/camera.py", line 110, in async_setup_platform
await hass_camera.async_initialize()
File "/usr/src/homeassistant/homeassistant/components/onvif/camera.py", line 168, in async_initialize
await self.async_obtain_input_uri()
File "/usr/src/homeassistant/homeassistant/components/onvif/camera.py", line 266, in async_obtain_input_uri
stream_uri = await media_service.GetStreamUri(req)
File "/usr/local/lib/python3.7/site-packages/zeep/asyncio/bindings.py", line 13, in send
options["address"], envelope, http_headers
File "/usr/local/lib/python3.7/site-packages/zeep/asyncio/transport.py", line 107, in post_xml
response = await self.post(address, message, headers)
File "/usr/local/lib/python3.7/site-packages/zeep/asyncio/transport.py", line 95, in post
proxy=self.proxy,
File "/usr/local/lib/python3.7/site-packages/aiohttp/client.py", line 497, in _request
await resp.start(conn)
File "/usr/local/lib/python3.7/site-packages/aiohttp/client_reqrep.py", line 844, in start
message, payload = await self._protocol.read() # type: ignore # noqa
File "/usr/local/lib/python3.7/site-packages/aiohttp/streams.py", line 588, in read
await self._waiter
aiohttp.client_exceptions.ClientOSError: [Errno None] Can not write request body for http://192.168.1.15/onvif/Media
* Add code comment
* Update camera.py
* Lint.
* Improve z-wave thermostat support
Discover thermostat using COMMAND_CLASS_THERMOSTAT_MODE
so that it is a single entitiy in case there are multiple
setpoints. z-wave docs mention it is always present.
Add support for single/range target temperature depending
on the current thermostat mode.
* Remove debug print
* Refactor Z-Wave dynamic setpoint(s) selection
- use explicit mapping between modes and setpoints as defined in
Z-Wave specs
- add tests for away (2 setpoints) and heat eco (1 setpoint) modes
* Add non-standard thermostat mode aliases
* Added availability_template to Template Cover platform
* Added availability_template to Template Binary Sensor platform
* Added availability_template to Template Fan platform
* Added availability_template to Template Light platform
* Added availability_template to Template Sensor platform
* Added availability_template to Template Switch platform
* Added availability_template to Template Vacuum platform
* Added availability_template to Template Lock platform
* Added to test for invalid values in availability_template
* Black and Lint fix
* black formatting
* Added to test for invalid values in availability_template
* black
* Added to test for invalid values in availability_template
* Added to test for invalid values in availability_template
* simplified exception handler
* Fixed Entity discovery big and coverage
* Added to test for invalid values in availability_template
* flake8
* fixed component ID in test
* Added to test for invalid values in availability_template
* Added to test for invalid values in availability_template
* Made availability_template redering erorr more concise
* Cleaned template setup
* I'll remember to run black every time one of these days...
* Refactored Template initialisation
* Refactored Template initialisation
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Fix import order (pylint)
* Fix import order (pylint)
* Fix import order (pylint)
* Fix import order (pylint)
* Fix import order (pylint)
* Fix import order (pylint)
* Fix import order (pylint)
* Fixed linting issues
* Moved availability_template rendering to common loop
* Moved availability_template rendering to common loop
* Moved availability_template rendering to common loop
* Moved availability_template rendering to common loop
* Removed 'Magic' string
* Removed 'Magic' string and removed duplicate code
* Removed 'Magic' string
* Removed 'Magic' string
* Brought contant into line
* Refactored availability_tempalte rendering to common loop
* Removed 'Magic' string
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* reverted _available back to boolean
* reverted _available back to boolean
* reverted _available back to boolean
* reverted _available back to boolean
* reverted _available back to boolean
* reverted _available back to boolean
* reverted _available back to boolean
* Fixed tests (magic values and state checks)
* Fixed tests (magic values and state checks)
* Fixed tests (async, magic values and state checks)
* Fixed tests (async, magic values and state checks)
* Fixed tests (async, magic values and state checks)
* Fixed tests (async, magic values and state checks)
* Fixed tests (async, magic values and state checks)
* Removed duplicate
* Clean up and remove debug
* Reverted Dev Container Change
* Add supported_features to Alarm Control Panel
* mark supported_features abstract
* Add SF to async_register_entity_service
* fix test
* Add missing SF SUPPORT_ALARM_ARM_CUSTOM_BYPASS
* isort
* fix async_register_entity_service
* Update alarm_control_panel.py
* Added Alexa.ModeController to cover entities.
* Added synonyms for directives.
* Updated tests for additional synonyms for directives.
* Added Alexa.ModeController to cover entities.
* Sacrifice unused variable in split() to please the Pylint gods.
* Removed duplicate instance check.
* Corrected variable name, clarified definition and consistency.
* Changed list to tuple.
If an entity is in unavailable state in HA, we expose this
as unreachable to Hue clients. This helps when troubleshooting
Hue issues because you can now receive feedback if there is an issue
on the HA side.
* Connect websocket when platforms ready, not when HA is ready
* Use callbacks from platform setup tasks instead
* Convert setup to async
* Apply suggestions from code review
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Connect websocket when platforms ready, not when HA is ready
* Use callbacks from platform setup tasks instead
* Convert setup to async
* Apply suggestions from code review
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* rename request to response, isort and black fixes
* Log exception details
* Add status code to success log, reformat log
* new syntax for response
* changed info to debug
* Add Flume Sensor
Add support for Flume API and sensor
* Add support for choosing timezone
Timezone is now a required option in configuration.yaml
* Add Flume to coveragerc and CODEOWNERS
Add flume to be ommited from testing. Add @ChrisMandich as Flume Code owner
* Revert "Add Flume to coveragerc and CODEOWNERS"
This reverts commit 0b27437a3b.
* Update manifest.json
Added Documentation URL for Flume to HASS.IO
* Update manifest.json
Added missing Newline at EOF.
* Update sensor.py
Update sensor to not required Device ID for configuration. Now loops through all available Type 2 devices and adds them as an entity.
* Update Manifest, CODEOWNERS, and manifest.json
Resolved errors related to code owners and requirements. Using hassfest and gen_requirements_all
* Update sensor.py
Implemented recommendations from @Quentame. Including time zone from Home Assistant, Updated variable names, and Consolidated duplicate functions.
* Implemented suggested changes from @Quentame
This includes: components name, using f-strings instead of concat, snake_case for variables, constants for the addition of future device types, clearer errors, and removed variables no longer in use.
* Update sensor.py
Restored unit_of_measurement. Updated return to "gal".
* Address pylint errors
* Update sensor.py
Include protected attributes in setup_platform.
* Address Pylint errors
homeassistant/components/flume/sensor.py:63:11: W0703: Catching too general exception Exception (broad-except)
homeassistant/components/flume/sensor.py:133:8: R1720: Unnecessary "else" after "raise" (no-else-raise)
homeassistant/components/flume/sensor.py:162:8: R1705: Unnecessary "else" after "return" (no-else-return)
homeassistant/components/flume/sensor.py:236:8: R1720: Unnecessary "else" after "raise" (no-else-raise)
* Update sensor.py
I'm okay with the broad exception clause.
homeassistant/components/flume/sensor.py:65:11: W0703: Catching too general exception Exception (broad-except)
* Update sensor.py
Add more specific exceptions for Try/Except.
* Update Flume Sensory.py
add requirements, exclude from tests, us pyflume pypi package.
* Update sensor.py to support latest pyflume package
* Update manifest
provide better flow of manifest and easier readibility.
* Update manifest.json
Reccomended by @balloob as it is already a core requirement
* Update sensor.py
Add proposed changes from @balloob
* Update requirements_all.txt
pytz is a core dependency, removing flume's requirement for it.
* Update sensor.py
Added @MartinHjelmare recommended changes.
* Update sensor.py
Resolving PyLint error
* Update sensor.py
Remove `KeyError`. Add length check for flume entity list before adding.
* Update sensor.py
* Update pyflume version
* Update imports with isort
* Add line break between standard library and thirdparty imports.
* Remove throttle from sensor.py
* Added the Proxmox VE integration
* Fixed code as described in PR #27315
* Fixed small linting error
* Fix code as described in PR #27315 code review
* Improve code as described in PR #27315
It is incorrect to return None as a result of proprety call because in such a case state_attr call will return None as well, which means "Unknown attribute".
Instead for preset_mode(s) PRESET_NONE constant should be used for consistency.
* Fix Synology camera whitelist
If whitelist config is set, not camera is added to HA at all.
* Fix Synology Camera whitelist
Fix typo in config key.
* Update camera.py
Access config dict the voluptuous way
* have sensor.moon use state dependent icons
Material design icons have icons for all sensor.states, let's use these natively in the component.
Based on the Season icons, tried to change accordingly.
* Update sensor.py
added state constants
* Update sensor.py
fixed missing mdi:
* order of constants. moon icons and use self.state
change order of constants to alphabetical, changed order in Moon_icons to alphabetical, used self.state for icon lookup
* replace the strings
replace the strings for self.state with the constants
* removed quotes
* removed spaces, empty line
* local Black
* Sort imports and move import to file header
Co-authored-by: Fabian Affolter <mail@fabian-affolter.ch>
* Add component VersaSense
* Updates based on review
* Changes based on review
* Fixed whitespace
* Fixed lines too long
* Fixed lines too long
* Formatted using black
* Added available property
* Set unavailable property appropriately
* Conversion to f-strings
* Load platform only once per platform
* Fixed duplicate identifiers across multiple devices
* Single call to async_add_entities during setup
* Removed unnecessary async/await syntax
* Added constants for key-value pairs
* Removed async/await syntax
* Added breaks in measurement check
* Added guard clause for discovery_info
* first version of new integration
* moved icon to shared consts
* added unit tests
* transformed from geolocation to sensor integration
* alert level is now the state of the sensor
* adopted unit tests
* fixed comment
* keep all sensors registered even if the feed update fails intermittently
* bumped version of upstream library
* bumped version of integration library
* regenerated requirements
* bumped version of integration library
* bumped version of integration library
* fixed generated file
* removed commented out code
* regenerated config flow file
* update to latest integration library version
* simplified code
* removed debug log statement
* simplified code structure
* defined constant
* use core interfaces
* moved test and fixture
* sorted imports
* simplified patching
* moved fixture to central config file
* Fix Synology camera whitelist
If whitelist config is set, not camera is added to HA at all.
* Fix Synology Camera whitelist
Fix typo in config key.
* Update camera.py
Access config dict the voluptuous way
* Fixed multi extruder/beds/chambers index issue, #28130
* Switched from .format to f style name formatting
* Fixed incorrect indexing
* Removed VS files
* Removed not need temp_id subtraction
* Removed VS files
* Fixed access mode
* Fixed access mode
* Fixing access mode - again
* Add bandit to pre-commit and CI, use to catch known vulnerable XML parsing
* Use defusedxml instead of direct xml.etree to parse XML
* Move config to tests/bandit.yaml
* Rework Comfoconnect sensor platform
* Sort ATTRS and fix icon
* Add unique_id to fan
* Use a different signal per sensor type
* Add more logging
* Swap to be sure.
* Remove -fan suffix from unique_id
* Remove malformed pylint disable markers
* Remove some unused imports
* Remove some unneeded lint exclusions
* Remove more unneeded lint exclusions
* Add specific codes to all noqa's
* Fixed multi extruder/beds/chambers index issue, #28130
* Switched from .format to f style name formatting
* Fixed incorrect indexing
* Removed VS files
* Removed not need temp_id subtraction
* Removed VS files
* Fixed access mode
* Fixed access mode
* Fixing access mode - again
* First commit
* First working release, but there's a lot to do
* Added support for preset_modes
* Refined logic
* Added translations for config_flow
* Updated translations
* modified: homeassistant/components/hisense_aehw4a1/climate.py
* modified: climate.py
* Updated library to latest version
* Small changes
* Null states when AC off
* Minor fixes
* Latest updates for TOX
* First commit
* First working release, but there's a lot to do
* new file: requirements_test_all.txt
* Added support for preset_modes
* Refined logic
* Added translations for config_flow
* Updated translations
* modified: homeassistant/components/hisense_aehw4a1/climate.py
* modified: climate.py
* Updated library to latest version
* Small changes
* Null states when AC off
* Minor fixes
* Latest updates for TOX
* new file: requirements_test_all.txt
* Fighting with tox
* vs Tox round 2
* Isort and updated requirements_test_all.txt
* Fighting with lint
* Implemented available state
* Changed exception type after Travis-ci pylint fails
* Support entry in configuration.yaml
* Removed commented code
* Switched to async
* Minor changes
* Updated library and fixed pylint errors
* Code optimization
* Implemented static ip addresses in configuration.yaml
* Reverted to existing constant
* Corrected pylint wrong-import-order
* Recovery from nuke event (messing all while rebase)
* Resolved Ci error
* Changes for PR
* Corrected temp scale for frontend
* Added test for config entry from configuration.yaml
* Updated dependency
* Check on manual config
* Imported custom exceptions and modified import config
* Optimized
* Change based on PR revision
* Added logging for failure event on manual config
* Tests added but to be corrected
* Edited tests
* Tests updated to ensure no I/O
* Working on tests
* Cheanges based on revision for PR
* Setting librey exception as direct side_effect in test
* Final changes for PR
* Redundand on command solved
* Improved AC logic
* bump home mitemp_bt to 0.0.3. It has an important bugfix for reading temperatures under 10 grade
* adjust the version number for mitemp_bt up to 0.0.3
* Start
* Lock init
* More stubbing
* Final pieces for PR
* Fixed incorrect property access
* Updaed .coveragerc
* Ensure we can handle unknown states
* Account for lock's offline property
* Account for device online
* Unload components concurrently
* Handle unknown states more gracefully
* Add config entry and device support to Demo
* Some more devices
* Fix tests using demo
* Review comments
* Update config_flow.py
* Revert
* Disable pylint
* Use travis_wait only with pylint
pylint is the only job that is expected to be silent for extended time.
For others such a silence is a sign of a problem and using travis_wait
just lengthens the wait, and makes things harder to follow and debug,
because it also suppresses output in the web UI.
* Use pytest-xdist in tox
Similarly as in Azure.
* add support for entity_id as state of entity
* add circular reference detection
* voluptuous instead of regex
* wait for EVENT_HOMEASSISTANT_START
* move delayed_sensor_update to async_added_to_hass
* add @callback decorator
* remove nested entity resolving
* Update Homekit climate.py to remap current mode
This update changes the mapping of Homekit's Current Mode Heating/Cooling State to show the HASS Hvac_action attribute as "idle" instead of "off" when the returned value is 0.
* Update climate.py
removed imported constant no longer being used (CURRENT_HVAC_OFF)
* corrected update to climate.py
trying again to remove unused constant.
* Update test_climate.py
* removed "change" comment
The added comment describing the change was not needed and should not be included, as it will already be described via "git annotate" (per @jc2k)
* Added bluesound speaker group attribute.
* Changed code to fix failing tests.
* Changed condition checking for empty group list.
* Investigating CI pipeline error
* Changed back to the code that passed CI earlier
* Changed condition on existence of list and sorting of bluesound_group
* Re-introduced guard on group_name None
* Update device_tracker.py
From time to time, Swisscom Internet Box fails to respond and this causes an exception, which is currently not handled by the code:
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/device_tracker/setup.py", line 164, in async_device_tracker_scan
found_devices = await scanner.async_scan_devices()
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/swisscom/device_tracker.py", line 46, in scan_devices
self._update_info()
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/swisscom/device_tracker.py", line 67, in _update_info
data = self.get_swisscom_data()
File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/swisscom/device_tracker.py", line 83, in get_swisscom_data
request = requests.post(url, headers=headers, data=data, timeout=10)
File "/srv/homeassistant/lib/python3.7/site-packages/requests/api.py", line 116, in post
return request('post', url, data=data, json=json, **kwargs)
File "/srv/homeassistant/lib/python3.7/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/srv/homeassistant/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/srv/homeassistant/lib/python3.7/site-packages/requests/sessions.py", line 686, in send
r.content
File "/srv/homeassistant/lib/python3.7/site-packages/requests/models.py", line 828, in content
self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
File "/srv/homeassistant/lib/python3.7/site-packages/requests/models.py", line 757, in generate
raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.1.1', port=80): Read timed out.
I've just added a try-except around the post.
* Update device_tracker.py
Addressed blank line issue reported by flake8
* Update device_tracker.py
Fixed alignment to be Black compliant.
* Update device_tracker.py
Fixed one more alignment issue
* Add support for Heat Mode detection for Heat Pumps - Fixes#26547
Since the ecobee component started to dynamically set the supported HVAC modes based on querying the device a few releases ago, users with Heat Pumps noticed that the Heat mode was no longer offered as an option by HA. Some of us did not actually notice until the summer was over :). This commit fixes that.
For heatpumps, ecobee returns:
'coolStages': 1,
'heatStages': 0,
'hasHeatPump': True,
Fix tested on HA 100.1 and 100.3
Fixes bug https://github.com/home-assistant/home-assistant/issues/26547
* changed line formatted with black
* Retrieve more detailed module infos
* Switch to using IDs
* Bump pyatmo version to 2.3.3
* Update requirements
* Undo the change of the unique id
* Rename variable
* Use friendly app names for Fire TV sources
* Remove debugging statement
* Tests pass
* Use 'blocking=True' to patch service calls
* Remove parentheses
* Add azure servicebus notify service
* files added to .coveragerc
* fix: import content type from const
* Moved imports to top level
* Code review fixes
+ added code owner
+ fixed config validation with has at least one
+ seperate attributes for dto to asb
* fixed doc link
* async setup instead of sync
* rename all the things
- removed too many ifs
* changed setup back to sync
+ comment about sync IO in lib
* More informative logging
* logging exception -> error
This release has a fix for a crash we were seeing occasionally, and a totally
revamped packet handler which should be more robust and CPU-efficient.
Fixes#25887
* Add WLED integration
* Use f-string for uniq id in sensor platform
* Typing improvements
* Removes sensor & light platform
* Remove PARALLEL_UPDATES from integration level
* Correct type in code comment 'themselves'
* Use async_track_time_interval in async context
* Remove stale code
* Remove decorator from Flow handler
* Remove unused __init__ from config flow
* Move show form methods to sync
* Only wrap lines that can raise in try except block
* Remove domain and platform from uniq id
* Wrap light state in bool object in is_on method
* Use async_schedule_update_ha_state in async context
* Return empty dict in device state attributes instead of None
* Remove unneeded setdefault call in setup entry
* Cancel update timer on entry unload
* Restructure config flow code
* Adjust tests for new uniq id
* Correct typo AdGuard Home -> WLED in config flow file comment
* Convert internal package imports to be relative
* Reformat JSON files with Prettier
* Improve tests based on review comments
* Add test for zeroconf when no data is provided
* Cleanup and extended tests
* ViCare: Handle exceptions from PyViCare library (#28072)
Sometimes Viessmann server failures or other connection problems may
lead to exceptions thrown when updating data.
This commit handles those exceptions with some error logging and
makes sure that the component does not break completely in that case.
* Remove unneeded returns
* Remove unneeded returns
* Netatmo camera : Implement turn_on and turn_off methods.
* Netatmo camera : Implement turn_on and turn_off methods.
* Netatmo camera : Implement turn_on and turn_off methods.
* Netatmo camera : Implement turn_on and turn_off methods.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Netatmo camera : Implement enable_motion_detection(), disable_motion_detection() operations.
* Add Presence Netatmo Camera services (set_light_auto, set_light_on, set_light_off) to control its internal flood light status.
* Add Presence Netatmo Camera services (set_light_auto, set_light_on, set_light_off) to control its internal flood light status.
* Netatmo camera : Use new style string formatting.
* Make the file compliant with flake8 linter.
* Make the file compliant with flake8 linter.
* Make it compliant with black formatter.
* Make it compliant with black formatter.
* Bug fix : Flood light control was not working with VPN url.
* Adjust font text such that it won't be drawn inside the bow line in image_processing.draw_box
* Adjust font_height after actually counting the pixels
* Thinned out line_width and adjusted font size
* Fix for occupancy sensor unique_id
* Add check for sensor attributes before adding entity
* Fixes temperature key issue
* Clean up code with better use of keys
* Code clean up
* Support Huawei LTE SSDP discovery
* Avoid KeyError on simultaneous user initiated flow
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Format code
* Add already configured check
* Initialize context in test flows
* Move deviceType match to manifest
* Update generated.ssdp
* Add SSDP config flow test case
* Remove stale debug print from tests
Set auto mode should be exposed to all dyson fans (e.g. *Pure Cool Link* and *Pure Hot+Cool Link*) instead of only *Pure Cool*, as it is support in all of the models (i.e. similar to the set night mode).
* docs(ifttt): add information to services.yaml
* docs(ifttt): start examples lowercase
* docs(ifttt): start examples with capital letter
* docs(ifttt): end description on period
* Update Vivotek component
Fix building stream URL
* Update Vivotek component
Make stream path optionally configurable.
* Update Vivotek camera integration
Use f-string to build stream source URL.
This improve readability and I hear it runs faster.
* SSDP matching improvements
- support multiple match groups per domain
- require matches on all, not any item in a group
- support matching on all UPnP device description data
* Manifest structure fixes
This change addresses a bug where one is unable to change directly between the away and temperature hold presets, as temperature hold cannot be enabled on a Venstar thermostat if away mode is active.
Furthermore, this change removes redundant state checks as the set_away and set_schedule calls are idempotent in the venstarcolortouch library. See https://github.com/hpeyerl/venstar_colortouch/blob/master/src/venstarcolortouch/venstarcolortouch.py#L275.
* Prevent TypeError when KNX RGB(W) light value contains None.
* Pylint doesn't like 'w' as variable name, therefore using 'white' instead.
* Simplified code as suggested by pvizeli.
* Prevent TypeError when KNX RGB(W) light value contains None.
* Pylint doesn't like 'w' as variable name, therefore using 'white' instead.
* Simplified code as suggested by pvizeli.
The new release fixes a single regression from requests to aiohttp conversion.
Some devices do not respond with the correct mimetype which was not enforced
by requests but is enforced by aiohttp.
Related PR https://github.com/rytilahti/python-songpal/pull/59
* Imported homeassistant.util and slugified address if no name is specified
* Added a custom validator function in case name is not set in config
* Removed logger.debug line only used for testing
* Clean up Xiaomi Air Quality Monitor support (cgllc.airmonitor.b1)
* Remove unused variable
* Provide a proper unique_id
* Incorporate review
* Wrap the method that cause the exception
* Undo mistakenly changed file. Fixed in the separate PR.
* convert keyboard_remote to async and add possibility to trigger on multiple event types, as well as emulate key hold events
* update requirements
* cleanup shutdown handling and config handling as well as address other minor comments
* cleanup unused return values and debug message formatting
* move start and stop event listen to separate coroutine plus minor cleanup
* make setup coroutine a function
* fix import order and attribute defined outside of init
* add to codeowners
* update codeowners
* Add and improve core and config_entries type hints
* Complete and improve config_entries type hints
* More entity registry type hints
* Complete helpers.event type hints
* Reorg and test attribute for HomematicIP Cloud
* Add dutyCycle check to security_group
* Edit test to improve coverage
* Add missing flow test
* apply suggestion
Co-Authored-By: Martin Hjelmare <marhje52@kth.se>
* fix assert condition
* Added Unifi Led
* fixed manifest
* fixed style issue
* removed unused setting
* added sugested changes.
* fixed order
* fixed settings that are required
* Fix review issues
* fix variable name that was too short
* Testing something
* Reverted to a previous version for testing
* Reverted testing changes.
* Add available status and increase version of unifiled package version.
* No io in init function.
* Add above and below to sensor condition extra_fields
* Change unit_of_measurement to suffix in extra_fields
* Check if sensor has unit when getting capabilities
* Improve tests
* Update ThermostatController to map directives to supported modes and add support for CUSTOM mode.
* Removed erroneous config value from test.
* Removed unnecessary use of a comprehension by dumbing down comment so pylint could comprehend.
* Removed erroneous import variable caused by removing erroneous config value from test.
* Removed unnecessary use of a comprehension.
* Reverted Removal or erroneous import variable and erroneous config value from test.
Apparently need for additional tests outside this component. Whoops.
* Update pycsspeechtts
From 1.0.2 to 1.0.3 as the old one is using an api that doesn't work
* Give a option to choose region
Api is now region dependent, so gave it a config
* Save client identifier from auth for future use
* Use websocket events to update Plex
* Handle websocket disconnections
* Use aiohttp, shut down socket cleanly
* Bad rebase fix
* Don't connect websocket during config_flow validation, fix tests
* Move websocket handling to external library
* Close websocket session on HA stop
* Use external library, revert unnecessary test change
* Async & lint fixes
* Clean up websocket stopper on entry unload
* Setup websocket in component, pass actual needed object to library
* added automatic protocol detection
* fix logger tests
* fix async tests
* add missin const.py
* fix log formatting
* wait for first update call
* migrate first tests
* migrated all test functions
* started to use state machine
* updated all tests to use async_setup_component
* slove hints
* update tests
* get state at correct position
* remove impossible tests
* fix autodetect tests
* use caplog fixture
* add test for duplicate
* catch concrete exceptions
* don't mock samsungctl exceptions
* add test for discovery
* get state when possible
* add test for autodetect without connection
* Using latest winthings_api module.
Drastically reduced complexity of tests.
* Removing import source.
* Fixing test requirements.
* Using requests_mock instead of responses module.
* Updating file formatting.
* Removing unused method.
* Adding support for new OAuth2 config flow.
* Addressing PR feedback.
Removing unecessary base_url from config, this is a potential breaking change.
* Addressing PR feedback.
* Modernization rework
- config entry support, with override support from huawei_lte platform in YAML
- device tracker entity registry support
- refactor for easier addition of more features
- internal code cleanups
* Remove log level dependent subscription/data debug hack
No longer needed, because pretty much all keys from supported
categories are exposed as sensors.
Closes https://github.com/home-assistant/home-assistant/issues/23819
* Upgrade huawei-lte-api to 1.4.1
https://github.com/Salamek/huawei-lte-api/releases
* Add support for access without username and password
* Use subclass init instead of config_entries.HANDLERS
* Update huawei-lte-api to 1.4.3 (#27269)
* Convert device state attributes to snake_case
* Simplify scanner entity initialization
* Remove not needed hass reference from Router
* Return explicit None from unsupported old device tracker setup
* Mark unknown connection errors during config as such
* Drop some dead config flow code
* Run config flow sync I/O in executor
* Parametrize config flow login error tests
* Forward entry unload to platforms
* Async/sync fixups
* Improve data subscription debug logging
* Implement on the fly add of new and tracking of seen device tracker entities
* Handle device tracker entry unload cleanup in component
* Remove unnecessary _async_setup_lte, just have code in async_setup_entry
* Remove time tracker on unload
* Fix to not use same mutable default subscription set for all routers
* Pylint fixes
* Remove some redundant defensive device tracker code
* Add back explicit get_scanner None return, hush pylint
* Adjust approach to set system_options on entry create
* Enable some sensors on first add instead of disabling everything
* Fix SMS notification recipients default value
* Add option to skip new device tracker entities
* Fix SMS notification recipient option default
* Work around https://github.com/PyCQA/pylint/issues/3202
* Remove unrelated type hint additions
* Change async_add_new_entities to a regular function
* Remove option to disable polling for new device tracker entries
* Added Unifi Led
* fixed manifest
* fixed style issue
* removed unused setting
* added sugested changes.
* fixed order
* fixed settings that are required
* Fix review issues
* fix variable name that was too short
* Testing something
* Reverted to a previous version for testing
* Reverted testing changes.
* cover all possible values for operation_mode
* Update climate.py
* Update climate.py
* Update climate.py
mapped homeassistant constants to client ones so we don't have to check for both
* black + pylint
* move mode_map to __init__()
* Update climate.py
* Update climate.py
The new release fixes a single regression from requests to aiohttp conversion.
Some devices do not respond with the correct mimetype which was not enforced
by requests but is enforced by aiohttp.
Related PR https://github.com/rytilahti/python-songpal/pull/59
Describe the big picture of your changes here to communicate to the
maintainers why we should accept this pull request. If it fixes a bug
or resolves a feature request, be sure to link to that issue in the
additional information section.
-->
**Pull request with documentation for [home-assistant.io](https://github.com/home-assistant/home-assistant.io) (if applicable):** home-assistant/home-assistant.io#<home-assistant.ioPRnumbergoeshere>
## Example entry for `configuration.yaml` (if applicable):
## Type of change
<!--
What type of change does your PR introduce to Home Assistant?
NOTE: Please, check only 1! box!
If your PR requires multiple boxes to be checked, you'll most likely need to
split it into multiple PRs. This makes things easier and faster to code review.
-->
- [ ] Dependency upgrade
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] New integration (thank you!)
- [ ] New feature (which adds functionality to an existing integration)
- [ ] Code quality improvements to existing code or addition of tests
## Example entry for `configuration.yaml`:
<!--
Supplying a configuration snippet, makes it easier for a maintainer to test
your PR. Furthermore, for new integrations, it gives an impression of how
the configuration would look like.
Note: Remove this section if this PR does not have an example entry.
-->
```yaml
```yaml
# Example configuration.yaml
```
```
## Checklist:
## Additional information
- [ ] The code change is tested and works locally.
<!--
- [ ] Local tests pass with `tox`. **Your PR cannot be merged unless tests pass**
Details are important, and help maintainers processing your PR.
- [ ] There is no commented out code in this PR.
Please be sure to fill out additional details, if applicable.
- [ ] I have followed the [development checklist][dev-checklist]
-->
- This PR fixes or closes issue: fixes #
- This PR is related to issue:
- Link to documentation pull request:
## Checklist
<!--
Put an `x` in the boxes that apply. You can also fill these out after
creating the PR. If you're unsure about any of them, don't hesitate to ask.
We're here to help! This is simply a reminder of what we are going to look
for before merging your code.
-->
- [ ] The code change is tested and works locally.
- [ ] Local tests pass. **Your PR cannot be merged unless tests pass**
- [ ] There is no commented out code in this PR.
- [ ] I have followed the [development checklist][dev-checklist]
- [ ] The code has been formatted using Black (`black --fast homeassistant tests`)
- [ ] Tests have been added to verify that the new code works.
If user exposed functionality or configuration variables are added/changed:
If user exposed functionality or configuration variables are added/changed:
- [ ] Documentation added/updated in [home-assistant.io](https://github.com/home-assistant/home-assistant.io)
- [ ] Documentation added/updated for [www.home-assistant.io][docs-repository]
If the code communicates with devices, web services, or third-party tools:
If the code communicates with devices, web services, or third-party tools:
- [ ] [_The manifest file_][manifest-docs] has all fields filled out correctly. Update and include derived files by running `python3 -m script.hassfest`.
- [ ] New or updated dependencies have been added to `requirements_all.txt` by running `python3 -m script.gen_requirements_all`.
- [ ] Untested files have been added to `.coveragerc`.
If the code does not interact with devices:
- [ ] The [manifest file][manifest-docs] has all fields filled out correctly.
- [ ] Tests have been added to verify that the new code works.
Updated and included derived files by running: `python3 -m script.hassfest`.
- [ ] New or updated dependencies have been added to `requirements_all.txt`.
Updated by running `python3 -m script.gen_requirements_all`.
- [ ] Untested files have been added to `.coveragerc`.
The integration reached or maintains the following [Integration Quality Scale][quality-scale]:
<!--
The Integration Quality Scale scores an integration on the code quality
and user experience. Each level of the quality scale consists of a list
of requirements. We highly recommend getting your integration scored!
-->
- [ ] No score or internal
- [ ] 🥈 Silver
- [ ] 🥇 Gold
- [ ] 🏆 Platinum
<!--
This project is very active and we have a high turnover of pull requests.
Unfortunately, the number of incoming pull requests is higher than what our
reviewers can review and merge so there is a long backlog of pull requests
waiting for review. You can help here!
By reviewing another pull request, you will help raise the code quality of
that pull request and the final review will be faster. This way the general
pace of pull request reviews will go up and your wait time will go down.
When picking a pull request to review, try to choose one that hasn't yet
been reviewed.
Thanks for helping out!
-->
To help with the load of incoming pull requests:
- [ ] I have reviewed two other [open pull requests][prs] in this repository.
@@ -4,11 +4,15 @@ Everybody is invited and welcome to contribute to Home Assistant. There is a lot
The process is straight-forward.
The process is straight-forward.
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0)
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0 and 1)
- Fork the Home Assistant [git repository](https://github.com/home-assistant/home-assistant).
- Fork the Home Assistant [git repository](https://github.com/home-assistant/core).
- Write the code for your device, notification service, sensor, or IoT thing.
- Write the code for your device, notification service, sensor, or IoT thing.
- Ensure tests work.
- Ensure tests work.
- Create a Pull Request against the [**dev**](https://github.com/home-assistant/home-assistant/tree/dev) branch of Home Assistant.
- Create a Pull Request against the [**dev**](https://github.com/home-assistant/core/tree/dev) branch of Home Assistant.
Still interested? Then you should take a peek at the [developer documentation](https://developers.home-assistant.io/) to get more details.
Still interested? Then you should take a peek at the [developer documentation](https://developers.home-assistant.io/) to get more details.
## Feature suggestions
If you want to suggest a new feature for Home Assistant (e.g., new integrations), please open a thread in our [Community Forum: Feature Requests](https://community.home-assistant.io/c/feature-requests).
We use [GitHub for tracking issues](https://github.com/home-assistant/core/issues), not for tracking feature requests.
Home Assistant is a home automation platform running on Python 3. It is able to track and control all devices at home and offer a platform for automating control.
Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.
To get started:
..code::bash
python3 -m pip install homeassistant
hass --open-ui
Check out `home-assistant.io <https://home-assistant.io>`__ for `a
Check out `home-assistant.io <https://home-assistant.io>`__ for `a
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.