From a4ec55b5ec92ccb7207b782c1b571df432e17e14 Mon Sep 17 00:00:00 2001 From: root <root@BALAZS-ASUS.localdomain> Date: Sun, 30 Jul 2023 12:33:41 +0200 Subject: [PATCH] backwards compatibility changes --- dsmr_parser/obis_name_mapping.py | 48 +++---- dsmr_parser/objects.py | 11 +- dsmr_parser/parsers.py | 2 +- test/test_parse_v5_eon_hungary.py | 230 +++++++++++++++--------------- 4 files changed, 148 insertions(+), 143 deletions(-) diff --git a/dsmr_parser/obis_name_mapping.py b/dsmr_parser/obis_name_mapping.py index f8a94e1..02984f7 100644 --- a/dsmr_parser/obis_name_mapping.py +++ b/dsmr_parser/obis_name_mapping.py @@ -93,30 +93,30 @@ EN = { 'Q3D_EQUIPMENT_STATE': 'Q3D_EQUIPMENT_STATE', 'Q3D_EQUIPMENT_SERIALNUMBER': 'Q3D_EQUIPMENT_SERIALNUMBER', 'BELGIUM_MBUS2_DEVICE_TYPE': 'BELGIUM_MBUS2_DEVICE_TYPE', - 'EON_HU_COSEM_LOGICAL_DEVICE_NAME': 'COSEM_LOGICAL_DEVICE_NAME', - 'EON_HU_EQUIPMENT_SERIAL_NUMBER': 'EQUIPMENT_SERIAL_NUMBER', - 'EON_HU_ELECTRICITY_DELIVERED_TARIFF_3': 'ELECTRICITY_DELIVERED_TARIFF_3', - 'EON_HU_ELECTRICITY_DELIVERED_TARIFF_4': 'ELECTRICITY_DELIVERED_TARIFF_4', - 'EON_HU_ELECTRICITY_USED_TARIFF_3': 'ELECTRICITY_USED_TARIFF_3', - 'EON_HU_ELECTRICITY_USED_TARIFF_4': 'ELECTRICITY_USED_TARIFF_4', - 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1': 'ELECTRICITY_REACTIVE_TOTAL_Q1', - 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2': 'ELECTRICITY_REACTIVE_TOTAL_Q2', - 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3': 'ELECTRICITY_REACTIVE_TOTAL_Q3', - 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4': 'ELECTRICITY_REACTIVE_TOTAL_Q4', - 'EON_HU_ELECTRICITY_COMBINED': 'ELECTRICITY_COMBINED', - 'EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL': 'INSTANTANEOUS_POWER_FACTOR_TOTAL', - 'EON_HU_INSTANTANEOUS_POWER_FACTOR_L1': 'INSTANTANEOUS_POWER_FACTOR_L1', - 'EON_HU_INSTANTANEOUS_POWER_FACTOR_L2': 'INSTANTANEOUS_POWER_FACTOR_L2', - 'EON_HU_INSTANTANEOUS_POWER_FACTOR_L3': 'INSTANTANEOUS_POWER_FACTOR_L3', - 'EON_HU_FREQUENCY': 'FREQUENCY', - 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1': 'INSTANTANEOUS_REACTIVE_POWER_Q1', - 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2': 'INSTANTANEOUS_REACTIVE_POWER_Q2', - 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3': 'INSTANTANEOUS_REACTIVE_POWER_Q3', - 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4': 'INSTANTANEOUS_REACTIVE_POWER_Q4', - 'EON_HU_MAX_POWER_ON_L1': 'MAX_POWER_ON_L1', - 'EON_HU_MAX_POWER_ON_L2': 'MAX_POWER_ON_L2', - 'EON_HU_MAX_POWER_ON_L3': 'MAX_POWER_ON_L3', - 'EON_HU_LAST_MONTH_DATA': 'LAST_MONTH_DATA' + 'EON_HU_COSEM_LOGICAL_DEVICE_NAME': 'EON_HU_COSEM_LOGICAL_DEVICE_NAME', + 'EON_HU_EQUIPMENT_SERIAL_NUMBER': 'EON_HU_EQUIPMENT_SERIAL_NUMBER', + 'EON_HU_ELECTRICITY_DELIVERED_TARIFF_3': 'EON_HU_ELECTRICITY_DELIVERED_TARIFF_3', + 'EON_HU_ELECTRICITY_DELIVERED_TARIFF_4': 'EON_HU_ELECTRICITY_DELIVERED_TARIFF_4', + 'EON_HU_ELECTRICITY_USED_TARIFF_3': 'EON_HU_ELECTRICITY_USED_TARIFF_3', + 'EON_HU_ELECTRICITY_USED_TARIFF_4': 'EON_HU_ELECTRICITY_USED_TARIFF_4', + 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1': 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1', + 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2': 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2', + 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3': 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3', + 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4': 'EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4', + 'EON_HU_ELECTRICITY_COMBINED': 'EON_HU_ELECTRICITY_COMBINED', + 'EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL': 'EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL', + 'EON_HU_INSTANTANEOUS_POWER_FACTOR_L1': 'EON_HU_INSTANTANEOUS_POWER_FACTOR_L1', + 'EON_HU_INSTANTANEOUS_POWER_FACTOR_L2': 'EON_HU_INSTANTANEOUS_POWER_FACTOR_L2', + 'EON_HU_INSTANTANEOUS_POWER_FACTOR_L3': 'EON_HU_INSTANTANEOUS_POWER_FACTOR_L3', + 'EON_HU_FREQUENCY': 'EON_HU_FREQUENCY', + 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1': 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1', + 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2': 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2', + 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3': 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3', + 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4': 'EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4', + 'EON_HU_MAX_POWER_ON_L1': 'EON_HU_MAX_POWER_ON_L1', + 'EON_HU_MAX_POWER_ON_L2': 'EON_HU_MAX_POWER_ON_L2', + 'EON_HU_MAX_POWER_ON_L3': 'EON_HU_MAX_POWER_ON_L3', + 'EON_HU_LAST_MONTH_DATA': 'EON_HU_LAST_MONTH_DATA' } REVERSE_EN = dict([(v, k) for k, v in EN.items()]) diff --git a/dsmr_parser/objects.py b/dsmr_parser/objects.py index 583c7f7..5655d34 100644 --- a/dsmr_parser/objects.py +++ b/dsmr_parser/objects.py @@ -2,6 +2,7 @@ from decimal import Decimal import datetime import json +import sys; import pytz @@ -27,9 +28,13 @@ class Telegram(dict): self._mbus_devices = [] super().__init__(*args, **kwargs) - def add(self, obis_reference, dsmr_object): - # Update name mapping used to get value by attribute. Example: telegram.P1_MESSAGE_HEADER - obis_name = obis_name_mapping.EN[obis_reference] + def add(self, obis_reference, dsmr_object, obis_name=None): + # Update name mapping used to get value by attribute. Example: telegram.P1_MESSAGE_HEADER. + # For backwards compatibility + if obis_name is not None: + obis_name = obis_name_mapping.EN[obis_name] + else: + obis_name = obis_reference setattr(self, obis_name, dsmr_object) if obis_name not in self._item_names: # TODO repeating obis references self._item_names.append(obis_name) diff --git a/dsmr_parser/parsers.py b/dsmr_parser/parsers.py index ed7dd30..feca8cb 100644 --- a/dsmr_parser/parsers.py +++ b/dsmr_parser/parsers.py @@ -102,7 +102,7 @@ class TelegramParser(object): logger.error("Unexpected {}: {}".format(type(err), err)) raise else: - telegram.add(obis_reference=object["value_name"], dsmr_object=dsmr_object) + telegram.add(obis_reference=object["obis_reference"], dsmr_object=dsmr_object, obis_name=object["value_name"]) return telegram diff --git a/test/test_parse_v5_eon_hungary.py b/test/test_parse_v5_eon_hungary.py index 3480963..acc6ccc 100644 --- a/test/test_parse_v5_eon_hungary.py +++ b/test/test_parse_v5_eon_hungary.py @@ -29,17 +29,17 @@ class TelegramParserV5EONHUTest(unittest.TestCase): assert telegram.P1_MESSAGE_TIMESTAMP.value == \ pytz.timezone("Europe/Budapest").localize(datetime.datetime(2023, 7, 24, 15, 7, 30)) - # COSEM_LOGICAL_DEVICE_NAME (0-0:42.0.0) - assert isinstance(telegram.COSEM_LOGICAL_DEVICE_NAME, CosemObject) - assert telegram.COSEM_LOGICAL_DEVICE_NAME.unit is None - assert isinstance(telegram.COSEM_LOGICAL_DEVICE_NAME.value, str) - assert telegram.COSEM_LOGICAL_DEVICE_NAME.value == '53414733303832323030303032313630' + # EON_HU_COSEM_LOGICAL_DEVICE_NAME (0-0:42.0.0) + assert isinstance(telegram.EON_HU_COSEM_LOGICAL_DEVICE_NAME, CosemObject) + assert telegram.EON_HU_COSEM_LOGICAL_DEVICE_NAME.unit is None + assert isinstance(telegram.EON_HU_COSEM_LOGICAL_DEVICE_NAME.value, str) + assert telegram.EON_HU_COSEM_LOGICAL_DEVICE_NAME.value == '53414733303832323030303032313630' - # EQUIPMENT_SERIAL_NUMBER (0-0:96.1.0) - assert isinstance(telegram.EQUIPMENT_SERIAL_NUMBER, CosemObject) - assert telegram.EQUIPMENT_SERIAL_NUMBER.unit is None - assert isinstance(telegram.EQUIPMENT_SERIAL_NUMBER.value, str) - assert telegram.EQUIPMENT_SERIAL_NUMBER.value == '383930303832323030303032313630' + # EON_HU_EQUIPMENT_SERIAL_NUMBER (0-0:96.1.0) + assert isinstance(telegram.EON_HU_EQUIPMENT_SERIAL_NUMBER, CosemObject) + assert telegram.EON_HU_EQUIPMENT_SERIAL_NUMBER.unit is None + assert isinstance(telegram.EON_HU_EQUIPMENT_SERIAL_NUMBER.value, str) + assert telegram.EON_HU_EQUIPMENT_SERIAL_NUMBER.value == '383930303832323030303032313630' # ELECTRICITY_ACTIVE_TARIFF (0-0:96.14.0) assert isinstance(telegram.ELECTRICITY_ACTIVE_TARIFF, CosemObject) @@ -77,17 +77,17 @@ class TelegramParserV5EONHUTest(unittest.TestCase): assert isinstance(telegram.ELECTRICITY_USED_TARIFF_2.value, Decimal) assert telegram.ELECTRICITY_USED_TARIFF_2.value == Decimal('000125.921') - # ELECTRICITY_USED_TARIFF_3 (1-0:1.8.3) - assert isinstance(telegram.ELECTRICITY_USED_TARIFF_3, CosemObject) - assert telegram.ELECTRICITY_USED_TARIFF_3.unit == 'kWh' - assert isinstance(telegram.ELECTRICITY_USED_TARIFF_3.value, Decimal) - assert telegram.ELECTRICITY_USED_TARIFF_3.value == Decimal('000000.000') + # EON_HU_ELECTRICITY_USED_TARIFF_3 (1-0:1.8.3) + assert isinstance(telegram.EON_HU_ELECTRICITY_USED_TARIFF_3, CosemObject) + assert telegram.EON_HU_ELECTRICITY_USED_TARIFF_3.unit == 'kWh' + assert isinstance(telegram.EON_HU_ELECTRICITY_USED_TARIFF_3.value, Decimal) + assert telegram.EON_HU_ELECTRICITY_USED_TARIFF_3.value == Decimal('000000.000') - # ELECTRICITY_USED_TARIFF_4 (1-0:1.8.4) - assert isinstance(telegram.ELECTRICITY_USED_TARIFF_4, CosemObject) - assert telegram.ELECTRICITY_USED_TARIFF_4.unit == 'kWh' - assert isinstance(telegram.ELECTRICITY_USED_TARIFF_4.value, Decimal) - assert telegram.ELECTRICITY_USED_TARIFF_4.value == Decimal('000000.000') + # EON_HU_ELECTRICITY_USED_TARIFF_4 (1-0:1.8.4) + assert isinstance(telegram.EON_HU_ELECTRICITY_USED_TARIFF_4, CosemObject) + assert telegram.EON_HU_ELECTRICITY_USED_TARIFF_4.unit == 'kWh' + assert isinstance(telegram.EON_HU_ELECTRICITY_USED_TARIFF_4.value, Decimal) + assert telegram.EON_HU_ELECTRICITY_USED_TARIFF_4.value == Decimal('000000.000') # ELECTRICITY_EXPORTED_TOTAL (1-0:2.8.0) assert isinstance(telegram.ELECTRICITY_EXPORTED_TOTAL, CosemObject) @@ -107,17 +107,17 @@ class TelegramParserV5EONHUTest(unittest.TestCase): assert isinstance(telegram.ELECTRICITY_DELIVERED_TARIFF_2.value, Decimal) assert telegram.ELECTRICITY_DELIVERED_TARIFF_2.value == Decimal('000225.348') - # ELECTRICITY_DELIVERED_TARIFF_3 (1-0:2.8.3) - assert isinstance(telegram.ELECTRICITY_DELIVERED_TARIFF_3, CosemObject) - assert telegram.ELECTRICITY_DELIVERED_TARIFF_3.unit == 'kWh' - assert isinstance(telegram.ELECTRICITY_DELIVERED_TARIFF_3.value, Decimal) - assert telegram.ELECTRICITY_DELIVERED_TARIFF_3.value == Decimal('000000.000') + # EON_HU_ELECTRICITY_DELIVERED_TARIFF_3 (1-0:2.8.3) + assert isinstance(telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_3, CosemObject) + assert telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_3.unit == 'kWh' + assert isinstance(telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_3.value, Decimal) + assert telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_3.value == Decimal('000000.000') - # ELECTRICITY_DELIVERED_TARIFF_4 (1-0:2.8.4) - assert isinstance(telegram.ELECTRICITY_DELIVERED_TARIFF_4, CosemObject) - assert telegram.ELECTRICITY_DELIVERED_TARIFF_4.unit == 'kWh' - assert isinstance(telegram.ELECTRICITY_DELIVERED_TARIFF_4.value, Decimal) - assert telegram.ELECTRICITY_DELIVERED_TARIFF_4.value == Decimal('000000.000') + # EON_HU_ELECTRICITY_DELIVERED_TARIFF_4 (1-0:2.8.4) + assert isinstance(telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_4, CosemObject) + assert telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_4.unit == 'kWh' + assert isinstance(telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_4.value, Decimal) + assert telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_4.value == Decimal('000000.000') # ELECTRICITY_REACTIVE_IMPORTED_TOTAL (1-0:3.8.0) assert isinstance(telegram.ELECTRICITY_REACTIVE_IMPORTED_TOTAL, CosemObject) @@ -131,35 +131,35 @@ class TelegramParserV5EONHUTest(unittest.TestCase): assert isinstance(telegram.ELECTRICITY_REACTIVE_EXPORTED_TOTAL.value, Decimal) assert telegram.ELECTRICITY_REACTIVE_EXPORTED_TOTAL.value == Decimal('000303.131') - # ELECTRICITY_REACTIVE_TOTAL_Q1 (1-0:5.8.0) - assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q1, CosemObject) - assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q1.unit == 'kvarh' - assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q1.value, Decimal) - assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q1.value == Decimal('000000.668') + # EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1 (1-0:5.8.0) + assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1, CosemObject) + assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1.unit == 'kvarh' + assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1.value, Decimal) + assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1.value == Decimal('000000.668') - # ELECTRICITY_REACTIVE_TOTAL_Q2 (1-0:6.8.0) - assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q2, CosemObject) - assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q2.unit == 'kvarh' - assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q2.value, Decimal) - assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q2.value == Decimal('000000.071') + # EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2 (1-0:6.8.0) + assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2, CosemObject) + assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2.unit == 'kvarh' + assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2.value, Decimal) + assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2.value == Decimal('000000.071') - # ELECTRICITY_REACTIVE_TOTAL_Q3 (1-0:7.8.0) - assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q3, CosemObject) - assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q3.unit == 'kvarh' - assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q3.value, Decimal) - assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q3.value == Decimal('000160.487') + # EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3 (1-0:7.8.0) + assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3, CosemObject) + assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3.unit == 'kvarh' + assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3.value, Decimal) + assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3.value == Decimal('000160.487') - # ELECTRICITY_REACTIVE_TOTAL_Q4 (1-0:8.8.0) - assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q4, CosemObject) - assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q4.unit == 'kvarh' - assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q4.value, Decimal) - assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q4.value == Decimal('000143.346') + # EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4 (1-0:8.8.0) + assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4, CosemObject) + assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4.unit == 'kvarh' + assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4.value, Decimal) + assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4.value == Decimal('000143.346') - # ELECTRICITY_COMBINED (1-0:15.8.0) - assert isinstance(telegram.ELECTRICITY_COMBINED, CosemObject) - assert telegram.ELECTRICITY_COMBINED.unit == 'kWh' - assert isinstance(telegram.ELECTRICITY_COMBINED.value, Decimal) - assert telegram.ELECTRICITY_COMBINED.value == Decimal('000800.817') + # EON_HU_ELECTRICITY_COMBINED (1-0:15.8.0) + assert isinstance(telegram.EON_HU_ELECTRICITY_COMBINED, CosemObject) + assert telegram.EON_HU_ELECTRICITY_COMBINED.unit == 'kWh' + assert isinstance(telegram.EON_HU_ELECTRICITY_COMBINED.value, Decimal) + assert telegram.EON_HU_ELECTRICITY_COMBINED.value == Decimal('000800.817') # INSTANTANEOUS_VOLTAGE_L2 (1-0:32.7.0) assert isinstance(telegram.INSTANTANEOUS_VOLTAGE_L1, CosemObject) @@ -197,35 +197,35 @@ class TelegramParserV5EONHUTest(unittest.TestCase): assert isinstance(telegram.INSTANTANEOUS_CURRENT_L3.value, Decimal) assert telegram.INSTANTANEOUS_CURRENT_L3.value == Decimal('003') - # INSTANTANEOUS_POWER_FACTOR_TOTAL (1-0:13.7.0) - assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_TOTAL, CosemObject) - assert telegram.INSTANTANEOUS_POWER_FACTOR_TOTAL.unit is None - assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_TOTAL.value, Decimal) - assert telegram.INSTANTANEOUS_POWER_FACTOR_TOTAL.value == Decimal('4.556') + # EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL (1-0:13.7.0) + assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL, CosemObject) + assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL.unit is None + assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL.value, Decimal) + assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL.value == Decimal('4.556') - # INSTANTANEOUS_POWER_FACTOR_L1 (1-0:33.7.0) - assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L1, CosemObject) - assert telegram.INSTANTANEOUS_POWER_FACTOR_L1.unit is None - assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L1.value, Decimal) - assert telegram.INSTANTANEOUS_POWER_FACTOR_L1.value == Decimal('4.591') + # EON_HU_INSTANTANEOUS_POWER_FACTOR_L1 (1-0:33.7.0) + assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L1, CosemObject) + assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L1.unit is None + assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L1.value, Decimal) + assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L1.value == Decimal('4.591') - # INSTANTANEOUS_POWER_FACTOR_L2 (1-0:53.7.0) - assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L2, CosemObject) - assert telegram.INSTANTANEOUS_POWER_FACTOR_L2.unit is None - assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L2.value, Decimal) - assert telegram.INSTANTANEOUS_POWER_FACTOR_L2.value == Decimal('4.542') + # EON_HU_INSTANTANEOUS_POWER_FACTOR_L2 (1-0:53.7.0) + assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L2, CosemObject) + assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L2.unit is None + assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L2.value, Decimal) + assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L2.value == Decimal('4.542') - # INSTANTANEOUS_POWER_FACTOR_L3 (1-0:73.7.0) - assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L3, CosemObject) - assert telegram.INSTANTANEOUS_POWER_FACTOR_L3.unit is None - assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L3.value, Decimal) - assert telegram.INSTANTANEOUS_POWER_FACTOR_L3.value == Decimal('4.552') + # EON_HU_INSTANTANEOUS_POWER_FACTOR_L3 (1-0:73.7.0) + assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L3, CosemObject) + assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L3.unit is None + assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L3.value, Decimal) + assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L3.value == Decimal('4.552') - # FREQUENCY (1-0:14.7.0) - assert isinstance(telegram.FREQUENCY, CosemObject) - assert telegram.FREQUENCY.unit == "Hz" - assert isinstance(telegram.FREQUENCY.value, Decimal) - assert telegram.FREQUENCY.value == Decimal('50.00') + # EON_HU_FREQUENCY (1-0:14.7.0) + assert isinstance(telegram.EON_HU_FREQUENCY, CosemObject) + assert telegram.EON_HU_FREQUENCY.unit == "Hz" + assert isinstance(telegram.EON_HU_FREQUENCY.value, Decimal) + assert telegram.EON_HU_FREQUENCY.value == Decimal('50.00') # CURRENT_ELECTRICITY_USAGE (1-0:1.7.0) assert isinstance(telegram.CURRENT_ELECTRICITY_USAGE, CosemObject) @@ -239,47 +239,47 @@ class TelegramParserV5EONHUTest(unittest.TestCase): assert isinstance(telegram.CURRENT_ELECTRICITY_DELIVERY.value, Decimal) assert telegram.CURRENT_ELECTRICITY_DELIVERY.value == Decimal('02.601') - # INSTANTANEOUS_REACTIVE_POWER_Q1 (1-0:5.7.0) - assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q1, CosemObject) - assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q1.unit == 'kvar' - assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q1.value, Decimal) - assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q1.value == Decimal('00.000') + # EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1 (1-0:5.7.0) + assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1, CosemObject) + assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1.unit == 'kvar' + assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1.value, Decimal) + assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1.value == Decimal('00.000') - # INSTANTANEOUS_REACTIVE_POWER_Q2 (1-0:6.7.0) - assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q2, CosemObject) - assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q2.unit == 'kvar' - assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q2.value, Decimal) - assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q2.value == Decimal('00.000') + # EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2 (1-0:6.7.0) + assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2, CosemObject) + assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2.unit == 'kvar' + assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2.value, Decimal) + assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2.value == Decimal('00.000') - # INSTANTANEOUS_REACTIVE_POWER_Q3 (1-0:7.7.0) - assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q3, CosemObject) - assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q3.unit == 'kvar' - assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q3.value, Decimal) - assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q3.value == Decimal('00.504') + # EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3 (1-0:7.7.0) + assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3, CosemObject) + assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3.unit == 'kvar' + assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3.value, Decimal) + assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3.value == Decimal('00.504') - # INSTANTANEOUS_REACTIVE_POWER_Q4 (1-0:8.7.0) - assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q4, CosemObject) - assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q4.unit == 'kvar' - assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q4.value, Decimal) - assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q4.value == Decimal('00.000') + # EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4 (1-0:8.7.0) + assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4, CosemObject) + assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4.unit == 'kvar' + assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4.value, Decimal) + assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4.value == Decimal('00.000') - # MAX_POWER_ON_L1 (1-0:31.4.0) - assert isinstance(telegram.MAX_POWER_ON_L1, CosemObject) - assert telegram.MAX_POWER_ON_L1.unit == 'A' - assert isinstance(telegram.MAX_POWER_ON_L1.value, Decimal) - assert telegram.MAX_POWER_ON_L1.value == Decimal('200.00') + # EON_HU_MAX_POWER_ON_L1 (1-0:31.4.0) + assert isinstance(telegram.EON_HU_MAX_POWER_ON_L1, CosemObject) + assert telegram.EON_HU_MAX_POWER_ON_L1.unit == 'A' + assert isinstance(telegram.EON_HU_MAX_POWER_ON_L1.value, Decimal) + assert telegram.EON_HU_MAX_POWER_ON_L1.value == Decimal('200.00') - # MAX_POWER_ON_L2 (1-0:31.4.0) - assert isinstance(telegram.MAX_POWER_ON_L2, CosemObject) - assert telegram.MAX_POWER_ON_L2.unit == 'A' - assert isinstance(telegram.MAX_POWER_ON_L2.value, Decimal) - assert telegram.MAX_POWER_ON_L2.value == Decimal('200.00') + # EON_HU_MAX_POWER_ON_L2 (1-0:31.4.0) + assert isinstance(telegram.EON_HU_MAX_POWER_ON_L2, CosemObject) + assert telegram.EON_HU_MAX_POWER_ON_L2.unit == 'A' + assert isinstance(telegram.EON_HU_MAX_POWER_ON_L2.value, Decimal) + assert telegram.EON_HU_MAX_POWER_ON_L2.value == Decimal('200.00') - # MAX_POWER_ON_L3 (1-0:31.4.0) - assert isinstance(telegram.MAX_POWER_ON_L3, CosemObject) - assert telegram.MAX_POWER_ON_L3.unit == 'A' - assert isinstance(telegram.MAX_POWER_ON_L3.value, Decimal) - assert telegram.MAX_POWER_ON_L3.value == Decimal('200.00') + # EON_HU_MAX_POWER_ON_L3 (1-0:31.4.0) + assert isinstance(telegram.EON_HU_MAX_POWER_ON_L3, CosemObject) + assert telegram.EON_HU_MAX_POWER_ON_L3.unit == 'A' + assert isinstance(telegram.EON_HU_MAX_POWER_ON_L3.value, Decimal) + assert telegram.EON_HU_MAX_POWER_ON_L3.value == Decimal('200.00') # TEXT_MESSAGE (0-0:96.13.0) assert isinstance(telegram.TEXT_MESSAGE, CosemObject)