refactoring obis name mapping
This commit is contained in:
parent
a4ec55b5ec
commit
3228310ca8
@ -1,122 +0,0 @@
|
|||||||
from dsmr_parser import obis_references as obis
|
|
||||||
|
|
||||||
'''
|
|
||||||
dsmr_parser.obis_name_mapping
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
This module contains a mapping of obis references to names.
|
|
||||||
'''
|
|
||||||
|
|
||||||
EN = {
|
|
||||||
'P1_MESSAGE_HEADER': 'P1_MESSAGE_HEADER',
|
|
||||||
'P1_MESSAGE_TIMESTAMP': 'P1_MESSAGE_TIMESTAMP',
|
|
||||||
'ELECTRICITY_IMPORTED_TOTAL': 'ELECTRICITY_IMPORTED_TOTAL',
|
|
||||||
'ELECTRICITY_REACTIVE_IMPORTED_TOTAL': 'ELECTRICITY_REACTIVE_IMPORTED_TOTAL',
|
|
||||||
'ELECTRICITY_USED_TARIFF_1': 'ELECTRICITY_USED_TARIFF_1',
|
|
||||||
'ELECTRICITY_USED_TARIFF_2': 'ELECTRICITY_USED_TARIFF_2',
|
|
||||||
'ELECTRICITY_EXPORTED_TOTAL': 'ELECTRICITY_EXPORTED_TOTAL',
|
|
||||||
'ELECTRICITY_REACTIVE_EXPORTED_TOTAL': 'ELECTRICITY_REACTIVE_EXPORTED_TOTAL',
|
|
||||||
'ELECTRICITY_DELIVERED_TARIFF_1': 'ELECTRICITY_DELIVERED_TARIFF_1',
|
|
||||||
'ELECTRICITY_DELIVERED_TARIFF_2': 'ELECTRICITY_DELIVERED_TARIFF_2',
|
|
||||||
'ELECTRICITY_ACTIVE_TARIFF': 'ELECTRICITY_ACTIVE_TARIFF',
|
|
||||||
'CURRENT_REACTIVE_EXPORTED': 'CURRENT_REACTIVE_EXPORTED',
|
|
||||||
'ELECTRICITY_REACTIVE_IMPORTED_TARIFF_1': 'ELECTRICITY_REACTIVE_IMPORTED_TARIFF_1',
|
|
||||||
'ELECTRICITY_REACTIVE_IMPORTED_TARIFF_2': 'ELECTRICITY_REACTIVE_IMPORTED_TARIFF_2',
|
|
||||||
'ELECTRICITY_REACTIVE_EXPORTED_TARIFF_1': 'ELECTRICITY_REACTIVE_EXPORTED_TARIFF_1',
|
|
||||||
'ELECTRICITY_REACTIVE_EXPORTED_TARIFF_2': 'ELECTRICITY_REACTIVE_EXPORTED_TARIFF_2',
|
|
||||||
'CURRENT_REACTIVE_IMPORTED': 'CURRENT_REACTIVE_IMPORTED',
|
|
||||||
'EQUIPMENT_IDENTIFIER': 'EQUIPMENT_IDENTIFIER',
|
|
||||||
'CURRENT_ELECTRICITY_USAGE': 'CURRENT_ELECTRICITY_USAGE',
|
|
||||||
'CURRENT_ELECTRICITY_DELIVERY': 'CURRENT_ELECTRICITY_DELIVERY',
|
|
||||||
'LONG_POWER_FAILURE_COUNT': 'LONG_POWER_FAILURE_COUNT',
|
|
||||||
'SHORT_POWER_FAILURE_COUNT': 'SHORT_POWER_FAILURE_COUNT',
|
|
||||||
'POWER_EVENT_FAILURE_LOG': 'POWER_EVENT_FAILURE_LOG',
|
|
||||||
'VOLTAGE_SAG_L1_COUNT': 'VOLTAGE_SAG_L1_COUNT',
|
|
||||||
'VOLTAGE_SAG_L2_COUNT': 'VOLTAGE_SAG_L2_COUNT',
|
|
||||||
'VOLTAGE_SAG_L3_COUNT': 'VOLTAGE_SAG_L3_COUNT',
|
|
||||||
'VOLTAGE_SWELL_L1_COUNT': 'VOLTAGE_SWELL_L1_COUNT',
|
|
||||||
'VOLTAGE_SWELL_L2_COUNT': 'VOLTAGE_SWELL_L2_COUNT',
|
|
||||||
'VOLTAGE_SWELL_L3_COUNT': 'VOLTAGE_SWELL_L3_COUNT',
|
|
||||||
'INSTANTANEOUS_VOLTAGE_L1': 'INSTANTANEOUS_VOLTAGE_L1',
|
|
||||||
'INSTANTANEOUS_VOLTAGE_L2': 'INSTANTANEOUS_VOLTAGE_L2',
|
|
||||||
'INSTANTANEOUS_VOLTAGE_L3': 'INSTANTANEOUS_VOLTAGE_L3',
|
|
||||||
'INSTANTANEOUS_CURRENT_L1': 'INSTANTANEOUS_CURRENT_L1',
|
|
||||||
'INSTANTANEOUS_CURRENT_L2': 'INSTANTANEOUS_CURRENT_L2',
|
|
||||||
'INSTANTANEOUS_CURRENT_L3': 'INSTANTANEOUS_CURRENT_L3',
|
|
||||||
'TEXT_MESSAGE_CODE': 'TEXT_MESSAGE_CODE',
|
|
||||||
'TEXT_MESSAGE': 'TEXT_MESSAGE',
|
|
||||||
'DEVICE_TYPE': 'DEVICE_TYPE',
|
|
||||||
'INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE': 'INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE',
|
|
||||||
'INSTANTANEOUS_ACTIVE_POWER_L2_POSITIVE': 'INSTANTANEOUS_ACTIVE_POWER_L2_POSITIVE',
|
|
||||||
'INSTANTANEOUS_ACTIVE_POWER_L3_POSITIVE': 'INSTANTANEOUS_ACTIVE_POWER_L3_POSITIVE',
|
|
||||||
'INSTANTANEOUS_ACTIVE_POWER_L1_NEGATIVE': 'INSTANTANEOUS_ACTIVE_POWER_L1_NEGATIVE',
|
|
||||||
'INSTANTANEOUS_ACTIVE_POWER_L2_NEGATIVE': 'INSTANTANEOUS_ACTIVE_POWER_L2_NEGATIVE',
|
|
||||||
'INSTANTANEOUS_ACTIVE_POWER_L3_NEGATIVE': 'INSTANTANEOUS_ACTIVE_POWER_L3_NEGATIVE',
|
|
||||||
'INSTANTANEOUS_REACTIVE_POWER_L1_POSITIVE': 'INSTANTANEOUS_REACTIVE_POWER_L1_POSITIVE',
|
|
||||||
'INSTANTANEOUS_REACTIVE_POWER_L1_NEGATIVE': 'INSTANTANEOUS_REACTIVE_POWER_L1_NEGATIVE',
|
|
||||||
'INSTANTANEOUS_REACTIVE_POWER_L2_POSITIVE': 'INSTANTANEOUS_REACTIVE_POWER_L2_POSITIVE',
|
|
||||||
'INSTANTANEOUS_REACTIVE_POWER_L2_NEGATIVE': 'INSTANTANEOUS_REACTIVE_POWER_L2_NEGATIVE',
|
|
||||||
'INSTANTANEOUS_REACTIVE_POWER_L3_POSITIVE': 'INSTANTANEOUS_REACTIVE_POWER_L3_POSITIVE',
|
|
||||||
'INSTANTANEOUS_REACTIVE_POWER_L3_NEGATIVE': 'INSTANTANEOUS_REACTIVE_POWER_L3_NEGATIVE',
|
|
||||||
'EQUIPMENT_IDENTIFIER_GAS': 'EQUIPMENT_IDENTIFIER_GAS',
|
|
||||||
'HOURLY_GAS_METER_READING': 'HOURLY_GAS_METER_READING',
|
|
||||||
'GAS_METER_READING': 'GAS_METER_READING',
|
|
||||||
'ACTUAL_TRESHOLD_ELECTRICITY': 'ACTUAL_TRESHOLD_ELECTRICITY',
|
|
||||||
'ACTUAL_SWITCH_POSITION': 'ACTUAL_SWITCH_POSITION',
|
|
||||||
'VALVE_POSITION_GAS': 'VALVE_POSITION_GAS',
|
|
||||||
'BELGIUM_VERSION_INFORMATION': 'BELGIUM_VERSION_INFORMATION',
|
|
||||||
'BELGIUM_EQUIPMENT_IDENTIFIER': 'BELGIUM_EQUIPMENT_IDENTIFIER',
|
|
||||||
'BELGIUM_CURRENT_AVERAGE_DEMAND': 'BELGIUM_CURRENT_AVERAGE_DEMAND',
|
|
||||||
'BELGIUM_MAXIMUM_DEMAND_MONTH': 'BELGIUM_MAXIMUM_DEMAND_MONTH',
|
|
||||||
'BELGIUM_MAXIMUM_DEMAND_13_MONTHS': 'BELGIUM_MAXIMUM_DEMAND_13_MONTHS',
|
|
||||||
'BELGIUM_MAX_POWER_PER_PHASE': 'BELGIUM_MAX_POWER_PER_PHASE',
|
|
||||||
'BELGIUM_MAX_CURRENT_PER_PHASE': 'BELGIUM_MAX_CURRENT_PER_PHASE',
|
|
||||||
'BELGIUM_MBUS1_DEVICE_TYPE': 'BELGIUM_MBUS1_DEVICE_TYPE',
|
|
||||||
'BELGIUM_MBUS1_EQUIPMENT_IDENTIFIER': 'BELGIUM_MBUS1_EQUIPMENT_IDENTIFIER',
|
|
||||||
'BELGIUM_MBUS1_VALVE_POSITION': 'BELGIUM_MBUS1_VALVE_POSITION',
|
|
||||||
'BELGIUM_MBUS1_METER_READING1': 'BELGIUM_MBUS1_METER_READING1',
|
|
||||||
'BELGIUM_MBUS1_METER_READING2': 'BELGIUM_MBUS1_METER_READING2',
|
|
||||||
'BELGIUM_MBUS2_EQUIPMENT_IDENTIFIER': 'BELGIUM_MBUS2_EQUIPMENT_IDENTIFIER',
|
|
||||||
'BELGIUM_MBUS2_VALVE_POSITION': 'BELGIUM_MBUS2_VALVE_POSITION',
|
|
||||||
'BELGIUM_MBUS2_METER_READING1': 'BELGIUM_MBUS2_METER_READING1',
|
|
||||||
'BELGIUM_MBUS2_METER_READING2': 'BELGIUM_MBUS2_METER_READING2',
|
|
||||||
'BELGIUM_MBUS3_EQUIPMENT_IDENTIFIER': 'BELGIUM_MBUS3_EQUIPMENT_IDENTIFIER',
|
|
||||||
'BELGIUM_MBUS3_VALVE_POSITION': 'BELGIUM_MBUS3_VALVE_POSITION',
|
|
||||||
'BELGIUM_MBUS3_METER_READING1': 'BELGIUM_MBUS3_METER_READING1',
|
|
||||||
'BELGIUM_MBUS3_METER_READING2': 'BELGIUM_MBUS3_METER_READING2',
|
|
||||||
'BELGIUM_MBUS4_EQUIPMENT_IDENTIFIER': 'BELGIUM_MBUS4_EQUIPMENT_IDENTIFIER',
|
|
||||||
'BELGIUM_MBUS4_VALVE_POSITION': 'BELGIUM_MBUS4_VALVE_POSITION',
|
|
||||||
'BELGIUM_MBUS4_METER_READING1': 'BELGIUM_MBUS4_METER_READING1',
|
|
||||||
'BELGIUM_MBUS4_METER_READING2': 'BELGIUM_MBUS4_METER_READING2',
|
|
||||||
'LUXEMBOURG_EQUIPMENT_IDENTIFIER': 'LUXEMBOURG_EQUIPMENT_IDENTIFIER',
|
|
||||||
'Q3D_EQUIPMENT_IDENTIFIER': 'Q3D_EQUIPMENT_IDENTIFIER',
|
|
||||||
'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': '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()])
|
|
@ -10,8 +10,12 @@ P1_MESSAGE_HEADER = r'^\d-\d:0\.2\.8.+?\r\n'
|
|||||||
P1_MESSAGE_TIMESTAMP = r'^\d-\d:1\.0\.0.+?\r\n'
|
P1_MESSAGE_TIMESTAMP = r'^\d-\d:1\.0\.0.+?\r\n'
|
||||||
ELECTRICITY_USED_TARIFF_1 = r'^\d-\d:1\.8\.1.+?\r\n'
|
ELECTRICITY_USED_TARIFF_1 = r'^\d-\d:1\.8\.1.+?\r\n'
|
||||||
ELECTRICITY_USED_TARIFF_2 = r'^\d-\d:1\.8\.2.+?\r\n'
|
ELECTRICITY_USED_TARIFF_2 = r'^\d-\d:1\.8\.2.+?\r\n'
|
||||||
|
ELECTRICITY_USED_TARIFF_3 = r'^\d-\d:1\.8\.3.+?\r\n'
|
||||||
|
ELECTRICITY_USED_TARIFF_4 = r'^\d-\d:1\.8\.4.+?\r\n'
|
||||||
ELECTRICITY_DELIVERED_TARIFF_1 = r'^\d-\d:2\.8\.1.+?\r\n'
|
ELECTRICITY_DELIVERED_TARIFF_1 = r'^\d-\d:2\.8\.1.+?\r\n'
|
||||||
ELECTRICITY_DELIVERED_TARIFF_2 = r'^\d-\d:2\.8\.2.+?\r\n'
|
ELECTRICITY_DELIVERED_TARIFF_2 = r'^\d-\d:2\.8\.2.+?\r\n'
|
||||||
|
ELECTRICITY_DELIVERED_TARIFF_3 = r'^\d-\d:2\.8\.3.+?\r\n'
|
||||||
|
ELECTRICITY_DELIVERED_TARIFF_4 = r'^\d-\d:2\.8\.4.+?\r\n'
|
||||||
CURRENT_REACTIVE_IMPORTED = r'^\d-\d:3\.7\.0.+?\r\n'
|
CURRENT_REACTIVE_IMPORTED = r'^\d-\d:3\.7\.0.+?\r\n'
|
||||||
ELECTRICITY_REACTIVE_IMPORTED_TOTAL = r'^\d-\d:3\.8\.0.+?\r\n'
|
ELECTRICITY_REACTIVE_IMPORTED_TOTAL = r'^\d-\d:3\.8\.0.+?\r\n'
|
||||||
ELECTRICITY_REACTIVE_IMPORTED_TARIFF_1 = r'^\d-\d:3\.8\.1.+?\r\n'
|
ELECTRICITY_REACTIVE_IMPORTED_TARIFF_1 = r'^\d-\d:3\.8\.1.+?\r\n'
|
||||||
@ -124,10 +128,6 @@ Q3D_EQUIPMENT_STATE = r'^\d-\d:96\.5\.5.+?\r\n' # Device state (hexadecimal)
|
|||||||
Q3D_EQUIPMENT_SERIALNUMBER = r'^\d-\d:96\.1\.255.+?\r\n' # Device Serialnumber
|
Q3D_EQUIPMENT_SERIALNUMBER = r'^\d-\d:96\.1\.255.+?\r\n' # Device Serialnumber
|
||||||
|
|
||||||
# EON Hungary
|
# EON Hungary
|
||||||
EON_HU_ELECTRICITY_USED_TARIFF_3 = r'^\d-\d:1\.8\.3.+?\r\n'
|
|
||||||
EON_HU_ELECTRICITY_USED_TARIFF_4 = r'^\d-\d:1\.8\.4.+?\r\n'
|
|
||||||
EON_HU_ELECTRICITY_DELIVERED_TARIFF_3 = r'^\d-\d:2\.8\.3.+?\r\n'
|
|
||||||
EON_HU_ELECTRICITY_DELIVERED_TARIFF_4 = r'^\d-\d:2\.8\.4.+?\r\n'
|
|
||||||
EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1 = r'^\d-\d:5\.8\.0.+?\r\n'
|
EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1 = r'^\d-\d:5\.8\.0.+?\r\n'
|
||||||
EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2 = r'^\d-\d:6\.8\.0.+?\r\n'
|
EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2 = r'^\d-\d:6\.8\.0.+?\r\n'
|
||||||
EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3 = r'^\d-\d:7\.8\.0.+?\r\n'
|
EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3 = r'^\d-\d:7\.8\.0.+?\r\n'
|
||||||
|
@ -2,13 +2,9 @@ from decimal import Decimal
|
|||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
import sys;
|
|
||||||
|
|
||||||
import pytz
|
import pytz
|
||||||
|
|
||||||
from dsmr_parser import obis_name_mapping
|
|
||||||
|
|
||||||
|
|
||||||
class Telegram(dict):
|
class Telegram(dict):
|
||||||
"""
|
"""
|
||||||
Container for parsed telegram data.
|
Container for parsed telegram data.
|
||||||
@ -28,26 +24,21 @@ class Telegram(dict):
|
|||||||
self._mbus_devices = []
|
self._mbus_devices = []
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def add(self, obis_reference, dsmr_object, obis_name=None):
|
def add(self, obis_reference, dsmr_object, obis_name):
|
||||||
# Update name mapping used to get value by attribute. Example: telegram.P1_MESSAGE_HEADER.
|
# 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)
|
setattr(self, obis_name, dsmr_object)
|
||||||
if obis_name not in self._item_names: # TODO repeating obis references
|
if obis_name not in self._item_names: # TODO repeating obis references
|
||||||
self._item_names.append(obis_name)
|
self._item_names.append(obis_name)
|
||||||
|
|
||||||
# TODO isinstance check: MaxDemandParser (BELGIUM_MAXIMUM_DEMAND_13_MONTHS) returns a list
|
# TODO isinstance check: MaxDemandParser (BELGIUM_MAXIMUM_DEMAND_13_MONTHS) returns a list
|
||||||
if isinstance(dsmr_object, DSMRObject) and dsmr_object.is_mbus_reading:
|
if isinstance(dsmr_object, DSMRObject) and dsmr_object.is_mbus_reading:
|
||||||
self._add_mbus(obis_reference, dsmr_object)
|
self._add_mbus(obis_reference, dsmr_object, obis_name)
|
||||||
|
|
||||||
# Fill dict which is only used for backwards compatibility
|
# Fill dict which is only used for backwards compatibility
|
||||||
if obis_reference not in self:
|
if obis_reference not in self:
|
||||||
self[obis_reference] = dsmr_object
|
self[obis_reference] = dsmr_object
|
||||||
|
|
||||||
def _add_mbus(self, obis_reference, dsmr_object):
|
def _add_mbus(self, obis_reference, dsmr_object, obis_name):
|
||||||
"""
|
"""
|
||||||
The given DsmrObject is assumed to be Mbus related and will be grouped into a MbusDevice.
|
The given DsmrObject is assumed to be Mbus related and will be grouped into a MbusDevice.
|
||||||
Grouping is done by the DsmrObject channel ID.
|
Grouping is done by the DsmrObject channel ID.
|
||||||
@ -60,7 +51,7 @@ class Telegram(dict):
|
|||||||
mbus_device = MbusDevice(channel_id=channel_id)
|
mbus_device = MbusDevice(channel_id=channel_id)
|
||||||
self._mbus_devices.append(mbus_device)
|
self._mbus_devices.append(mbus_device)
|
||||||
|
|
||||||
mbus_device.add(obis_reference, dsmr_object)
|
mbus_device.add(obis_reference, dsmr_object, obis_name)
|
||||||
|
|
||||||
if not hasattr(self, 'MBUS_DEVICES'):
|
if not hasattr(self, 'MBUS_DEVICES'):
|
||||||
setattr(self, 'MBUS_DEVICES', self._mbus_devices)
|
setattr(self, 'MBUS_DEVICES', self._mbus_devices)
|
||||||
@ -336,10 +327,9 @@ class MbusDevice:
|
|||||||
self.channel_id = channel_id
|
self.channel_id = channel_id
|
||||||
self._item_names = []
|
self._item_names = []
|
||||||
|
|
||||||
def add(self, obis_reference, dsmr_object):
|
def add(self, obis_reference, dsmr_object, obis_name):
|
||||||
# Update name mapping used to get value by attribute. Example: telegram.P1_MESSAGE_HEADER
|
# Update name mapping used to get value by attribute. Example: telegram.P1_MESSAGE_HEADER
|
||||||
# Also keep track of the added names internally
|
# Also keep track of the added names internally
|
||||||
obis_name = obis_name_mapping.EN[obis_reference]
|
|
||||||
setattr(self, obis_name, dsmr_object)
|
setattr(self, obis_name, dsmr_object)
|
||||||
self._item_names.append(obis_name)
|
self._item_names.append(obis_name)
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -12,19 +12,19 @@ class MbusDeviceTest(unittest.TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
v5_objects = telegram_specifications.V5['objects']
|
v5_objects = telegram_specifications.V5['objects']
|
||||||
|
|
||||||
device_type_parser = v5_objects[obis_references.DEVICE_TYPE]
|
device_type_parser = [object["value_parser"] for object in v5_objects if object["obis_reference"] == obis_references.DEVICE_TYPE][0]
|
||||||
device_type = device_type_parser.parse('0-2:24.1.0(003)\r\n')
|
device_type = device_type_parser.parse('0-2:24.1.0(003)\r\n')
|
||||||
|
|
||||||
equipment_parser = v5_objects[obis_references.EQUIPMENT_IDENTIFIER_GAS]
|
equipment_parser = [object["value_parser"] for object in v5_objects if object["obis_reference"] == obis_references.EQUIPMENT_IDENTIFIER_GAS][0]
|
||||||
equipment = equipment_parser.parse('0-2:96.1.0(4730303339303031393336393930363139)\r\n')
|
equipment = equipment_parser.parse('0-2:96.1.0(4730303339303031393336393930363139)\r\n')
|
||||||
|
|
||||||
gas_reading_parser = v5_objects[obis_references.HOURLY_GAS_METER_READING]
|
gas_reading_parser = [object["value_parser"] for object in v5_objects if object["obis_reference"] == obis_references.HOURLY_GAS_METER_READING][0]
|
||||||
gas_reading = gas_reading_parser.parse('0-2:24.2.1(200426223001S)(00246.138*m3)\r\n')
|
gas_reading = gas_reading_parser.parse('0-2:24.2.1(200426223001S)(00246.138*m3)\r\n')
|
||||||
|
|
||||||
mbus_device = MbusDevice(channel_id=1)
|
mbus_device = MbusDevice(channel_id=1)
|
||||||
mbus_device.add(obis_references.DEVICE_TYPE, device_type)
|
mbus_device.add(obis_references.DEVICE_TYPE, device_type, "DEVICE_TYPE")
|
||||||
mbus_device.add(obis_references.EQUIPMENT_IDENTIFIER_GAS, equipment)
|
mbus_device.add(obis_references.EQUIPMENT_IDENTIFIER_GAS, equipment, "EQUIPMENT_IDENTIFIER_GAS")
|
||||||
mbus_device.add(obis_references.HOURLY_GAS_METER_READING, gas_reading)
|
mbus_device.add(obis_references.HOURLY_GAS_METER_READING, gas_reading, "HOURLY_GAS_METER_READING")
|
||||||
|
|
||||||
self.mbus_device = mbus_device
|
self.mbus_device = mbus_device
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import datetime
|
|||||||
import pytz
|
import pytz
|
||||||
|
|
||||||
from dsmr_parser import telegram_specifications, obis_references
|
from dsmr_parser import telegram_specifications, obis_references
|
||||||
from dsmr_parser import obis_name_mapping
|
|
||||||
from dsmr_parser.objects import CosemObject
|
from dsmr_parser.objects import CosemObject
|
||||||
from dsmr_parser.objects import MBusObject
|
from dsmr_parser.objects import MBusObject
|
||||||
from dsmr_parser.objects import ProfileGenericObject
|
from dsmr_parser.objects import ProfileGenericObject
|
||||||
@ -314,8 +314,8 @@ class TelegramTest(unittest.TestCase):
|
|||||||
self.item_names_tested.append(testitem_name)
|
self.item_names_tested.append(testitem_name)
|
||||||
|
|
||||||
# check if all items in telegram V4 specification are covered
|
# check if all items in telegram V4 specification are covered
|
||||||
V4_name_list = [obis_name_mapping.EN[signature] for signature, parser in
|
V4_name_list = [object["value_name"] for object in
|
||||||
telegram_specifications.V4['objects'].items()]
|
telegram_specifications.V4['objects']]
|
||||||
V4_name_set = set(V4_name_list)
|
V4_name_set = set(V4_name_list)
|
||||||
item_names_tested_set = set(self.item_names_tested)
|
item_names_tested_set = set(self.item_names_tested)
|
||||||
|
|
||||||
@ -329,7 +329,7 @@ class TelegramTest(unittest.TestCase):
|
|||||||
break
|
break
|
||||||
|
|
||||||
# Verify that the iterator works for at least one value
|
# Verify that the iterator works for at least one value
|
||||||
self.assertEqual(obis_name, obis_name_mapping.EN[obis_references.P1_MESSAGE_HEADER])
|
self.assertEqual(obis_name, "P1_MESSAGE_HEADER")
|
||||||
self.assertEqual(dsmr_object.value, '50')
|
self.assertEqual(dsmr_object.value, '50')
|
||||||
|
|
||||||
def test_mbus_devices(self):
|
def test_mbus_devices(self):
|
||||||
|
@ -30,16 +30,16 @@ class TelegramParserV5EONHUTest(unittest.TestCase):
|
|||||||
pytz.timezone("Europe/Budapest").localize(datetime.datetime(2023, 7, 24, 15, 7, 30))
|
pytz.timezone("Europe/Budapest").localize(datetime.datetime(2023, 7, 24, 15, 7, 30))
|
||||||
|
|
||||||
# EON_HU_COSEM_LOGICAL_DEVICE_NAME (0-0:42.0.0)
|
# EON_HU_COSEM_LOGICAL_DEVICE_NAME (0-0:42.0.0)
|
||||||
assert isinstance(telegram.EON_HU_COSEM_LOGICAL_DEVICE_NAME, CosemObject)
|
assert isinstance(telegram.COSEM_LOGICAL_DEVICE_NAME, CosemObject)
|
||||||
assert telegram.EON_HU_COSEM_LOGICAL_DEVICE_NAME.unit is None
|
assert telegram.COSEM_LOGICAL_DEVICE_NAME.unit is None
|
||||||
assert isinstance(telegram.EON_HU_COSEM_LOGICAL_DEVICE_NAME.value, str)
|
assert isinstance(telegram.COSEM_LOGICAL_DEVICE_NAME.value, str)
|
||||||
assert telegram.EON_HU_COSEM_LOGICAL_DEVICE_NAME.value == '53414733303832323030303032313630'
|
assert telegram.COSEM_LOGICAL_DEVICE_NAME.value == '53414733303832323030303032313630'
|
||||||
|
|
||||||
# EON_HU_EQUIPMENT_SERIAL_NUMBER (0-0:96.1.0)
|
# EON_HU_EQUIPMENT_SERIAL_NUMBER (0-0:96.1.0)
|
||||||
assert isinstance(telegram.EON_HU_EQUIPMENT_SERIAL_NUMBER, CosemObject)
|
assert isinstance(telegram.EQUIPMENT_SERIAL_NUMBER, CosemObject)
|
||||||
assert telegram.EON_HU_EQUIPMENT_SERIAL_NUMBER.unit is None
|
assert telegram.EQUIPMENT_SERIAL_NUMBER.unit is None
|
||||||
assert isinstance(telegram.EON_HU_EQUIPMENT_SERIAL_NUMBER.value, str)
|
assert isinstance(telegram.EQUIPMENT_SERIAL_NUMBER.value, str)
|
||||||
assert telegram.EON_HU_EQUIPMENT_SERIAL_NUMBER.value == '383930303832323030303032313630'
|
assert telegram.EQUIPMENT_SERIAL_NUMBER.value == '383930303832323030303032313630'
|
||||||
|
|
||||||
# ELECTRICITY_ACTIVE_TARIFF (0-0:96.14.0)
|
# ELECTRICITY_ACTIVE_TARIFF (0-0:96.14.0)
|
||||||
assert isinstance(telegram.ELECTRICITY_ACTIVE_TARIFF, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_ACTIVE_TARIFF, CosemObject)
|
||||||
@ -78,16 +78,16 @@ class TelegramParserV5EONHUTest(unittest.TestCase):
|
|||||||
assert telegram.ELECTRICITY_USED_TARIFF_2.value == Decimal('000125.921')
|
assert telegram.ELECTRICITY_USED_TARIFF_2.value == Decimal('000125.921')
|
||||||
|
|
||||||
# EON_HU_ELECTRICITY_USED_TARIFF_3 (1-0:1.8.3)
|
# EON_HU_ELECTRICITY_USED_TARIFF_3 (1-0:1.8.3)
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_USED_TARIFF_3, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_USED_TARIFF_3, CosemObject)
|
||||||
assert telegram.EON_HU_ELECTRICITY_USED_TARIFF_3.unit == 'kWh'
|
assert telegram.ELECTRICITY_USED_TARIFF_3.unit == 'kWh'
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_USED_TARIFF_3.value, Decimal)
|
assert isinstance(telegram.ELECTRICITY_USED_TARIFF_3.value, Decimal)
|
||||||
assert telegram.EON_HU_ELECTRICITY_USED_TARIFF_3.value == Decimal('000000.000')
|
assert telegram.ELECTRICITY_USED_TARIFF_3.value == Decimal('000000.000')
|
||||||
|
|
||||||
# EON_HU_ELECTRICITY_USED_TARIFF_4 (1-0:1.8.4)
|
# EON_HU_ELECTRICITY_USED_TARIFF_4 (1-0:1.8.4)
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_USED_TARIFF_4, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_USED_TARIFF_4, CosemObject)
|
||||||
assert telegram.EON_HU_ELECTRICITY_USED_TARIFF_4.unit == 'kWh'
|
assert telegram.ELECTRICITY_USED_TARIFF_4.unit == 'kWh'
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_USED_TARIFF_4.value, Decimal)
|
assert isinstance(telegram.ELECTRICITY_USED_TARIFF_4.value, Decimal)
|
||||||
assert telegram.EON_HU_ELECTRICITY_USED_TARIFF_4.value == Decimal('000000.000')
|
assert telegram.ELECTRICITY_USED_TARIFF_4.value == Decimal('000000.000')
|
||||||
|
|
||||||
# ELECTRICITY_EXPORTED_TOTAL (1-0:2.8.0)
|
# ELECTRICITY_EXPORTED_TOTAL (1-0:2.8.0)
|
||||||
assert isinstance(telegram.ELECTRICITY_EXPORTED_TOTAL, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_EXPORTED_TOTAL, CosemObject)
|
||||||
@ -108,16 +108,16 @@ class TelegramParserV5EONHUTest(unittest.TestCase):
|
|||||||
assert telegram.ELECTRICITY_DELIVERED_TARIFF_2.value == Decimal('000225.348')
|
assert telegram.ELECTRICITY_DELIVERED_TARIFF_2.value == Decimal('000225.348')
|
||||||
|
|
||||||
# EON_HU_ELECTRICITY_DELIVERED_TARIFF_3 (1-0:2.8.3)
|
# EON_HU_ELECTRICITY_DELIVERED_TARIFF_3 (1-0:2.8.3)
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_3, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_DELIVERED_TARIFF_3, CosemObject)
|
||||||
assert telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_3.unit == 'kWh'
|
assert telegram.ELECTRICITY_DELIVERED_TARIFF_3.unit == 'kWh'
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_3.value, Decimal)
|
assert isinstance(telegram.ELECTRICITY_DELIVERED_TARIFF_3.value, Decimal)
|
||||||
assert telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_3.value == Decimal('000000.000')
|
assert telegram.ELECTRICITY_DELIVERED_TARIFF_3.value == Decimal('000000.000')
|
||||||
|
|
||||||
# EON_HU_ELECTRICITY_DELIVERED_TARIFF_4 (1-0:2.8.4)
|
# EON_HU_ELECTRICITY_DELIVERED_TARIFF_4 (1-0:2.8.4)
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_4, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_DELIVERED_TARIFF_4, CosemObject)
|
||||||
assert telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_4.unit == 'kWh'
|
assert telegram.ELECTRICITY_DELIVERED_TARIFF_4.unit == 'kWh'
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_4.value, Decimal)
|
assert isinstance(telegram.ELECTRICITY_DELIVERED_TARIFF_4.value, Decimal)
|
||||||
assert telegram.EON_HU_ELECTRICITY_DELIVERED_TARIFF_4.value == Decimal('000000.000')
|
assert telegram.ELECTRICITY_DELIVERED_TARIFF_4.value == Decimal('000000.000')
|
||||||
|
|
||||||
# ELECTRICITY_REACTIVE_IMPORTED_TOTAL (1-0:3.8.0)
|
# ELECTRICITY_REACTIVE_IMPORTED_TOTAL (1-0:3.8.0)
|
||||||
assert isinstance(telegram.ELECTRICITY_REACTIVE_IMPORTED_TOTAL, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_REACTIVE_IMPORTED_TOTAL, CosemObject)
|
||||||
@ -132,34 +132,34 @@ class TelegramParserV5EONHUTest(unittest.TestCase):
|
|||||||
assert telegram.ELECTRICITY_REACTIVE_EXPORTED_TOTAL.value == Decimal('000303.131')
|
assert telegram.ELECTRICITY_REACTIVE_EXPORTED_TOTAL.value == Decimal('000303.131')
|
||||||
|
|
||||||
# EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1 (1-0:5.8.0)
|
# EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1 (1-0:5.8.0)
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q1, CosemObject)
|
||||||
assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1.unit == 'kvarh'
|
assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q1.unit == 'kvarh'
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1.value, Decimal)
|
assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q1.value, Decimal)
|
||||||
assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q1.value == Decimal('000000.668')
|
assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q1.value == Decimal('000000.668')
|
||||||
|
|
||||||
# EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2 (1-0:6.8.0)
|
# EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2 (1-0:6.8.0)
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q2, CosemObject)
|
||||||
assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2.unit == 'kvarh'
|
assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q2.unit == 'kvarh'
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2.value, Decimal)
|
assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q2.value, Decimal)
|
||||||
assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q2.value == Decimal('000000.071')
|
assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q2.value == Decimal('000000.071')
|
||||||
|
|
||||||
# EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3 (1-0:7.8.0)
|
# EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3 (1-0:7.8.0)
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q3, CosemObject)
|
||||||
assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3.unit == 'kvarh'
|
assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q3.unit == 'kvarh'
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3.value, Decimal)
|
assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q3.value, Decimal)
|
||||||
assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q3.value == Decimal('000160.487')
|
assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q3.value == Decimal('000160.487')
|
||||||
|
|
||||||
# EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4 (1-0:8.8.0)
|
# EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4 (1-0:8.8.0)
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q4, CosemObject)
|
||||||
assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4.unit == 'kvarh'
|
assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q4.unit == 'kvarh'
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4.value, Decimal)
|
assert isinstance(telegram.ELECTRICITY_REACTIVE_TOTAL_Q4.value, Decimal)
|
||||||
assert telegram.EON_HU_ELECTRICITY_REACTIVE_TOTAL_Q4.value == Decimal('000143.346')
|
assert telegram.ELECTRICITY_REACTIVE_TOTAL_Q4.value == Decimal('000143.346')
|
||||||
|
|
||||||
# EON_HU_ELECTRICITY_COMBINED (1-0:15.8.0)
|
# EON_HU_ELECTRICITY_COMBINED (1-0:15.8.0)
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_COMBINED, CosemObject)
|
assert isinstance(telegram.ELECTRICITY_COMBINED, CosemObject)
|
||||||
assert telegram.EON_HU_ELECTRICITY_COMBINED.unit == 'kWh'
|
assert telegram.ELECTRICITY_COMBINED.unit == 'kWh'
|
||||||
assert isinstance(telegram.EON_HU_ELECTRICITY_COMBINED.value, Decimal)
|
assert isinstance(telegram.ELECTRICITY_COMBINED.value, Decimal)
|
||||||
assert telegram.EON_HU_ELECTRICITY_COMBINED.value == Decimal('000800.817')
|
assert telegram.ELECTRICITY_COMBINED.value == Decimal('000800.817')
|
||||||
|
|
||||||
# INSTANTANEOUS_VOLTAGE_L2 (1-0:32.7.0)
|
# INSTANTANEOUS_VOLTAGE_L2 (1-0:32.7.0)
|
||||||
assert isinstance(telegram.INSTANTANEOUS_VOLTAGE_L1, CosemObject)
|
assert isinstance(telegram.INSTANTANEOUS_VOLTAGE_L1, CosemObject)
|
||||||
@ -198,34 +198,34 @@ class TelegramParserV5EONHUTest(unittest.TestCase):
|
|||||||
assert telegram.INSTANTANEOUS_CURRENT_L3.value == Decimal('003')
|
assert telegram.INSTANTANEOUS_CURRENT_L3.value == Decimal('003')
|
||||||
|
|
||||||
# EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL (1-0:13.7.0)
|
# EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL (1-0:13.7.0)
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL, CosemObject)
|
assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_TOTAL, CosemObject)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL.unit is None
|
assert telegram.INSTANTANEOUS_POWER_FACTOR_TOTAL.unit is None
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL.value, Decimal)
|
assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_TOTAL.value, Decimal)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_TOTAL.value == Decimal('4.556')
|
assert telegram.INSTANTANEOUS_POWER_FACTOR_TOTAL.value == Decimal('4.556')
|
||||||
|
|
||||||
# EON_HU_INSTANTANEOUS_POWER_FACTOR_L1 (1-0:33.7.0)
|
# EON_HU_INSTANTANEOUS_POWER_FACTOR_L1 (1-0:33.7.0)
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L1, CosemObject)
|
assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L1, CosemObject)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L1.unit is None
|
assert telegram.INSTANTANEOUS_POWER_FACTOR_L1.unit is None
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L1.value, Decimal)
|
assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L1.value, Decimal)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L1.value == Decimal('4.591')
|
assert telegram.INSTANTANEOUS_POWER_FACTOR_L1.value == Decimal('4.591')
|
||||||
|
|
||||||
# EON_HU_INSTANTANEOUS_POWER_FACTOR_L2 (1-0:53.7.0)
|
# EON_HU_INSTANTANEOUS_POWER_FACTOR_L2 (1-0:53.7.0)
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L2, CosemObject)
|
assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L2, CosemObject)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L2.unit is None
|
assert telegram.INSTANTANEOUS_POWER_FACTOR_L2.unit is None
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L2.value, Decimal)
|
assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L2.value, Decimal)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L2.value == Decimal('4.542')
|
assert telegram.INSTANTANEOUS_POWER_FACTOR_L2.value == Decimal('4.542')
|
||||||
|
|
||||||
# EON_HU_INSTANTANEOUS_POWER_FACTOR_L3 (1-0:73.7.0)
|
# EON_HU_INSTANTANEOUS_POWER_FACTOR_L3 (1-0:73.7.0)
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L3, CosemObject)
|
assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L3, CosemObject)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L3.unit is None
|
assert telegram.INSTANTANEOUS_POWER_FACTOR_L3.unit is None
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L3.value, Decimal)
|
assert isinstance(telegram.INSTANTANEOUS_POWER_FACTOR_L3.value, Decimal)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_POWER_FACTOR_L3.value == Decimal('4.552')
|
assert telegram.INSTANTANEOUS_POWER_FACTOR_L3.value == Decimal('4.552')
|
||||||
|
|
||||||
# EON_HU_FREQUENCY (1-0:14.7.0)
|
# EON_HU_FREQUENCY (1-0:14.7.0)
|
||||||
assert isinstance(telegram.EON_HU_FREQUENCY, CosemObject)
|
assert isinstance(telegram.FREQUENCY, CosemObject)
|
||||||
assert telegram.EON_HU_FREQUENCY.unit == "Hz"
|
assert telegram.FREQUENCY.unit == "Hz"
|
||||||
assert isinstance(telegram.EON_HU_FREQUENCY.value, Decimal)
|
assert isinstance(telegram.FREQUENCY.value, Decimal)
|
||||||
assert telegram.EON_HU_FREQUENCY.value == Decimal('50.00')
|
assert telegram.FREQUENCY.value == Decimal('50.00')
|
||||||
|
|
||||||
# CURRENT_ELECTRICITY_USAGE (1-0:1.7.0)
|
# CURRENT_ELECTRICITY_USAGE (1-0:1.7.0)
|
||||||
assert isinstance(telegram.CURRENT_ELECTRICITY_USAGE, CosemObject)
|
assert isinstance(telegram.CURRENT_ELECTRICITY_USAGE, CosemObject)
|
||||||
@ -240,46 +240,46 @@ class TelegramParserV5EONHUTest(unittest.TestCase):
|
|||||||
assert telegram.CURRENT_ELECTRICITY_DELIVERY.value == Decimal('02.601')
|
assert telegram.CURRENT_ELECTRICITY_DELIVERY.value == Decimal('02.601')
|
||||||
|
|
||||||
# EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1 (1-0:5.7.0)
|
# EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1 (1-0:5.7.0)
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1, CosemObject)
|
assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q1, CosemObject)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1.unit == 'kvar'
|
assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q1.unit == 'kvar'
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1.value, Decimal)
|
assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q1.value, Decimal)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1.value == Decimal('00.000')
|
assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q1.value == Decimal('00.000')
|
||||||
|
|
||||||
# EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2 (1-0:6.7.0)
|
# EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2 (1-0:6.7.0)
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2, CosemObject)
|
assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q2, CosemObject)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2.unit == 'kvar'
|
assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q2.unit == 'kvar'
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2.value, Decimal)
|
assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q2.value, Decimal)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2.value == Decimal('00.000')
|
assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q2.value == Decimal('00.000')
|
||||||
|
|
||||||
# EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3 (1-0:7.7.0)
|
# EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3 (1-0:7.7.0)
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3, CosemObject)
|
assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q3, CosemObject)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3.unit == 'kvar'
|
assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q3.unit == 'kvar'
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3.value, Decimal)
|
assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q3.value, Decimal)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3.value == Decimal('00.504')
|
assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q3.value == Decimal('00.504')
|
||||||
|
|
||||||
# EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4 (1-0:8.7.0)
|
# EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4 (1-0:8.7.0)
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4, CosemObject)
|
assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q4, CosemObject)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4.unit == 'kvar'
|
assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q4.unit == 'kvar'
|
||||||
assert isinstance(telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4.value, Decimal)
|
assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q4.value, Decimal)
|
||||||
assert telegram.EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4.value == Decimal('00.000')
|
assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q4.value == Decimal('00.000')
|
||||||
|
|
||||||
# EON_HU_MAX_POWER_ON_L1 (1-0:31.4.0)
|
# EON_HU_MAX_POWER_ON_L1 (1-0:31.4.0)
|
||||||
assert isinstance(telegram.EON_HU_MAX_POWER_ON_L1, CosemObject)
|
assert isinstance(telegram.MAX_POWER_ON_L1, CosemObject)
|
||||||
assert telegram.EON_HU_MAX_POWER_ON_L1.unit == 'A'
|
assert telegram.MAX_POWER_ON_L1.unit == 'A'
|
||||||
assert isinstance(telegram.EON_HU_MAX_POWER_ON_L1.value, Decimal)
|
assert isinstance(telegram.MAX_POWER_ON_L1.value, Decimal)
|
||||||
assert telegram.EON_HU_MAX_POWER_ON_L1.value == Decimal('200.00')
|
assert telegram.MAX_POWER_ON_L1.value == Decimal('200.00')
|
||||||
|
|
||||||
# EON_HU_MAX_POWER_ON_L2 (1-0:31.4.0)
|
# EON_HU_MAX_POWER_ON_L2 (1-0:31.4.0)
|
||||||
assert isinstance(telegram.EON_HU_MAX_POWER_ON_L2, CosemObject)
|
assert isinstance(telegram.MAX_POWER_ON_L2, CosemObject)
|
||||||
assert telegram.EON_HU_MAX_POWER_ON_L2.unit == 'A'
|
assert telegram.MAX_POWER_ON_L2.unit == 'A'
|
||||||
assert isinstance(telegram.EON_HU_MAX_POWER_ON_L2.value, Decimal)
|
assert isinstance(telegram.MAX_POWER_ON_L2.value, Decimal)
|
||||||
assert telegram.EON_HU_MAX_POWER_ON_L2.value == Decimal('200.00')
|
assert telegram.MAX_POWER_ON_L2.value == Decimal('200.00')
|
||||||
|
|
||||||
# EON_HU_MAX_POWER_ON_L3 (1-0:31.4.0)
|
# EON_HU_MAX_POWER_ON_L3 (1-0:31.4.0)
|
||||||
assert isinstance(telegram.EON_HU_MAX_POWER_ON_L3, CosemObject)
|
assert isinstance(telegram.MAX_POWER_ON_L3, CosemObject)
|
||||||
assert telegram.EON_HU_MAX_POWER_ON_L3.unit == 'A'
|
assert telegram.MAX_POWER_ON_L3.unit == 'A'
|
||||||
assert isinstance(telegram.EON_HU_MAX_POWER_ON_L3.value, Decimal)
|
assert isinstance(telegram.MAX_POWER_ON_L3.value, Decimal)
|
||||||
assert telegram.EON_HU_MAX_POWER_ON_L3.value == Decimal('200.00')
|
assert telegram.MAX_POWER_ON_L3.value == Decimal('200.00')
|
||||||
|
|
||||||
# TEXT_MESSAGE (0-0:96.13.0)
|
# TEXT_MESSAGE (0-0:96.13.0)
|
||||||
assert isinstance(telegram.TEXT_MESSAGE, CosemObject)
|
assert isinstance(telegram.TEXT_MESSAGE, CosemObject)
|
||||||
|
Loading…
Reference in New Issue
Block a user