* Support value_template in MQTT triggers
* Rename value_template to payload_template
* Revert "Rename value_template to payload_template"
This reverts commit 902094eefc.
* add number platform to zwave_js integration
* add discovery scheme for thermostat valve control, using number platform
Co-authored-by: kpine <keith.pine@gmail.com>
* migrate zwave_js entities to use new unique ID format
* remove extra param from helper
* add comment to remove migration logic in the future
* update comment
* use instance attribute instead of calling functino on every state update
When we set up HomeKit, we asked users if they wanted
to create an entry in bridge or accessory mode.
This approach required the user to understand how HomeKit works and
choose which type to create.
When the user includes the media player or camera domains,
we exclude them from the bridge and create the additional entries
for each entity in accessory mode.
* add poll_value service
* switch vol.All to vol.Schema
* more relevant log message
* switch service name to refresh_value, add parameter to refresh all watched values, fix tests
* rename parameter and create task for polling command so we don't wait for a response
* raise ValueError for unknown entity
* better error message
* fix test
* create zwave_js.set_config_value service
* update docstring
* PR comments
* make proposed changes
* handle providing a label for the new value
* fix docstring
* use new library function
* config param endpoint is always 0
* corresponding changes from upstream PR
* bug fixes and add tests
* create zwave_js.set_config_value service
* update docstring
* PR comments
* make proposed changes
* handle providing a label for the new value
* fix docstring
* use new library function
* config param endpoint is always 0
* corresponding changes from upstream PR
* bug fixes and add tests
* use lambda to avoid extra function
* add services description file
* bring back the missing selector
* move helper functions to helper file for reuse
* allow target selector for automation editor
* formatting
* fix service schema
* update docstrings
* raise error in service if call to set value is unsuccessful
* Update homeassistant/components/zwave_js/services.yaml
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/zwave_js/services.yaml
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/zwave_js/services.yaml
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/zwave_js/services.yaml
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/zwave_js/services.yaml
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/zwave_js/services.yaml
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* remove extra param to vol.Optional
* switch to set over list for nodes
* switch to set over list for nodes
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Add discontinuity support to stream recorder
* Use same container options for both StreamOutputs
* Fix pts adjuster
* Remove redundant/incorrect duplicate hls segment check
* Use same StreamBuffer across outputs
* Remove keepalive check for recorder
* Set output video timescale explicitly
* Disable avoid_negative_ts
* Add zwave_js.update_log_config service
* fix comment
* reduce lines
* move update_log_config from service to ws API call
* fix docstring
* Add zwave_js/get_log_config WS API command
* resolve stale comments
* remove transports since it will be removed from upstream PR
* add support to update all log config parameters since they could be useful outside of the UI for advanced users
* fix comment
* switch to lambda instead of single line validator
* fix rebase
* re-add ATTR_DOMAIN
* Add test for invalid usercode
* Add usercodes to totalconnect.
* Update existing tests for usercodes
* Fix tests
* Add test for invalid usercode
* Add usercodes to totalconnect.
* Update existing tests for usercodes
* Fix tests
* Remove YAML support
* Fix conflict
* Bump to total_connect_client 0.56
* Change Exception to HomeAssistantError
* Fix config_flow.py
* Simplify async_setup since no yaml
* Remove import from config flow and tests
* Add reauth and test for it. Various other fixes.
* Fix pylint in __init__
* Show config yaml as deprecated
* separate config_flow and init tests
* Assert ENTRY_STATE_SETUP_ERROR in init test
* Add test for reauth flow
* Fix reauth and tests
* Fix strings
* Restore username and usercode with new passord
* Correct the integration name
* Update tests/components/totalconnect/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/totalconnect/test_init.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update .coveragerc
* Add test for invalid auth during reauth
* Bump total-connect-client to 0.57
* Fix .coveragerc
* More tests for usercodes
* Fix usercode test
* Reload config entry on reauth
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Remove unused "fibaro_fgs222" discovery hint
* Simplify multilevel switch current value discovery schema
* Force iBlinds v2.0 devices to be discovered as cover entities
* Rename discovery test file
* Simplify homekit runs and service calls
Now that the homekit server is async, call_service
and run are running in the Home Assistant event loop
* remove comment
* remove another comment
* add thermostat fan mode and fan state support
* return when fan mode is not supported
* use get just in case
* validate state key is in states so we dont have to use get
* pylint
* Support HLS stream discontinuity.
* Clarify discontinuity comments
* Signal a stream discontinuity on restart due to stream error
* Apply suggestions from code review
Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>
* Simplify stream discontinuity logic
SSDP scans no longer runs in the executor
This is an interim step that converts the async_upnp_client
response to netdisco's object to ensure fully backwards
compatibility
* Fix exception in stream idle callback
Fix bug where idle timeout callback fails if the stream previously exited.
* Add a test for stream idle timeout after stream is stopped.
* Add clarifying comment to idle timer clear method
* Clear hls timer only on stop
Separate the HLS stream view logic out of StreamOutput since the hls
stream view is about to get more complex to track discontinuities. This
makes the idle timeout, shutdown, and coupling between hls and record
more explicit.
HomeKit pairings and accessory ids from versions 0.109 and earlier are no longer
migrated on upgrade. Users upgrading directly to 2021.3 from 0.109
and older should upgrade to 2021.2 first if they wish to preserve
HomeKit configuration and avoid re-pairing the bridge.
This change does not affect upgrades from 0.110 and later.
* Remove stream_worker dependencies on Stream
Removee stream_worker dependencies on Stream and split out the logic
for writing segments to a stream buffer.
* Stop calling internal stream methods
* Update homeassistant/components/stream/worker.py
Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>
* Reuse self._outputs when creating new streams
Co-authored-by: uvjustin <46082645+uvjustin@users.noreply.github.com>
* Update test harness to allow discovery_info testing.
This is a needed update, before the whole config is converted
to the new structure, because it allows test of both the old
and new configuration style.
The following changes have been made:
- Combine test functions into a single base_test.
- Prepare for new mock by combining the 2 common test functions into one.
- Change mock to be only modbusHub
- Do not replace whole modbus class, but only the class that
connects to pymodbus (modbusHub). This allows test of modbus
configurations and not only component configurations, and is needed
when testing discovery activated platform.
- Add test of climate.
Warning this is merely test of discovery,
the real cover tests still needs to be added.
- Add test of cover.
Warning this is merely test of discovery,
the real cover tests still needs to be added.
* Update comment for old config
* Do not use hass.data, but instead patch pymodbus library.
* Add test of configuration (old/new way as available).
* Move assert to test function.
Make assert more understandable by removing it from the helper.
add base_config_test (check just calls base_test) to make it clear if
test is wanted or just controlling the config.
* use setup_component to load Modbus since it is an integration.
* Optimized flow in test helper.
* Correct missed review changes
* Adjust return value for device trigger
* Drop cannot connect
* Always assume there is a unique id
* No need to yield
* Update homeassistant/components/philips_js/media_player.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Move typing to init
* Adjust typing instead of returning lambda
* Explicity return None
* Coerce into int
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add config flow to philips_js
* Adjust name of entry to contain serial
* Use device id in event rather than entity id
* Adjust turn on text
* Deprecate all fields
* Be somewhat more explicit in typing
* Switch to direct coordinator access
* Refactor the pluggable action
* Adjust tests a bit
* Minor adjustment
* More adjustments
* Add missing await in update coordinator
* Be more lenient to lack of system info
* Use constant for trigger type and simplify
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add target to service call API
* Fix _async_call_service_step
* CONF_SERVICE_ENTITY_ID overrules target
* Move merging up before processing schema
* Restore services.yaml
* Add test
* Change the API boundary between stream and camera
Shift more of the stream lifecycle management to the camera. The motivation is to support stream urls that expire
giving the camera the ability to change the stream once it is created.
* Document stream lifecycle and simplify stream/camera interaction
* Reorder create_stream function to reduce diffs
* Increase test coverage for camera_sdm.py
* Fix ffmpeg typo.
* Add a stream identifier for each stream, managed by camera
* Remove stream record service
* Update homeassistant/components/stream/__init__.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Unroll changes to Stream interface back into camera component
* Fix preload stream to actually start the background worker
* Reduce unncessary diffs for readability
* Remove redundant camera stream start code
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Unlikely sqlite and mysql, postgresql throws ProgrammingError instead
of InternalError or OperationalError when trying to create an index
that already exists.
* Remove dependencies on keepalive from StremaOutput and stream_worker
Pull logic from StreamOutput and stream_worker into the Stream
class, unifying keepalive and idle timeout logic. This prepares
for future changes to preserve hls state across stream url changes.
* Enhance MQTT cover platform
Allow combining of position and state of MQTT cover
Add template and fix optimistic in set tilt position
Add tests
* Add abbreviations
* Add tests and stopped state
* Cleanup & fix range for templates
* Apply suggestions from code review
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Add support for limited templates (no HASS access)
* Pass variables to automation triggers
* Support templates in MQTT triggers
* Spelling
* Handle trigger referenced by variables
* Raise on unsupported function in limited templates
* Validate MQTT trigger schema in MQTT device trigger
* Add trigger_variables to automation config schema
* Don't print stacktrace when setting up trigger throws
* Make pylint happy
* Add trigger_variables to variables
* Add debug prints, document limited template
* Add tests
* Validate MQTT trigger topic early when possible
* Improve valid_subscribe_topic_template
* Mark entities as unavailable when they are removed but are still registered
* Add sync_entity_lifecycle to collection helper
* Remove debug print
* Lint
* Fix tests
* Fix tests
* Update zha
* Update zone
* Fix tests
* Update hyperion
* Update rfxtrx
* Fix tests
* Pass force_remove=True from integrations
Co-authored-by: Erik <erik@montnemery.com>
* Simplify configuration structure by removing the controller key
* Fix flake8
* Fix review comments
* Don't use migrate_entry mechanism to flatten configuration
Keep legacy configuration when creating new entries as well
* Convert old groups unique ids
Work around for walrus operator not working properly :/
* Remove CONF_GROUP_ID_BASE once entities unique id are updated
* Don't use migrate_entry mechanism to update unique_ids of groups
* Remove walrus operator :(
* Fix review comments
* Walrusify assignment to old_unique_id
* Fix backwards compatiblity with fans update to new model
There were some non-speeds and devices that report a none
speed. These problems were discovered when updating zha
tasmota and vesync to the new model in #45407
* Update coverage
* fix check
* Removed pylint disable on unused after updating CI files that were out of date.
* Pylint still fails due to bug on DOMAIN import. Added disable check.
* Addressed PR comments
* Added import for ClientError to test_config_flow.py
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Do not require admin account for foscam cameras.
Foscam cameras require admin account for getting the MAC address,
requiring an admin account in the integration is not desirable as
an operator one is good enough (and a good practice).
Old entries using the MAC address as unique_id are migrated to the
new unique_id format so everything is consistent.
Also fixed unhandled invalid responses from the camera in the
config flow process.
* Make RTSP port configurable again as some cameras reports wrong port
* Remove periods from new log lines
* Set new Config Flow version to 2 and adjust the entity migration
* Create a proper error message for the InvalidResponse exception
* Change crafted unique_id to use entry_id in the entity
* Abort if same host and port is already configured
* Fix entry tracking to use entry_id instead of unique_id
* Remove unique_id from mocked config entry in tests
* MySensors: Add type annotations
Adds a bunch of type annotations that were created
while understanding the code.
* MySensors: Change GatewayId to string
In preparation for config flow.
The GatewayId used to be id(gateway).
With config flows, every gateway will have its own
ConfigEntry. Every ConfigEntry has a unique id.
Thus we would have two separate but one-to-one related ID systems.
This commit removes this unneeded duplication by using the id of the ConfigEntry
as GatewayId.
* MySensors: Add unique_id to all entities
This allows entities to work well with the frontend.
* MySensors: Add device_info to all entities
Entities belonging to the same node_id will now by grouped as a device.
* MySensors: clean up device.py a bit
* MySensors: Add config flow support
With this change the MySensors can be fully configured from the GUI.
Legacy configuration.yaml configs will be migrated by reading them once.
Note that custom node names are not migrated. Users will have to re-enter
the names in the front-end.
Since there is no straight-forward way to configure global settings,
all previously global settings are now per-gateway. These settings include:
- MQTT retain
- optimistic
- persistence enable
- MySensors version
When a MySensors integration is loaded, it works as follows:
1. __init__.async_setup_entry is called
2. for every platform, async_forward_entry_setup is called
3. the platform's async_setup_entry is called
4. __init__.setup_mysensors_platform is called
5. the entity's constructor (e.g. MySensorsCover) is called
6. the created entity is stored in a dict in the hass object
* MySensors: Fix linter errors
* MySensors: Remove unused import
* MySensors: Feedback from @MartinHjelmare
* MySensors: Multi-step config flow
* MySensors: More feedback
* MySensors: Move all storage in hass object under DOMAIN
The integration now stores everything under hass.data["mysensors"]
instead of using several top level keys.
* MySensors: await shutdown of gateway instead of creating a task
* MySensors: Rename Ethernet to TCP
* MySensors: Absolute imports and cosmetic changes
* MySensors: fix gw_stop
* MySensors: Allow user to specify persistence file
* MySensors: Nicer log message
* MySensors: Add lots of unit tests
* MySensors: Fix legacy import of persistence file name
Turns out tests help to find bugs :D
* MySensors: Improve test coverage
* MySensors: Use json persistence files by default
* MySensors: Code style improvements
* MySensors: Stop adding attributes to existing objects
This commit removes the extra attributes that were being
added to the gateway objects from pymysensors.
Most attributes were easy to remove, except for the gateway id.
The MySensorsDevice class needs the gateway id as it is part of its DevId
as well as the unique_id and device_info.
Most MySensorsDevices actually end up being Entities.
Entities have access to their ConfigEntry via self.platform.config_entry.
However, the device_tracker platform does not become an Entity.
For this reason, the gateway id is not fetched from self.plaform but
given as an argument.
Additionally, MySensorsDevices expose the address of the gateway
(CONF_DEVICE). Entities can easily fetch this information via self.platform,
but the device_tracker cannot. This commit chooses to remove the gateway
address from device_tracker. While this could in theory break some automations,
the simplicity of this solution was deemed worth it.
The alternative of adding the entire ConfigEntry as an argument to MySensorsDevices
is not viable, because device_tracker is initialized by the async_setup_scanner function
that isn't supplied a ConfigEntry. It only gets discovery_info.
Adding the entire ConfigEntry doesn't seem appropriate for this edge case.
* MySensors: Fix gw_stop and the translations
* MySensors: Fix incorrect function calls
* MySensors: Fewer comments in const.py
* MySensors: Remove union from _get_gateway and remove id from try_connect
* MySensors: Deprecate nodes option in configuration.yaml
* MySensors: Use version parser from packaging
* MySensors: Remove prefix from unique_id and change some private property names
* MySensors: Change _get_gateway function signature
* MySensors: add packaging==20.8 for the version parser
* MySensors: Rename some stuff
* MySensors: use pytest.mark.parametrize
* MySensors: Clean up test cases
* MySensors: Remove unneeded parameter from devices
* Revert "MySensors: add packaging==20.8 for the version parser"
This reverts commit 6b200ee01a.
* MySensors: Use core interface for testing configuration.yaml import
* MySensors: Fix test_init
* MySensors: Rename a few variables
* MySensors: cosmetic changes
* MySensors: Update strings.json
* MySensors: Still more feedback from @MartinHjelmare
* MySensors: Remove unused strings
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* MySensors: Fix typo and remove another unused string
* MySensors: More strings.json
* MySensors: Fix gateway ready handler
* MySensors: Add duplicate detection to config flows
* MySensors: Deal with non-existing topics and ports.
Includes unit tests for these cases.
* MySensors: Use awesomeversion instead of packaging
* Add string already_configured
* MySensors: Abort config flow when config is found to be invalid while importing
* MySensors: Copy all error messages to also be abort messages
All error strings may now also be used as an abort reason,
so the strings should be defined
* Use string references
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fix issue with control of cover when the target value is Up/Down instead of Open/Close
* Adjust open/close/stop cover control to account for no Open/Up or Close/Down targets
* Revert back to using values of 0/99 to close/open a cover since it is supported by all covers
* Replace RELEASE_BUTTON with False and remove unused PRESS_BUTTON in zwave_js cover
* Fix homekit options not being prefilled
When changing homekit options, the existing ones
were not being prefilled on the form.
* hide camera screen if no cameras
* Convert ozw climate values to correct units
* Remove debugger logging
* Fix black code formatting
* Remove extra spaces
* Add method descriptions and change to use setpoint
* Fix build and respond to comments
* Remove self from convert_units call
* Move method to top
* Move method outside class
* Add blank lines
* Fix test to use farenheit
* Update another value to farenheit
* Change to celsius
* Another test fix
* test fix
* Fix a value
* missed one
* Add unit test for convert_units
* fix unit test import
* Add new line to end of test file
* fix convert units import
* Reorder imports
* Grab const from different import
Co-authored-by: Trevor <tboyce021@gmail.com>
* Enable setting XY color and transition time by client
* New test for setting XY color value
* Correct block outdent
* New test for setting transition time value
* Fixed commented out code
* Add support for iCloud 2FA
* Updated dependency for iCloud
* Updated dependency and logic fix
* Added logic for handling incorrect 2FA code
* Bug fix on failing test
* Added myself to codeowners
* Added check for 2FA on setup
* Updated error message
* Remove v4 multilevel transitional currentValue workaround
This was only needed because the get-after-set was reporting a
transitional currentValue instead of the final one.
zwave-js v6.1.1 removes the get-after-set functionality completely, so
this is no longer required (and breaks status reporting entirely)
* Fix tests to check currentValue instead of targetValue as well
* Use new zwave_js client
* Remove client callbacks
* Clean up on connect and on disconnect
* Clean log
* Add stop listen to unsubscribe callbacks
* Fix most tests
* Adapt to new listen interface
* Fix most tests
* Remove stale connection state feature
* Bump zwave-js-server-python to 0.16.0
* Clean up disconnect
* Remove zwave_js devices that the controller is no longer connected to on initialization
* remove extra line break
* fix test
* Clean up
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Lint
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Do less inside try statements
* Replace controller id with config entry id since it doesn't serve a purpose anymore
* Improve how controller connection state is communicated in the client and device tracker
Remove the need to disable arguments-differ lint
* Remove broad exception handling from config flow
I'm not sure there ever was a reason for this more than to catch all exceptions
* Replace site string with constant for SSDP title_placeholders
* Unload platforms in the defacto way
* Noone reads the method descriptions
* Improve file descriptions
* Update dyson for the new fan entity model
* Fix test
* tweak
* fix
* adj
* Update homeassistant/components/dyson/fan.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* move percentage is None block
* move percentage is None block
* no need to list comp
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add first two testcases
* Remove repetition
* Add first two testcases
* Remove repetition
* Add connection error test case
* add test_setup_entry_credentials_valid
* First attempt to use fixtures
* Use markers
* Optimize patch
* Optimize marker use
* Always patch mydevolo
* Add first two testcases
* Remove repetition
* Add first two testcases
* Remove repetition
* Add connection error test case
* add test_setup_entry_credentials_valid
* First attempt to use fixtures
* Use markers
* Optimize patch
* Optimize marker use
* Always patch mydevolo
* Add unload entry test case
* Catch up with reality
* Use unittest patch
* Use core interface to start tests
* Use entry state
* Consistently assert entry state
* Patch class instead of init
Co-authored-by: Markus Bong <2Fake1987@gmail.com>
When using fuzzy matching to match entity names for intents, whichever
entity is first is preferred in the case of equal matches. This leads
to situations where entities with similar names (such as entities named
for their area and then specific area location) may be used when the
whole area is wanted.
I ran into this with the my Phillips Hue lights. I have each individual
light named such that its room is the first part of the name, and its
location within the room after. So my living room has:
Living Room West
Living Room Northwest
Living Room North
Living Room Northeast
I then have a group for the whole room:
Living Room
Because the group is the last of the entities, trying to adjust the
whole room only activates one light, because all of the lights match
equally well.
By preferring the shortest of equal matches, we prefer keys that have
the least amount of extra information, causing "Living Room" to match
the group instead of an individual light.
This adds a `cycle` attribute to select_previous/next, and
select_first and select_last services.
This is quite useful for streamlining using input_select via
automations, such as when they represent a list of states to step
through; if the first option is the dimmest and the last the brightest,
one may not want to accidentally cycle from the first to the last, for
example.
Similarly, being able to directly select the first or last removes
adjustment in related automations.
* Add typing information
* Small improvments
* Use %r for exceptions
* Added exception handlers for aiohttp.ClientError
* Added testcase
* Changes after review
* Bugfixes
* Add WiLight Fan
Add fan to WiLigt integration
* Updated fan.py and test_fan.py
* Creating new fan test
* Update homeassistant/components/wilight/__init__.py
OK!
Done!
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/wilight/fan.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/wilight/fan.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/wilight/fan.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* As MartinHjelmare requested
* Update fan.py
* Update tests/components/wilight/test_fan.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/wilight/test_fan.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update test_fan.py
As Martin Hjelmare suggested
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fully working proposal of config option to select what video source camera entity should use
* Bump dependency to v43
Reflect dependency changes in how image sources is now a dict
* Fix bdracos comment
* Fix memory leak in dhcp integration
Passing the L2socket to AsyncSniffer caused a memory
leak on some systems. To ensure we can create a socket,
we do a test creation before starting AsyncSniffer
since the sniffer will create it in another thread
and we cannot see any permission error otherwise.
* Update tests
* space
* do not store packets
* Add DemoCover with only tilt controls
* Add default tilt position to Pergola Roof
* Apply githooks (isort)
* Add new demo device to Google Assistant fixtures
* Improve site selection
* Reauth flow and tests
Add **kwargs to mock_aiohttp_client create_session to support inputting verify_ssl and cookie_jar
* Update homeassistant/components/unifi/config_flow.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Minor improvements
* Improve coverage
Co-authored-by: J. Nick Koston <nick@koston.org>
* add zwave_js support for climate
* fix
* add fixture
* rename fixture
* fix variable name error
* add tests
* fix tests and handle set_temp properly based on unit
* update call being tested
* fix tests
* improve coverage
* fix docstring
* address review comments
* fix test
* update enum class name
* bump zwave-js-server-python version and assume primary_value is always set
* add additional coverage
* fix docstrings and move populating modes/presets into initialization
* attempt to address comments
* improve comment
* move mode value into a variable so its easier to iterate in the future
* dont assume mode as a discovery point
* assume all values are available when node is ready
* fix order of operations
* switch to valueerror
* use primary value
* readd property and type to discovery schema
* Mikrotik now uses the device_tracker standard attributes for "ip" and "mac"
The "mac_address" and "ip_address" attributes have been removed.
* Update homeassistant/components/mikrotik/device_tracker.py
* Change zeroconf name to be based of prettier name rather than hostname to help user understand what device is discovered
Have a full zeroconf discovery message in tests
Clean up unusued globals
* Use non-formatted serial number for config entry title as well
* Discover devices from device_trackers with router sources
* Update homeassistant/components/dhcp/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* fix stop being called on the wrong context
* clean
* move it to base
* cleanup was too agressive
* Update homeassistant/components/dhcp/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* coverage
* revert legacy changes
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Move adding unique id to config entry from setup_entry to migrate_entry
* Normalise unique ID
* MQTT subscribe should still use the serial number in the way the device itself expects
* Improve dhcp discovery for somfy_mylink to handle multiple devices
* Fix ip
* normalize
* logging debug
* force str
* we need a str
* fix tests
* add tests
* pylint
* Add bulb 6 multi color device state fixture
* Add light test foundation
* Add no cover comment for todo code
* Update hs_color
* Test turn on light
* Test light turn off
* Fix brightness comparison
* Test setting same brightness
* Test setting same rgb color
* Test color temp update
* Test setting same color temp
* Add entity module to coverage calculation
* Fix typing
* Move Plex->Sonos playback service from integration to platform
* Test against 'native' Plex media_players
* Add Plex to Sonos after_dependencies
* Remove circular dependency
* Raise exceptions in failed service calls
* Add test to forward service call from Sonos
* Additional Sonos->Plex tests
* Fix docstring
* No code duplication for profile application
* Refactor color profile as a dataclass
* Typing
* Make color_x and color_y of a Light profile optional
* Update tests
* Make brightness field of a Light profile optional
* Transition can be of a float type
* Allow fractional transition times in light profiles
Make transition of a float type.
Allow transition to be optional with 5 column CSV files.
* Make pylint happy
* Fix dropped async_mock
* Simplify CSV row schema
* Roomba cleanups
Remove async_step_init backwards compat
Move urls to description_placeholders.
Fix typos
* fix test
* fix fallback to manual when roomba is in the wrong state
* Clear cached nest event images after expiration
* Don't share removal cleanup with alarm cleanup
Don't share code across these functions since it would require a dummy timestamp values that is unnecessary.
* Increase test coverage on sdm camera remove
* Update homeassistant/components/nest/camera_sdm.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Allow picking default TTS language
* Fix test
* Fix coroutine function
* Improve test coverage
* Remove stale import
* Clean up hass
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Cleanups for somfy_mylink
* Use the target/unique_id to configure reverse
* Simplify options flow
* Various code review cleanups
* Deprecate YAML
* revert get change
* revert get change
* add note about empty response
* move CONF_DEFAULT_REVERSE out of loop
* Update homeassistant/components/somfy_mylink/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Ensure we deepcopy options
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add entry setup and unload test
* Test home assistant stop
* Test on connect and on disconnect
* Test client connect timeout
* Test ready node added
* Test non ready node added
* Test existing node not ready
* Test device registry state
* Add common test tools module
* Add existing ready node test
* Include init module in coverage calculation
* Clean docstrings
* Unmark tests as flaky (though still flaky)
This put tests into the broken state where they are flaky and do not yet pass
* Fix bug in test_hls_stream with incorrect path
* Enable and de-flake HLS stream tests
Background: Tests encode a fake video them start a stream to be decoded. Test
assert on the decoded segments, however there is a race with the stream worker
which can finish decoding first, and end the stream which ereases all buffers.
Breadown of fixes:
- Fix the race conditions by adding synchronization points right before the
stream is finalized.
- Refactor StreamOutput.put so that a patch() can block the worker
thread. Previously, the put call would happen in the event loop which was
not safe to block. This is a bit of a hack, but it is the simplist possible
code change to add this synchronization and arguably provides slightly better
separation of responsibilities from the worker anyway.
- Fix bugs in the tests that make them not pass, likely due to changes
introduced while the tests were disabled
- Fix case where the HLS stream view recv() call returns None, indicating
the worker finished while the request was waiting.
The tests were previously failing anywhere from 2-5% of the time on a lightly
loaded machine doing 1k iterations. Now, have 0% flake rate. Tested with:
$ py.test --count=1000 tests/components/strema/test_hls.py
Safe mode was added to work around a race condition where
the mdns announcment was sent too early and would cause
pairing to fail. Since this has been corrected in
HAP-python, there is no longer a need to have
safe mode.
* Run zwave_js scaffold (#44891)
* Add zwave_js basic connection to zwave server (#44904)
* add the basic connection to zwave server
* fix name
* Fix requirements
* Fix things
* Version bump dep to 0.1.2
* fix pylint
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Bump zwave-js-server-python to 0.2.0
* Use zwave js server version check instead of fetching full state (#44943)
* Use version check instead of fetching full state
* Fix tests
* Use 0.3.0
* Also catch aiohttp client errors
* Update docstring
* Lint
* Unignore zwave_js
* Add zwave_js entity discovery basics and sensor platform (#44927)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Complete zwave_js typing (#44960)
* Type discovery
* Type init
* Type entity
* Type config flow
* Type sensor
* Require typing of zwave_js
* Complete zwave_js config flow test coverage (#44955)
* Correct zwave_js sensor device class (#44968)
* Fix zwave_js KeyError on entry setup timeout (#44966)
* Bump zwave-js-server-python to 0.5.0 (#44975)
* Remove stale callback signal from zwave_js (#44994)
* Add light platform to zwave_js integration (#44974)
* add light platform
* styling fix
* fix type hint
* Fix typing
* Update homeassistant/components/zwave_js/const.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zwave_js/entity.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zwave_js/entity.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zwave_js/entity.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zwave_js/entity.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zwave_js/entity.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* color temp should be integer
* guard Nonetype error
* Update homeassistant/components/zwave_js/light.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zwave_js/light.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* some fixes after merging
* add additional guards for None values
* adjustments for rgb lights
* Fix typing
* Fix black
* Bump zwave-js-server-python to 0.6.0
* guard value updated log
* remove value_id lookup as its no longer needed
* fiz sending white value
* Update homeassistant/components/zwave_js/light.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add zwave_js test foundation (#44983)
* Exclude text files from codespell
* Add basic dump fixture
* Add test foundation
* Fix test after rebase
* Exclude jsonl files from codespell
* Rename fixture file type to jsonl
* Update fixture path
* Fix stale docstring
* Add controller state json fixture
* Add multisensor 6 state json fixture
* Update fixtures
* Remove basic dump fixture
* Fix fixtures after library bump
* Update codeowner
* Minor cleanup Z-Wave JS (#45021)
* Update zwave_js device_info (#45023)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
With 250 clients, there were about 18000 timers updated every
minute. To avoid this, we check which entities should be set
to not_home only once every second.
* feat: add stop to openzwave (mqtt) cover
* Fix isort and black linter
* Remove supported_features for cover.
As suggested by @MartinHjelmare, not needed anymore because base class
implementation is sufficient.
https://github.com/home-assistant/core/pull/44622#discussion_r549854542
* Make a simpler version depending on idempotency
qt-openzwave already implements idempotency, see:
77e414217f/qt-openzwave/source/qtozwvalueidmodel.cpp (L180)
We can use it and trigger button release anywhen.
* Clean up
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* non optimistic
* test restored state
* ups
* review
* Ensure the entity is not in optimistic mode
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Disambiguate HTTPUnauthorized on user/password validation
The HA core API usually returns 401 when the request does not
have proper authentication tokens or they have expired.
However the user/password validation endpoint may also return
401 when the given user/password is invalid.
The supervisor is currently unable to distinguish both scenarios,
and it needs to.
See https://github.com/home-assistant/supervisor/issues/2408
* Return 404 if user& password are not found/valid
* Fix test for invalid user/password
* Use parent_id to find cause of events with new contexts
When looking up the causing event for logbook display, use the `parent_id`
of the current context if the current context just points back to the
current event.
This now shows in the logbook the cause of an event in the case that a
component has created a new context from an existing context and tied
them together via the `Context.parent_id`.
* Fix exception when parent event not available
* Use async_Log_entry to avoid jump into executor
* useEndTime2hour - 2 hours
* useEndTime4hour - 4 hours
* indefinite - Until I change it
These changes have been tested with an ecobee3 lite running firmware
version 4.5.81.200
Signed-off-by: Jamin W. Collins <jamin.collins@gmail.com>
* Remove sensor-scaling, handled by the back-end
* Correct assert-values
* Update test-fixtures
* Revert "Correct assert-values"
This reverts commit f1a1891f73.
* Adapt value to the updated userdata set
* Link to plugwise v0.8.5, update fixtures
* Correct test-values
* Fix typo
* Make async_get_device connections Optional, default None
* Remove unnecessary async_get_device connections arg usages
Some of these were using an incorrect collection type, which didn't
cause issues mostly just due to luck.
* Capture nest still images from events
Use python google-nest-sdm API for fetching images. Update home assistant
to use the google-nest-sdm API for fetching the image contents generated
by the server. This uses the existing websession object for server fetches,
reducing the amount of new code and facilites unit testing using the existing
mechanism.
Simplify tests using the image fetch API rather than a snapshot API
* Updates following comments in PR 44728
* Make all api calls in same thread context
* Set API as parameter to get_all_pools_data
* extract pools data retrieval function to api class
* Re-add support for dynamic groups
* Add tests
* Add support for manufacturer
* Refactor support for dynamic groups
* Bump pychromecast to 7.7.0
* Bump pychromecast to 7.7.1
* Tweak tests
* Apply review suggestion
* Adding switch code for harmony activities
* Working on-off
* Removing poll code for now
* Async updates for current activity
* Update our state based on events
* Notifications we got connected or disconnected
* Remove unncessary constructor arg
* Initial switch tests
* Additional tests for switch transitions
* Test transitions for availability
* Testing switch state changes
* Tests passing
* Final tests
* Updating manifest.
* Correctly mock the return value from a call to the library
* Adding new subscriber classes
* Update class name and location
* Got the refactor working locally.
* Tests passing
* Tracking state changes
* Remove write_to_config_file - this appears to never be read.
It was added far back in the past to account for a harmony library
change, but nothing ever reads that path.
Removing that side effect from tests is a pain - avoid the side effect
completely.
* Connection changes tested
* Clean up temporary code
* Update .coveragerc for harmony component
Specifically exclude untested files instead of the whole module
* Fix linting
* test sending activity change commands by id
* Improving coverage
* Testing channel change commands
* Splitting subscriber logic into it's own class
* Improve coverage and tighten up .coveragerc
* Test cleanups.
* re-add config file writing for harmony remote
* Create fixture for the mock harmonyclient
* Reduce duplication in subscription callbacks
* use async_run_job to call callbacks
* Adding some tests for async behaviors with subscribers.
* async_call_later for delay in marking remote unavailable
* Test disconnection handling in harmony remote
* Early exit if activity not specified
* Use connection state mixin
* Lint fix after rebase
* Fix isort
* super init for ConnectionStateMixin
* Adding @mkeesey to harmony CODEOWNERS
* Add nearest method
* Add tests
* Move urls to consts
* Simplify config flow
* Fix tests
* Update tests
* Use in instead get
* Fix AirlyError message in tests
* Fix manual update entity tests
* Clean up tests
* Fix after rebase
* Increase test coverage
* Format the code
* Fix after rebase
* Add logbook and device trigger platforms to Shelly
Add `logbook` platform for describing “shelly.click” event
Add `device_trigger` platform for adding automation based on click events:
Example of logbook event:
Shelly 'single' click event for Test I3 channel 3 was fired.
(Test I3 is the name of the device)
Example of automation triggers:
First button triple clicked
First button long clicked and then single clicked
First button double clicked
First button long clicked
First button single clicked and then long clicked
First button single clicked
Second button triple clicked
..
Second button single clicked
* Fix codespell
* Remove pylint added for debug
* Add tests
* Rebase
* Fix Rebase & Apply PR review suggestions
Fix tests after rebasing
Use `INPUTS_EVENTS_DICT` for input triggers
Apply PR suggestions
* First implementationof Ondilo component support
* Update manifest toadd pypi pkg dependency
* Update entities name and corrected refresh issue
* Changed percentage unit name
* Corrected merge issues
* Updated coveragerc
* cleaned up code and corrected config flow tests
* Code cleanup and added test for exisitng entry
* Changes following PR comments:
- Inherit CoordinatorEntity instead of Entity
- Merged pools blocking calls into one
- Renamed devices vars to sensors
- Check supported sensor types
- Stop relying on array index position for pools
- Stop relying on attribute position in dict for sensors
* Corrected unit test
* Reformat sensor type check
* Bump PyTado to v0.10.0
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* Tado: switch to getDeviceInfo
This function has been introduced in version 0.10.0 of PyTado.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* Tado: update tests
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* Add tilt control for RFXtrx Rfy venetian blinds
* Update Rfy cover test
* Update the required version of pyRFXtrx
* Update required pyRFXtrx version to 0.26.1
* Revert "Update required pyRFXtrx version to 0.26.1"
This reverts commit d54f1645d5.
* Revert "Update the required version of pyRFXtrx"
This reverts commit ac36d65326.
* Update required version of pyRFXtrx to 0.26.1
* @dzukero
Update required version of pyRFXtrx to 0.26.1
* Make requested changes from review
* Fix isort
* Remove set tilt position support
* Remove set tilt position support per review
* Add service to enable / disable music mode
* Black reformat
* Update test
* Fix tests
* Revert consts cleanup
* Use entity method as service call
* Use ATTR for service call
* Sort
* Add tests
* Fix isort
* Fix print
* Black