hass-core/homeassistant/components/zwave_js
Michael Kowalchuk 74cfbf5f42
Use configured speed ranges for HomeSeer FC200+ fan controllers in zwave_js (#59697)
* 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>
2021-11-24 11:31:59 +01:00
..
docs
translations [ci skip] Translation update 2021-11-23 00:13:54 +00:00
triggers Clean up unused loggers (#57662) 2021-10-14 10:03:38 -07:00
__init__.py Adjust DeviceInfo registration on zwave_js (#58391) 2021-10-25 12:05:45 +02:00
addon.py Manage s2 keys in zwave_js (#56783) 2021-09-29 15:04:24 -07:00
api.py Add additional properties to node_status WS cmd (#56927) 2021-10-05 11:23:44 -04:00
binary_sensor.py Add more zwave_js binary sensor descriptions (#59474) 2021-11-17 12:53:44 +01:00
climate.py Use assignment expressions 28 (#58189) 2021-10-22 14:06:04 +02:00
config_flow.py Adjust async_step_usb signature for strict typing (#59773) 2021-11-16 19:03:50 +01:00
const.py Bump zwave-js-server-python to 0.32.0 (#59727) 2021-11-17 11:56:48 +01:00
cover.py Remove zwave_js cover workaround (#59939) 2021-11-18 23:04:21 +01:00
device_action.py Add support for zwave_js device actions (#53038) 2021-09-28 09:06:02 +02:00
device_automation_helpers.py Add support for zwave_js device actions (#53038) 2021-09-28 09:06:02 +02:00
device_condition.py Add support for zwave_js device actions (#53038) 2021-09-28 09:06:02 +02:00
device_trigger.py Use assignment expressions 28 (#58189) 2021-10-22 14:06:04 +02:00
discovery.py Use configured speed ranges for HomeSeer FC200+ fan controllers in zwave_js (#59697) 2021-11-24 11:31:59 +01:00
discovery_data_template.py Use configured speed ranges for HomeSeer FC200+ fan controllers in zwave_js (#59697) 2021-11-24 11:31:59 +01:00
entity.py Use DeviceInfo in zwave-js (#58649) 2021-10-28 19:00:12 -05:00
fan.py Use configured speed ranges for HomeSeer FC200+ fan controllers in zwave_js (#59697) 2021-11-24 11:31:59 +01:00
helpers.py Use assignment expressions 28 (#58189) 2021-10-22 14:06:04 +02:00
light.py Switch to using constants wherever possible in zwave_js (#56518) 2021-09-30 02:21:53 +02:00
lock.py Add support for zwave_js device actions (#53038) 2021-09-28 09:06:02 +02:00
manifest.json Bump zwave-js-server-python to 0.33.0 (#60213) 2021-11-23 10:53:46 -05:00
migrate.py Use assignment expressions 28 (#58189) 2021-10-22 14:06:04 +02:00
number.py Switch to using constants wherever possible in zwave_js (#56518) 2021-09-30 02:21:53 +02:00
README.md
select.py Add zwave_js select entity category (#59157) 2021-11-05 10:31:51 -04:00
sensor.py Add explicit unit mapping for zwave_js meters and sensors (#59659) 2021-11-17 12:26:32 -05:00
services.py Convert val to str when needed while calling zwave_js.set_value (#57216) 2021-10-07 13:22:33 -07:00
services.yaml Add zwave_js.reset_meter service (#53390) 2021-07-28 23:15:27 +02:00
siren.py Bump zwave-js-server-python to 0.29.1 (#55460) 2021-08-30 09:40:56 -07:00
strings.json Add strings for new zwave_js config flow keys (#56844) 2021-09-30 22:32:17 +02:00
switch.py Switch to using constants wherever possible in zwave_js (#56518) 2021-09-30 02:21:53 +02:00
trigger.py Automation trigger info type hint improvements (#55402) 2021-09-04 02:25:51 +02:00

Z-Wave JS Architecture

This document describes the architecture of Z-Wave JS in Home Assistant and how the integration is connected all the way to the Z-Wave USB stick controller.

Architecture

Connection diagram

alt text

Z-Wave USB stick

Communicates with devices via the Z-Wave radio and stores device pairing.

Z-Wave JS

Represents the USB stick serial protocol as devices.

Z-Wave JS Server

Forward the state of Z-Wave JS over a WebSocket connection.

Z-Wave JS Server Python

Consumes the WebSocket connection and makes the Z-Wave JS state available in Python.

Z-Wave JS integration

Represents Z-Wave devices in Home Assistant and allows control.

Home Assistant

Best home automation platform in the world.

Running Z-Wave JS Server

alt text

Z-Wave JS Server can be run as a standalone Node app.

It can also run as part of Z-Wave JS 2 MQTT, which is also a standalone Node app.

Both apps are available as Home Assistant add-ons. There are also Docker containers etc.