zwave-js-server-python 0.29.0__tar.gz → 0.30.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/PKG-INFO +1 -1
  2. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/setup.py +1 -1
  3. zwave-js-server-python-0.30.0/zwave_js_server/const/__init__.py +217 -0
  4. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/__init__.py +1 -0
  5. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/barrier_operator.py +21 -0
  6. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/color_switch.py +32 -0
  7. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/entry_control.py +44 -0
  8. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/lock.py +52 -0
  9. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/meter.py +102 -0
  10. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/multilevel_sensor.py +716 -0
  11. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/multilevel_switch.py +8 -0
  12. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/sound_switch.py +10 -0
  13. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/thermostat.py +109 -0
  14. zwave-js-server-python-0.30.0/zwave_js_server/const/command_class/wake_up.py +3 -0
  15. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/exceptions.py +5 -3
  16. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/controller.py +4 -4
  17. zwave-js-server-python-0.30.0/zwave_js_server/util/command_class/__init__.py +1 -0
  18. zwave-js-server-python-0.29.0/zwave_js_server/util/command_class.py → zwave-js-server-python-0.30.0/zwave_js_server/util/command_class/meter.py +5 -19
  19. zwave-js-server-python-0.30.0/zwave_js_server/util/command_class/multilevel_sensor.py +35 -0
  20. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/util/lock.py +2 -2
  21. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server_python.egg-info/PKG-INFO +1 -1
  22. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server_python.egg-info/SOURCES.txt +15 -2
  23. zwave-js-server-python-0.29.0/zwave_js_server/const.py +0 -701
  24. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/LICENSE +0 -0
  25. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/README.md +0 -0
  26. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/setup.cfg +0 -0
  27. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/test/test_client.py +0 -0
  28. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/test/test_dump.py +0 -0
  29. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/test/test_event.py +0 -0
  30. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/test/test_firmware.py +0 -0
  31. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/test/test_main.py +0 -0
  32. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/test/test_version.py +0 -0
  33. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/__init__.py +0 -0
  34. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/__main__.py +0 -0
  35. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/client.py +0 -0
  36. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/dump.py +0 -0
  37. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/event.py +0 -0
  38. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/firmware.py +0 -0
  39. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/__init__.py +0 -0
  40. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/association.py +0 -0
  41. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/command_class.py +0 -0
  42. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/device_class.py +0 -0
  43. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/device_config.py +0 -0
  44. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/driver.py +0 -0
  45. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/endpoint.py +0 -0
  46. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/firmware.py +0 -0
  47. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/log_config.py +0 -0
  48. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/log_message.py +0 -0
  49. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/node.py +0 -0
  50. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/notification.py +0 -0
  51. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/value.py +0 -0
  52. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/model/version.py +0 -0
  53. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/util/__init__.py +0 -0
  54. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/util/helpers.py +0 -0
  55. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/util/multicast.py +0 -0
  56. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/util/node.py +0 -0
  57. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server/version.py +0 -0
  58. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server_python.egg-info/dependency_links.txt +0 -0
  59. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server_python.egg-info/entry_points.txt +0 -0
  60. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server_python.egg-info/not-zip-safe +0 -0
  61. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server_python.egg-info/requires.txt +0 -0
  62. {zwave-js-server-python-0.29.0 → zwave-js-server-python-0.30.0}/zwave_js_server_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zwave-js-server-python
3
- Version: 0.29.0
3
+ Version: 0.30.0
4
4
  Summary: Python wrapper for zwave-js-server
5
5
  Home-page: https://github.com/home-assistant-libs/zwave-js-server-python
6
6
  Author: Home Assistant Team
@@ -5,7 +5,7 @@ from setuptools import find_packages, setup
5
5
 
6
6
  PROJECT_DIR = Path(__file__).parent.resolve()
7
7
  README_FILE = PROJECT_DIR / "README.md"
8
- VERSION = "0.29.0"
8
+ VERSION = "0.30.0"
9
9
 
10
10
 
11
11
  setup(
@@ -0,0 +1,217 @@
1
+ """Constants for the Z-Wave JS python library."""
2
+ from enum import Enum, IntEnum
3
+
4
+ # minimal server schema version we can handle
5
+ MIN_SERVER_SCHEMA_VERSION = 8
6
+ # max server schema version we can handle (and our code is compatible with)
7
+ MAX_SERVER_SCHEMA_VERSION = 8
8
+
9
+ VALUE_UNKNOWN = "unknown"
10
+
11
+ INTERVIEW_FAILED = "Failed"
12
+
13
+ TARGET_STATE_PROPERTY = "targetState"
14
+ TARGET_VALUE_PROPERTY = "targetValue"
15
+
16
+
17
+ class CommandStatus(str, Enum):
18
+ """Status of a command sent to zwave-js-server."""
19
+
20
+ ACCEPTED = "accepted"
21
+ QUEUED = "queued"
22
+
23
+
24
+ # Multiple inheritance so that LogLevel will JSON serialize properly
25
+ # Reference: https://stackoverflow.com/a/51976841
26
+ class LogLevel(str, Enum):
27
+ """Enum for log levels used by node-zwave-js."""
28
+
29
+ # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/log/shared.ts#L12
30
+ # https://github.com/winstonjs/triple-beam/blame/master/config/npm.js#L14
31
+ ERROR = "error"
32
+ WARN = "warn"
33
+ INFO = "info"
34
+ HTTP = "http"
35
+ VERBOSE = "verbose"
36
+ DEBUG = "debug"
37
+ SILLY = "silly"
38
+
39
+
40
+ class CommandClass(IntEnum):
41
+ """Enum with all known CommandClasses."""
42
+
43
+ SENSOR_ALARM = 156
44
+ SILENCE_ALARM = 157
45
+ SWITCH_ALL = 39
46
+ ANTITHEFT = 93
47
+ ANTITHEFT_UNLOCK = 126
48
+ APPLICATION_CAPABILITY = 87
49
+ APPLICATION_STATUS = 34
50
+ ASSOCIATION = 133
51
+ ASSOCIATION_COMMAND_CONFIGURATION = 155
52
+ ASSOCIATION_GRP_INFO = 89
53
+ AUTHENTICATION = 161
54
+ AUTHENTICATION_MEDIA_WRITE = 162
55
+ BARRIER_OPERATOR = 102
56
+ BASIC = 32
57
+ BASIC_TARIFF_INFO = 54
58
+ BASIC_WINDOW_COVERING = 80
59
+ BATTERY = 128
60
+ SENSOR_BINARY = 48
61
+ SWITCH_BINARY = 37
62
+ SWITCH_TOGGLE_BINARY = 40
63
+ CLIMATE_CONTROL_SCHEDULE = 70
64
+ CENTRAL_SCENE = 91
65
+ CLOCK = 129
66
+ SWITCH_COLOR = 51
67
+ CONFIGURATION = 112
68
+ CONTROLLER_REPLICATION = 33
69
+ CRC_16_ENCAP = 86
70
+ DCP_CONFIG = 58
71
+ DCP_MONITOR = 59
72
+ DEVICE_RESET_LOCALLY = 90
73
+ DOOR_LOCK = 98
74
+ DOOR_LOCK_LOGGING = 76
75
+ ENERGY_PRODUCTION = 144
76
+ ENTRY_CONTROL = 111
77
+ FIRMWARE_UPDATE_MD = 122
78
+ GENERIC_SCHEDULE = 163
79
+ GEOGRAPHIC_LOCATION = 140
80
+ GROUPING_NAME = 123
81
+ HAIL = 130
82
+ HRV_STATUS = 55
83
+ HRV_CONTROL = 57
84
+ HUMIDITY_CONTROL_MODE = 109
85
+ HUMIDITY_CONTROL_OPERATING_STATE = 110
86
+ HUMIDITY_CONTROL_SETPOINT = 100
87
+ INCLUSION_CONTROLLER = 116
88
+ INDICATOR = 135
89
+ IP_ASSOCIATION = 92
90
+ IP_CONFIGURATION = 154
91
+ IR_REPEATER = 160
92
+ IRRIGATION = 107
93
+ LANGUAGE = 137
94
+ LOCK = 118
95
+ MAILBOX = 105
96
+ MANUFACTURER_PROPRIETARY = 145
97
+ MANUFACTURER_SPECIFIC = 114
98
+ MARK = 239
99
+ METER = 50
100
+ METER_TBL_CONFIG = 60
101
+ METER_TBL_MONITOR = 61
102
+ METER_TBL_PUSH = 62
103
+ MTP_WINDOW_COVERING = 81
104
+ MULTI_CHANNEL = 96
105
+ MULTI_CHANNEL_ASSOCIATION = 142
106
+ MULTI_CMD = 143
107
+ SENSOR_MULTILEVEL = 49
108
+ SWITCH_MULTILEVEL = 38
109
+ SWITCH_TOGGLE_MULTILEVEL = 41
110
+ NETWORK_MANAGEMENT_BASIC = 77
111
+ NETWORK_MANAGEMENT_INCLUSION = 52
112
+ NETWORK_MANAGEMENT_INSTALLATION_MAINTENANCE = 103
113
+ NETWORK_MANAGEMENT_PRIMARY = 84
114
+ NETWORK_MANAGEMENT_PROXY = 82
115
+ NO_OPERATION = 0
116
+ NODE_NAMING = 119
117
+ NODE_PROVISIONING = 120
118
+ NOTIFICATION = 113
119
+ POWERLEVEL = 115
120
+ PREPAYMENT = 63
121
+ PREPAYMENT_ENCAPSULATION = 65
122
+ PROPRIETARY = 136
123
+ PROTECTION = 117
124
+ METER_PULSE = 53
125
+ RATE_TBL_CONFIG = 72
126
+ RATE_TBL_MONITOR = 73
127
+ REMOTE_ASSOCIATION_ACTIVATE = 124
128
+ REMOTE_ASSOCIATION = 125
129
+ SCENE_ACTIVATION = 43
130
+ SCENE_ACTUATOR_CONF = 44
131
+ SCENE_CONTROLLER_CONF = 45
132
+ SCHEDULE = 83
133
+ SCHEDULE_ENTRY_LOCK = 78
134
+ SCREEN_ATTRIBUTES = 147
135
+ SCREEN_MD = 146
136
+ SECURITY = 152
137
+ SECURITY_2 = 159
138
+ SECURITY_SCHEME0_MARK = 61696
139
+ SENSOR_CONFIGURATION = 158
140
+ SIMPLE_AV_CONTROL = 148
141
+ SOUND_SWITCH = 121
142
+ SUPERVISION = 108
143
+ TARIFF_CONFIG = 74
144
+ TARIFF_TBL_MONITOR = 75
145
+ THERMOSTAT_FAN_MODE = 68
146
+ THERMOSTAT_FAN_STATE = 69
147
+ THERMOSTAT_MODE = 64
148
+ THERMOSTAT_OPERATING_STATE = 66
149
+ THERMOSTAT_SETBACK = 71
150
+ THERMOSTAT_SETPOINT = 67
151
+ TIME = 138
152
+ TIME_PARAMETERS = 139
153
+ TRANSPORT_SERVICE = 85
154
+ USER_CODE = 99
155
+ VERSION = 134
156
+ WAKE_UP = 132
157
+ WINDOW_COVERING = 106
158
+ ZIP = 35
159
+ ZIP_6LOWPAN = 79
160
+ ZIP_GATEWAY = 95
161
+ ZIP_NAMING = 104
162
+ ZIP_ND = 88
163
+ ZIP_PORTAL = 97
164
+ ZWAVEPLUS_INFO = 94
165
+
166
+
167
+ class ProtocolVersion(IntEnum):
168
+ """Protocol version."""
169
+
170
+ # https://github.com/zwave-js/node-zwave-js/blob/master/packages/zwave-js/src/lib/node/Types.ts#L149
171
+ UNKNOWN = 0
172
+ VERSION_2_0 = 1
173
+ VERSION_4_2X_OR_5_0X = 2
174
+ VERSION_4_5X_OR_6_0X = 3
175
+
176
+
177
+ class NodeStatus(IntEnum):
178
+ """Enum with all Node status values."""
179
+
180
+ # https://zwave-js.github.io/node-zwave-js/#/api/node?id=status
181
+ UNKNOWN = 0
182
+ ASLEEP = 1
183
+ AWAKE = 2
184
+ DEAD = 3
185
+ ALIVE = 4
186
+
187
+
188
+ class ConfigurationValueType(str, Enum):
189
+ """Enum for configuration value types."""
190
+
191
+ ENUMERATED = "enumerated"
192
+ MANUAL_ENTRY = "manual_entry"
193
+ RANGE = "range"
194
+ UNDEFINED = "undefined"
195
+
196
+
197
+ # Inclusion enums
198
+ class InclusionStrategy(IntEnum):
199
+ """Enum for all known inclusion strategies."""
200
+
201
+ # https://github.com/zwave-js/node-zwave-js/blob/master/packages/zwave-js/src/lib/controller/Inclusion.ts#L9-L46
202
+ DEFAULT = 0
203
+ SMART_START = 1
204
+ INSECURE = 2
205
+ SECURITY_S0 = 3
206
+ SECURITY_S2 = 4
207
+
208
+
209
+ class SecurityClass(IntEnum):
210
+ """Enum for all known security classes."""
211
+
212
+ # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/security/SecurityClass.ts#L3-L17
213
+ NONE = -1
214
+ S2_UNAUTHENTICATED = 0
215
+ S2_AUTHENTICATED = 1
216
+ S2_ACCESS_CONTROL = 2
217
+ S0_LEGACY = 7
@@ -0,0 +1 @@
1
+ """Constants for Command Classes."""
@@ -0,0 +1,21 @@
1
+ """Constants for the Barrier Operator CC."""
2
+ from enum import IntEnum
3
+
4
+
5
+ class BarrierEventSignalingSubsystemState(IntEnum):
6
+ """Enum with all (known/used) Z-Wave Barrier Event Signaling Subsystem States."""
7
+
8
+ # https://github.com/zwave-js/node-zwave-js/blob/15e1b59f627bfad8bfae114bd774a14089c76683/packages/zwave-js/src/lib/commandclass/BarrierOperatorCC.ts#L46-L49
9
+ OFF = 0
10
+ ON = 255
11
+
12
+
13
+ class BarrierState(IntEnum):
14
+ """Enum with all (known/used) Z-Wave Barrier States."""
15
+
16
+ # https://github.com/zwave-js/node-zwave-js/blob/15e1b59f627bfad8bfae114bd774a14089c76683/packages/zwave-js/src/lib/commandclass/BarrierOperatorCC.ts#L107-L113
17
+ CLOSED = 0
18
+ CLOSING = 252
19
+ STOPPED = 253
20
+ OPENING = 254
21
+ OPEN = 255
@@ -0,0 +1,32 @@
1
+ """Constants for the Color Switch CC."""
2
+ from enum import IntEnum
3
+
4
+
5
+ class ColorComponent(IntEnum):
6
+ """Enum with all (known/used) Color Switch CC colors."""
7
+
8
+ # https://github.com/zwave-js/node-zwave-js/blob/master/packages/zwave-js/src/lib/commandclass/ColorSwitchCC.ts#L62
9
+ WARM_WHITE = 0
10
+ COLD_WHITE = 1
11
+ RED = 2
12
+ GREEN = 3
13
+ BLUE = 4
14
+ AMBER = 5
15
+ CYAN = 6
16
+ PURPLE = 7
17
+ INDEX = 8
18
+
19
+
20
+ # Keys for the Color Switch CC combined colors value
21
+ # https://github.com/zwave-js/node-zwave-js/pull/1782
22
+ COLOR_SWITCH_COMBINED_RED = "red"
23
+ COLOR_SWITCH_COMBINED_GREEN = "green"
24
+ COLOR_SWITCH_COMBINED_BLUE = "blue"
25
+ COLOR_SWITCH_COMBINED_AMBER = "amber"
26
+ COLOR_SWITCH_COMBINED_CYAN = "cyan"
27
+ COLOR_SWITCH_COMBINED_PURPLE = "purple"
28
+ COLOR_SWITCH_COMBINED_WARM_WHITE = "warmWhite"
29
+ COLOR_SWITCH_COMBINED_COLD_WHITE = "coldWhite"
30
+
31
+ CURRENT_COLOR_PROPERTY = "currentColor"
32
+ TARGET_COLOR_PROPERTY = "targetColor"
@@ -0,0 +1,44 @@
1
+ """Constants for the Entry Control CC."""
2
+ from enum import IntEnum
3
+
4
+
5
+ class EntryControlEventType(IntEnum):
6
+ """Entry control event types."""
7
+
8
+ # https://github.com/zwave-js/node-zwave-js/blob/master/packages/zwave-js/src/lib/commandclass/EntryControlCC.ts#L54
9
+ CACHING = 0
10
+ CACHED_KEYS = 1
11
+ ENTER = 2
12
+ DISARM_ALL = 3
13
+ ARM_ALL = 4
14
+ ARM_AWAY = 5
15
+ ARM_HOME = 6
16
+ EXIT_DELAY = 7
17
+ ARM1 = 8
18
+ ARM2 = 9
19
+ ARM3 = 10
20
+ ARM4 = 11
21
+ ARM5 = 12
22
+ ARM6 = 13
23
+ RFID = 14
24
+ BELL = 15
25
+ FIRE = 16
26
+ POLICE = 17
27
+ ALERT_PANIC = 18
28
+ ALERT_MEDICAL = 19
29
+ GATE_OPEN = 20
30
+ GATE_CLOSE = 21
31
+ LOCK = 22
32
+ UNLOCK = 23
33
+ TEST = 24
34
+ CANCEL = 25
35
+
36
+
37
+ class EntryControlDataType(IntEnum):
38
+ """Entry control data types."""
39
+
40
+ # https://github.com/zwave-js/node-zwave-js/blob/master/packages/zwave-js/src/lib/commandclass/EntryControlCC.ts#L83
41
+ NONE = 0
42
+ RAW = 1
43
+ ASCII = 2
44
+ MD5 = 3
@@ -0,0 +1,52 @@
1
+ """
2
+ Constants for lock related CCs.
3
+
4
+ Includes Door Lock and Lock CCs.
5
+ """
6
+ from enum import IntEnum
7
+
8
+ from .. import CommandClass
9
+
10
+
11
+ class DoorLockMode(IntEnum):
12
+ """Enum with all (known/used) Z-Wave lock states for CommandClass.DOOR_LOCK."""
13
+
14
+ # https://github.com/zwave-js/node-zwave-js/blob/master/packages/zwave-js/src/lib/commandclass/DoorLockCC.ts#L56-L65
15
+ UNSECURED = 0
16
+ UNSECURED_WITH_TIMEOUT = 1
17
+ INSIDE_UNSECURED = 2
18
+ INSIDE_UNSECURED_WITH_TIMEOUT = 3
19
+ OUTSIDE_UNSECURED = 4
20
+ OUTSIDE_UNSECURED_WITH_TIMEOUT = 5
21
+ UNKNOWN = 254
22
+ SECURED = 255
23
+
24
+
25
+ class CodeSlotStatus(IntEnum):
26
+ """Enum with all (known/used) Z-Wave code slot statuses."""
27
+
28
+ AVAILABLE = 0
29
+ ENABLED = 1
30
+ DISABLED = 2
31
+
32
+
33
+ # Depending on the Command Class being used by the lock, the lock state is
34
+ # different so we need a map to track it
35
+ LOCK_CMD_CLASS_TO_LOCKED_STATE_MAP = {
36
+ CommandClass.DOOR_LOCK: DoorLockMode.SECURED,
37
+ CommandClass.LOCK: 1,
38
+ }
39
+
40
+ # Depending on the Command Class being used by the lock, the locked state property
41
+ # is different so we need a map to track it
42
+ LOCK_CMD_CLASS_TO_PROPERTY_MAP = {
43
+ CommandClass.DOOR_LOCK: "targetMode",
44
+ CommandClass.LOCK: "locked",
45
+ }
46
+
47
+ LOCK_USERCODE_PROPERTY = "userCode"
48
+ LOCK_USERCODE_STATUS_PROPERTY = "userIdStatus"
49
+ ATTR_CODE_SLOT = "code_slot"
50
+ ATTR_IN_USE = "in_use"
51
+ ATTR_NAME = "name"
52
+ ATTR_USERCODE = "usercode"
@@ -0,0 +1,102 @@
1
+ """Constants for Meter CC."""
2
+ from enum import IntEnum
3
+ from typing import Dict, Set, Type, Union
4
+
5
+ CC_SPECIFIC_SCALE = "scale"
6
+ CC_SPECIFIC_METER_TYPE = "meterType"
7
+ CC_SPECIFIC_RATE_TYPE = "rateType"
8
+
9
+ RESET_METER_CC_API = "reset"
10
+
11
+ # optional attributes when calling the Meter CC reset API.
12
+ # https://github.com/zwave-js/node-zwave-js/blob/master/packages/zwave-js/src/lib/commandclass/MeterCC.ts#L873-L881
13
+ RESET_METER_OPTION_TARGET_VALUE = "targetValue"
14
+ RESET_METER_OPTION_TYPE = "type"
15
+
16
+
17
+ # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/meters.json
18
+ class MeterType(IntEnum):
19
+ """Enum with all known meter types."""
20
+
21
+ ELECTRIC = 1
22
+ GAS = 2
23
+ WATER = 3
24
+ HEATING = 4
25
+ COOLING = 5
26
+
27
+
28
+ class ElectricScale(IntEnum):
29
+ """Enum with all known electric meter scale values."""
30
+
31
+ KILOWATT_HOUR = 0
32
+ KILOVOLT_AMPERE_HOUR = 1
33
+ WATT = 2
34
+ PULSE_COUNT = 3
35
+ VOLT = 4
36
+ AMPERE = 5
37
+ POWER_FACTOR = 6
38
+ KILOVOLT_AMPERE_REACTIVE = 7
39
+ KILOVOLT_AMPERE_REACTIVE_HOUR = 8
40
+
41
+
42
+ class GasScale(IntEnum):
43
+ """Enum with all known gas meter scale values."""
44
+
45
+ CUBIC_METER = 0
46
+ CUBIC_FEET = 1
47
+ PULSE_COUNT = 3
48
+
49
+
50
+ class WaterScale(IntEnum):
51
+ """Enum with all known water meter scale values."""
52
+
53
+ CUBIC_METER = 0
54
+ CUBIC_FEET = 1
55
+ US_GALLON = 2
56
+ PULSE_COUNT = 3
57
+
58
+
59
+ class HeatingScale(IntEnum):
60
+ """Enum with all known heating meter scale values."""
61
+
62
+ KILOWATT_HOUR = 0
63
+
64
+
65
+ CoolingScale = HeatingScale
66
+
67
+ MeterScaleType = Union[CoolingScale, ElectricScale, GasScale, HeatingScale, WaterScale]
68
+
69
+ METER_TYPE_TO_SCALE_ENUM_MAP: Dict[MeterType, Type[MeterScaleType]] = {
70
+ MeterType.ELECTRIC: ElectricScale,
71
+ MeterType.GAS: GasScale,
72
+ MeterType.WATER: WaterScale,
73
+ MeterType.HEATING: HeatingScale,
74
+ MeterType.COOLING: CoolingScale,
75
+ }
76
+
77
+ ENERGY_TOTAL_INCREASING_METER_TYPES: Set[MeterScaleType] = {
78
+ ElectricScale.KILOWATT_HOUR,
79
+ ElectricScale.KILOVOLT_AMPERE_HOUR,
80
+ ElectricScale.KILOVOLT_AMPERE_REACTIVE_HOUR,
81
+ HeatingScale.KILOWATT_HOUR,
82
+ CoolingScale.KILOWATT_HOUR,
83
+ ElectricScale.PULSE_COUNT,
84
+ }
85
+ POWER_METER_TYPES: Set[MeterScaleType] = {
86
+ ElectricScale.WATT,
87
+ ElectricScale.KILOVOLT_AMPERE_REACTIVE,
88
+ }
89
+ POWER_FACTOR_METER_TYPES: Set[MeterScaleType] = {ElectricScale.POWER_FACTOR}
90
+ VOLTAGE_METER_TYPES: Set[MeterScaleType] = {ElectricScale.VOLT}
91
+ CURRENT_METER_TYPES: Set[MeterScaleType] = {ElectricScale.AMPERE}
92
+ GAS_METER_TYPES: Set[MeterScaleType] = {
93
+ GasScale.CUBIC_METER,
94
+ GasScale.CUBIC_FEET,
95
+ GasScale.PULSE_COUNT,
96
+ }
97
+ WATER_METER_TYPES: Set[MeterScaleType] = {
98
+ WaterScale.CUBIC_METER,
99
+ WaterScale.CUBIC_FEET,
100
+ WaterScale.US_GALLON,
101
+ WaterScale.PULSE_COUNT,
102
+ }