DLMS-SPODES 0.87.16__py3-none-any.whl → 0.88.1__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.
- DLMS_SPODES/Values/EN/__init__.py +1 -1
- DLMS_SPODES/Values/EN/actors.py +8 -8
- DLMS_SPODES/Values/EN/relation_to_obis_names.py +387 -387
- DLMS_SPODES/Values/RU/__init__.py +1 -1
- DLMS_SPODES/Values/RU/actors.py +8 -8
- DLMS_SPODES/Values/RU/relation_to_obis_names.py +396 -396
- DLMS_SPODES/__init__.py +6 -6
- DLMS_SPODES/configEN.ini +126 -126
- DLMS_SPODES/config_parser.py +53 -53
- DLMS_SPODES/cosem_interface_classes/Overview/__init__.py +0 -0
- DLMS_SPODES/cosem_interface_classes/Overview/class_id.py +107 -0
- DLMS_SPODES/cosem_interface_classes/__class_init__.py +3 -3
- DLMS_SPODES/cosem_interface_classes/__init__.py +3 -2
- DLMS_SPODES/cosem_interface_classes/activity_calendar.py +210 -254
- DLMS_SPODES/cosem_interface_classes/arbitrator.py +78 -105
- DLMS_SPODES/cosem_interface_classes/association_ln/abstract.py +50 -34
- DLMS_SPODES/cosem_interface_classes/association_ln/authentication_mechanism_name.py +25 -25
- DLMS_SPODES/cosem_interface_classes/association_ln/mechanism_id.py +25 -25
- DLMS_SPODES/cosem_interface_classes/association_ln/method.py +5 -5
- DLMS_SPODES/cosem_interface_classes/association_ln/ver0.py +440 -485
- DLMS_SPODES/cosem_interface_classes/association_ln/ver1.py +126 -133
- DLMS_SPODES/cosem_interface_classes/association_ln/ver2.py +30 -36
- DLMS_SPODES/cosem_interface_classes/association_ln/ver3.py +3 -4
- DLMS_SPODES/cosem_interface_classes/association_sn/ver0.py +14 -12
- DLMS_SPODES/cosem_interface_classes/clock.py +81 -131
- DLMS_SPODES/cosem_interface_classes/collection.py +2106 -2122
- DLMS_SPODES/cosem_interface_classes/cosem_interface_class.py +525 -583
- DLMS_SPODES/cosem_interface_classes/data.py +12 -21
- DLMS_SPODES/cosem_interface_classes/demand_register/ver0.py +32 -59
- DLMS_SPODES/cosem_interface_classes/disconnect_control.py +56 -74
- DLMS_SPODES/cosem_interface_classes/extended_register.py +18 -27
- DLMS_SPODES/cosem_interface_classes/gprs_modem_setup.py +33 -43
- DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver0.py +78 -103
- DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver1.py +42 -40
- DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver2.py +6 -9
- DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver0.py +11 -11
- DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver1.py +27 -53
- DLMS_SPODES/cosem_interface_classes/iec_local_port_setup.py +9 -11
- DLMS_SPODES/cosem_interface_classes/image_transfer/image_transfer_status.py +15 -15
- DLMS_SPODES/cosem_interface_classes/image_transfer/ver0.py +54 -126
- DLMS_SPODES/cosem_interface_classes/implementations/__init__.py +3 -3
- DLMS_SPODES/cosem_interface_classes/implementations/arbitrator.py +19 -19
- DLMS_SPODES/cosem_interface_classes/implementations/data.py +491 -487
- DLMS_SPODES/cosem_interface_classes/implementations/profile_generic.py +85 -83
- DLMS_SPODES/cosem_interface_classes/ipv4_setup.py +42 -72
- DLMS_SPODES/cosem_interface_classes/limiter.py +77 -111
- DLMS_SPODES/cosem_interface_classes/ln_pattern.py +334 -333
- DLMS_SPODES/cosem_interface_classes/modem_configuration/ver0.py +51 -65
- DLMS_SPODES/cosem_interface_classes/modem_configuration/ver1.py +27 -39
- DLMS_SPODES/cosem_interface_classes/ntp_setup/ver0.py +48 -67
- DLMS_SPODES/cosem_interface_classes/obis.py +28 -23
- DLMS_SPODES/cosem_interface_classes/overview.py +198 -197
- DLMS_SPODES/cosem_interface_classes/parameter.py +548 -547
- DLMS_SPODES/cosem_interface_classes/parameters.py +172 -172
- DLMS_SPODES/cosem_interface_classes/profile_generic/ver0.py +90 -122
- DLMS_SPODES/cosem_interface_classes/profile_generic/ver1.py +268 -277
- DLMS_SPODES/cosem_interface_classes/push_setup/ver0.py +13 -12
- DLMS_SPODES/cosem_interface_classes/push_setup/ver1.py +9 -10
- DLMS_SPODES/cosem_interface_classes/push_setup/ver2.py +124 -166
- DLMS_SPODES/cosem_interface_classes/register.py +18 -45
- DLMS_SPODES/cosem_interface_classes/register_activation/ver0.py +45 -80
- DLMS_SPODES/cosem_interface_classes/register_monitor.py +33 -46
- DLMS_SPODES/cosem_interface_classes/reports.py +72 -70
- DLMS_SPODES/cosem_interface_classes/schedule.py +88 -176
- DLMS_SPODES/cosem_interface_classes/script_table.py +54 -87
- DLMS_SPODES/cosem_interface_classes/security_setup/ver0.py +45 -68
- DLMS_SPODES/cosem_interface_classes/security_setup/ver1.py +122 -158
- DLMS_SPODES/cosem_interface_classes/single_action_schedule.py +34 -50
- DLMS_SPODES/cosem_interface_classes/special_days_table.py +54 -84
- DLMS_SPODES/cosem_interface_classes/tcp_udp_setup.py +20 -42
- DLMS_SPODES/cosem_pdu.py +93 -93
- DLMS_SPODES/enums.py +625 -625
- DLMS_SPODES/exceptions.py +106 -106
- DLMS_SPODES/firmwares.py +99 -99
- DLMS_SPODES/hdlc/frame.py +875 -875
- DLMS_SPODES/hdlc/sub_layer.py +54 -54
- DLMS_SPODES/literals.py +17 -17
- DLMS_SPODES/obis/__init__.py +1 -1
- DLMS_SPODES/obis/media_id.py +931 -931
- DLMS_SPODES/pardata.py +22 -22
- DLMS_SPODES/pdu_enums.py +98 -98
- DLMS_SPODES/relation_to_OBIS.py +463 -465
- DLMS_SPODES/settings.py +551 -551
- DLMS_SPODES/types/choices.py +140 -142
- DLMS_SPODES/types/common_data_types.py +2379 -2401
- DLMS_SPODES/types/cosem_service_types.py +109 -109
- DLMS_SPODES/types/implementations/arrays.py +25 -25
- DLMS_SPODES/types/implementations/bitstrings.py +97 -97
- DLMS_SPODES/types/implementations/double_long_usingneds.py +35 -35
- DLMS_SPODES/types/implementations/enums.py +57 -57
- DLMS_SPODES/types/implementations/integers.py +12 -11
- DLMS_SPODES/types/implementations/long_unsigneds.py +127 -127
- DLMS_SPODES/types/implementations/octet_string.py +11 -11
- DLMS_SPODES/types/implementations/structs.py +64 -64
- DLMS_SPODES/types/type_alias.py +74 -0
- DLMS_SPODES/types/useful_types.py +627 -677
- {dlms_spodes-0.87.16.dist-info → dlms_spodes-0.88.1.dist-info}/METADATA +30 -30
- dlms_spodes-0.88.1.dist-info/RECORD +118 -0
- {dlms_spodes-0.87.16.dist-info → dlms_spodes-0.88.1.dist-info}/WHEEL +1 -1
- DLMS_SPODES/cosem_interface_classes/a_parameter.py +0 -20
- DLMS_SPODES/cosem_interface_classes/attr_indexes.py +0 -12
- dlms_spodes-0.87.16.dist-info/RECORD +0 -117
- {dlms_spodes-0.87.16.dist-info → dlms_spodes-0.88.1.dist-info}/top_level.txt +0 -0
DLMS_SPODES/__init__.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
from . import settings
|
|
2
|
-
from .cosem_interface_classes import collection
|
|
3
|
-
from importlib.metadata import version
|
|
4
|
-
from .pardata import ParData
|
|
5
|
-
|
|
6
|
-
__version__ = version("DLMS_SPODES")
|
|
1
|
+
from . import settings
|
|
2
|
+
from .cosem_interface_classes import collection
|
|
3
|
+
from importlib.metadata import version
|
|
4
|
+
from .pardata import ParData
|
|
5
|
+
|
|
6
|
+
__version__ = version("DLMS_SPODES")
|
DLMS_SPODES/configEN.ini
CHANGED
|
@@ -1,126 +1,126 @@
|
|
|
1
|
-
[values.common]
|
|
2
|
-
reserved = reserved
|
|
3
|
-
|
|
4
|
-
[values.prefix]
|
|
5
|
-
kilo = k
|
|
6
|
-
|
|
7
|
-
[values.enum]
|
|
8
|
-
# cdt.units
|
|
9
|
-
time_year = a
|
|
10
|
-
time_month = mo
|
|
11
|
-
time_week = wk
|
|
12
|
-
time_day = d
|
|
13
|
-
time_hour = h
|
|
14
|
-
time_minute = min
|
|
15
|
-
time_second = s
|
|
16
|
-
phase_angle_degree = °
|
|
17
|
-
temperature = °c
|
|
18
|
-
local_currency = currency
|
|
19
|
-
length_metre = m
|
|
20
|
-
speed_metre_per_second = m/s
|
|
21
|
-
volume_value_cubic_metre = m³
|
|
22
|
-
corrected_volume_cubic_metre = m³*
|
|
23
|
-
volume_flux_cubic_metre_per_hour = m³/h
|
|
24
|
-
corrected_volume_flux_cubic_metre_per_hour = m³/h*
|
|
25
|
-
volume_flux_cubic_metre_per_day = m³/d
|
|
26
|
-
corrected_volume_flux_cubic_metre_per_day = m³/d
|
|
27
|
-
volume_litre = l
|
|
28
|
-
mass_kilogram = kg
|
|
29
|
-
force_newton = n
|
|
30
|
-
energy_newton_meter = nm
|
|
31
|
-
pressure_pascal = pa
|
|
32
|
-
pressure_bar = bar
|
|
33
|
-
energy_joule = j
|
|
34
|
-
thermal_power_rate_of_change_joule_per_hour = j/h
|
|
35
|
-
active_power_watt = w
|
|
36
|
-
apparent_power_volt_ampere = va
|
|
37
|
-
reactive_power_var = var
|
|
38
|
-
active_energy_value_watt_hour = wh
|
|
39
|
-
apparent_energy_value_volt_ampere_hour = vah
|
|
40
|
-
reactive_energy_value_var_hour = varh
|
|
41
|
-
current_ampere = a
|
|
42
|
-
electrical_charge_coulomb = c
|
|
43
|
-
voltage_volt = v
|
|
44
|
-
electric_field_strength_volt_per_metre = v/m
|
|
45
|
-
capacitance_farad = f
|
|
46
|
-
resistance_ohm = ω
|
|
47
|
-
resistivity = ωm²/m
|
|
48
|
-
magnetic_flux_weber = wb
|
|
49
|
-
magnetic_flux_density_tesla = t
|
|
50
|
-
magnetic_field_strength_ampere_per_metre = a/m
|
|
51
|
-
inductance_henry = h
|
|
52
|
-
frequency_hertz = hz
|
|
53
|
-
rw_active_energy_value = 1/(wh)
|
|
54
|
-
rb_reactive_energy_value = 1/(varh)
|
|
55
|
-
rs_apparent_energy_value = 1/(vah)
|
|
56
|
-
volt_squared_hour_volt_squared_hour_meter = v²h
|
|
57
|
-
ampere_squared_hour = a²h
|
|
58
|
-
mass_flux_kilogram_per_second = kg/s
|
|
59
|
-
conductance_siemens = s, mho
|
|
60
|
-
temperature_kelvin = k
|
|
61
|
-
ru2h_volt_squared_hour_meter = 1/(v²h)
|
|
62
|
-
ri2h_ampere_squared_hour_meter = 1/(a²h)
|
|
63
|
-
rv_meter = 1/m³
|
|
64
|
-
percentage = %%
|
|
65
|
-
ampere_hours = ah
|
|
66
|
-
energy_per_volume = wh/m³
|
|
67
|
-
calorific_value_wobbe = j/m³
|
|
68
|
-
molar_fraction_of_gas_composition_mole_percent = mol %%
|
|
69
|
-
mass_density_quantity_of_material = g/m³
|
|
70
|
-
dynamic_viscosity_pascal_second = pa s
|
|
71
|
-
specific_energy_joule_kilogram = j/kg
|
|
72
|
-
pressure_gram_per_square_centimeter = g/cm²
|
|
73
|
-
pressure_atmosphere = atm
|
|
74
|
-
signal_strength_milliwatt = dbm
|
|
75
|
-
signal_strength_microvolt = dbµv
|
|
76
|
-
logarithmic_unit = db
|
|
77
|
-
length_inch = in
|
|
78
|
-
length_foot = ft
|
|
79
|
-
mass_pound = lb
|
|
80
|
-
temperature_fahrenheit = °f
|
|
81
|
-
temperature_rankine = °r
|
|
82
|
-
area_square_inch = sq. in
|
|
83
|
-
area_square_foot = sq ft
|
|
84
|
-
area_acre = ac
|
|
85
|
-
volume_cubic_inch = cu in
|
|
86
|
-
volume_cubic_foot = cu ft
|
|
87
|
-
volume_acre_foot = ac ft
|
|
88
|
-
volume_gallon_imperial = gal(imp)
|
|
89
|
-
volume_gallon_us = gal(us)
|
|
90
|
-
force_pound_force = lbf
|
|
91
|
-
pressure_pound_force_per_square_inch = psi
|
|
92
|
-
density_pound_per_cubic_foot = lb/cu ft
|
|
93
|
-
dynamic_viscosity = lb/(ft .s)
|
|
94
|
-
kinematic_viscosity_square_foot_per_second = sq ft/s
|
|
95
|
-
energy_british_thermal_unit = btu
|
|
96
|
-
energy_therm_eu = thm(ec)
|
|
97
|
-
energy_therm_us = thm(us)
|
|
98
|
-
calorific_value_of_mass_lenthalpy = btu/lb
|
|
99
|
-
calorific_value_of_volume_wobbe = btu/cu ft
|
|
100
|
-
volume_meter_cubic_feet_rv = cu ft rv
|
|
101
|
-
speed_foot_per_second = ft/s
|
|
102
|
-
volume_flux_cubic_foot_per_second = cu ft/s
|
|
103
|
-
volume_flux_cubic_foot_per_min = cu ft/min
|
|
104
|
-
volume_flux_cubic_foot_per_hour = cu ft/h
|
|
105
|
-
volume_flux_cubic_foot_per_day = cu ft/d
|
|
106
|
-
volume_flux_acre_foot_per_second = ac ft/s
|
|
107
|
-
volume_flux_acre_foot_per_min = ac ft/min
|
|
108
|
-
volume_flux_acre_foot_per_hour = ac ft/h
|
|
109
|
-
volume_flux_acre_foot_per_day = ac ft/d
|
|
110
|
-
volume_imperial_gallon_meter_rv = gal(imp) rv
|
|
111
|
-
volume_flux_imperial_gallon_per_second = gal(imp)/s
|
|
112
|
-
volume_flux_imperial_gallon_per_min = gal(imp)/min
|
|
113
|
-
volume_flux_imperial_gallon_per_hour = gal(imp)/h
|
|
114
|
-
volume_flux_imperial_gallon_per_day = gal(imp)/d
|
|
115
|
-
volume_us_gallon_rv = gal(us) rv
|
|
116
|
-
volume_flux_us_gallon_per_second = gal(us)/s
|
|
117
|
-
volume_flux_us_gallon_per_min = gal(us)/min
|
|
118
|
-
volume_flux_us_gallon_per_hour = gal(us)/h
|
|
119
|
-
volume_flux_us_gallon_per_day = gal(us)/d
|
|
120
|
-
energy_flow_british_thermal_unit_per_second = btu/s
|
|
121
|
-
energy_flow_british_thermal_unit_per_minute = btu/min
|
|
122
|
-
energy_flow_british_thermal_unit_per_hour = btu/h
|
|
123
|
-
energy_flow_british_thermal_unit_per_day = btu/d
|
|
124
|
-
extended_table_of_units = extended
|
|
125
|
-
other_unit = other
|
|
126
|
-
no_unit_unitless_count = count
|
|
1
|
+
[values.common]
|
|
2
|
+
reserved = reserved
|
|
3
|
+
|
|
4
|
+
[values.prefix]
|
|
5
|
+
kilo = k
|
|
6
|
+
|
|
7
|
+
[values.enum]
|
|
8
|
+
# cdt.units
|
|
9
|
+
time_year = a
|
|
10
|
+
time_month = mo
|
|
11
|
+
time_week = wk
|
|
12
|
+
time_day = d
|
|
13
|
+
time_hour = h
|
|
14
|
+
time_minute = min
|
|
15
|
+
time_second = s
|
|
16
|
+
phase_angle_degree = °
|
|
17
|
+
temperature = °c
|
|
18
|
+
local_currency = currency
|
|
19
|
+
length_metre = m
|
|
20
|
+
speed_metre_per_second = m/s
|
|
21
|
+
volume_value_cubic_metre = m³
|
|
22
|
+
corrected_volume_cubic_metre = m³*
|
|
23
|
+
volume_flux_cubic_metre_per_hour = m³/h
|
|
24
|
+
corrected_volume_flux_cubic_metre_per_hour = m³/h*
|
|
25
|
+
volume_flux_cubic_metre_per_day = m³/d
|
|
26
|
+
corrected_volume_flux_cubic_metre_per_day = m³/d
|
|
27
|
+
volume_litre = l
|
|
28
|
+
mass_kilogram = kg
|
|
29
|
+
force_newton = n
|
|
30
|
+
energy_newton_meter = nm
|
|
31
|
+
pressure_pascal = pa
|
|
32
|
+
pressure_bar = bar
|
|
33
|
+
energy_joule = j
|
|
34
|
+
thermal_power_rate_of_change_joule_per_hour = j/h
|
|
35
|
+
active_power_watt = w
|
|
36
|
+
apparent_power_volt_ampere = va
|
|
37
|
+
reactive_power_var = var
|
|
38
|
+
active_energy_value_watt_hour = wh
|
|
39
|
+
apparent_energy_value_volt_ampere_hour = vah
|
|
40
|
+
reactive_energy_value_var_hour = varh
|
|
41
|
+
current_ampere = a
|
|
42
|
+
electrical_charge_coulomb = c
|
|
43
|
+
voltage_volt = v
|
|
44
|
+
electric_field_strength_volt_per_metre = v/m
|
|
45
|
+
capacitance_farad = f
|
|
46
|
+
resistance_ohm = ω
|
|
47
|
+
resistivity = ωm²/m
|
|
48
|
+
magnetic_flux_weber = wb
|
|
49
|
+
magnetic_flux_density_tesla = t
|
|
50
|
+
magnetic_field_strength_ampere_per_metre = a/m
|
|
51
|
+
inductance_henry = h
|
|
52
|
+
frequency_hertz = hz
|
|
53
|
+
rw_active_energy_value = 1/(wh)
|
|
54
|
+
rb_reactive_energy_value = 1/(varh)
|
|
55
|
+
rs_apparent_energy_value = 1/(vah)
|
|
56
|
+
volt_squared_hour_volt_squared_hour_meter = v²h
|
|
57
|
+
ampere_squared_hour = a²h
|
|
58
|
+
mass_flux_kilogram_per_second = kg/s
|
|
59
|
+
conductance_siemens = s, mho
|
|
60
|
+
temperature_kelvin = k
|
|
61
|
+
ru2h_volt_squared_hour_meter = 1/(v²h)
|
|
62
|
+
ri2h_ampere_squared_hour_meter = 1/(a²h)
|
|
63
|
+
rv_meter = 1/m³
|
|
64
|
+
percentage = %%
|
|
65
|
+
ampere_hours = ah
|
|
66
|
+
energy_per_volume = wh/m³
|
|
67
|
+
calorific_value_wobbe = j/m³
|
|
68
|
+
molar_fraction_of_gas_composition_mole_percent = mol %%
|
|
69
|
+
mass_density_quantity_of_material = g/m³
|
|
70
|
+
dynamic_viscosity_pascal_second = pa s
|
|
71
|
+
specific_energy_joule_kilogram = j/kg
|
|
72
|
+
pressure_gram_per_square_centimeter = g/cm²
|
|
73
|
+
pressure_atmosphere = atm
|
|
74
|
+
signal_strength_milliwatt = dbm
|
|
75
|
+
signal_strength_microvolt = dbµv
|
|
76
|
+
logarithmic_unit = db
|
|
77
|
+
length_inch = in
|
|
78
|
+
length_foot = ft
|
|
79
|
+
mass_pound = lb
|
|
80
|
+
temperature_fahrenheit = °f
|
|
81
|
+
temperature_rankine = °r
|
|
82
|
+
area_square_inch = sq. in
|
|
83
|
+
area_square_foot = sq ft
|
|
84
|
+
area_acre = ac
|
|
85
|
+
volume_cubic_inch = cu in
|
|
86
|
+
volume_cubic_foot = cu ft
|
|
87
|
+
volume_acre_foot = ac ft
|
|
88
|
+
volume_gallon_imperial = gal(imp)
|
|
89
|
+
volume_gallon_us = gal(us)
|
|
90
|
+
force_pound_force = lbf
|
|
91
|
+
pressure_pound_force_per_square_inch = psi
|
|
92
|
+
density_pound_per_cubic_foot = lb/cu ft
|
|
93
|
+
dynamic_viscosity = lb/(ft .s)
|
|
94
|
+
kinematic_viscosity_square_foot_per_second = sq ft/s
|
|
95
|
+
energy_british_thermal_unit = btu
|
|
96
|
+
energy_therm_eu = thm(ec)
|
|
97
|
+
energy_therm_us = thm(us)
|
|
98
|
+
calorific_value_of_mass_lenthalpy = btu/lb
|
|
99
|
+
calorific_value_of_volume_wobbe = btu/cu ft
|
|
100
|
+
volume_meter_cubic_feet_rv = cu ft rv
|
|
101
|
+
speed_foot_per_second = ft/s
|
|
102
|
+
volume_flux_cubic_foot_per_second = cu ft/s
|
|
103
|
+
volume_flux_cubic_foot_per_min = cu ft/min
|
|
104
|
+
volume_flux_cubic_foot_per_hour = cu ft/h
|
|
105
|
+
volume_flux_cubic_foot_per_day = cu ft/d
|
|
106
|
+
volume_flux_acre_foot_per_second = ac ft/s
|
|
107
|
+
volume_flux_acre_foot_per_min = ac ft/min
|
|
108
|
+
volume_flux_acre_foot_per_hour = ac ft/h
|
|
109
|
+
volume_flux_acre_foot_per_day = ac ft/d
|
|
110
|
+
volume_imperial_gallon_meter_rv = gal(imp) rv
|
|
111
|
+
volume_flux_imperial_gallon_per_second = gal(imp)/s
|
|
112
|
+
volume_flux_imperial_gallon_per_min = gal(imp)/min
|
|
113
|
+
volume_flux_imperial_gallon_per_hour = gal(imp)/h
|
|
114
|
+
volume_flux_imperial_gallon_per_day = gal(imp)/d
|
|
115
|
+
volume_us_gallon_rv = gal(us) rv
|
|
116
|
+
volume_flux_us_gallon_per_second = gal(us)/s
|
|
117
|
+
volume_flux_us_gallon_per_min = gal(us)/min
|
|
118
|
+
volume_flux_us_gallon_per_hour = gal(us)/h
|
|
119
|
+
volume_flux_us_gallon_per_day = gal(us)/d
|
|
120
|
+
energy_flow_british_thermal_unit_per_second = btu/s
|
|
121
|
+
energy_flow_british_thermal_unit_per_minute = btu/min
|
|
122
|
+
energy_flow_british_thermal_unit_per_hour = btu/h
|
|
123
|
+
energy_flow_british_thermal_unit_per_day = btu/d
|
|
124
|
+
extended_table_of_units = extended
|
|
125
|
+
other_unit = other
|
|
126
|
+
no_unit_unitless_count = count
|
DLMS_SPODES/config_parser.py
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import tomllib
|
|
3
|
-
from typing_extensions import deprecated
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
print("Path: ", os.getcwd())
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@deprecated("use settings.settings")
|
|
10
|
-
def get_values(*args: str) -> dict | None:
|
|
11
|
-
args = list(args)
|
|
12
|
-
par = config
|
|
13
|
-
while args:
|
|
14
|
-
key = args.pop(0)
|
|
15
|
-
try:
|
|
16
|
-
par = par[key]
|
|
17
|
-
continue
|
|
18
|
-
except KeyError as e:
|
|
19
|
-
print(f"error: {e.args[0]}")
|
|
20
|
-
return None
|
|
21
|
-
return par
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if not os.path.isfile(path := ".//config.toml"):
|
|
25
|
-
path = F"{os.path.dirname(__file__)}{path}"
|
|
26
|
-
elif not os.path.isfile(path):
|
|
27
|
-
print("NOT FIND CONFIGURATION: <config.toml>")
|
|
28
|
-
with open(path, "rb") as f:
|
|
29
|
-
config = tomllib.load(f)
|
|
30
|
-
print(F"Find configuration <config.toml> with path: {f}")
|
|
31
|
-
|
|
32
|
-
_messages = get_values("DLMS", "messages")
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
def get_message(value: str) -> str:
|
|
36
|
-
"""translate %... from config.toml"""
|
|
37
|
-
value: bytearray = bytearray(value, "utf-8")
|
|
38
|
-
ret: bytearray = bytearray()
|
|
39
|
-
while value:
|
|
40
|
-
if value.startswith(b"$$"):
|
|
41
|
-
value.pop(0)
|
|
42
|
-
ret.append(value.pop(0))
|
|
43
|
-
elif value.startswith(b"$"):
|
|
44
|
-
key, sep, value = value[1:].partition(b"$")
|
|
45
|
-
if key:
|
|
46
|
-
if _messages and (translate := _messages.get(key.decode("utf-8"))):
|
|
47
|
-
val = bytes(translate, "utf-8")
|
|
48
|
-
else:
|
|
49
|
-
val = key
|
|
50
|
-
ret.extend(val)
|
|
51
|
-
else:
|
|
52
|
-
ret.append(value.pop(0))
|
|
53
|
-
return ret.decode("utf-8", errors="strict")
|
|
1
|
+
import os
|
|
2
|
+
import tomllib
|
|
3
|
+
from typing_extensions import deprecated
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
print("Path: ", os.getcwd())
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@deprecated("use settings.settings")
|
|
10
|
+
def get_values(*args: str) -> dict | None:
|
|
11
|
+
args = list(args)
|
|
12
|
+
par = config
|
|
13
|
+
while args:
|
|
14
|
+
key = args.pop(0)
|
|
15
|
+
try:
|
|
16
|
+
par = par[key]
|
|
17
|
+
continue
|
|
18
|
+
except KeyError as e:
|
|
19
|
+
print(f"error: {e.args[0]}")
|
|
20
|
+
return None
|
|
21
|
+
return par
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
if not os.path.isfile(path := ".//config.toml"):
|
|
25
|
+
path = F"{os.path.dirname(__file__)}{path}"
|
|
26
|
+
elif not os.path.isfile(path):
|
|
27
|
+
print("NOT FIND CONFIGURATION: <config.toml>")
|
|
28
|
+
with open(path, "rb") as f:
|
|
29
|
+
config = tomllib.load(f)
|
|
30
|
+
print(F"Find configuration <config.toml> with path: {f}")
|
|
31
|
+
|
|
32
|
+
_messages = get_values("DLMS", "messages")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def get_message(value: str) -> str:
|
|
36
|
+
"""translate %... from config.toml"""
|
|
37
|
+
value: bytearray = bytearray(value, "utf-8")
|
|
38
|
+
ret: bytearray = bytearray()
|
|
39
|
+
while value:
|
|
40
|
+
if value.startswith(b"$$"):
|
|
41
|
+
value.pop(0)
|
|
42
|
+
ret.append(value.pop(0))
|
|
43
|
+
elif value.startswith(b"$"):
|
|
44
|
+
key, sep, value = value[1:].partition(b"$")
|
|
45
|
+
if key:
|
|
46
|
+
if _messages and (translate := _messages.get(key.decode("utf-8"))):
|
|
47
|
+
val = bytes(translate, "utf-8")
|
|
48
|
+
else:
|
|
49
|
+
val = key
|
|
50
|
+
ret.extend(val)
|
|
51
|
+
else:
|
|
52
|
+
ret.append(value.pop(0))
|
|
53
|
+
return ret.decode("utf-8", errors="strict")
|
|
File without changes
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
from ...types import ut
|
|
2
|
+
from typing import Final
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
DATA: Final[ut.CosemClassId] = ut.CosemClassId(1)
|
|
6
|
+
REGISTER: Final[ut.CosemClassId] = ut.CosemClassId(3)
|
|
7
|
+
EXT_REGISTER: Final[ut.CosemClassId] = ut.CosemClassId(4)
|
|
8
|
+
DEMAND_REGISTER: Final[ut.CosemClassId] = ut.CosemClassId(5)
|
|
9
|
+
REGISTER_ACTIVATION: Final[ut.CosemClassId] = ut.CosemClassId(6)
|
|
10
|
+
PROFILE_GENERIC: Final[ut.CosemClassId] = ut.CosemClassId(7)
|
|
11
|
+
CLOCK: Final[ut.CosemClassId] = ut.CosemClassId(8)
|
|
12
|
+
SCRIPT_TABLE: Final[ut.CosemClassId] = ut.CosemClassId(9)
|
|
13
|
+
SCHEDULE: Final[ut.CosemClassId] = ut.CosemClassId(10)
|
|
14
|
+
SPECIAL_DAYS_TABLE: Final[ut.CosemClassId] = ut.CosemClassId(11)
|
|
15
|
+
ASSOCIATION_SN: Final[ut.CosemClassId] = ut.CosemClassId(12)
|
|
16
|
+
ASSOCIATION_LN: Final[ut.CosemClassId] = ut.CosemClassId(15)
|
|
17
|
+
SAP_ASSIGNMENT: Final[ut.CosemClassId] = ut.CosemClassId(17)
|
|
18
|
+
IMAGE_TRANSFER: Final[ut.CosemClassId] = ut.CosemClassId(18)
|
|
19
|
+
IEC_LOCAL_PORT_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(19)
|
|
20
|
+
ACTIVITY_CALENDAR: Final[ut.CosemClassId] = ut.CosemClassId(20)
|
|
21
|
+
REGISTER_MONITOR: Final[ut.CosemClassId] = ut.CosemClassId(21)
|
|
22
|
+
SINGLE_ACTION_SCHEDULE: Final[ut.CosemClassId] = ut.CosemClassId(22)
|
|
23
|
+
IEC_HDLC_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(23)
|
|
24
|
+
IEC_TWISTED_PAIR_1_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(24)
|
|
25
|
+
M_BUS_SLAVE_PORT_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(25)
|
|
26
|
+
UTILITY_TABLES: Final[ut.CosemClassId] = ut.CosemClassId(26)
|
|
27
|
+
MODEM_CONFIGURATION: Final[ut.CosemClassId] = ut.CosemClassId(27)
|
|
28
|
+
PSTN_MODEM_CONFIGURATION: Final[ut.CosemClassId] = ut.CosemClassId(27)
|
|
29
|
+
AUTO_ANSWER: Final[ut.CosemClassId] = ut.CosemClassId(28)
|
|
30
|
+
AUTO_CONNECT: Final[ut.CosemClassId] = ut.CosemClassId(29)
|
|
31
|
+
PSTN_AUTO_DIAL: Final[ut.CosemClassId] = ut.CosemClassId(29)
|
|
32
|
+
COSEM_DATA_PROTECTION: Final[ut.CosemClassId] = ut.CosemClassId(30)
|
|
33
|
+
PUSH_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(40)
|
|
34
|
+
TCP_UDP_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(41)
|
|
35
|
+
IPV4_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(42)
|
|
36
|
+
PRIME_NB_OFDM_PLC_MAC_ADDRESS_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(43)
|
|
37
|
+
PPP_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(44)
|
|
38
|
+
GPRS_MODEM_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(45)
|
|
39
|
+
SMTP_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(46)
|
|
40
|
+
GSM_DIAGNOSTIC: Final[ut.CosemClassId] = ut.CosemClassId(47)
|
|
41
|
+
IPV6_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(48)
|
|
42
|
+
S_FSK_PHY_MAC_SET_UP: Final[ut.CosemClassId] = ut.CosemClassId(50)
|
|
43
|
+
S_FSK_ACTIVE_INITIATOR: Final[ut.CosemClassId] = ut.CosemClassId(51)
|
|
44
|
+
S_FSK_MAC_SYNCHRONIZATION_TIMEOUTS: Final[ut.CosemClassId] = ut.CosemClassId(52)
|
|
45
|
+
S_FSK_MAC_COUNTERS: Final[ut.CosemClassId] = ut.CosemClassId(53)
|
|
46
|
+
IEC_61334_4_32_LLC_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(55)
|
|
47
|
+
S_FSK_REPORTING_SYSTEM_LIST: Final[ut.CosemClassId] = ut.CosemClassId(56)
|
|
48
|
+
ISO_IEC_8802_2_LLC_TYPE_1_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(57)
|
|
49
|
+
ISO_IEC_8802_2_LLC_TYPE_2_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(58)
|
|
50
|
+
ISO_IEC_8802_2_LLC_TYPE_3_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(59)
|
|
51
|
+
REGISTER_TABLE: Final[ut.CosemClassId] = ut.CosemClassId(61)
|
|
52
|
+
COMPACT_DATA: Final[ut.CosemClassId] = ut.CosemClassId(62)
|
|
53
|
+
STATUS_MAPPING: Final[ut.CosemClassId] = ut.CosemClassId(63)
|
|
54
|
+
SECURITY_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(64)
|
|
55
|
+
PARAMETER_MONITOR: Final[ut.CosemClassId] = ut.CosemClassId(65)
|
|
56
|
+
SENSOR_MANAGER_INTERFACE_CLASS: Final[ut.CosemClassId] = ut.CosemClassId(67)
|
|
57
|
+
ARBITRATOR: Final[ut.CosemClassId] = ut.CosemClassId(68)
|
|
58
|
+
DISCONNECT_CONTROL: Final[ut.CosemClassId] = ut.CosemClassId(70)
|
|
59
|
+
LIMITER: Final[ut.CosemClassId] = ut.CosemClassId(71)
|
|
60
|
+
M_BUS_CLIENT: Final[ut.CosemClassId] = ut.CosemClassId(72)
|
|
61
|
+
WIRELESS_MODE_Q_CHANNEL: Final[ut.CosemClassId] = ut.CosemClassId(73)
|
|
62
|
+
M_BUS_MASTER_PORT_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(74)
|
|
63
|
+
DLMS_COSEM_SERVER_M_BUS_PORT_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(76)
|
|
64
|
+
M_BUS_DIAGNOSTIC: Final[ut.CosemClassId] = ut.CosemClassId(77)
|
|
65
|
+
_61334_4_32_LLC_SSCS_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(80)
|
|
66
|
+
PRIME_NB_OFDM_PLC_PHYSICAL_LAYER_COUNTERS: Final[ut.CosemClassId] = ut.CosemClassId(81)
|
|
67
|
+
PRIME_NB_OFDM_PLC_MAC_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(82)
|
|
68
|
+
PRIME_NB_OFDM_PLC_MAC_FUNCTIONAL_PARAMETERS: Final[ut.CosemClassId] = ut.CosemClassId(83)
|
|
69
|
+
PRIME_NB_OFDM_PLC_MAC_COUNTERS: Final[ut.CosemClassId] = ut.CosemClassId(84)
|
|
70
|
+
PRIME_NB_OFDM_PLC_MAC_NETWORK_ADMINISTRATION_DATA: Final[ut.CosemClassId] = ut.CosemClassId(85)
|
|
71
|
+
PRIME_NB_OFDM_PLC_APPLICATION_IDENTIFICATION: Final[ut.CosemClassId] = ut.CosemClassId(86)
|
|
72
|
+
G3_PLC_MAC_LAYER_COUNTERS: Final[ut.CosemClassId] = ut.CosemClassId(90)
|
|
73
|
+
G3_NB_OFDM_PLC_MAC_LAYER_COUNTERS: Final[ut.CosemClassId] = ut.CosemClassId(90)
|
|
74
|
+
G3_PLC_MAC_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(91)
|
|
75
|
+
G3_NB_OFDM_PLC_MAC_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(91)
|
|
76
|
+
G3_PLC_MAC_6LOWPAN_ADAPTATION_LAYER_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(92)
|
|
77
|
+
G3_NB_OFDM_PLC_6LOWPAN_ADAPTATION_LAYER_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(92)
|
|
78
|
+
WI_SUN_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(95)
|
|
79
|
+
WI_SUN_DIAGNOSTIC: Final[ut.CosemClassId] = ut.CosemClassId(96)
|
|
80
|
+
RPL_DIAGNOSTIC: Final[ut.CosemClassId] = ut.CosemClassId(97)
|
|
81
|
+
MPL_DIAGNOSTIC: Final[ut.CosemClassId] = ut.CosemClassId(98)
|
|
82
|
+
NTP_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(100)
|
|
83
|
+
ZIGBEE_SAS_STARTUP: Final[ut.CosemClassId] = ut.CosemClassId(101)
|
|
84
|
+
ZIGBEE_SAS_JOIN: Final[ut.CosemClassId] = ut.CosemClassId(102)
|
|
85
|
+
ZIGBEE_SAS_APS_FRAGMENTATION: Final[ut.CosemClassId] = ut.CosemClassId(103)
|
|
86
|
+
ZIGBEE_NETWORK_CONTROL: Final[ut.CosemClassId] = ut.CosemClassId(104)
|
|
87
|
+
ZIGBEE_TUNNEL_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(105)
|
|
88
|
+
ACCOUNT: Final[ut.CosemClassId] = ut.CosemClassId(111)
|
|
89
|
+
CREDIT_INTERFACE_CLASS: Final[ut.CosemClassId] = ut.CosemClassId(112)
|
|
90
|
+
CHARGE: Final[ut.CosemClassId] = ut.CosemClassId(113)
|
|
91
|
+
TOKEN_GATEWAY: Final[ut.CosemClassId] = ut.CosemClassId(115)
|
|
92
|
+
FUNCTION_CONTROL: Final[ut.CosemClassId] = ut.CosemClassId(122)
|
|
93
|
+
ARRAY_MANAGER: Final[ut.CosemClassId] = ut.CosemClassId(123)
|
|
94
|
+
COMMUNICATION_PORT_PROTECTION: Final[ut.CosemClassId] = ut.CosemClassId(124)
|
|
95
|
+
SCHC_LPWAN_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(126)
|
|
96
|
+
SCHC_LPWAN_DIAGNOSTIC: Final[ut.CosemClassId] = ut.CosemClassId(127)
|
|
97
|
+
LoRaWAN_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(128)
|
|
98
|
+
LoRaWAN_DIAGNOSTIC: Final[ut.CosemClassId] = ut.CosemClassId(129)
|
|
99
|
+
ISO_IEC14908_IDENTIFICATION: Final[ut.CosemClassId] = ut.CosemClassId(130)
|
|
100
|
+
ISO_IEC14908_PROTOCOL_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(131)
|
|
101
|
+
ISO_IEC14908_PROTOCOL_STATUS: Final[ut.CosemClassId] = ut.CosemClassId(132)
|
|
102
|
+
ISO_IEC14908_PROTOCOL_DIAGNOSTIC: Final[ut.CosemClassId] = ut.CosemClassId(133)
|
|
103
|
+
HS_PLC_ISO_IEC_12139_1_MAC_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(140)
|
|
104
|
+
HS_PLC_ISO_IEC_12139_1_CPAS_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(141)
|
|
105
|
+
HS_PLC_ISO_IEC_12139_1_IP_SSAS_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(142)
|
|
106
|
+
HS_PLC_ISO_IEC_12139_1_HDLC_SSAS_SETUP: Final[ut.CosemClassId] = ut.CosemClassId(143)
|
|
107
|
+
LTE_MONITORING: Final[ut.CosemClassId] = ut.CosemClassId(151)
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
from ..cosem_interface_classes import cosem_interface_class as ic
|
|
2
|
-
from ..cosem_interface_classes.overview import ClassID
|
|
3
|
-
from ..types import common_data_types as cdt, cosem_service_types as cst, useful_types as ut
|
|
1
|
+
from ..cosem_interface_classes import cosem_interface_class as ic
|
|
2
|
+
from ..cosem_interface_classes.overview import ClassID
|
|
3
|
+
from ..types import common_data_types as cdt, cosem_service_types as cst, useful_types as ut
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
from . import collection, implementations as ic_impl, cosem_interface_class as ic
|
|
2
|
-
from .parameter import Parameter
|
|
1
|
+
from . import collection, implementations as ic_impl, cosem_interface_class as ic
|
|
2
|
+
from .parameter import Parameter
|
|
3
|
+
from .Overview import class_id
|