Home Assistant Unofficial Reference 2024.12.1
const.py
Go to the documentation of this file.
1 """Constants for the Z-Wave JS integration."""
2 
3 from __future__ import annotations
4 
5 import logging
6 
7 from awesomeversion import AwesomeVersion
8 from zwave_js_server.const.command_class.window_covering import (
9  WindowCoveringPropertyKey,
10 )
11 
12 from homeassistant.const import APPLICATION_NAME, __version__ as HA_VERSION
13 
14 LR_ADDON_VERSION = AwesomeVersion("0.5.0")
15 
16 USER_AGENT = {APPLICATION_NAME: HA_VERSION}
17 
18 CONF_ADDON_DEVICE = "device"
19 CONF_ADDON_EMULATE_HARDWARE = "emulate_hardware"
20 CONF_ADDON_LOG_LEVEL = "log_level"
21 CONF_ADDON_NETWORK_KEY = "network_key"
22 CONF_ADDON_S0_LEGACY_KEY = "s0_legacy_key"
23 CONF_ADDON_S2_ACCESS_CONTROL_KEY = "s2_access_control_key"
24 CONF_ADDON_S2_AUTHENTICATED_KEY = "s2_authenticated_key"
25 CONF_ADDON_S2_UNAUTHENTICATED_KEY = "s2_unauthenticated_key"
26 CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY = "lr_s2_access_control_key"
27 CONF_ADDON_LR_S2_AUTHENTICATED_KEY = "lr_s2_authenticated_key"
28 CONF_INSTALLER_MODE = "installer_mode"
29 CONF_INTEGRATION_CREATED_ADDON = "integration_created_addon"
30 CONF_NETWORK_KEY = "network_key"
31 CONF_S0_LEGACY_KEY = "s0_legacy_key"
32 CONF_S2_ACCESS_CONTROL_KEY = "s2_access_control_key"
33 CONF_S2_AUTHENTICATED_KEY = "s2_authenticated_key"
34 CONF_S2_UNAUTHENTICATED_KEY = "s2_unauthenticated_key"
35 CONF_LR_S2_ACCESS_CONTROL_KEY = "lr_s2_access_control_key"
36 CONF_LR_S2_AUTHENTICATED_KEY = "lr_s2_authenticated_key"
37 CONF_USB_PATH = "usb_path"
38 CONF_USE_ADDON = "use_addon"
39 CONF_DATA_COLLECTION_OPTED_IN = "data_collection_opted_in"
40 DOMAIN = "zwave_js"
41 
42 DATA_CLIENT = "client"
43 DATA_OLD_SERVER_LOG_LEVEL = "old_server_log_level"
44 
45 EVENT_DEVICE_ADDED_TO_REGISTRY = f"{DOMAIN}_device_added_to_registry"
46 EVENT_VALUE_UPDATED = "value updated"
47 
48 LOGGER = logging.getLogger(__package__)
49 LIB_LOGGER = logging.getLogger("zwave_js_server")
50 
51 # constants extra state attributes
52 ATTR_RESERVED_VALUES = "reserved_values" # ConfigurationValue number entities
53 
54 # constants for events
55 ZWAVE_JS_VALUE_NOTIFICATION_EVENT = f"{DOMAIN}_value_notification"
56 ZWAVE_JS_NOTIFICATION_EVENT = f"{DOMAIN}_notification"
57 ZWAVE_JS_VALUE_UPDATED_EVENT = f"{DOMAIN}_value_updated"
58 ATTR_NODE_ID = "node_id"
59 ATTR_HOME_ID = "home_id"
60 ATTR_ENDPOINT = "endpoint"
61 ATTR_LABEL = "label"
62 ATTR_VALUE = "value"
63 ATTR_VALUE_RAW = "value_raw"
64 ATTR_COMMAND_CLASS = "command_class"
65 ATTR_COMMAND_CLASS_NAME = "command_class_name"
66 ATTR_TYPE = "type"
67 ATTR_PROPERTY_NAME = "property_name"
68 ATTR_PROPERTY_KEY_NAME = "property_key_name"
69 ATTR_PROPERTY = "property"
70 ATTR_PROPERTY_KEY = "property_key"
71 ATTR_PARAMETERS = "parameters"
72 ATTR_DIRECTION = "direction"
73 ATTR_EVENT = "event"
74 ATTR_EVENT_LABEL = "event_label"
75 ATTR_EVENT_TYPE = "event_type"
76 ATTR_EVENT_DATA = "event_data"
77 ATTR_DATA_TYPE = "data_type"
78 ATTR_WAIT_FOR_RESULT = "wait_for_result"
79 ATTR_OPTIONS = "options"
80 ATTR_TEST_NODE_ID = "test_node_id"
81 ATTR_STATUS = "status"
82 ATTR_ACKNOWLEDGED_FRAMES = "acknowledged_frames"
83 ATTR_EVENT_TYPE_LABEL = "event_type_label"
84 ATTR_DATA_TYPE_LABEL = "data_type_label"
85 ATTR_NOTIFICATION_TYPE = "notification_type"
86 ATTR_NOTIFICATION_EVENT = "notification_event"
87 
88 ATTR_NODE = "node"
89 ATTR_ZWAVE_VALUE = "zwave_value"
90 
91 # automation trigger attributes
92 ATTR_PREVIOUS_VALUE = "previous_value"
93 ATTR_PREVIOUS_VALUE_RAW = "previous_value_raw"
94 ATTR_CURRENT_VALUE = "current_value"
95 ATTR_CURRENT_VALUE_RAW = "current_value_raw"
96 ATTR_DESCRIPTION = "description"
97 ATTR_EVENT_SOURCE = "event_source"
98 ATTR_CONFIG_ENTRY_ID = "config_entry_id"
99 ATTR_PARTIAL_DICT_MATCH = "partial_dict_match"
100 
101 # service constants
102 SERVICE_BULK_SET_PARTIAL_CONFIG_PARAMETERS = "bulk_set_partial_config_parameters"
103 SERVICE_CLEAR_LOCK_USERCODE = "clear_lock_usercode"
104 SERVICE_INVOKE_CC_API = "invoke_cc_api"
105 SERVICE_MULTICAST_SET_VALUE = "multicast_set_value"
106 SERVICE_PING = "ping"
107 SERVICE_REFRESH_NOTIFICATIONS = "refresh_notifications"
108 SERVICE_REFRESH_VALUE = "refresh_value"
109 SERVICE_RESET_METER = "reset_meter"
110 SERVICE_SET_CONFIG_PARAMETER = "set_config_parameter"
111 SERVICE_SET_LOCK_USERCODE = "set_lock_usercode"
112 SERVICE_SET_LOCK_CONFIGURATION = "set_lock_configuration"
113 SERVICE_SET_VALUE = "set_value"
114 
115 ATTR_NODES = "nodes"
116 # config parameter
117 ATTR_CONFIG_PARAMETER = "parameter"
118 ATTR_CONFIG_PARAMETER_BITMASK = "bitmask"
119 ATTR_CONFIG_VALUE = "value"
120 ATTR_VALUE_SIZE = "value_size"
121 ATTR_VALUE_FORMAT = "value_format"
122 # refresh value
123 ATTR_REFRESH_ALL_VALUES = "refresh_all_values"
124 # multicast
125 ATTR_BROADCAST = "broadcast"
126 # meter reset
127 ATTR_METER_TYPE = "meter_type"
128 ATTR_METER_TYPE_NAME = "meter_type_name"
129 # invoke CC API
130 ATTR_METHOD_NAME = "method_name"
131 ATTR_PARAMETERS = "parameters"
132 # lock set configuration
133 ATTR_AUTO_RELOCK_TIME = "auto_relock_time"
134 ATTR_BLOCK_TO_BLOCK = "block_to_block"
135 ATTR_HOLD_AND_RELEASE_TIME = "hold_and_release_time"
136 ATTR_LOCK_TIMEOUT = "lock_timeout"
137 ATTR_OPERATION_TYPE = "operation_type"
138 ATTR_TWIST_ASSIST = "twist_assist"
139 
140 ADDON_SLUG = "core_zwave_js"
141 
142 # Sensor entity description constants
143 ENTITY_DESC_KEY_BATTERY = "battery"
144 ENTITY_DESC_KEY_CURRENT = "current"
145 ENTITY_DESC_KEY_VOLTAGE = "voltage"
146 ENTITY_DESC_KEY_ENERGY_MEASUREMENT = "energy_measurement"
147 ENTITY_DESC_KEY_ENERGY_TOTAL_INCREASING = "energy_total_increasing"
148 ENTITY_DESC_KEY_POWER = "power"
149 ENTITY_DESC_KEY_POWER_FACTOR = "power_factor"
150 ENTITY_DESC_KEY_CO = "co"
151 ENTITY_DESC_KEY_CO2 = "co2"
152 ENTITY_DESC_KEY_HUMIDITY = "humidity"
153 ENTITY_DESC_KEY_ILLUMINANCE = "illuminance"
154 ENTITY_DESC_KEY_PRESSURE = "pressure"
155 ENTITY_DESC_KEY_SIGNAL_STRENGTH = "signal_strength"
156 ENTITY_DESC_KEY_TEMPERATURE = "temperature"
157 ENTITY_DESC_KEY_TARGET_TEMPERATURE = "target_temperature"
158 ENTITY_DESC_KEY_UV_INDEX = "uv_index"
159 ENTITY_DESC_KEY_MEASUREMENT = "measurement"
160 ENTITY_DESC_KEY_TOTAL_INCREASING = "total_increasing"
161 
162 ENTITY_DESC_KEY_ENERGY_PRODUCTION_POWER = "energy_production_power"
163 ENTITY_DESC_KEY_ENERGY_PRODUCTION_TIME = "energy_production_time"
164 ENTITY_DESC_KEY_ENERGY_PRODUCTION_TOTAL = "energy_production_total"
165 ENTITY_DESC_KEY_ENERGY_PRODUCTION_TODAY = "energy_production_today"
166 
167 # This API key is only for use with Home Assistant. Reach out to Z-Wave JS to apply for
168 # your own (https://github.com/zwave-js/firmware-updates/).
169 API_KEY_FIRMWARE_UPDATE_SERVICE = (
170  "2e39d98fc56386389fbb35e5a98fa1b44b9fdd8f971460303587cff408430d4cfcde6134"
171 )
172 
173 # Platform constants
174 # cover
175 COVER_POSITION_PROPERTY_KEYS: set[str | int | None] = {
176  WindowCoveringPropertyKey.INBOUND_BOTTOM,
177  WindowCoveringPropertyKey.INBOUND_BOTTOM_NO_POSITION,
178  WindowCoveringPropertyKey.INBOUND_LEFT,
179  WindowCoveringPropertyKey.INBOUND_LEFT_NO_POSITION,
180  WindowCoveringPropertyKey.INBOUND_LEFT_RIGHT,
181  WindowCoveringPropertyKey.INBOUND_LEFT_RIGHT_NO_POSITION,
182  WindowCoveringPropertyKey.INBOUND_RIGHT,
183  WindowCoveringPropertyKey.INBOUND_RIGHT_NO_POSITION,
184  WindowCoveringPropertyKey.INBOUND_TOP,
185  WindowCoveringPropertyKey.INBOUND_TOP_NO_POSITION,
186  WindowCoveringPropertyKey.INBOUND_TOP_BOTTOM,
187  WindowCoveringPropertyKey.INBOUND_TOP_BOTTOM_NO_POSITION,
188  WindowCoveringPropertyKey.OUTBOUND_BOTTOM,
189  WindowCoveringPropertyKey.OUTBOUND_BOTTOM_NO_POSITION,
190  WindowCoveringPropertyKey.OUTBOUND_LEFT,
191  WindowCoveringPropertyKey.OUTBOUND_LEFT_NO_POSITION,
192  WindowCoveringPropertyKey.OUTBOUND_RIGHT,
193  WindowCoveringPropertyKey.OUTBOUND_RIGHT_NO_POSITION,
194  WindowCoveringPropertyKey.OUTBOUND_TOP,
195  WindowCoveringPropertyKey.OUTBOUND_TOP_NO_POSITION,
196 }
197 
198 COVER_TILT_PROPERTY_KEYS: set[str | int | None] = {
199  WindowCoveringPropertyKey.HORIZONTAL_SLATS_ANGLE,
200  WindowCoveringPropertyKey.HORIZONTAL_SLATS_ANGLE_NO_POSITION,
201  WindowCoveringPropertyKey.VERTICAL_SLATS_ANGLE,
202  WindowCoveringPropertyKey.VERTICAL_SLATS_ANGLE_NO_POSITION,
203 }