* Handle zwave_js metadata updates when the unit changes
* Use value updated event instead of metadata updated event so we don't get an invalid state value
* update comments and formatting
* simplify
* Update tests/components/zwave_js/test_sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zwave_js/test_sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zwave_js/test_sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* fix tests
* add additional assertions
* Add unit checks and simplify logic
* Add unit assertion
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Only replace a node if the mfgr id / prod id / prod type differ
* Prefer original device name for unready node
* move register_node_in_dev_reg into async_setup_entry
* simplify get_device_id_ext
* Don't need hex ids
* Revert "move register_node_in_dev_reg into async_setup_entry"
This reverts commit f900e5fb0c67cc81657a1452b51c313bccb6f9e1.
* Revert Callable change
* Revert device backup name
* Add test fixtures
* Update existing not ready test with new fixture data
* Check device properties after node added event
* Add entity check
* Check for extended device id
* better device info checks
* Use receive_event to properly setup components
* Cleanup tests
* improve test_replace_different_node
* improve test_replace_same_node
* add test test_node_model_change
* Clean up long comments and strings
* Format
* Reload integration to detect node device config changes
* update assertions
* Disable entities on "value removed" event
* Disable node status sensor on node replacement
* Add test for disabling entities on remove value event
* Add test for disabling node status sensor on node replacement
* disable entity -> remove entity
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use configured speed ranges for HomeSeer FC200+ fan controllers in zwave_js
* Fix pylint errors
* Remove unused param in tests
* Fix test values
* Address various review notes
* Remove now-redundant assertion
* Add an additional test case for set_percentage=0
* Use round() instead of int() for percentage computations; this makes the percentage setting match the setpoints in the UI
* Add additional tests
* Fix pct conversions
* Make conversion tests exhaustive
* Add tests for discovery data templates
* Revert "Add tests for discovery data templates"
This reverts commit 85dcbc0903.
* Improve typing on ConfigurableFanSpeedDataTemplate#resolve_data
* Move config error handling to the discovery data template
* Fix checks for config data
* Revise fallback logic in percentage_to_zwave_speed and ensure that the speed list is non-empty
* Rework error handling
* Fix runtime fan speed updates
* Use warning instead of warn
* Move data validation to get_speed_config; turns out that resolve_data is only called once, at startup.
* Temporarily remove the not-yet-used fixed fan speed template. Add an additional assertion to ensure speeds are sorted.
* Add a comment about the assertions in discovery_data_template.py
* Update homeassistant/components/zwave_js/discovery_data_template.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fix typo in comment
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Convert persistent notification tests to async
* Create/dismiss persistent notifications in exposed functions, not service calls
* Fix notify persistent_notification
* Remove setting up persistent_notification
* Drop more setups
* Empty methods
* Undeprecate sync methods because too big task
* Fix setup clearing notifications
* Fix a bunch of tests
* Fix more tests
* Uno mas
* Test persistent notification events
* Clean up stale comment
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add support for multilevel switch CC select entities
* Use state names from docs and include more device identifiers from device DB
* black
* pylint
* type fix
* Add failure scenario test
* Update homeassistant/components/zwave_js/select.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Reuse zwave_js device when a removed node is replaced with the same node
* Ensure change is backwards compatible with servers that don't include replaced
* Remove lambda
* Add assertions to remove type ignores
* fix tests by always copying state and setting manufacturer/label attributes
* Handle new entity creation when a new value is added
* spacing
* Update homeassistant/components/zwave_js/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* change variable name and use asyncio.gather
* Centralized where discovered value IDs gets managed
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add zwave_js automation trigger
* Rename to align with zwave-js api
* Improve test coverage
* Add additional template variables
* Support states values in addition to keys when present
* remove entity ID from trigger payload
* comments and order
* Add init and dynamically define platform_type
* reduce mypy ignores
* pylint
* pylint
* review
* use module map
* Add Protection CC select entities
comment
* Disable entity by default
* use class attribute
* Enable protection entity by default
* add guard for none
* Create zwave-js select platform and add siren values to number and select platforms
* use constants while we wait for lib release
* comments
* rename stuff in tests to prepare for protection CC PR
* Switch to 0-1 range for number entity
* Update homeassistant/components/zwave_js/number.py
Co-authored-by: kpine <keith.pine@gmail.com>
* Change step
* Switch to ToneID
* Better error handling
* Add test for coerage
Co-authored-by: kpine <keith.pine@gmail.com>
* Add energy support for zwave_js meter CC entities
* shrink
* comments
* comments
* comments
* Move attributes
* Add tests
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add zwave_js.meter_reset service
* fix log statement
* Add endpoint attribute to service call and rename service
* Make service an entity service
* remove endpoint from service description
* Add On/Off as target values for stop cover
Certain ZWave Cover devices use On/Off instead of the more common
Open/Close and Up/Down targets for movement.
Adding On/Off to the targets used to stop the cover during movement.
Fixes issue #51963
* Add test for updated zwave_js stop cover logic
* Initial support for zwave_js device triggers
* lint
* Add node status changed trigger
* comments
* create helper function and simplify trigger logic
* simplify code
* fix exception
* remove unused type ignore
* switch to append to make future changes easier
* make exception consistent
* Add state config schema validation
* comment
* remove 0 from falsy check
* increase test coverage
* typos
* Add central scene and scene activation value notification triggers
* reorder things for readability and enumerate node statuses
* Add support for Basic CC value notifications
* fix schemas since additional fields on triggers aren't very flexible
* pylint
* remove extra logger statement
* fix comment
* dont use get when we know key will be available in dict
* tweak text
* use better schema for required extra fields that are ints
* rename trigger types to make them easier to parse
* fix strings
* missed renaming of one trigger type
* typo
* Fix strings
* reduce complexity
* Use Al's suggestion for strings
* add additional failure test cases
* remove errant logging statement
* make CC required
* raise vol.Invalid when value ID isn't legit to prepare for next PR
* Use helper function
* fix tests
* black
* Add support for Z-Wave JS siren
* Add additional device class to discovery
* fix docstring
* Remove device class specific part of discovery schema
* rename test
* switch to entry.async_on_remove
* Fix logic based on #52971
* Use constants to unblock PR
* Add support to set volume level
* Update homeassistant/components/zwave_js/siren.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add transition support to zwave_js lights
* Add transition support to color_switch lights
* simplify and add tests
* fix logic
* add check for color transition to add SUPPORT_TRANSITON supported features
* Use new metadata property
* Use new metadata property
* update tests and device state dump json files
* fix file perms
* update tests and fixtures with new metadata
* update test
* update test
* update tests for color transitions
* check for color tansitions as well
* more tests
* fix color transtions
* remove unneed default
* set add_to_watched_value_ids to false
* set transition default
* properly set default
* update tests
* make sure transition is an int
* suggested changes
* 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>
* 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>
* Update homeassistant/components/zwave_js/light.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* formatting
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Don't create any devices or entities for dead zwave_js nodes
* mark entities for dead nodes as unavailable
* add test
* watch for node status updates
* update tests to handle node status changes as well
* Fix zwave_js migration logic
* revert change to move tests to new module
* Update tests/components/zwave_js/test_init.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add zwave_js view to retrieve a node's state
* remove typehints
* Make dump views require admin
* Add version info to node level dump
* Add back typehints
* switch from list to dict
* switch from dump node view to two WS API commands
* switch to snake
* Add zwave_js node status sensor
* fix import
* use parent class name property
* Use more entity class attributes
* Update homeassistant/components/zwave_js/sensor.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* return static values in property method
* fix PR
* switch to class atributes
* create sensor platform task if needed
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Add zwave_js.multicast_set_value service
* comment
* Add test for multiple config entries validation
* additional validation test
* brevity
* wrap schema in vol.Schema
* Update homeassistant/components/zwave_js/services.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* do node transform and multicast validation in schema validation
* move poll value entity validation into schema validation, pass helper functions dev and ent reg instead of retrieving it every time
* make validators nested functions since they don't neeed to be externally accessible
* Update homeassistant/components/zwave_js/services.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Remove errant ALLOW_EXTRA
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>