* 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
* Switch to using entity class attributes where possible in zwave_js
* fix
* revert docstring
* remove unused init
* Revert some changes based on feedback in #51181
* switch to class atributes
* 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>
* Add WS API support for zwave_js firmware updates
* move file to fixture
* review comments
* fix logic and test based on upstream changes
* handle failure scenario
* handle failure scenario
* fix tests and adjust message
* Update homeassistant/components/zwave_js/api.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* remove return from firmware upload view because client will raise an exception if not successful
* raise if user is not an admin
* raise bad request exception if firmware command fails
* incorporate #50923
* Add test for failed command
* add event name to messages
* change error to not found
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Change config entry state to an enum
* Allow but deprecate EntryState str equality comparison
* Test fixes
* Rename to ConfigEntryState
* Remove str comparability backcompat
* Update new occurrences of strs cropped up during review
* Set device_class for shutters and blinds
* Add missing. imports
* Add tests for device class setting
* Clean up
* Avoid storing the node in an unused variable
* Fix entity name
* Extend qubino shutter discovery
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add interview feedback for add node websocket
* cleanup leftover logging
* add tests
* test interview failed event
* fix event type
* include manufacturer & model from device registry
* update test
* Add zwave_js support for HeatIt Z-TRM2fx
* fix docstring
* use AwesomeVersion to support firmware version ranges
* add guard against empty firmware range
* switch guard approach to raise exception sooner
* make post init more generic
* Set up firmware range schema as AwesomeVersion during initialization
* Update homeassistant/components/zwave_js/discovery.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Allow min_ver and max_ver to be None
* fix docstring
* reduce import scope
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add zwave_js WS API commands for node.refresh_values and node.refresh_cc_values
* remove guard since API will be used by frontend
* add missing validation
* use get in case node ID is wrong
* use decorator
* add additional coverage
* Add zwave_js discovery schema for Vision Security ZL7432
* add tests
* fix test
* add correct fixture
* Make discussed changes
* fix tests
* move event handler
* fix logic to get entity ID
* add test
* make discovery test more explicit
* remove domain from event data
* always provide entity_id key to make automations easier and translate value if possible
* formatting
* comment
* dont overwrite value
* Add WS API commands to capture zwave_js logs from server
* register commands
* create a task
* Update homeassistant/components/zwave_js/api.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/zwave_js/api.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* fix
* fixes and add test
* fix PR on rebase
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Migrate existing zwave_js entities if endpoint has changed
* better function name
* cleanup code
* return as early as we can
* use defaultdict instead of setdefault
* PR comments
* re-add missing logic
* set defaultdict outside of for loop
* additional cleanup
* parametrize tests
* fix reinterview logic
* test that we skip migration when multiple entities are found
* Update tests/components/zwave_js/test_init.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Lazy load zwave_js platforms when the first entity needs to be created
* switch order to make things easier to understand
* await task instead of using wait_for_done callback
* gather tasks
* switch from asyncio.create_task to hass.async_create_task
* unsubscribe from callbacks before unloading platforms
* Clean up as much as possible during entry unload, even if a platform unload fails
* Add zwave_js.bulk_set_partial_config_parameters service
* update to handle command status
* add test for awake node
* test using a device in service call
* Bump zwave-js-server-python to 0.23.0 and update integration to support schema changes
* refactor notification evenets a bit
* fix tests and bug fixes
* additional changes due to new PR
* add command class and command name
* use new event names so we can retain event property names
* handle command status being returned from async_set_config_parameter
* bump dependency version
* adjust log message to be consistent
* disable pylint warning
* Update homeassistant/components/zwave_js/services.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* add test for awake node
* switch async_get_registry to async_get
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* A platform is not a component
* Fix dynalite
* SUPPORTED_PLATFORMS --> PLATFORMS
* In tests
* In tests 2
* Fix SmartThings
* Fix ZHA test
* Fix Z-Wave
* Revert Z-Wave
* Use PLATFORMS const in ambient_station
* Fix ihc comment
* Unused pylint suppression cleanups
* Remove outdated pylint bug references
* Add flake8-noqa config and note to run it every now and then
* Add codes to noqa's
* Unused noqa cleanups