DLMS-SPODES 0.87.13__py3-none-any.whl → 0.87.16__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 (100) hide show
  1. DLMS_SPODES/Values/EN/__init__.py +1 -1
  2. DLMS_SPODES/Values/EN/actors.py +8 -8
  3. DLMS_SPODES/Values/EN/relation_to_obis_names.py +387 -387
  4. DLMS_SPODES/Values/RU/__init__.py +1 -1
  5. DLMS_SPODES/Values/RU/actors.py +8 -8
  6. DLMS_SPODES/Values/RU/relation_to_obis_names.py +396 -396
  7. DLMS_SPODES/__init__.py +6 -6
  8. DLMS_SPODES/configEN.ini +126 -126
  9. DLMS_SPODES/config_parser.py +53 -53
  10. DLMS_SPODES/cosem_interface_classes/__class_init__.py +3 -3
  11. DLMS_SPODES/cosem_interface_classes/__init__.py +1 -1
  12. DLMS_SPODES/cosem_interface_classes/a_parameter.py +20 -20
  13. DLMS_SPODES/cosem_interface_classes/activity_calendar.py +254 -254
  14. DLMS_SPODES/cosem_interface_classes/arbitrator.py +105 -105
  15. DLMS_SPODES/cosem_interface_classes/association_ln/abstract.py +34 -34
  16. DLMS_SPODES/cosem_interface_classes/association_ln/authentication_mechanism_name.py +25 -25
  17. DLMS_SPODES/cosem_interface_classes/association_ln/mechanism_id.py +25 -25
  18. DLMS_SPODES/cosem_interface_classes/association_ln/method.py +5 -5
  19. DLMS_SPODES/cosem_interface_classes/association_ln/ver0.py +485 -485
  20. DLMS_SPODES/cosem_interface_classes/association_ln/ver1.py +133 -133
  21. DLMS_SPODES/cosem_interface_classes/association_ln/ver2.py +36 -36
  22. DLMS_SPODES/cosem_interface_classes/association_ln/ver3.py +4 -4
  23. DLMS_SPODES/cosem_interface_classes/association_sn/ver0.py +12 -12
  24. DLMS_SPODES/cosem_interface_classes/attr_indexes.py +12 -12
  25. DLMS_SPODES/cosem_interface_classes/clock.py +131 -131
  26. DLMS_SPODES/cosem_interface_classes/collection.py +2122 -2122
  27. DLMS_SPODES/cosem_interface_classes/cosem_interface_class.py +583 -583
  28. DLMS_SPODES/cosem_interface_classes/data.py +21 -21
  29. DLMS_SPODES/cosem_interface_classes/demand_register/ver0.py +59 -59
  30. DLMS_SPODES/cosem_interface_classes/disconnect_control.py +74 -74
  31. DLMS_SPODES/cosem_interface_classes/extended_register.py +27 -27
  32. DLMS_SPODES/cosem_interface_classes/gprs_modem_setup.py +43 -43
  33. DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver0.py +103 -103
  34. DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver1.py +40 -40
  35. DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver2.py +9 -9
  36. DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver0.py +11 -11
  37. DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver1.py +53 -53
  38. DLMS_SPODES/cosem_interface_classes/iec_local_port_setup.py +11 -11
  39. DLMS_SPODES/cosem_interface_classes/image_transfer/image_transfer_status.py +15 -15
  40. DLMS_SPODES/cosem_interface_classes/image_transfer/ver0.py +126 -126
  41. DLMS_SPODES/cosem_interface_classes/implementations/__init__.py +3 -3
  42. DLMS_SPODES/cosem_interface_classes/implementations/arbitrator.py +19 -19
  43. DLMS_SPODES/cosem_interface_classes/implementations/data.py +487 -487
  44. DLMS_SPODES/cosem_interface_classes/implementations/profile_generic.py +83 -83
  45. DLMS_SPODES/cosem_interface_classes/ipv4_setup.py +72 -72
  46. DLMS_SPODES/cosem_interface_classes/limiter.py +111 -111
  47. DLMS_SPODES/cosem_interface_classes/ln_pattern.py +333 -333
  48. DLMS_SPODES/cosem_interface_classes/modem_configuration/ver0.py +65 -65
  49. DLMS_SPODES/cosem_interface_classes/modem_configuration/ver1.py +39 -39
  50. DLMS_SPODES/cosem_interface_classes/ntp_setup/ver0.py +67 -67
  51. DLMS_SPODES/cosem_interface_classes/obis.py +23 -23
  52. DLMS_SPODES/cosem_interface_classes/overview.py +197 -197
  53. DLMS_SPODES/cosem_interface_classes/parameter.py +547 -547
  54. DLMS_SPODES/cosem_interface_classes/parameters.py +172 -172
  55. DLMS_SPODES/cosem_interface_classes/profile_generic/ver0.py +122 -122
  56. DLMS_SPODES/cosem_interface_classes/profile_generic/ver1.py +277 -277
  57. DLMS_SPODES/cosem_interface_classes/push_setup/ver0.py +12 -12
  58. DLMS_SPODES/cosem_interface_classes/push_setup/ver1.py +10 -10
  59. DLMS_SPODES/cosem_interface_classes/push_setup/ver2.py +166 -166
  60. DLMS_SPODES/cosem_interface_classes/register.py +45 -45
  61. DLMS_SPODES/cosem_interface_classes/register_activation/ver0.py +80 -80
  62. DLMS_SPODES/cosem_interface_classes/register_monitor.py +46 -46
  63. DLMS_SPODES/cosem_interface_classes/reports.py +70 -70
  64. DLMS_SPODES/cosem_interface_classes/schedule.py +176 -176
  65. DLMS_SPODES/cosem_interface_classes/script_table.py +87 -87
  66. DLMS_SPODES/cosem_interface_classes/security_setup/ver0.py +68 -68
  67. DLMS_SPODES/cosem_interface_classes/security_setup/ver1.py +158 -158
  68. DLMS_SPODES/cosem_interface_classes/single_action_schedule.py +50 -50
  69. DLMS_SPODES/cosem_interface_classes/special_days_table.py +84 -84
  70. DLMS_SPODES/cosem_interface_classes/tcp_udp_setup.py +42 -42
  71. DLMS_SPODES/cosem_pdu.py +93 -93
  72. DLMS_SPODES/enums.py +625 -625
  73. DLMS_SPODES/exceptions.py +106 -106
  74. DLMS_SPODES/firmwares.py +99 -99
  75. DLMS_SPODES/hdlc/frame.py +875 -875
  76. DLMS_SPODES/hdlc/sub_layer.py +54 -54
  77. DLMS_SPODES/literals.py +17 -17
  78. DLMS_SPODES/obis/__init__.py +1 -1
  79. DLMS_SPODES/obis/media_id.py +931 -931
  80. DLMS_SPODES/pardata.py +22 -22
  81. DLMS_SPODES/pdu_enums.py +98 -98
  82. DLMS_SPODES/relation_to_OBIS.py +465 -463
  83. DLMS_SPODES/settings.py +551 -551
  84. DLMS_SPODES/types/choices.py +142 -142
  85. DLMS_SPODES/types/common_data_types.py +2401 -2401
  86. DLMS_SPODES/types/cosem_service_types.py +109 -109
  87. DLMS_SPODES/types/implementations/arrays.py +25 -25
  88. DLMS_SPODES/types/implementations/bitstrings.py +97 -97
  89. DLMS_SPODES/types/implementations/double_long_usingneds.py +35 -35
  90. DLMS_SPODES/types/implementations/enums.py +57 -57
  91. DLMS_SPODES/types/implementations/integers.py +11 -11
  92. DLMS_SPODES/types/implementations/long_unsigneds.py +127 -127
  93. DLMS_SPODES/types/implementations/octet_string.py +11 -11
  94. DLMS_SPODES/types/implementations/structs.py +64 -64
  95. DLMS_SPODES/types/useful_types.py +677 -677
  96. {dlms_spodes-0.87.13.dist-info → dlms_spodes-0.87.16.dist-info}/METADATA +30 -30
  97. dlms_spodes-0.87.16.dist-info/RECORD +117 -0
  98. {dlms_spodes-0.87.13.dist-info → dlms_spodes-0.87.16.dist-info}/WHEEL +1 -1
  99. dlms_spodes-0.87.13.dist-info/RECORD +0 -117
  100. {dlms_spodes-0.87.13.dist-info → dlms_spodes-0.87.16.dist-info}/top_level.txt +0 -0
DLMS_SPODES/enums.py CHANGED
@@ -1,625 +1,625 @@
1
- from enum import Enum, IntEnum, auto, IntFlag
2
- from typing import Self
3
- from functools import cached_property
4
-
5
-
6
- class ITEEnum(Enum):
7
- def is_ok(self) -> bool:
8
- match self:
9
- case self.OK: return True
10
- case _: return False
11
-
12
- @property
13
- def value(self):
14
- return super(ITEEnum, self).value[1]
15
-
16
- @property
17
- def importance(self):
18
- return super(ITEEnum, self).value[0]
19
-
20
-
21
- class Transmit(ITEEnum):
22
- """ error enumerator for transmit . Priority for status has biggest value """
23
- OK = 0, 'Успех'
24
- NO_PORT = 2, 'Отсутствует порт'
25
- TIMEOUT = 3, 'Таймаут'
26
- NO_ACCESS = 4, 'Нет доступа'
27
- NO_TRANSPORT = 5, 'Отсутствует транспортный интерфейс'
28
- WRITE_ERROR = 6, 'Ошибка записи'
29
- READ_ERROR = 7, 'Ошибка чтения'
30
- EXECUTE_ERROR = 8, 'Ошибка исполнения'
31
- ABORT = 9, 'Прерывание'
32
- """ Manual interrupt """
33
- UNKNOWN = 10, 'Неизвестная ошибка'
34
-
35
-
36
- class Application(ITEEnum):
37
- """ error enumerator for application . Priority for status has biggest value """
38
- OK = 0, 'Успех'
39
- ID_ERROR = 2, 'Ошибка серийного номера'
40
- """ serial number identification error """
41
- VERSION_ERROR = 2, 'Ошибка версии'
42
- """ Any errors associated with version """
43
- MISSING_OBJ = 2, 'Отсутствует объект'
44
- """ requested object was missing in collection """
45
- EMPTY_OBJ = 2, 'Пустые данные'
46
- """ empty attribute in object """
47
- NO_CONFIG = 2, 'Конфигурация не найдена'
48
- VALUE_ERROR = 2, 'Ошибка значения'
49
- TYPE_ERROR = 2, 'Ошибка типа прибора'
50
- VERIFY_ERROR = 3, 'Ошибка верификации'
51
- ACTIVATION_ERROR = 3, 'Ошибка активации'
52
- RESULT_ERROR = 3, "Ошибка данных" # COSEMpdu_GB83.asn
53
- WAITING_RESULT = 3, "Oжидание результата"
54
-
55
-
56
- class TagsName(Enum):
57
- ROOT = 'Configure'
58
- LANGUAGE = 'Language'
59
- GROUP = 'group'
60
- DEVICE = 'device'
61
- NAME = 'name'
62
- ID = 'id'
63
- SERIAL_NUMBER = 'serial_number'
64
- SERIAL_NUMBER_AMOUNT = 'serial_number_amount'
65
- MECHANISM_ID = 'mechanism_id'
66
- INTERFACE = 'Interface'
67
- CHILD_ID = 'child_id'
68
- DEVICE_ROOT = 'Objects'
69
- TEMPLATE_ROOT = 'template.objects'
70
-
71
-
72
- class DBOperation(IntEnum):
73
- WRITE_ATTR = 1
74
- WRITE_METH = auto()
75
- CREATE_DEV_TYPE = auto()
76
-
77
-
78
- class Interface(IntEnum):
79
- NO_DEFINED = 0
80
- OPTO = 1
81
- RS485 = 2
82
- PLC = 3
83
- GSM = 4
84
- NBIO = 5
85
- ETHERNET = 6
86
- RF = 7
87
- LORA = 8
88
- WIFI = 9
89
- BLUETOOTH = 10
90
- ZIGBEE = 11
91
- RESERVED_12 = 12
92
- RESERVED_13 = 13
93
- RESERVED_14 = 14
94
- RESERVED_15 = 15
95
- RESERVED_16 = 16
96
- RESERVED_17 = 17
97
- RESERVED_18 = 18
98
- RESERVED_19 = 19
99
- RESERVED_20 = 20
100
- RESERVED_21 = 21
101
- RESERVED_22 = 22
102
- RESERVED_23 = 23
103
- RESERVED_24 = 24
104
- RESERVED_25 = 25
105
- RESERVED_26 = 26
106
- RESERVED_27 = 27
107
- RESERVED_28 = 28
108
- RESERVED_29 = 29
109
- MANUFACTURE_30 = 30
110
- MANUFACTURE_31 = 31
111
-
112
- @staticmethod
113
- def from_str(value: str) -> Self:
114
- return next(filter(lambda i: i.name == value, Interface))
115
-
116
-
117
- class ChannelNumber(IntEnum):
118
- RESERVED = 0
119
- OPTO_P1 = 1
120
- P2 = 2
121
- P3 = 3
122
- P4 = 4
123
- OTHER = 5
124
- INNER = 6
125
- SERVER_KEY = 7
126
-
127
- @staticmethod
128
- def from_str(value: str) -> Self:
129
- return next(filter(lambda i: i.name == value, ChannelNumber))
130
-
131
-
132
- class ContextId(IntEnum):
133
- LN_NO_CIPHERING = 1
134
- SN_NO_CIPHERING = 2
135
- LN_CIPHERING = 3
136
- SN_CIPHERING = 4
137
-
138
- @classmethod
139
- def from_str(cls, value: str) -> Self:
140
- return next(filter(lambda i: i.name == value, cls))
141
-
142
-
143
- class ACSEAPDU(IntEnum):
144
- """COSEMpdu_GB83.asn ACSE-APDU"""
145
- AARQ = 0x60
146
- AARE = 0x61
147
- RLRQ = 0x62
148
- RLRE = 0x63
149
-
150
-
151
- class VariableAccessSpecification(IntEnum):
152
- """COSEMpdu_GB83.asn Variable-Access-Specification"""
153
- VARIABLE_NAME = 2
154
- """Read data using SN"""
155
- PARAMETERIZED_ACCESS = 4
156
- """Get data using parameterized access"""
157
- BLOCK_NUMBER_ACCESS = 5
158
- """Get next block"""
159
- READ_DATA_BLOCK_ACCESS = 6
160
- WRITE_DATA_BLOCK_ACCESS = 7
161
-
162
-
163
- class XDLMSAPDU(IntFlag):
164
- """COSEMpdu_GB83.asn XDLMS-APDU"""
165
- INITIATE_REQUEST = 1
166
- READ_REQUEST = 5
167
- WRITE_REQUEST = 6
168
- INITIATE_RESPONSE = 8
169
- READ_RESPONSE = 12
170
- WRITE_RESPONSE = 13
171
- CONFIRMED_SERVICE_ERROR = 14
172
- DATA_NOTIFICATION = 15
173
- UNCONFIRMED_WRITE_REQUEST = 22
174
- INFORMATION_REPORT_REQUEST = 24
175
- GLO_INITIATE_REQUEST = 33
176
- GLO_READ_REQUEST = 37
177
- GLO_WRITE_REQUEST = 38
178
- GLO_INITIATE_RESPONSE = 40
179
- GLO_READ_RESPONSE = 44
180
- GLO_WRITE_RESPONSE = 45
181
- GLO_CONFIRMED_SERVICE_ERROR = 46
182
- GLO_UNCONFIRMED_WRITE_REQUEST = 54
183
- GLO_INFORMATION_REPORT_REQUEST = 56
184
- DED_INITIATE_REQUEST = 65
185
- DED_READ_REQUEST = 69
186
- DED_WRITE_REQUEST = 70
187
- DED_INITIATE_RESPONSE = 72
188
- DED_READ_RESPONSE = 76
189
- DED_WRITE_RESPONSE = 77
190
- DED_CONFIRMED_SERVICE_ERROR = 78
191
- DED_UNCONFIRMED_WRITE_REQUEST = 86
192
- DED_INFORMATION_REPORT_REQUEST = 88
193
- GET_REQUEST = 192
194
- SET_REQUEST = 193
195
- EVENT_NOTIFICATION_REQUEST = 194
196
- ACTION_REQUEST = 195
197
- GET_RESPONSE = 196
198
- SET_RESPONSE = 197
199
- ACTION_RESPONSE = 199
200
- GLO_GET_REQUEST = 200
201
- GLO_SET_REQUEST = 201
202
- GLO_EVENT_NOTIFICATION_REQUEST = 202
203
- GLO_ACTION_REQUEST = 203
204
- GLO_GET_RESPONSE = 204
205
- GLO_SET_RESPONSE = 205
206
- GLO_ACTION_RESPONSE = 207
207
- DED_GET_REQUEST = 208
208
- DED_SET_REQUEST = 209
209
- DED_EVENT_NOTIFICATION_REQUEST = 210
210
- DED_ACTION_REQUEST = 211
211
- DED_GET_RESPONSE = 212
212
- DED_SET_RESPONSE = 213
213
- DED_ACTION_RESPONSE = 215
214
- EXCEPTION_RESPONSE = 216
215
- ACCESS_REQUEST = 217
216
- ACCESS_RESPONSE = 218
217
- GENERAL_GLO_CIPHERING = 219
218
- GENERAL_DED_CIPHERING = 220
219
- GENERAL_CIPHERING = 221
220
- GENERAL_SIGNING = 223
221
- GENERAL_BLOCK_TRANSFER = 224
222
- GATEWAY_REQUEST = 230
223
- GATEWAY_RESPONSE = 231
224
-
225
-
226
- class Conformance(IntFlag):
227
- """ DLMS UA 1000-1 Ed 14 5.4.5 AssociationLN xDLMS_context_info.conformance"""
228
- NONE = 0
229
- RESERVED_ZERO = 0b1
230
- GENERAL_PROTECTION = 0b10
231
- GENERAL_BLOCK_TRANSFER = 0b100
232
- READ = 0b1000
233
- WRITE = 0b1_0000
234
- UN_CONFIRMED_WRITE = 0b10_0000
235
- RESERVED_SIX = 0b100_0000
236
- RESERVED_SEVEN = 0b1000_0000
237
- ATTRIBUTE_0_SUPPORTED_WITH_SET = 0b1_0000_0000
238
- PRIORITY_MGMT_SUPPORTED = 0b10_0000_0000
239
- ATTRIBUTE_0_SUPPORTED_WITH_GET = 0b100_0000_0000
240
- BLOCK_TRANSFER_WITH_GET_OR_READ = 0b1000_0000_0000
241
- BLOCK_TRANSFER_WITH_SET_OR_WRITE = 0b1_0000_0000_0000
242
- BLOCK_TRANSFER_WITH_ACTION = 0b10_0000_0000_0000
243
- MULTIPLE_REFERENCES = 0b100_0000_0000_0000
244
- INFORMATION_REPORT = 0b1000_0000_0000_0000
245
- DATA_NOTIFICATION = 0b1_0000_0000_0000_0000
246
- ACCESS = 0b10_0000_0000_0000_0000
247
- PARAMETERIZED_ACCESS = 0b100_0000_0000_0000_0000
248
- GET = 0b1000_0000_0000_0000_0000
249
- SET = 0b1_0000_0000_0000_0000_0000
250
- SELECTIVE_ACCESS = 0b10_0000_0000_0000_0000
251
- EVENT_NOTIFICATION = 0b100_0000_0000_0000_0000
252
- ACTION = 0b1000_0000_0000_0000_0000
253
-
254
- @cached_property
255
- def content(self) -> bytes:
256
- return self.value.to_bytes(3, "big")
257
-
258
- def __bytes__(self):
259
- return self.content
260
-
261
-
262
- class ActionRequest(IntEnum):
263
- """COSEMpdu_GB83.asn Action-Request"""
264
- NORMAL = 1
265
- NEXT_PBLOCK = 2
266
- WITH_LIST = 3
267
- WITH_FIRST_PBLOCK = 4
268
- WITH_LIST_AND_FIRST_PBLOCK = 5
269
- WITH_PBLOCK = 6
270
-
271
-
272
- class ReadResponse(IntEnum):
273
- """COSEMpdu_GB83.asn ReadResponse"""
274
- DATA = 0
275
- DATA_ACCESS_ERROR = 1
276
- DATA_BLOCK_RESULT = 2
277
- BLOCK_NUMBER = 3
278
-
279
-
280
- class ServiceError(IntEnum):
281
- """COSEMpdu_GB83.asn ServiceError"""
282
- APPLICATION_REFERENCE = 0
283
- HARDWARE_RESOURCE = 1
284
- VDE_STATE_ERROR = 2
285
- SERVICE = 3
286
- DEFINITION = 4
287
- ACCESS = 5
288
- INITIATE = 6
289
- LOAD_DATA_SET = 7
290
- CHANGE_SCOPE = 8
291
- TASK = 9
292
- OTHER = 10
293
-
294
-
295
- class ConfirmedServiceError(IntEnum):
296
- """COSEMpdu_GB83.asn ConfirmedServiceError"""
297
- INITIATE_ERROR = 1
298
- GET_STATUS = 2
299
- GET_NAME_LIST = 3
300
- GET_VARIABLE_ATTRIBUTE = 4
301
- READ = 5
302
- WRITE = 6
303
- GET_DATA_SET_ATTRIBUTE = 7
304
- GET_TI_ATTRIBUTE = 8
305
- CHANGE_SCOPE = 9
306
- START = 10
307
- STOP = 11
308
- RESUME = 12
309
- MAKE_USABLE = 13
310
- INITIATE_LOAD = 14
311
- LOAD_SEGMENT = 15
312
- TERMINATE_LOAD = 16
313
- INITIATE_UP_LOAD = 17
314
- UP_LOAD_SEGMENT = 18
315
- TERMINATE_UP_LOAD = 19
316
-
317
-
318
- class AARQapdu(IntEnum):
319
- """COSEMpdu_GB83.asn AARQ-apdu"""
320
- PROTOCOL_VERSION = 0
321
- APPLICATION_CONTEXT_NAME = 1
322
- CALLED_AP_TITLE = 2
323
- CALLED_AE_QUALIFIER = 3
324
- CALLED_AP_INVOCATION_ID = 4
325
- CALLED_AE_INVOCATION_ID = 5
326
- CALLING_AP_TITLE = 6
327
- CALLING_AE_QUALIFIER = 7
328
- CALLING_AP_INVOCATION_ID = 8
329
- CALLING_AE_INVOCATION_ID = 9
330
- SENDER_ACSE_REQUIREMENTS = 10
331
- MECHANISM_NAME = 11
332
- CALLING_AUTHENTICATION_VALUE = 12
333
- IMPLEMENTATION_INFORMATION = 29
334
- USER_INFORMATION = 30
335
-
336
-
337
- class SetRequest(IntEnum):
338
- """COSEMpdu_GB83.asn Set-Request"""
339
- SET_REQUEST_NORMAL = 1
340
- SET_REQUEST_FIRST_DATABLOCK = 2
341
- SET_REQUEST_WITH_DATABLOCK = 3
342
- SET_REQUEST_WITH_LIST = 4
343
- SET_REQUEST_WITH_LIST_AND_WITH_FIRST_DATABLOCK = 5
344
-
345
-
346
- class AssociationResult(IntEnum):
347
- """COSEMpdu_GB83.asn Association-result"""
348
- ACCEPTED = 0
349
- REJECTED_PERMANENT = 1
350
- REJECTED_TRANSIENT = 2
351
-
352
-
353
- class AcseServiceUser(IntEnum):
354
- """COSEMpdu_GB83.asn acse-service-user"""
355
- NULL = 0
356
- NO_REASON_GIVEN = 1
357
- APPLICATION_CONTEXT_NAME_NOT_SUPPORTED = 2
358
- CALLING_AP_TITLE_NOT_RECOGNIZED = 3
359
- CALLING_AP_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 4
360
- CALLING_AE_QUALIFIER_NOT_RECOGNIZED = 5
361
- CALLING_AE_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 6
362
- CALLED_AP_TITLE_NOT_RECOGNIZED = 7
363
- CALLED_AP_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 8
364
- CALLED_AE_QUALIFIER_NOT_RECOGNIZED = 9
365
- CALLED_AE_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 10
366
- AUTHENTICATION_MECHANISM_NAME_NOT_RECOGNISED = 11
367
- AUTHENTICATION_MECHANISM_NAME_REQUIRED = 12
368
- AUTHENTICATION_FAILURE = 13
369
- AUTHENTICATION_REQUIRED = 14
370
-
371
-
372
- class Unit(IntEnum):
373
- TIME_YEAR = 1
374
- TIME_MONTH = 2
375
- TIME_WEEK = 3
376
- TIME_DAY = 4
377
- TIME_HOUR = 5
378
- TIME_MINUTE = 6
379
- TIME_SECOND = 7
380
- PHASE_ANGLE_DEGREE = 8
381
- TEMPERATURE = 9
382
- LOCAL_CURRENCY = 10
383
- LENGTH_METRE = 11
384
- SPEED_METRE_PER_SECOND = 12
385
- VOLUME_VALUE_CUBIC_METRE = 13
386
- CORRECTED_VOLUME_CUBIC_METRE = 14
387
- VOLUME_FLUX_CUBIC_METRE_PER_HOUR = 15
388
- CORRECTED_VOLUME_FLUX_CUBIC_METRE_PER_HOUR = 16
389
- VOLUME_FLUX_CUBIC_METRE_PER_DAY = 17
390
- CORRECTED_VOLUME_FLUX_CUBIC_METRE_PER_DAY = 18
391
- VOLUME_LITRE = 19
392
- MASS_KILOGRAM = 20
393
- FORCE_NEWTON = 21
394
- ENERGY_NEWTON_METER = 22
395
- PRESSURE_PASCAL = 23
396
- PRESSURE_BAR = 24
397
- ENERGY_JOULE = 25
398
- THERMAL_POWER_RATE_OF_CHANGE_JOULE_PER_HOUR = 26
399
- ACTIVE_POWER_WATT = 27
400
- APPARENT_POWER_VOLT_AMPERE = 28
401
- REACTIVE_POWER_VAR = 29
402
- ACTIVE_ENERGY_VALUE_WATT_HOUR = 30
403
- APPARENT_ENERGY_VALUE_VOLT_AMPERE_HOUR = 31
404
- REACTIVE_ENERGY_VALUE_VAR_HOUR = 32
405
- CURRENT_AMPERE = 33
406
- ELECTRICAL_CHARGE_COULOMB = 34
407
- VOLTAGE_VOLT = 35
408
- ELECTRIC_FIELD_STRENGTH_VOLT_PER_METRE = 36
409
- CAPACITANCE_FARAD = 37
410
- RESISTANCE_OHM = 38
411
- RESISTIVITY = 39
412
- MAGNETIC_FLUX_WEBER = 40
413
- MAGNETIC_FLUX_DENSITY_TESLA = 41
414
- MAGNETIC_FIELD_STRENGTH_AMPERE_PER_METRE = 42
415
- INDUCTANCE_HENRY = 43
416
- FREQUENCY_HERTZ = 44
417
- RW_ACTIVE_ENERGY_VALUE = 45
418
- RB_REACTIVE_ENERGY_VALUE = 46
419
- RS_APPARENT_ENERGY_VALUE = 47
420
- VOLT_SQUARED_HOUR_VOLT_SQUARED_HOUR_METER = 48
421
- AMPERE_SQUARED_HOUR = 49
422
- MASS_FLUX_KILOGRAM_PER_SECOND = 50
423
- CONDUCTANCE_SIEMENS = 51
424
- TEMPERATURE_KELVIN = 52
425
- RU2H_VOLT_SQUARED_HOUR_METER = 53
426
- RI2H_AMPERE_SQUARED_HOUR_METER = 54
427
- RV_METER = 55
428
- PERCENTAGE = 56
429
- AMPERE_HOURS = 57
430
- RESERVED_58 = 58
431
- RESERVED_59 = 59
432
- ENERGY_PER_VOLUME = 60
433
- CALORIFIC_VALUE_WOBBE = 61
434
- MOLAR_FRACTION_OF_GAS_COMPOSITION_MOLE_PERCENT = 62
435
- MASS_DENSITY_QUANTITY_OF_MATERIAL = 63
436
- DYNAMIC_VISCOSITY_PASCAL_SECOND = 64
437
- SPECIFIC_ENERGY_JOULE_KILOGRAM = 65
438
- PRESSURE_GRAM_PER_SQUARE_CENTIMETER = 66
439
- PRESSURE_ATMOSPHERE = 67
440
- SIGNAL_STRENGTH_MILLIWATT = 70
441
- SIGNAL_STRENGTH_MICROVOLT = 71
442
- LOGARITHMIC_UNIT = 72
443
- RESERVED_73 = 73
444
- RESERVED_74 = 74
445
- RESERVED_75 = 75
446
- RESERVED_76 = 76
447
- RESERVED_77 = 77
448
- RESERVED_78 = 78
449
- RESERVED_79 = 79
450
- RESERVED_80 = 80
451
- RESERVED_81 = 81
452
- RESERVED_82 = 82
453
- RESERVED_83 = 83
454
- RESERVED_84 = 84
455
- RESERVED_85 = 85
456
- RESERVED_86 = 86
457
- RESERVED_87 = 87
458
- RESERVED_88 = 88
459
- RESERVED_89 = 89
460
- RESERVED_90 = 90
461
- RESERVED_91 = 91
462
- RESERVED_92 = 92
463
- RESERVED_93 = 93
464
- RESERVED_94 = 94
465
- RESERVED_95 = 95
466
- RESERVED_96 = 96
467
- RESERVED_97 = 97
468
- RESERVED_98 = 98
469
- RESERVED_99 = 99
470
- RESERVED_100 = 100
471
- RESERVED_101 = 101
472
- RESERVED_102 = 102
473
- RESERVED_103 = 103
474
- RESERVED_104 = 104
475
- RESERVED_105 = 105
476
- RESERVED_106 = 106
477
- RESERVED_107 = 107
478
- RESERVED_108 = 108
479
- RESERVED_109 = 109
480
- RESERVED_110 = 110
481
- RESERVED_111 = 111
482
- RESERVED_112 = 112
483
- RESERVED_113 = 113
484
- RESERVED_114 = 114
485
- RESERVED_115 = 115
486
- RESERVED_116 = 116
487
- RESERVED_117 = 117
488
- RESERVED_118 = 118
489
- RESERVED_119 = 119
490
- RESERVED_120 = 120
491
- RESERVED_121 = 121
492
- RESERVED_122 = 122
493
- RESERVED_123 = 123
494
- RESERVED_124 = 124
495
- RESERVED_125 = 125
496
- RESERVED_126 = 126
497
- RESERVED_127 = 127
498
- LENGTH_INCH = 128
499
- LENGTH_FOOT = 129
500
- MASS_POUND = 130
501
- TEMPERATURE_FAHRENHEIT = 131
502
- TEMPERATURE_RANKINE = 132
503
- AREA_SQUARE_INCH = 133
504
- AREA_SQUARE_FOOT = 134
505
- AREA_ACRE = 135
506
- VOLUME_CUBIC_INCH = 136
507
- VOLUME_CUBIC_FOOT = 137
508
- VOLUME_ACRE_FOOT = 138
509
- VOLUME_GALLON_IMPERIAL = 139
510
- VOLUME_GALLON_US = 140
511
- FORCE_POUND_FORCE = 141
512
- PRESSURE_POUND_FORCE_PER_SQUARE_INCH = 142
513
- DENSITY_POUND_PER_CUBIC_FOOT = 143
514
- DYNAMIC_VISCOSITY = 144
515
- KINEMATIC_VISCOSITY_SQUARE_FOOT_PER_SECOND = 145
516
- ENERGY_BRITISH_THERMAL_UNIT = 146
517
- ENERGY_THERM_EU = 147
518
- ENERGY_THERM_US = 148
519
- CALORIFIC_VALUE_OF_MASS_LENTHALPY = 149
520
- CALORIFIC_VALUE_OF_VOLUME_WOBBE = 150
521
- VOLUME_METER_CUBIC_FEET_RV = 151
522
- SPEED_FOOT_PER_SECOND = 152
523
- VOLUME_FLUX_CUBIC_FOOT_PER_SECOND = 153
524
- VOLUME_FLUX_CUBIC_FOOT_PER_MIN = 154
525
- VOLUME_FLUX_CUBIC_FOOT_PER_HOUR = 155
526
- VOLUME_FLUX_CUBIC_FOOT_PER_DAY = 156
527
- VOLUME_FLUX_ACRE_FOOT_PER_SECOND = 157
528
- VOLUME_FLUX_ACRE_FOOT_PER_MIN = 158
529
- VOLUME_FLUX_ACRE_FOOT_PER_HOUR = 159
530
- VOLUME_FLUX_ACRE_FOOT_PER_DAY = 160
531
- VOLUME_IMPERIAL_GALLON_METER_RV = 161
532
- VOLUME_FLUX_IMPERIAL_GALLON_PER_SECOND = 162
533
- VOLUME_FLUX_IMPERIAL_GALLON_PER_MIN = 163
534
- VOLUME_FLUX_IMPERIAL_GALLON_PER_HOUR = 164
535
- VOLUME_FLUX_IMPERIAL_GALLON_PER_DAY = 165
536
- VOLUME_US_GALLON_RV = 166
537
- VOLUME_FLUX_US_GALLON_PER_SECOND = 167
538
- VOLUME_FLUX_US_GALLON_PER_MIN = 168
539
- VOLUME_FLUX_US_GALLON_PER_HOUR = 169
540
- VOLUME_FLUX_US_GALLON_PER_DAY = 170
541
- ENERGY_FLOW_BRITISH_THERMAL_UNIT_PER_SECOND = 171
542
- ENERGY_FLOW_BRITISH_THERMAL_UNIT_PER_MINUTE = 172
543
- ENERGY_FLOW_BRITISH_THERMAL_UNIT_PER_HOUR = 173
544
- ENERGY_FLOW_BRITISH_THERMAL_UNIT_PER_DAY = 174
545
- RESERVED_175 = 175
546
- RESERVED_176 = 176
547
- RESERVED_177 = 177
548
- RESERVED_178 = 178
549
- RESERVED_179 = 179
550
- RESERVED_180 = 180
551
- RESERVED_181 = 181
552
- RESERVED_182 = 182
553
- RESERVED_183 = 183
554
- RESERVED_184 = 184
555
- RESERVED_185 = 185
556
- RESERVED_186 = 186
557
- RESERVED_187 = 187
558
- RESERVED_188 = 188
559
- RESERVED_189 = 189
560
- RESERVED_190 = 190
561
- RESERVED_191 = 191
562
- RESERVED_192 = 192
563
- RESERVED_193 = 193
564
- RESERVED_194 = 194
565
- RESERVED_195 = 195
566
- RESERVED_196 = 196
567
- RESERVED_197 = 197
568
- RESERVED_198 = 198
569
- RESERVED_199 = 199
570
- RESERVED_200 = 200
571
- RESERVED_201 = 201
572
- RESERVED_202 = 202
573
- RESERVED_203 = 203
574
- RESERVED_204 = 204
575
- RESERVED_205 = 205
576
- RESERVED_206 = 206
577
- RESERVED_207 = 207
578
- RESERVED_208 = 208
579
- RESERVED_209 = 209
580
- RESERVED_210 = 210
581
- RESERVED_211 = 211
582
- RESERVED_212 = 212
583
- RESERVED_213 = 213
584
- RESERVED_214 = 214
585
- RESERVED_215 = 215
586
- RESERVED_216 = 216
587
- RESERVED_217 = 217
588
- RESERVED_218 = 218
589
- RESERVED_219 = 219
590
- RESERVED_220 = 220
591
- RESERVED_221 = 221
592
- RESERVED_222 = 222
593
- RESERVED_223 = 223
594
- RESERVED_224 = 224
595
- RESERVED_225 = 225
596
- RESERVED_226 = 226
597
- RESERVED_227 = 227
598
- RESERVED_228 = 228
599
- RESERVED_229 = 229
600
- RESERVED_230 = 230
601
- RESERVED_231 = 231
602
- RESERVED_232 = 232
603
- RESERVED_233 = 233
604
- RESERVED_234 = 234
605
- RESERVED_235 = 235
606
- RESERVED_236 = 236
607
- RESERVED_237 = 237
608
- RESERVED_238 = 238
609
- RESERVED_239 = 239
610
- RESERVED_240 = 240
611
- RESERVED_241 = 241
612
- RESERVED_242 = 242
613
- RESERVED_243 = 243
614
- RESERVED_244 = 244
615
- RESERVED_245 = 245
616
- RESERVED_246 = 246
617
- RESERVED_247 = 247
618
- RESERVED_248 = 248
619
- RESERVED_249 = 249
620
- RESERVED_250 = 250
621
- RESERVED_251 = 251
622
- RESERVED_252 = 252
623
- EXTENDED_TABLE_OF_UNITS = 253
624
- OTHER_UNIT = 254
625
- NO_UNIT_UNITLESS_COUNT = 255
1
+ from enum import Enum, IntEnum, auto, IntFlag
2
+ from typing import Self
3
+ from functools import cached_property
4
+
5
+
6
+ class ITEEnum(Enum):
7
+ def is_ok(self) -> bool:
8
+ match self:
9
+ case self.OK: return True
10
+ case _: return False
11
+
12
+ @property
13
+ def value(self):
14
+ return super(ITEEnum, self).value[1]
15
+
16
+ @property
17
+ def importance(self):
18
+ return super(ITEEnum, self).value[0]
19
+
20
+
21
+ class Transmit(ITEEnum):
22
+ """ error enumerator for transmit . Priority for status has biggest value """
23
+ OK = 0, 'Успех'
24
+ NO_PORT = 2, 'Отсутствует порт'
25
+ TIMEOUT = 3, 'Таймаут'
26
+ NO_ACCESS = 4, 'Нет доступа'
27
+ NO_TRANSPORT = 5, 'Отсутствует транспортный интерфейс'
28
+ WRITE_ERROR = 6, 'Ошибка записи'
29
+ READ_ERROR = 7, 'Ошибка чтения'
30
+ EXECUTE_ERROR = 8, 'Ошибка исполнения'
31
+ ABORT = 9, 'Прерывание'
32
+ """ Manual interrupt """
33
+ UNKNOWN = 10, 'Неизвестная ошибка'
34
+
35
+
36
+ class Application(ITEEnum):
37
+ """ error enumerator for application . Priority for status has biggest value """
38
+ OK = 0, 'Успех'
39
+ ID_ERROR = 2, 'Ошибка серийного номера'
40
+ """ serial number identification error """
41
+ VERSION_ERROR = 2, 'Ошибка версии'
42
+ """ Any errors associated with version """
43
+ MISSING_OBJ = 2, 'Отсутствует объект'
44
+ """ requested object was missing in collection """
45
+ EMPTY_OBJ = 2, 'Пустые данные'
46
+ """ empty attribute in object """
47
+ NO_CONFIG = 2, 'Конфигурация не найдена'
48
+ VALUE_ERROR = 2, 'Ошибка значения'
49
+ TYPE_ERROR = 2, 'Ошибка типа прибора'
50
+ VERIFY_ERROR = 3, 'Ошибка верификации'
51
+ ACTIVATION_ERROR = 3, 'Ошибка активации'
52
+ RESULT_ERROR = 3, "Ошибка данных" # COSEMpdu_GB83.asn
53
+ WAITING_RESULT = 3, "Oжидание результата"
54
+
55
+
56
+ class TagsName(Enum):
57
+ ROOT = 'Configure'
58
+ LANGUAGE = 'Language'
59
+ GROUP = 'group'
60
+ DEVICE = 'device'
61
+ NAME = 'name'
62
+ ID = 'id'
63
+ SERIAL_NUMBER = 'serial_number'
64
+ SERIAL_NUMBER_AMOUNT = 'serial_number_amount'
65
+ MECHANISM_ID = 'mechanism_id'
66
+ INTERFACE = 'Interface'
67
+ CHILD_ID = 'child_id'
68
+ DEVICE_ROOT = 'Objects'
69
+ TEMPLATE_ROOT = 'template.objects'
70
+
71
+
72
+ class DBOperation(IntEnum):
73
+ WRITE_ATTR = 1
74
+ WRITE_METH = auto()
75
+ CREATE_DEV_TYPE = auto()
76
+
77
+
78
+ class Interface(IntEnum):
79
+ NO_DEFINED = 0
80
+ OPTO = 1
81
+ RS485 = 2
82
+ PLC = 3
83
+ GSM = 4
84
+ NBIO = 5
85
+ ETHERNET = 6
86
+ RF = 7
87
+ LORA = 8
88
+ WIFI = 9
89
+ BLUETOOTH = 10
90
+ ZIGBEE = 11
91
+ RESERVED_12 = 12
92
+ RESERVED_13 = 13
93
+ RESERVED_14 = 14
94
+ RESERVED_15 = 15
95
+ RESERVED_16 = 16
96
+ RESERVED_17 = 17
97
+ RESERVED_18 = 18
98
+ RESERVED_19 = 19
99
+ RESERVED_20 = 20
100
+ RESERVED_21 = 21
101
+ RESERVED_22 = 22
102
+ RESERVED_23 = 23
103
+ RESERVED_24 = 24
104
+ RESERVED_25 = 25
105
+ RESERVED_26 = 26
106
+ RESERVED_27 = 27
107
+ RESERVED_28 = 28
108
+ RESERVED_29 = 29
109
+ MANUFACTURE_30 = 30
110
+ MANUFACTURE_31 = 31
111
+
112
+ @staticmethod
113
+ def from_str(value: str) -> Self:
114
+ return next(filter(lambda i: i.name == value, Interface))
115
+
116
+
117
+ class ChannelNumber(IntEnum):
118
+ RESERVED = 0
119
+ OPTO_P1 = 1
120
+ P2 = 2
121
+ P3 = 3
122
+ P4 = 4
123
+ OTHER = 5
124
+ INNER = 6
125
+ SERVER_KEY = 7
126
+
127
+ @staticmethod
128
+ def from_str(value: str) -> Self:
129
+ return next(filter(lambda i: i.name == value, ChannelNumber))
130
+
131
+
132
+ class ContextId(IntEnum):
133
+ LN_NO_CIPHERING = 1
134
+ SN_NO_CIPHERING = 2
135
+ LN_CIPHERING = 3
136
+ SN_CIPHERING = 4
137
+
138
+ @classmethod
139
+ def from_str(cls, value: str) -> Self:
140
+ return next(filter(lambda i: i.name == value, cls))
141
+
142
+
143
+ class ACSEAPDU(IntEnum):
144
+ """COSEMpdu_GB83.asn ACSE-APDU"""
145
+ AARQ = 0x60
146
+ AARE = 0x61
147
+ RLRQ = 0x62
148
+ RLRE = 0x63
149
+
150
+
151
+ class VariableAccessSpecification(IntEnum):
152
+ """COSEMpdu_GB83.asn Variable-Access-Specification"""
153
+ VARIABLE_NAME = 2
154
+ """Read data using SN"""
155
+ PARAMETERIZED_ACCESS = 4
156
+ """Get data using parameterized access"""
157
+ BLOCK_NUMBER_ACCESS = 5
158
+ """Get next block"""
159
+ READ_DATA_BLOCK_ACCESS = 6
160
+ WRITE_DATA_BLOCK_ACCESS = 7
161
+
162
+
163
+ class XDLMSAPDU(IntFlag):
164
+ """COSEMpdu_GB83.asn XDLMS-APDU"""
165
+ INITIATE_REQUEST = 1
166
+ READ_REQUEST = 5
167
+ WRITE_REQUEST = 6
168
+ INITIATE_RESPONSE = 8
169
+ READ_RESPONSE = 12
170
+ WRITE_RESPONSE = 13
171
+ CONFIRMED_SERVICE_ERROR = 14
172
+ DATA_NOTIFICATION = 15
173
+ UNCONFIRMED_WRITE_REQUEST = 22
174
+ INFORMATION_REPORT_REQUEST = 24
175
+ GLO_INITIATE_REQUEST = 33
176
+ GLO_READ_REQUEST = 37
177
+ GLO_WRITE_REQUEST = 38
178
+ GLO_INITIATE_RESPONSE = 40
179
+ GLO_READ_RESPONSE = 44
180
+ GLO_WRITE_RESPONSE = 45
181
+ GLO_CONFIRMED_SERVICE_ERROR = 46
182
+ GLO_UNCONFIRMED_WRITE_REQUEST = 54
183
+ GLO_INFORMATION_REPORT_REQUEST = 56
184
+ DED_INITIATE_REQUEST = 65
185
+ DED_READ_REQUEST = 69
186
+ DED_WRITE_REQUEST = 70
187
+ DED_INITIATE_RESPONSE = 72
188
+ DED_READ_RESPONSE = 76
189
+ DED_WRITE_RESPONSE = 77
190
+ DED_CONFIRMED_SERVICE_ERROR = 78
191
+ DED_UNCONFIRMED_WRITE_REQUEST = 86
192
+ DED_INFORMATION_REPORT_REQUEST = 88
193
+ GET_REQUEST = 192
194
+ SET_REQUEST = 193
195
+ EVENT_NOTIFICATION_REQUEST = 194
196
+ ACTION_REQUEST = 195
197
+ GET_RESPONSE = 196
198
+ SET_RESPONSE = 197
199
+ ACTION_RESPONSE = 199
200
+ GLO_GET_REQUEST = 200
201
+ GLO_SET_REQUEST = 201
202
+ GLO_EVENT_NOTIFICATION_REQUEST = 202
203
+ GLO_ACTION_REQUEST = 203
204
+ GLO_GET_RESPONSE = 204
205
+ GLO_SET_RESPONSE = 205
206
+ GLO_ACTION_RESPONSE = 207
207
+ DED_GET_REQUEST = 208
208
+ DED_SET_REQUEST = 209
209
+ DED_EVENT_NOTIFICATION_REQUEST = 210
210
+ DED_ACTION_REQUEST = 211
211
+ DED_GET_RESPONSE = 212
212
+ DED_SET_RESPONSE = 213
213
+ DED_ACTION_RESPONSE = 215
214
+ EXCEPTION_RESPONSE = 216
215
+ ACCESS_REQUEST = 217
216
+ ACCESS_RESPONSE = 218
217
+ GENERAL_GLO_CIPHERING = 219
218
+ GENERAL_DED_CIPHERING = 220
219
+ GENERAL_CIPHERING = 221
220
+ GENERAL_SIGNING = 223
221
+ GENERAL_BLOCK_TRANSFER = 224
222
+ GATEWAY_REQUEST = 230
223
+ GATEWAY_RESPONSE = 231
224
+
225
+
226
+ class Conformance(IntFlag):
227
+ """ DLMS UA 1000-1 Ed 14 5.4.5 AssociationLN xDLMS_context_info.conformance"""
228
+ NONE = 0
229
+ RESERVED_ZERO = 0b1
230
+ GENERAL_PROTECTION = 0b10
231
+ GENERAL_BLOCK_TRANSFER = 0b100
232
+ READ = 0b1000
233
+ WRITE = 0b1_0000
234
+ UN_CONFIRMED_WRITE = 0b10_0000
235
+ RESERVED_SIX = 0b100_0000
236
+ RESERVED_SEVEN = 0b1000_0000
237
+ ATTRIBUTE_0_SUPPORTED_WITH_SET = 0b1_0000_0000
238
+ PRIORITY_MGMT_SUPPORTED = 0b10_0000_0000
239
+ ATTRIBUTE_0_SUPPORTED_WITH_GET = 0b100_0000_0000
240
+ BLOCK_TRANSFER_WITH_GET_OR_READ = 0b1000_0000_0000
241
+ BLOCK_TRANSFER_WITH_SET_OR_WRITE = 0b1_0000_0000_0000
242
+ BLOCK_TRANSFER_WITH_ACTION = 0b10_0000_0000_0000
243
+ MULTIPLE_REFERENCES = 0b100_0000_0000_0000
244
+ INFORMATION_REPORT = 0b1000_0000_0000_0000
245
+ DATA_NOTIFICATION = 0b1_0000_0000_0000_0000
246
+ ACCESS = 0b10_0000_0000_0000_0000
247
+ PARAMETERIZED_ACCESS = 0b100_0000_0000_0000_0000
248
+ GET = 0b1000_0000_0000_0000_0000
249
+ SET = 0b1_0000_0000_0000_0000_0000
250
+ SELECTIVE_ACCESS = 0b10_0000_0000_0000_0000
251
+ EVENT_NOTIFICATION = 0b100_0000_0000_0000_0000
252
+ ACTION = 0b1000_0000_0000_0000_0000
253
+
254
+ @cached_property
255
+ def content(self) -> bytes:
256
+ return self.value.to_bytes(3, "big")
257
+
258
+ def __bytes__(self):
259
+ return self.content
260
+
261
+
262
+ class ActionRequest(IntEnum):
263
+ """COSEMpdu_GB83.asn Action-Request"""
264
+ NORMAL = 1
265
+ NEXT_PBLOCK = 2
266
+ WITH_LIST = 3
267
+ WITH_FIRST_PBLOCK = 4
268
+ WITH_LIST_AND_FIRST_PBLOCK = 5
269
+ WITH_PBLOCK = 6
270
+
271
+
272
+ class ReadResponse(IntEnum):
273
+ """COSEMpdu_GB83.asn ReadResponse"""
274
+ DATA = 0
275
+ DATA_ACCESS_ERROR = 1
276
+ DATA_BLOCK_RESULT = 2
277
+ BLOCK_NUMBER = 3
278
+
279
+
280
+ class ServiceError(IntEnum):
281
+ """COSEMpdu_GB83.asn ServiceError"""
282
+ APPLICATION_REFERENCE = 0
283
+ HARDWARE_RESOURCE = 1
284
+ VDE_STATE_ERROR = 2
285
+ SERVICE = 3
286
+ DEFINITION = 4
287
+ ACCESS = 5
288
+ INITIATE = 6
289
+ LOAD_DATA_SET = 7
290
+ CHANGE_SCOPE = 8
291
+ TASK = 9
292
+ OTHER = 10
293
+
294
+
295
+ class ConfirmedServiceError(IntEnum):
296
+ """COSEMpdu_GB83.asn ConfirmedServiceError"""
297
+ INITIATE_ERROR = 1
298
+ GET_STATUS = 2
299
+ GET_NAME_LIST = 3
300
+ GET_VARIABLE_ATTRIBUTE = 4
301
+ READ = 5
302
+ WRITE = 6
303
+ GET_DATA_SET_ATTRIBUTE = 7
304
+ GET_TI_ATTRIBUTE = 8
305
+ CHANGE_SCOPE = 9
306
+ START = 10
307
+ STOP = 11
308
+ RESUME = 12
309
+ MAKE_USABLE = 13
310
+ INITIATE_LOAD = 14
311
+ LOAD_SEGMENT = 15
312
+ TERMINATE_LOAD = 16
313
+ INITIATE_UP_LOAD = 17
314
+ UP_LOAD_SEGMENT = 18
315
+ TERMINATE_UP_LOAD = 19
316
+
317
+
318
+ class AARQapdu(IntEnum):
319
+ """COSEMpdu_GB83.asn AARQ-apdu"""
320
+ PROTOCOL_VERSION = 0
321
+ APPLICATION_CONTEXT_NAME = 1
322
+ CALLED_AP_TITLE = 2
323
+ CALLED_AE_QUALIFIER = 3
324
+ CALLED_AP_INVOCATION_ID = 4
325
+ CALLED_AE_INVOCATION_ID = 5
326
+ CALLING_AP_TITLE = 6
327
+ CALLING_AE_QUALIFIER = 7
328
+ CALLING_AP_INVOCATION_ID = 8
329
+ CALLING_AE_INVOCATION_ID = 9
330
+ SENDER_ACSE_REQUIREMENTS = 10
331
+ MECHANISM_NAME = 11
332
+ CALLING_AUTHENTICATION_VALUE = 12
333
+ IMPLEMENTATION_INFORMATION = 29
334
+ USER_INFORMATION = 30
335
+
336
+
337
+ class SetRequest(IntEnum):
338
+ """COSEMpdu_GB83.asn Set-Request"""
339
+ SET_REQUEST_NORMAL = 1
340
+ SET_REQUEST_FIRST_DATABLOCK = 2
341
+ SET_REQUEST_WITH_DATABLOCK = 3
342
+ SET_REQUEST_WITH_LIST = 4
343
+ SET_REQUEST_WITH_LIST_AND_WITH_FIRST_DATABLOCK = 5
344
+
345
+
346
+ class AssociationResult(IntEnum):
347
+ """COSEMpdu_GB83.asn Association-result"""
348
+ ACCEPTED = 0
349
+ REJECTED_PERMANENT = 1
350
+ REJECTED_TRANSIENT = 2
351
+
352
+
353
+ class AcseServiceUser(IntEnum):
354
+ """COSEMpdu_GB83.asn acse-service-user"""
355
+ NULL = 0
356
+ NO_REASON_GIVEN = 1
357
+ APPLICATION_CONTEXT_NAME_NOT_SUPPORTED = 2
358
+ CALLING_AP_TITLE_NOT_RECOGNIZED = 3
359
+ CALLING_AP_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 4
360
+ CALLING_AE_QUALIFIER_NOT_RECOGNIZED = 5
361
+ CALLING_AE_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 6
362
+ CALLED_AP_TITLE_NOT_RECOGNIZED = 7
363
+ CALLED_AP_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 8
364
+ CALLED_AE_QUALIFIER_NOT_RECOGNIZED = 9
365
+ CALLED_AE_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 10
366
+ AUTHENTICATION_MECHANISM_NAME_NOT_RECOGNISED = 11
367
+ AUTHENTICATION_MECHANISM_NAME_REQUIRED = 12
368
+ AUTHENTICATION_FAILURE = 13
369
+ AUTHENTICATION_REQUIRED = 14
370
+
371
+
372
+ class Unit(IntEnum):
373
+ TIME_YEAR = 1
374
+ TIME_MONTH = 2
375
+ TIME_WEEK = 3
376
+ TIME_DAY = 4
377
+ TIME_HOUR = 5
378
+ TIME_MINUTE = 6
379
+ TIME_SECOND = 7
380
+ PHASE_ANGLE_DEGREE = 8
381
+ TEMPERATURE = 9
382
+ LOCAL_CURRENCY = 10
383
+ LENGTH_METRE = 11
384
+ SPEED_METRE_PER_SECOND = 12
385
+ VOLUME_VALUE_CUBIC_METRE = 13
386
+ CORRECTED_VOLUME_CUBIC_METRE = 14
387
+ VOLUME_FLUX_CUBIC_METRE_PER_HOUR = 15
388
+ CORRECTED_VOLUME_FLUX_CUBIC_METRE_PER_HOUR = 16
389
+ VOLUME_FLUX_CUBIC_METRE_PER_DAY = 17
390
+ CORRECTED_VOLUME_FLUX_CUBIC_METRE_PER_DAY = 18
391
+ VOLUME_LITRE = 19
392
+ MASS_KILOGRAM = 20
393
+ FORCE_NEWTON = 21
394
+ ENERGY_NEWTON_METER = 22
395
+ PRESSURE_PASCAL = 23
396
+ PRESSURE_BAR = 24
397
+ ENERGY_JOULE = 25
398
+ THERMAL_POWER_RATE_OF_CHANGE_JOULE_PER_HOUR = 26
399
+ ACTIVE_POWER_WATT = 27
400
+ APPARENT_POWER_VOLT_AMPERE = 28
401
+ REACTIVE_POWER_VAR = 29
402
+ ACTIVE_ENERGY_VALUE_WATT_HOUR = 30
403
+ APPARENT_ENERGY_VALUE_VOLT_AMPERE_HOUR = 31
404
+ REACTIVE_ENERGY_VALUE_VAR_HOUR = 32
405
+ CURRENT_AMPERE = 33
406
+ ELECTRICAL_CHARGE_COULOMB = 34
407
+ VOLTAGE_VOLT = 35
408
+ ELECTRIC_FIELD_STRENGTH_VOLT_PER_METRE = 36
409
+ CAPACITANCE_FARAD = 37
410
+ RESISTANCE_OHM = 38
411
+ RESISTIVITY = 39
412
+ MAGNETIC_FLUX_WEBER = 40
413
+ MAGNETIC_FLUX_DENSITY_TESLA = 41
414
+ MAGNETIC_FIELD_STRENGTH_AMPERE_PER_METRE = 42
415
+ INDUCTANCE_HENRY = 43
416
+ FREQUENCY_HERTZ = 44
417
+ RW_ACTIVE_ENERGY_VALUE = 45
418
+ RB_REACTIVE_ENERGY_VALUE = 46
419
+ RS_APPARENT_ENERGY_VALUE = 47
420
+ VOLT_SQUARED_HOUR_VOLT_SQUARED_HOUR_METER = 48
421
+ AMPERE_SQUARED_HOUR = 49
422
+ MASS_FLUX_KILOGRAM_PER_SECOND = 50
423
+ CONDUCTANCE_SIEMENS = 51
424
+ TEMPERATURE_KELVIN = 52
425
+ RU2H_VOLT_SQUARED_HOUR_METER = 53
426
+ RI2H_AMPERE_SQUARED_HOUR_METER = 54
427
+ RV_METER = 55
428
+ PERCENTAGE = 56
429
+ AMPERE_HOURS = 57
430
+ RESERVED_58 = 58
431
+ RESERVED_59 = 59
432
+ ENERGY_PER_VOLUME = 60
433
+ CALORIFIC_VALUE_WOBBE = 61
434
+ MOLAR_FRACTION_OF_GAS_COMPOSITION_MOLE_PERCENT = 62
435
+ MASS_DENSITY_QUANTITY_OF_MATERIAL = 63
436
+ DYNAMIC_VISCOSITY_PASCAL_SECOND = 64
437
+ SPECIFIC_ENERGY_JOULE_KILOGRAM = 65
438
+ PRESSURE_GRAM_PER_SQUARE_CENTIMETER = 66
439
+ PRESSURE_ATMOSPHERE = 67
440
+ SIGNAL_STRENGTH_MILLIWATT = 70
441
+ SIGNAL_STRENGTH_MICROVOLT = 71
442
+ LOGARITHMIC_UNIT = 72
443
+ RESERVED_73 = 73
444
+ RESERVED_74 = 74
445
+ RESERVED_75 = 75
446
+ RESERVED_76 = 76
447
+ RESERVED_77 = 77
448
+ RESERVED_78 = 78
449
+ RESERVED_79 = 79
450
+ RESERVED_80 = 80
451
+ RESERVED_81 = 81
452
+ RESERVED_82 = 82
453
+ RESERVED_83 = 83
454
+ RESERVED_84 = 84
455
+ RESERVED_85 = 85
456
+ RESERVED_86 = 86
457
+ RESERVED_87 = 87
458
+ RESERVED_88 = 88
459
+ RESERVED_89 = 89
460
+ RESERVED_90 = 90
461
+ RESERVED_91 = 91
462
+ RESERVED_92 = 92
463
+ RESERVED_93 = 93
464
+ RESERVED_94 = 94
465
+ RESERVED_95 = 95
466
+ RESERVED_96 = 96
467
+ RESERVED_97 = 97
468
+ RESERVED_98 = 98
469
+ RESERVED_99 = 99
470
+ RESERVED_100 = 100
471
+ RESERVED_101 = 101
472
+ RESERVED_102 = 102
473
+ RESERVED_103 = 103
474
+ RESERVED_104 = 104
475
+ RESERVED_105 = 105
476
+ RESERVED_106 = 106
477
+ RESERVED_107 = 107
478
+ RESERVED_108 = 108
479
+ RESERVED_109 = 109
480
+ RESERVED_110 = 110
481
+ RESERVED_111 = 111
482
+ RESERVED_112 = 112
483
+ RESERVED_113 = 113
484
+ RESERVED_114 = 114
485
+ RESERVED_115 = 115
486
+ RESERVED_116 = 116
487
+ RESERVED_117 = 117
488
+ RESERVED_118 = 118
489
+ RESERVED_119 = 119
490
+ RESERVED_120 = 120
491
+ RESERVED_121 = 121
492
+ RESERVED_122 = 122
493
+ RESERVED_123 = 123
494
+ RESERVED_124 = 124
495
+ RESERVED_125 = 125
496
+ RESERVED_126 = 126
497
+ RESERVED_127 = 127
498
+ LENGTH_INCH = 128
499
+ LENGTH_FOOT = 129
500
+ MASS_POUND = 130
501
+ TEMPERATURE_FAHRENHEIT = 131
502
+ TEMPERATURE_RANKINE = 132
503
+ AREA_SQUARE_INCH = 133
504
+ AREA_SQUARE_FOOT = 134
505
+ AREA_ACRE = 135
506
+ VOLUME_CUBIC_INCH = 136
507
+ VOLUME_CUBIC_FOOT = 137
508
+ VOLUME_ACRE_FOOT = 138
509
+ VOLUME_GALLON_IMPERIAL = 139
510
+ VOLUME_GALLON_US = 140
511
+ FORCE_POUND_FORCE = 141
512
+ PRESSURE_POUND_FORCE_PER_SQUARE_INCH = 142
513
+ DENSITY_POUND_PER_CUBIC_FOOT = 143
514
+ DYNAMIC_VISCOSITY = 144
515
+ KINEMATIC_VISCOSITY_SQUARE_FOOT_PER_SECOND = 145
516
+ ENERGY_BRITISH_THERMAL_UNIT = 146
517
+ ENERGY_THERM_EU = 147
518
+ ENERGY_THERM_US = 148
519
+ CALORIFIC_VALUE_OF_MASS_LENTHALPY = 149
520
+ CALORIFIC_VALUE_OF_VOLUME_WOBBE = 150
521
+ VOLUME_METER_CUBIC_FEET_RV = 151
522
+ SPEED_FOOT_PER_SECOND = 152
523
+ VOLUME_FLUX_CUBIC_FOOT_PER_SECOND = 153
524
+ VOLUME_FLUX_CUBIC_FOOT_PER_MIN = 154
525
+ VOLUME_FLUX_CUBIC_FOOT_PER_HOUR = 155
526
+ VOLUME_FLUX_CUBIC_FOOT_PER_DAY = 156
527
+ VOLUME_FLUX_ACRE_FOOT_PER_SECOND = 157
528
+ VOLUME_FLUX_ACRE_FOOT_PER_MIN = 158
529
+ VOLUME_FLUX_ACRE_FOOT_PER_HOUR = 159
530
+ VOLUME_FLUX_ACRE_FOOT_PER_DAY = 160
531
+ VOLUME_IMPERIAL_GALLON_METER_RV = 161
532
+ VOLUME_FLUX_IMPERIAL_GALLON_PER_SECOND = 162
533
+ VOLUME_FLUX_IMPERIAL_GALLON_PER_MIN = 163
534
+ VOLUME_FLUX_IMPERIAL_GALLON_PER_HOUR = 164
535
+ VOLUME_FLUX_IMPERIAL_GALLON_PER_DAY = 165
536
+ VOLUME_US_GALLON_RV = 166
537
+ VOLUME_FLUX_US_GALLON_PER_SECOND = 167
538
+ VOLUME_FLUX_US_GALLON_PER_MIN = 168
539
+ VOLUME_FLUX_US_GALLON_PER_HOUR = 169
540
+ VOLUME_FLUX_US_GALLON_PER_DAY = 170
541
+ ENERGY_FLOW_BRITISH_THERMAL_UNIT_PER_SECOND = 171
542
+ ENERGY_FLOW_BRITISH_THERMAL_UNIT_PER_MINUTE = 172
543
+ ENERGY_FLOW_BRITISH_THERMAL_UNIT_PER_HOUR = 173
544
+ ENERGY_FLOW_BRITISH_THERMAL_UNIT_PER_DAY = 174
545
+ RESERVED_175 = 175
546
+ RESERVED_176 = 176
547
+ RESERVED_177 = 177
548
+ RESERVED_178 = 178
549
+ RESERVED_179 = 179
550
+ RESERVED_180 = 180
551
+ RESERVED_181 = 181
552
+ RESERVED_182 = 182
553
+ RESERVED_183 = 183
554
+ RESERVED_184 = 184
555
+ RESERVED_185 = 185
556
+ RESERVED_186 = 186
557
+ RESERVED_187 = 187
558
+ RESERVED_188 = 188
559
+ RESERVED_189 = 189
560
+ RESERVED_190 = 190
561
+ RESERVED_191 = 191
562
+ RESERVED_192 = 192
563
+ RESERVED_193 = 193
564
+ RESERVED_194 = 194
565
+ RESERVED_195 = 195
566
+ RESERVED_196 = 196
567
+ RESERVED_197 = 197
568
+ RESERVED_198 = 198
569
+ RESERVED_199 = 199
570
+ RESERVED_200 = 200
571
+ RESERVED_201 = 201
572
+ RESERVED_202 = 202
573
+ RESERVED_203 = 203
574
+ RESERVED_204 = 204
575
+ RESERVED_205 = 205
576
+ RESERVED_206 = 206
577
+ RESERVED_207 = 207
578
+ RESERVED_208 = 208
579
+ RESERVED_209 = 209
580
+ RESERVED_210 = 210
581
+ RESERVED_211 = 211
582
+ RESERVED_212 = 212
583
+ RESERVED_213 = 213
584
+ RESERVED_214 = 214
585
+ RESERVED_215 = 215
586
+ RESERVED_216 = 216
587
+ RESERVED_217 = 217
588
+ RESERVED_218 = 218
589
+ RESERVED_219 = 219
590
+ RESERVED_220 = 220
591
+ RESERVED_221 = 221
592
+ RESERVED_222 = 222
593
+ RESERVED_223 = 223
594
+ RESERVED_224 = 224
595
+ RESERVED_225 = 225
596
+ RESERVED_226 = 226
597
+ RESERVED_227 = 227
598
+ RESERVED_228 = 228
599
+ RESERVED_229 = 229
600
+ RESERVED_230 = 230
601
+ RESERVED_231 = 231
602
+ RESERVED_232 = 232
603
+ RESERVED_233 = 233
604
+ RESERVED_234 = 234
605
+ RESERVED_235 = 235
606
+ RESERVED_236 = 236
607
+ RESERVED_237 = 237
608
+ RESERVED_238 = 238
609
+ RESERVED_239 = 239
610
+ RESERVED_240 = 240
611
+ RESERVED_241 = 241
612
+ RESERVED_242 = 242
613
+ RESERVED_243 = 243
614
+ RESERVED_244 = 244
615
+ RESERVED_245 = 245
616
+ RESERVED_246 = 246
617
+ RESERVED_247 = 247
618
+ RESERVED_248 = 248
619
+ RESERVED_249 = 249
620
+ RESERVED_250 = 250
621
+ RESERVED_251 = 251
622
+ RESERVED_252 = 252
623
+ EXTENDED_TABLE_OF_UNITS = 253
624
+ OTHER_UNIT = 254
625
+ NO_UNIT_UNITLESS_COUNT = 255