pyvlx 0.2.27__py3-none-any.whl

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 (84) hide show
  1. pyvlx/__init__.py +21 -0
  2. pyvlx/api/__init__.py +23 -0
  3. pyvlx/api/activate_scene.py +63 -0
  4. pyvlx/api/api_event.py +73 -0
  5. pyvlx/api/command_send.py +85 -0
  6. pyvlx/api/factory_default.py +34 -0
  7. pyvlx/api/frame_creation.py +202 -0
  8. pyvlx/api/frames/__init__.py +76 -0
  9. pyvlx/api/frames/alias_array.py +45 -0
  10. pyvlx/api/frames/frame.py +56 -0
  11. pyvlx/api/frames/frame_activate_scene.py +92 -0
  12. pyvlx/api/frames/frame_activation_log_updated.py +14 -0
  13. pyvlx/api/frames/frame_command_send.py +280 -0
  14. pyvlx/api/frames/frame_discover_nodes.py +64 -0
  15. pyvlx/api/frames/frame_error_notification.py +42 -0
  16. pyvlx/api/frames/frame_facory_default.py +32 -0
  17. pyvlx/api/frames/frame_get_all_nodes_information.py +218 -0
  18. pyvlx/api/frames/frame_get_limitation.py +127 -0
  19. pyvlx/api/frames/frame_get_local_time.py +38 -0
  20. pyvlx/api/frames/frame_get_network_setup.py +64 -0
  21. pyvlx/api/frames/frame_get_node_information.py +223 -0
  22. pyvlx/api/frames/frame_get_protocol_version.py +53 -0
  23. pyvlx/api/frames/frame_get_scene_list.py +82 -0
  24. pyvlx/api/frames/frame_get_state.py +47 -0
  25. pyvlx/api/frames/frame_get_version.py +72 -0
  26. pyvlx/api/frames/frame_helper.py +40 -0
  27. pyvlx/api/frames/frame_house_status_monitor_disable_cfm.py +14 -0
  28. pyvlx/api/frames/frame_house_status_monitor_disable_req.py +14 -0
  29. pyvlx/api/frames/frame_house_status_monitor_enable_cfm.py +14 -0
  30. pyvlx/api/frames/frame_house_status_monitor_enable_req.py +14 -0
  31. pyvlx/api/frames/frame_leave_learn_state.py +41 -0
  32. pyvlx/api/frames/frame_node_information_changed.py +57 -0
  33. pyvlx/api/frames/frame_node_state_position_changed_notification.py +84 -0
  34. pyvlx/api/frames/frame_password_change.py +114 -0
  35. pyvlx/api/frames/frame_password_enter.py +70 -0
  36. pyvlx/api/frames/frame_reboot.py +32 -0
  37. pyvlx/api/frames/frame_set_node_name.py +73 -0
  38. pyvlx/api/frames/frame_set_utc.py +45 -0
  39. pyvlx/api/frames/frame_status_request.py +212 -0
  40. pyvlx/api/get_all_nodes_information.py +46 -0
  41. pyvlx/api/get_limitation.py +64 -0
  42. pyvlx/api/get_local_time.py +34 -0
  43. pyvlx/api/get_network_setup.py +34 -0
  44. pyvlx/api/get_node_information.py +42 -0
  45. pyvlx/api/get_protocol_version.py +40 -0
  46. pyvlx/api/get_scene_list.py +49 -0
  47. pyvlx/api/get_state.py +43 -0
  48. pyvlx/api/get_version.py +34 -0
  49. pyvlx/api/house_status_monitor.py +52 -0
  50. pyvlx/api/leave_learn_state.py +33 -0
  51. pyvlx/api/password_enter.py +39 -0
  52. pyvlx/api/reboot.py +33 -0
  53. pyvlx/api/session_id.py +20 -0
  54. pyvlx/api/set_node_name.py +32 -0
  55. pyvlx/api/set_utc.py +31 -0
  56. pyvlx/api/status_request.py +48 -0
  57. pyvlx/config.py +54 -0
  58. pyvlx/connection.py +182 -0
  59. pyvlx/const.py +685 -0
  60. pyvlx/dataobjects.py +161 -0
  61. pyvlx/discovery.py +100 -0
  62. pyvlx/exception.py +26 -0
  63. pyvlx/heartbeat.py +79 -0
  64. pyvlx/klf200gateway.py +167 -0
  65. pyvlx/lightening_device.py +102 -0
  66. pyvlx/log.py +4 -0
  67. pyvlx/node.py +74 -0
  68. pyvlx/node_helper.py +165 -0
  69. pyvlx/node_updater.py +162 -0
  70. pyvlx/nodes.py +99 -0
  71. pyvlx/on_off_switch.py +44 -0
  72. pyvlx/opening_device.py +644 -0
  73. pyvlx/parameter.py +357 -0
  74. pyvlx/py.typed +0 -0
  75. pyvlx/pyvlx.py +124 -0
  76. pyvlx/scene.py +53 -0
  77. pyvlx/scenes.py +60 -0
  78. pyvlx/slip.py +48 -0
  79. pyvlx/string_helper.py +20 -0
  80. pyvlx-0.2.27.dist-info/METADATA +122 -0
  81. pyvlx-0.2.27.dist-info/RECORD +84 -0
  82. pyvlx-0.2.27.dist-info/WHEEL +5 -0
  83. pyvlx-0.2.27.dist-info/licenses/LICENSE +165 -0
  84. pyvlx-0.2.27.dist-info/top_level.txt +1 -0
pyvlx/const.py ADDED
@@ -0,0 +1,685 @@
1
+ """Module for enum and consts."""
2
+ from enum import Enum
3
+ from typing import Any
4
+
5
+
6
+ class Command(Enum):
7
+ """Enum class for GW Command bytes."""
8
+
9
+ # pylint: disable=invalid-name
10
+
11
+ GW_ERROR_NTF = 0x0000
12
+ GW_REBOOT_REQ = 0x0001
13
+ GW_REBOOT_CFM = 0x0002
14
+
15
+ GW_SET_FACTORY_DEFAULT_REQ = 0x0003
16
+ GW_SET_FACTORY_DEFAULT_CFM = 0x0004
17
+
18
+ GW_GET_VERSION_REQ = 0x0008
19
+ GW_GET_VERSION_CFM = 0x0009
20
+
21
+ GW_GET_PROTOCOL_VERSION_REQ = 0x000A
22
+ GW_GET_PROTOCOL_VERSION_CFM = 0x000B
23
+
24
+ GW_GET_STATE_REQ = 0x000C
25
+ GW_GET_STATE_CFM = 0x000D
26
+
27
+ GW_LEAVE_LEARN_STATE_REQ = 0x000E
28
+ GW_LEAVE_LEARN_STATE_CFM = 0x000F
29
+
30
+ GW_GET_NETWORK_SETUP_REQ = 0x00E0
31
+ GW_GET_NETWORK_SETUP_CFM = 0x00E1
32
+ GW_SET_NETWORK_SETUP_REQ = 0x00E2
33
+ GW_SET_NETWORK_SETUP_CFM = 0x00E3
34
+
35
+ GW_CS_GET_SYSTEMTABLE_DATQ_REQ = 0x0100
36
+ GW_CS_GET_SYSTEMTABLE_DATA_CFM = 0x0101
37
+ GW_CS_GET_SYSTEMTABLE_DATA_NTF = 0x0102
38
+
39
+ GW_CS_DISCOVER_NODES_REQ = 0x0103
40
+ GW_CS_DISCOVER_NODES_CFM = 0x0104
41
+ GW_CS_DISCOVER_NODES_NTF = 0x0105
42
+
43
+ GW_CS_REMOVE_NODES_REQ = 0x0106
44
+ GW_CS_REMOVE_NODES_CFM = 0x0107
45
+
46
+ GW_CS_VIRGIN_STATE_REQ = 0x0108
47
+ GW_CS_VIRGIN_STATE_CFM = 0x0109
48
+
49
+ GW_CS_CONTROLLER_COPY_REQ = 0x010A
50
+ GW_CS_CONTROLLER_COPY_CFM = 0x010B
51
+ GW_CS_CONTROLLER_COPY_NTF = 0x010C
52
+ GW_CS_CONTROLLER_COPY_CANCEL_NTF = 0x010D
53
+
54
+ GW_CS_RECEIVE_KEY_REQ = 0x010E
55
+ GW_CS_RECEIVE_KEY_CFM = 0x010F
56
+ GW_CS_RECEIVE_KEY_NTF = 0x0110
57
+
58
+ GW_CS_PGC_JOB_NTF = 0x0111
59
+ GW_CS_SYSTEM_TABLE_UPDATE_NTF = 0x0112
60
+ GW_CS_GENERATE_NEW_KEY_REQ = 0x0113
61
+ GW_CS_GENERATE_NEW_KEY_CFM = 0x0114
62
+ GW_CS_GENERATE_NEW_KEY_NTF = 0x0115
63
+
64
+ GW_CS_REPAIR_KEY_REQ = 0x0116
65
+ GW_CS_REPAIR_KEY_CFM = 0x0117
66
+ GW_CS_REPAID_KEY_NTF = 0x0118
67
+
68
+ GW_CS_ACTIVATE_CONFIGURATION_MODE_REQ = 0x0119
69
+ GW_CS_ACTIVATE_CONFIGURATION_MODE_CFM = 0x011A
70
+
71
+ GW_GET_NODE_INFORMATION_REQ = 0x0200
72
+ GW_GET_NODE_INFORMATION_CFM = 0x0201
73
+ GW_GET_NODE_INFORMATION_NTF = 0x0210
74
+
75
+ GW_GET_ALL_NODES_INFORMATION_REQ = 0x0202
76
+ GW_GET_ALL_NODES_INFORMATION_CFM = 0x0203
77
+ GW_GET_ALL_NODES_INFORMATION_NTF = 0x0204
78
+ GW_GET_ALL_NODES_INFORMATION_FINISHED_NTF = 0x0205
79
+
80
+ GW_SET_NODE_VARIATION_REQ = 0x0206
81
+ GW_SET_NODE_VARIATION_CFM = 0x0207
82
+
83
+ GW_SET_NODE_NAME_REQ = 0x0208
84
+ GW_SET_NODE_NAME_CFM = 0x0209
85
+
86
+ GW_SET_NODE_VELOCITY_REQ = 0x020A
87
+ GW_SET_NODE_VELOCITY_CFM = 0x020B
88
+
89
+ GW_NODE_INFORMATION_CHANGED_NTF = 0x020C
90
+
91
+ GW_NODE_STATE_POSITION_CHANGED_NTF = 0x0211
92
+
93
+ GW_SET_NODE_ORDER_AND_PLACEMENT_REQ = 0x020D
94
+ GW_SET_NODE_ORDER_AND_PLACEMENT_CFM = 0x020E
95
+
96
+ GW_GET_GROUP_INFORMATION_REQ = 0x0220
97
+ GW_GET_GROUP_INFORMATION_CFM = 0x0221
98
+ GW_GET_GROUP_INFORMATION_NTF = 0x0230
99
+
100
+ GW_SET_GROUP_INFORMATION_REQ = 0x0222
101
+ GW_SET_GROUP_INFORMATION_CFM = 0x0223
102
+
103
+ GW_GROUP_INFORMATION_CHANGED_NTF = 0x0224
104
+
105
+ GW_DELETE_GROUP_REQ = 0x0225
106
+ GW_DELETE_GROUP_CFM = 0x0226
107
+
108
+ GW_NEW_GROUP_REQ = 0x0227
109
+ GW_NEW_GROUP_CFM = 0x0228
110
+
111
+ GW_GET_ALL_GROUPS_INFORMATION_REQ = 0x0229
112
+ GW_GET_ALL_GROUPS_INFORMATION_CFM = 0x022A
113
+ GW_GET_ALL_GROUPS_INFORMATION_NTF = 0x022B
114
+
115
+ GW_GET_ALL_GROUPS_INFORMATION_FINISHED_NTF = 0x022C
116
+
117
+ GW_GROUP_DELETED_NTF = 0x022D
118
+
119
+ GW_HOUSE_STATUS_MONITOR_ENABLE_REQ = 0x0240
120
+ GW_HOUSE_STATUS_MONITOR_ENABLE_CFM = 0x0241
121
+
122
+ GW_HOUSE_STATUS_MONITOR_DISABLE_REQ = 0x0242
123
+ GW_HOUSE_STATUS_MONITOR_DISABLE_CFM = 0x0243
124
+
125
+ GW_COMMAND_SEND_REQ = 0x0300
126
+ GW_COMMAND_SEND_CFM = 0x0301
127
+ GW_COMMAND_RUN_STATUS_NTF = 0x0302
128
+ GW_COMMAND_REMAINING_TIME_NTF = 0x0303
129
+ GW_SESSION_FINISHED_NTF = 0x0304
130
+
131
+ GW_STATUS_REQUEST_REQ = 0x0305
132
+ GW_STATUS_REQUEST_CFM = 0x0306
133
+ GW_STATUS_REQUEST_NTF = 0x0307
134
+
135
+ GW_WINK_SEND_REQ = 0x0308
136
+ GW_WINK_SEND_CFM = 0x0309
137
+ GW_WINK_SEND_NTF = 0x030A
138
+
139
+ GW_SET_LIMITATION_REQ = 0x0310
140
+ GW_SET_LIMITATION_CFM = 0x0311
141
+ GW_GET_LIMITATION_STATUS_REQ = 0x0312
142
+ GW_GET_LIMITATION_STATUS_CFM = 0x0313
143
+ GW_LIMITATION_STATUS_NTF = 0x0314
144
+
145
+ GW_MODE_SEND_REQ = 0x0320
146
+ GW_MODE_SEND_CFM = 0x0321
147
+ GW_MODE_SEND_NTF = 0x0322
148
+
149
+ GW_INITIALIZE_SCENE_REQ = 0x0400
150
+ GW_INITIALIZE_SCENE_CFM = 0x0401
151
+ GW_INITIALIZE_SCENE_NTF = 0x0402
152
+ GW_INITIALIZE_SCENE_CANCEL_REQ = 0x0403
153
+ GW_INITIALIZE_SCENE_CANCEL_CFM = 0x0404
154
+ GW_RECORD_SCENE_REQ = 0x0405
155
+ GW_RECORD_SCENE_CFM = 0x0406
156
+ GW_RECORD_SCENE_NTF = 0x0407
157
+
158
+ GW_DELETE_SCENE_REQ = 0x0408
159
+ GW_DELETE_SCENE_CFM = 0x0409
160
+
161
+ GW_RENAME_SCENE_REQ = 0x040A
162
+ GW_RENAME_SCENE_CFM = 0x040B
163
+
164
+ GW_GET_SCENE_LIST_REQ = 0x040C
165
+ GW_GET_SCENE_LIST_CFM = 0x040D
166
+ GW_GET_SCENE_LIST_NTF = 0x040E
167
+
168
+ GW_GET_SCENE_INFORMATION_REQ = 0x040F
169
+ GW_GET_SCENE_INFORMATION_CFM = 0x0410
170
+ GW_GET_SCENE_INFORMATION_NTF = 0x0411
171
+
172
+ GW_ACTIVATE_SCENE_REQ = 0x0412
173
+ GW_ACTIVATE_SCENE_CFM = 0x0413
174
+
175
+ GW_STOP_SCENE_REQ = 0x0415
176
+ GW_STOP_SCENE_CFM = 0x0416
177
+
178
+ GW_SCENE_INFORMATION_CHANGED_NTF = 0x0419
179
+
180
+ GW_ACTIVATE_PRODUCTGROUP_REQ = 0x0447
181
+ GW_ACTIVATE_PRODUCTGROUP_CFM = 0x0448
182
+ GW_ACTIVATE_PRODUCTGROUP_NTF = 0x0449
183
+
184
+ GW_GET_CONTACT_INPUT_LINK_LIST_REQ = 0x0460
185
+ GW_GET_CONTACT_INPUT_LINK_LIST_CFM = 0x0461
186
+
187
+ GW_SET_CONTACT_INPUT_LINK_REQ = 0x0462
188
+ GW_SET_CONTACT_INPUT_LINK_CFM = 0x0463
189
+
190
+ GW_REMOVE_CONTACT_INPUT_LINK_REQ = 0x0464
191
+ GW_REMOVE_CONTACT_INPUT_LINK_CFM = 0x0465
192
+
193
+ GW_GET_ACTIVATION_LOG_HEADER_REQ = 0x0500
194
+ GW_GET_ACTIVATION_LOG_HEADER_CFM = 0x0501
195
+
196
+ GW_CLEAR_ACTIVATION_LOG_REQ = 0x0502
197
+ GW_CLEAR_ACTIVATION_LOG_CFM = 0x0503
198
+
199
+ GW_GET_ACTIVATION_LOG_LINE_REQ = 0x0504
200
+ GW_GET_ACTIVATION_LOG_LINE_CFM = 0x0505
201
+
202
+ GW_ACTIVATION_LOG_UPDATED_NTF = 0x0506
203
+
204
+ GW_GET_MULTIPLE_ACTIVATION_LOG_LINES_REQ = 0x0507
205
+ GW_GET_MULTIPLE_ACTIVATION_LOG_LINES_NTF = 0x0508
206
+ GW_GET_MULTIPLE_ACTIVATION_LOG_LINES_CFN = 0x0509
207
+
208
+ GW_SET_UTC_REQ = 0x2000
209
+ GW_SET_UTC_CFM = 0x2001
210
+
211
+ GW_RTC_SET_TIME_ZONE_REQ = 0x2002
212
+ GW_RTC_SET_TIME_ZONE_CFM = 0x2003
213
+
214
+ GW_GET_LOCAL_TIME_REQ = 0x2004
215
+ GW_GET_LOCAL_TIME_CFM = 0x2005
216
+
217
+ GW_PASSWORD_ENTER_REQ = 0x3000
218
+ GW_PASSWORD_ENTER_CFM = 0x3001
219
+
220
+ GW_PASSWORD_CHANGE_REQ = 0x3002
221
+ GW_PASSWORD_CHANGE_CFM = 0x3003
222
+ GW_PASSWORD_CHANGE_NTF = 0x3004
223
+
224
+
225
+ class Originator(Enum):
226
+ """Enum class for originator."""
227
+
228
+ # pylint: disable=line-too-long
229
+
230
+ USER = 1 # User Remote control causing action on actuator
231
+ RAIN = 2 # Rain sensor
232
+ TIMER = 3 # Timer controlled
233
+ UPS = 5 # UPC unit
234
+ SAAC = 8 # Stand Alone Automatic Controls
235
+ WIND = 9 # Wind sensor
236
+ LOAD_SHEDDING = 11 # Managers for requiring a particular electric load shed
237
+ LOCAL_LIGHT = 12 # Local light sensor
238
+ UNSPECIFIC_ENVIRONMENT_SENSOR = 13 # Used in context with commands transmitted on basis of an unknown sensor for protection of an end-product or house
239
+ EMERGENCY = 255 # Used in context with emergency or security commands
240
+
241
+
242
+ class Priority(Enum):
243
+ """Enum class for priority."""
244
+
245
+ PROTECTION_HUMAN = 0
246
+ PROTECTION_ENVIRONMENT = 1
247
+ USER_LEVEL_1 = 2
248
+ USER_LEVEL_2 = 3
249
+ COMFORT_LEVEL_1 = 4
250
+ COMFORT_LEVEL_2 = 5
251
+ COMFORT_LEVEL_3 = 6
252
+ COMFORT_LEVEL_4 = 7
253
+
254
+
255
+ class LockPriorityLevel(Enum):
256
+ """Enum Class for Lock Priority Level."""
257
+
258
+ NO = 0 # Do not lock any priority level.
259
+ MIN30 = 1 # Lock one or more priority level in 30 minutes.
260
+ FOREVER = 2 # Lock one or more priority level forever
261
+
262
+
263
+ class Velocity(Enum):
264
+ """Enum class for velocity."""
265
+
266
+ DEFAULT = 0
267
+ SILENT = 1
268
+ FAST = 2
269
+ NOT_AVAILABLE = 255
270
+
271
+
272
+ class NodeTypeWithSubtype(Enum):
273
+ """Enum class for node type plus sub type combined values."""
274
+
275
+ # pylint: disable=invalid-name
276
+
277
+ NO_TYPE = 0
278
+ INTERIOR_VENETIAN_BLIND = 0x0040
279
+ ROLLER_SHUTTER = 0x0080
280
+ ADJUSTABLE_SLUTS_ROLLING_SHUTTER = 0x0081
281
+ ADJUSTABLE_SLUTS_ROLLING_SHUTTER_WITH_PROJECTION = 0x0082
282
+ VERTICAL_EXTERIOR_AWNING = 0x00C0
283
+ WINDOW_OPENER = 0x0100
284
+ WINDOW_OPENER_WITH_RAIN_SENSOR = 0x0101
285
+ GARAGE_DOOR_OPENER = 0x0140
286
+ LINAR_ANGULAR_POSITION_OF_GARAGE_DOOR = 0x017A
287
+ LIGHT = 0x0180
288
+ LIGHT_ON_OFF = 0x01BA
289
+ GATE_OPENER = 0x01C0
290
+ GATE_OPENER_ANGULAR_POSITION = 0x01FA
291
+ DOOR_LOCK = 0x0240
292
+ WINDOW_LOCK = 0x0241
293
+ VERTICAL_INTERIOR_BLINDS = 0x0280
294
+ DUAL_ROLLER_SHUTTER = 0x0340
295
+ ON_OFF_SWITCH = 0x03C0
296
+ HORIZONTAL_AWNING = 0x0400
297
+ # Not documented by Velux but reported by some devices
298
+ # Velux support refuses to provide additional information about this node sub type
299
+ HORIZONTAL_AWNING_ALT = 0x0401
300
+ EXTERIOR_VENETIAN_BLIND = 0x0440
301
+ LOUVER_BLIND = 0x0480
302
+ CURTAIN_TRACK = 0x04C0
303
+ VENTILATION_POINT = 0x0500
304
+ VENTILATION_POINT_AIR_INLET = 0x0502
305
+ VENTILATION_POINT_AIR_TRANSFER = 0x0503
306
+ VENTILATION_POINT_AIR_OUTLET = 0x0503
307
+ EXTERIOR_HEATING = 0x0540
308
+ SWINGING_SHUTTERS = 0x0600
309
+ SWINGING_SHUTTER_WITH_INDEPENDENT_LEAVES = 0x0601
310
+ BLADE_OPENER = 0x0740
311
+
312
+
313
+ class NodeType(Enum):
314
+ """Enum class for node types."""
315
+
316
+ NO_TYPE = 0
317
+ VENETIAN_BLIND = 1
318
+ ROLLER_SHUTTER = 2
319
+ AWNING = 3
320
+ WINDOW_OPENER = 4
321
+ GARAGE_OPENER = 5
322
+ LIGHT = 6
323
+ GATE_OPENER = 7
324
+ ROLLING_DOOR_OPENER = 8
325
+ LOCK = 9
326
+ BLIND = 10
327
+ SECURE_CONFIGURATION_DEVICE = 11
328
+ BEACON = 12
329
+ DUAL_SHUTTER = 13
330
+ HEATING_TEMPERATURE_INTERFACE = 14
331
+ ON_OFF_SWITCH = 15
332
+ HORIZONTAL_AWNING = 16
333
+ EXTERNAL_VENETIAN_BLIND = 17
334
+ LOUVRE_BLINT = 18
335
+ CURTAIN_TRACK = 19
336
+ VENTILATION_POINT = 20
337
+ EXTERIOR_HEATING = 21
338
+ HEAT_PUMP = 22
339
+ INTRUSION_ALARM = 23
340
+ SWINGING_SHUTTER = 24
341
+
342
+
343
+ class NodeVariation(Enum):
344
+ """Enum class for node variations."""
345
+
346
+ NOT_SET = 0
347
+ TOPHUNG = 1
348
+ KIP = 2
349
+ FLAT_ROOT = 3
350
+ SKY_LIGHT = 3
351
+
352
+
353
+ class DHCPParameter(Enum):
354
+ """Enum class for dncp network setup of gateway."""
355
+
356
+ DISABLE = 0x00
357
+ ENABLE = 0x01
358
+
359
+
360
+ class GatewayState(Enum):
361
+ """Enum class for state of gateway."""
362
+
363
+ TEST_MODE = 0
364
+ GATEWAY_MODE_NO_ACTUATOR = 1
365
+ GATEWAY_MODE_WITH_ACTUATORS = 2
366
+ BEACON_MODE_NOT_CONFIGURED = 3
367
+ BEACON_MODE_CONFIGURED = 4
368
+
369
+
370
+ class GatewaySubState(Enum):
371
+ """Enum class for substate of gateway."""
372
+
373
+ IDLE = 0x00
374
+ PERFORMING_TASK_CONFIGURATION_SERVICE_HANDLER = 0x01
375
+ PERFORMING_TASK_SCENE_CONFIGURATION = 0x02
376
+ PERFORMING_TASK_INFORMATION_SERVICE_CONFIGURATION = 0x03
377
+ PERFORMING_TASK_CONTACT_INPUT_CONFIGURATION = 0x04
378
+ PERFORMING_TASK_COMMAND = 0x80
379
+ PERFORMING_TASK_ACTIVATE_GROUP = 0x81
380
+ PERFORMING_TASK_ACTIVATE_SCENE = 0x82
381
+ RESERVED_132 = 0x84 # <-- hey @VELUX: Can you tell us what this value means?
382
+
383
+
384
+ class LeaveLearnStateConfirmationStatus(Enum):
385
+ """Enum class for status leaving Learn state."""
386
+
387
+ FAILED = 0
388
+ SUCCESSFUL = 1
389
+
390
+
391
+ class ErrorNumber(Enum):
392
+ """Enum class for Errornumber in GW_ERROR_NTF."""
393
+
394
+ UNDEFINED = 0 # Not further defined error.
395
+ WRONG_COMMAND = 1 # Unknown Command or command is not accepted at this state.
396
+ FRAME_ERROR = 2 # ERROR on Frame Structure.
397
+ BUSY = 7 # Busy. Try again later.
398
+ BAD_SYSTABLE_INDEX = 8 # Bad system table index.
399
+ NO_AUTH = 12 # Not authenticated.
400
+
401
+
402
+ class ControllerCopyMode(Enum):
403
+ """Enum class for Copy Controller Mode."""
404
+
405
+ # pylint: disable=line-too-long
406
+
407
+ TCM = 0 # Transmitting Configuration Mode (TCM): The gateway gets key and system table from another controller.
408
+ RCM = 1 # Receiving Configuration Mode (RCM): The gateway gives key and system table to another controller.
409
+
410
+
411
+ class ControllerCopyStatus(Enum):
412
+ """Enum class for Copy Controller Mode."""
413
+
414
+ OK = 0 # OK. Data transfer to or from client controller.
415
+ FAILED_TRANSFER = 1 # Failed. Data transfer to or from client controller interrupted.
416
+ CANCELLED = 4 # Ok. Receiving configuration mode is cancelled in the client controller.
417
+ FAILED_TIMEOUT = 5 # Failed. Timeout.
418
+ FAILED_NOTREADY = 11 # Failed. Configuration service not ready.
419
+
420
+
421
+ class ChangeKeyStatus(Enum):
422
+ """Enum class for Key Change Status."""
423
+
424
+ # pylint: disable=line-too-long
425
+
426
+ OK_CONTROLLER = 0 # Ok. Key Change in client controller.
427
+ OK_ALL = 2 # Ok. Key change in system table all nodes updated with current key.
428
+ OK_PARTIALLY = 3 # Ok. Key Change in System table. Not all nodes in system table was updated with current key. Check bit array.
429
+ OK_RECEIVED = 5 # Ok. Client controller received a key.
430
+ FAILED_NOTDISABLED = 7 # Failed. Local Stimuli not disabled in all Client System table nodes. See bit array.
431
+ FAILED_NOCONTROLLER = 9 # Failed. Not able to find a controller to get key from.
432
+ FAILED_DTSNOTREADY = 10 # Failed. DTS not ready.
433
+ FAILED_DTSERROR = 11 # Failed. DTS error. At DTS error no key change will take place.
434
+ FAILED_CSNOTREADY = 16 # Failed. CS not ready.
435
+
436
+
437
+ class PgcJobState(Enum):
438
+ """Enum class for Product Generic Configuration Job State."""
439
+
440
+ STARTED = 0 # PGC job started
441
+ ENDED = 1 # PGC job ended. Either OK or with error.
442
+ CS_BUSY = 2 # CS busy with other services
443
+
444
+
445
+ class PgcJobStatus(Enum):
446
+ """Enum class for Product Generic Configuration Job Status."""
447
+
448
+ OK = 0 # OK - PGC and CS job completed
449
+ OK_PARTIALLY = 1 # Partly success.
450
+ FAILED_PGCCS = 2 # Failed - Error in PGC/CS job.
451
+ FAILED = 3 # Failed - Too long key press or cancel of CS service.
452
+
453
+
454
+ class PgcJobType(Enum):
455
+ """Enum class for Product Generic Configuration Job Type."""
456
+
457
+ # pylint: disable=line-too-long
458
+
459
+ RECEIVE_ONLY = 0 # Receive system copy or only get key. Short PGC button press.
460
+ RECEIVE_DISTRIBUTE = 1 # Receive key and distribute. Short PGC button press.
461
+ TRANSMIT = 2 # Transmit key (and system). Long PGC button press.
462
+ GENERATE = 3 # Generate new key and distribute or only generate new key. Very long PGC button press.
463
+
464
+
465
+ class DiscoverStatus(Enum):
466
+ """Enum class for Discovery status."""
467
+
468
+ # pylint: disable=line-too-long
469
+
470
+ OK = 0 # OK. Discovered nodes. See bit array.
471
+ FAILED_CSNOTREADY = 5 # Failed. CS not ready.
472
+ OK_PARTIALLY = 6 # OK. Same as DISCOVER_NODES_PERFORMED but some nodes were not added to system table (e.g. System table has reached its limit).
473
+ FAILED_CSBUSY = 7 # CS busy with another task.
474
+
475
+
476
+ class PowerMode(Enum):
477
+ """Enum class for Acutuator power Mode."""
478
+
479
+ ALWAYS_ALIVE = 0 # ALWAYS_ALIVE
480
+ LOW_POWER_MODE = 1 # LOW_POWER_MODE
481
+
482
+
483
+ class ChangeType(Enum):
484
+ """Enum class Change Type in Group or Scene NTF."""
485
+
486
+ DELETED = 0 # Scene or Group deleted
487
+ MODIFIED = 1 # Information modified
488
+
489
+
490
+ class ContactInputAssignement(Enum):
491
+ """Enum class for Contact Input."""
492
+
493
+ NOT_ASSINGED = 0 # Input not assigned.
494
+ SCENE = 1 # Scene
495
+ PRODUCT_GROUP = 2 # Product group
496
+ BY_MODE = 3 # One node controlled by mode
497
+
498
+
499
+ class OutputID(Enum):
500
+ """Enum class for Error and Success Output ID."""
501
+
502
+ DONT_SEND = 0 # Don’t send any pulse.
503
+ PULSE_PORT_1 = 1 # Send pulse to output port number 1
504
+ PULSE_PORT_2 = 2 # Send pulse to output port number 2
505
+ PULSE_PORT_3 = 3 # Send pulse to output port number 3
506
+ PULSE_PORT_4 = 4 # Send pulse to output port number 4
507
+ PULSE_PORT_5 = 5 # Send pulse to output port number 5
508
+
509
+
510
+ class GroupType(Enum):
511
+ """Enum class for Group Types."""
512
+
513
+ USER_GROUP = 0 # The group type is a user group.
514
+ ROOM = 1 # The group type is a Room.
515
+ HOUSE = 2 # The group type is a House.
516
+ ALL_GROUP = 3 # The group type is an All-group.
517
+
518
+
519
+ class LimitationTimer(Enum):
520
+ """Enum class for Limitation Timer."""
521
+
522
+ BY_SECONDS = 1 # 1=30 seconds 2=60 seconds 252=7590 seconds
523
+ UNLIMITED = 253 # unlimited
524
+ CLEAR_MASTER = 254 # clear entry for the Master
525
+ CLEAR_ALL = 255 # clear all
526
+
527
+
528
+ class LimitationType(Enum):
529
+ """Enum class for Limitation Types."""
530
+
531
+ MIN_LIMITATION = 0 # Resulting minimum limitation.
532
+ MAX_LIMITATION = 1 # Resulting maximum limitation.
533
+
534
+
535
+ class LockTime(Enum):
536
+ """Enum class for Lock Time."""
537
+
538
+ BY_SECONDS = 1 # 1=30 seconds, 2=60 seconds .. 254=7650 seconds
539
+ UNLIMITED = 255 # Unlimited time
540
+
541
+
542
+ class WinkTime(Enum):
543
+ """Enum class for Wink Time."""
544
+
545
+ STOP = 0 # Stop wink.
546
+ BY_SECONDS = 1 # 1=Wink in 1 sec., 2= Wink in 2 sec. 253=Wink in 253 sec.
547
+ BY_MANUFACTUERER = 254 # Manufacturer specific wink time.
548
+ FOREVER = 255 # Wink forever.
549
+
550
+
551
+ class NodeParameter(Enum):
552
+ """Enum Class for Node Parameter."""
553
+
554
+ MP = 0x00 # Main Parameter.
555
+ FP1 = 0x01 # Functional Parameter number 1.
556
+ FP2 = 0x02 # Functional Parameter number 2.
557
+ FP3 = 0x03 # Functional Parameter number 3.
558
+ FP4 = 0x04 # Functional Parameter number 4.
559
+ FP5 = 0x05 # Functional Parameter number 5.
560
+ FP6 = 0x06 # Functional Parameter number 6.
561
+ FP7 = 0x07 # Functional Parameter number 7.
562
+ FP8 = 0x08 # Functional Parameter number 8.
563
+ FP9 = 0x09 # Functional Parameter number 9.
564
+ FP10 = 0x0A # Functional Parameter number 10.
565
+ FP11 = 0x0B # Functional Parameter number 11.
566
+ FP12 = 0x0C # Functional Parameter number 12.
567
+ FP13 = 0x0D # Functional Parameter number 13.
568
+ FP14 = 0x0E # Functional Parameter number 14.
569
+ FP15 = 0x0F # Functional Parameter number 15.
570
+ FP16 = 0x10 # Functional Parameter number 16.
571
+ NOT_USED = 0xFF # Value to indicate Functional Parameter not used.
572
+
573
+
574
+ class OperatingState(Enum):
575
+ """Enum Class for operating state of the node."""
576
+
577
+ NON_EXECUTING = 0
578
+ ERROR_EXECUTING = 1
579
+ NOT_USED = 2
580
+ WAIT_FOR_POWER = 3
581
+ EXECUTING = 4
582
+ DONE = 5
583
+ UNKNOWN = 255
584
+
585
+ @classmethod
586
+ def _missing_(cls, value: object) -> Any:
587
+ return cls.UNKNOWN
588
+
589
+
590
+ class StatusReply(Enum):
591
+ """Enum Class for Node Status Reply."""
592
+
593
+ # pylint: disable=line-too-long
594
+
595
+ UNKNOWN_STATUS_REPLY = 0x00 # Used to indicate unknown reply.
596
+ COMMAND_COMPLETED_OK = 0x01 # Indicates no errors detected.
597
+ NO_CONTACT = 0x02 # Indicates no communication to node.
598
+ MANUALLY_OPERATED = 0x03 # Indicates manually operated by a user.
599
+ BLOCKED = 0x04 # Indicates node has been blocked by an object.
600
+ WRONG_SYSTEMKEY = 0x05 # Indicates the node contains a wrong system key.
601
+ PRIORITY_LEVEL_LOCKED = 0x06 # Indicates the node is locked on this priority level.
602
+ REACHED_WRONG_POSITION = 0x07 # Indicates node has stopped in another position than expected.
603
+ ERROR_DURING_EXECUTION = 0x08 # Indicates an error has occurred during execution of command.
604
+ NO_EXECUTION = 0x09 # Indicates no movement of the node parameter.
605
+ CALIBRATING = 0x0A # Indicates the node is calibrating the parameters.
606
+ POWER_CONSUMPTION_TOO_HIGH = 0x0B # Indicates the node power consumption is too high.
607
+ POWER_CONSUMPTION_TOO_LOW = 0x0C # Indicates the node power consumption is too low.
608
+ LOCK_POSITION_OPEN = 0x0D # Indicates door lock errors. (Door open during lock command)
609
+ MOTION_TIME_TOO_LONG__COMMUNICATION_ENDED = 0x0E # Indicates the target was not reached in time.
610
+ THERMAL_PROTECTION = 0x0F # Indicates the node has gone into thermal protection mode.
611
+ PRODUCT_NOT_OPERATIONAL = 0x10 # Indicates the node is not currently operational.
612
+ FILTER_MAINTENANCE_NEEDED = 0x11 # Indicates the filter needs maintenance.
613
+ BATTERY_LEVEL = 0x12 # Indicates the battery level is low.
614
+ TARGET_MODIFIED = 0x13 # Indicates the node has modified the target value of the command.
615
+ MODE_NOT_IMPLEMENTED = 0x14 # Indicates this node does not support the mode received.
616
+ COMMAND_INCOMPATIBLE_TO_MOVEMENT = 0x15 # Indicates the node is unable to move in the right direction.
617
+ USER_ACTION = 0x16 # Indicates dead bolt is manually locked during unlock command.
618
+ DEAD_BOLT_ERROR = 0x17 # Indicates dead bolt error.
619
+ AUTOMATIC_CYCLE_ENGAGED = 0x18 # Indicates the node has gone into automatic cycle mode.
620
+ WRONG_LOAD_CONNECTED = 0x19 # Indicates wrong load on node.
621
+ COLOUR_NOT_REACHABLE = 0x1A # Indicates that node is unable to reach received colour code.
622
+ TARGET_NOT_REACHABLE = 0x1B # Indicates the node is unable to reach received target position.
623
+ BAD_INDEX_RECEIVED = 0x1C # Indicates io-protocol has received an invalid index.
624
+ COMMAND_OVERRULED = 0x1D # Indicates that the command was overruled by a new command.
625
+ NODE_WAITING_FOR_POWER = 0x1E # Indicates that the node reported waiting for power.
626
+ INFORMATION_CODE = 0xDF # Indicates an unknown error code received. (Hex code is shown on display)
627
+ PARAMETER_LIMITED = 0xE0 # Indicates the parameter was limited by an unknown device. (Same as LIMITATION_BY_UNKNOWN_DEVICE)
628
+ LIMITATION_BY_LOCAL_USER = 0xE1 # Indicates the parameter was limited by local button.
629
+ LIMITATION_BY_USER = 0xE2 # Indicates the parameter was limited by a remote control.
630
+ LIMITATION_BY_RAIN = 0xE3 # Indicates the parameter was limited by a rain sensor.
631
+ LIMITATION_BY_TIMER = 0xE4 # Indicates the parameter was limited by a timer.
632
+ LIMITATION_BY_UPS = 0xE6 # Indicates the parameter was limited by a power supply.
633
+ LIMITATION_BY_UNKNOWN_DEVICE = 0xE7 # Indicates the parameter was limited by an unknown device. (Same as PARAMETER_LIMITED)
634
+ LIMITATION_BY_SAAC = 0xEA # Indicates the parameter was limited by a standalone automatic controller.
635
+ LIMITATION_BY_WIND = 0xEB # Indicates the parameter was limited by a wind sensor.
636
+ LIMITATION_BY_MYSELF = 0xEC # Indicates the parameter was limited by the node itself.
637
+ LIMITATION_BY_AUTOMATIC_CYCLE = 0xED # Indicates the parameter was limited by an automatic cycle.
638
+ LIMITATION_BY_EMERGENCY = 0xEE # Indicates the parameter was limited by an emergency.
639
+
640
+ @classmethod
641
+ def _missing_(cls, value: object) -> Any:
642
+ return cls.UNKNOWN_STATUS_REPLY
643
+
644
+
645
+ class StatusId(Enum):
646
+ """Enum Class for Status ID Reply."""
647
+
648
+ # pylint: disable=line-too-long
649
+
650
+ STATUS_USER = 0x01 # The status is from a user activation.
651
+ STATUS_RAIN = 0x02 # The status is from a rain sensor activation.
652
+ STATUS_TIMER = 0x03 # The status is from a timer generated action.
653
+ STATUS_UPS = 0x05 # The status is from a UPS generated action.
654
+ STATUS_PROGRAM = 0x08 # The status is from an automatic program generated action. (SAAC)
655
+ STATUS_WIND = 0x09 # The status is from a Wind sensor generated action.
656
+ STATUS_MYSELF = 0x0A # The status is from an actuator generated action.
657
+ STATUS_AUTOMATIC_CYCLE = 0x0B # The status is from a automatic cycle generated action.
658
+ STATUS_EMERGENCY = 0x0C # The status is from an emergency or a security generated action.
659
+ STATUS_UNKNOWN = 0xFF # The status is from from an unknown command originator action.
660
+
661
+ @classmethod
662
+ def _missing_(cls, value: object) -> Any:
663
+ return cls.STATUS_UNKNOWN
664
+
665
+
666
+ class RunStatus(Enum):
667
+ """Enum Class for Node RunStatus."""
668
+
669
+ EXECUTION_COMPLETED = 0 # Execution is completed with no errors.
670
+ EXECUTION_FAILED = 1 # Execution has failed. (Get specifics in the following error code)
671
+ EXECUTION_ACTIVE = 2 # Execution is still active.
672
+
673
+
674
+ class StatusType(Enum):
675
+ """Enum class for Status Type for GW_STATUS_REQUEST_NTF frame."""
676
+
677
+ REQUEST_TARGET_POSITION = 0 # Request Target Position
678
+ REQUEST_CURRENT_POSITION = 1 # Request Current Position
679
+ REQUEST_REMAINING_TIME = 2 # Request Remaining Time
680
+ REQUEST_MAIN_INFO = 3 # Request Main Info
681
+ REQUEST_UNKNOWN = 255 # Request Unknown
682
+
683
+ @classmethod
684
+ def _missing_(cls, value: object) -> Any:
685
+ return cls.REQUEST_UNKNOWN