Compare commits

..
5 Commits
Author SHA1 Message Date
Nigel 06d2ae246e add workflow test for python 3.12 2024-01-29 14:24:48 +01:00
Nigel 391c3f7824 fix protocol unit test for python3.12 2024-01-29 14:22:31 +01:00
dupondje 739419e3ee Remove BELGIUM_MAX_POWER_PER_PHASE (#144)
This commit removes BELGIUM_MAX_POWER_PER_PHASE and uses
ACTUAL_TRESHOLD_ELECTRICITY as this has same regex. So useless to keep
the BELIUM variant.
2023-11-07 12:10:42 +01:00
Jean-Louis Dupond d2ff6f4bb9 Fix tests after FUSE_TRESHOLD rename 2023-11-06 15:10:36 +01:00
Jean-Louis Dupond a316d93082 Adjust the naming of the MAX_POWER and MAX_CURRENT obis values 2023-11-06 15:10:36 +01:00
7 changed files with 44 additions and 45 deletions
+1
View File
@@ -17,6 +17,7 @@ jobs:
- '3.9'
- '3.10'
- '3.11'
- '3.12'
name: Python ${{ matrix.python-version }}
steps:
+3 -4
View File
@@ -43,6 +43,9 @@ INSTANTANEOUS_VOLTAGE_L3 = r'^\d-\d:72\.7\.0.+?\r\n'
INSTANTANEOUS_CURRENT_L1 = r'^\d-\d:31\.7\.0.+?\r\n'
INSTANTANEOUS_CURRENT_L2 = r'^\d-\d:51\.7\.0.+?\r\n'
INSTANTANEOUS_CURRENT_L3 = r'^\d-\d:71\.7\.0.+?\r\n'
FUSE_THRESHOLD_L1 = r'^\d-\d:31\.4\.0.+?\r\n' # Applicable when current limitation is active
FUSE_THRESHOLD_L2 = r'^\d-\d:51\.4\.0.+?\r\n' # Applicable when current limitation is active
FUSE_THRESHOLD_L3 = r'^\d-\d:71\.4\.0.+?\r\n' # Applicable when current limitation is active
TEXT_MESSAGE_CODE = r'^\d-\d:96\.13\.1.+?\r\n'
TEXT_MESSAGE = r'^\d-\d:96\.13\.0.+?\r\n'
DEVICE_TYPE = r'^\d-\d:24\.1\.0.+?\r\n'
@@ -88,8 +91,6 @@ BELGIUM_EQUIPMENT_IDENTIFIER = r'^\d-0:96\.1\.1.+?\r\n'
BELGIUM_CURRENT_AVERAGE_DEMAND = r'^\d-\d:1\.4\.0.+?\r\n'
BELGIUM_MAXIMUM_DEMAND_MONTH = r'^\d-\d:1\.6\.0.+?\r\n'
BELGIUM_MAXIMUM_DEMAND_13_MONTHS = r'^\d-\d:98\.1\.0.+?\r\n'
BELGIUM_MAX_POWER_PER_PHASE = r'^\d-\d:17\.0\.0.+?\r\n' # Applicable when power limitation is active
BELGIUM_MAX_CURRENT_PER_PHASE = r'^\d-\d:31\.4\.0.+?\r\n' # Applicable when current limitation is active
# Multiple 'slaves' can be linked to the main device.
# Mostly MBUS1 = GAS METER with values on 24.2.3
@@ -142,5 +143,3 @@ EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q1 = r'^\d-\d:5\.7\.0.+?\r\n'
EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q2 = r'^\d-\d:6\.7\.0.+?\r\n'
EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q3 = r'^\d-\d:7\.7\.0.+?\r\n'
EON_HU_INSTANTANEOUS_REACTIVE_POWER_Q4 = r'^\d-\d:8\.7\.0.+?\r\n'
EON_HU_MAX_POWER_ON_L2 = r'^\d-\d:51\.4\.0.+?\r\n'
EON_HU_MAX_POWER_ON_L3 = r'^\d-\d:71\.4\.0.+?\r\n'
+11 -11
View File
@@ -625,14 +625,14 @@ BELGIUM_FLUVIUS = {
'value_name': 'ACTUAL_TRESHOLD_ELECTRICITY'
},
{
'obis_reference': obis.BELGIUM_MAX_POWER_PER_PHASE,
'obis_reference': obis.ACTUAL_TRESHOLD_ELECTRICITY,
'value_parser': CosemParser(ValueParser(Decimal)),
'value_name': 'BELGIUM_MAX_POWER_PER_PHASE'
'value_name': 'ACTUAL_TRESHOLD_ELECTRICITY'
},
{
'obis_reference': obis.BELGIUM_MAX_CURRENT_PER_PHASE,
'obis_reference': obis.FUSE_THRESHOLD_L1,
'value_parser': CosemParser(ValueParser(Decimal)),
'value_name': 'BELGIUM_MAX_CURRENT_PER_PHASE'
'value_name': 'FUSE_THRESHOLD_L1'
},
{
'obis_reference': obis.TEXT_MESSAGE,
@@ -1233,7 +1233,7 @@ EON_HUNGARY = {
# This seems to be wrong in documentation, it's not 0-0:96.50.68, but 0-0:96.3.10
},
{
'obis_reference': obis.BELGIUM_MAX_POWER_PER_PHASE,
'obis_reference': obis.ACTUAL_TRESHOLD_ELECTRICITY,
'value_parser': CosemParser(ValueParser(Decimal)),
'value_name': 'ACTUAL_TRESHOLD_ELECTRICITY'
},
@@ -1414,20 +1414,20 @@ EON_HUNGARY = {
'value_name': 'INSTANTANEOUS_REACTIVE_POWER_Q4'
},
{
'obis_reference': obis.BELGIUM_MAX_CURRENT_PER_PHASE,
'obis_reference': obis.FUSE_THRESHOLD_L1,
'value_parser': CosemParser(ValueParser(Decimal)),
'value_name': 'MAX_POWER_ON_L1'
'value_name': 'FUSE_THRESHOLD_L1'
},
{
'obis_reference': obis.EON_HU_MAX_POWER_ON_L2,
'obis_reference': obis.FUSE_THRESHOLD_L2,
'value_parser': CosemParser(ValueParser(Decimal)),
'value_name': 'MAX_POWER_ON_L2'
'value_name': 'FUSE_THRESHOLD_L2'
# Only with 3 phase meters
},
{
'obis_reference': obis.EON_HU_MAX_POWER_ON_L3,
'obis_reference': obis.FUSE_THRESHOLD_L3,
'value_parser': CosemParser(ValueParser(Decimal)),
'value_name': 'MAX_POWER_ON_L3'
'value_name': 'FUSE_THRESHOLD_L3'
# Only with 3 phase meters
},
# I'm not sure which datas does this line containes. It should be the data of last minute of last month.
+12 -14
View File
@@ -211,17 +211,17 @@ class TelegramParserFluviusTest(unittest.TestCase):
assert isinstance(result.ACTUAL_SWITCH_POSITION.value, int)
assert result.ACTUAL_SWITCH_POSITION.value == 1
# BELGIUM_MAX_POWER_PER_PHASE (0-0:17.0.0)
assert isinstance(result.BELGIUM_MAX_POWER_PER_PHASE, CosemObject)
assert result.BELGIUM_MAX_POWER_PER_PHASE.unit == 'kW'
assert isinstance(result.BELGIUM_MAX_POWER_PER_PHASE.value, Decimal)
assert result.BELGIUM_MAX_POWER_PER_PHASE.value == Decimal('999.9')
# ACTUAL_TRESHOLD_ELECTRICITY (0-0:17.0.0)
assert isinstance(result.ACTUAL_TRESHOLD_ELECTRICITY, CosemObject)
assert result.ACTUAL_TRESHOLD_ELECTRICITY.unit == 'kW'
assert isinstance(result.ACTUAL_TRESHOLD_ELECTRICITY.value, Decimal)
assert result.ACTUAL_TRESHOLD_ELECTRICITY.value == Decimal('999.9')
# BELGIUM_MAX_POWER_PER_PHASE (1-0:31.4.0)
assert isinstance(result.BELGIUM_MAX_CURRENT_PER_PHASE, CosemObject)
assert result.BELGIUM_MAX_CURRENT_PER_PHASE.unit == 'A'
assert isinstance(result.BELGIUM_MAX_CURRENT_PER_PHASE.value, Decimal)
assert result.BELGIUM_MAX_CURRENT_PER_PHASE.value == Decimal('999')
# FUSE_THRESHOLD_L1 (1-0:31.4.0)
assert isinstance(result.FUSE_THRESHOLD_L1, CosemObject)
assert result.FUSE_THRESHOLD_L1.unit == 'A'
assert isinstance(result.FUSE_THRESHOLD_L1.value, Decimal)
assert result.FUSE_THRESHOLD_L1.value == Decimal('999')
# TEXT_MESSAGE (0-0:96.13.0)
assert isinstance(result.TEXT_MESSAGE, CosemObject)
@@ -336,8 +336,7 @@ class TelegramParserFluviusTest(unittest.TestCase):
'INSTANTANEOUS_CURRENT_L3': {'value': 0.52, 'unit': 'A'},
'ACTUAL_SWITCH_POSITION': {'value': 1, 'unit': None},
'ACTUAL_TRESHOLD_ELECTRICITY': {'value': 999.9, 'unit': 'kW'},
'BELGIUM_MAX_POWER_PER_PHASE': {'value': 999.9, 'unit': 'kW'},
'BELGIUM_MAX_CURRENT_PER_PHASE': {'value': 999.0, 'unit': 'A'},
'FUSE_THRESHOLD_L1': {'value': 999.0, 'unit': 'A'},
'TEXT_MESSAGE': {'value': None, 'unit': None},
'BELGIUM_MBUS1_DEVICE_TYPE': {'value': 3, 'unit': None},
'MBUS_DEVICES': [{'BELGIUM_MBUS1_DEVICE_TYPE': {'value': 3, 'unit': None},
@@ -398,8 +397,7 @@ class TelegramParserFluviusTest(unittest.TestCase):
'INSTANTANEOUS_CURRENT_L3: 0.52 [A]\n'
'ACTUAL_SWITCH_POSITION: 1 [None]\n'
'ACTUAL_TRESHOLD_ELECTRICITY: 999.9 [kW]\n'
'BELGIUM_MAX_POWER_PER_PHASE: 999.9 [kW]\n'
'BELGIUM_MAX_CURRENT_PER_PHASE: 999 [A]\n'
'FUSE_THRESHOLD_L1: 999 [A]\n'
'TEXT_MESSAGE: None [None]\n'
'BELGIUM_MBUS1_DEVICE_TYPE: 3 [None]\n'
'MBUS DEVICE (channel 1)\n'
+15 -15
View File
@@ -263,23 +263,23 @@ class TelegramParserV5EONHUTest(unittest.TestCase):
assert isinstance(telegram.INSTANTANEOUS_REACTIVE_POWER_Q4.value, Decimal)
assert telegram.INSTANTANEOUS_REACTIVE_POWER_Q4.value == Decimal('00.000')
# EON_HU_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')
# FUSE_THRESHOLD_L1 (1-0:31.4.0)
assert isinstance(telegram.FUSE_THRESHOLD_L1, CosemObject)
assert telegram.FUSE_THRESHOLD_L1.unit == 'A'
assert isinstance(telegram.FUSE_THRESHOLD_L1.value, Decimal)
assert telegram.FUSE_THRESHOLD_L1.value == Decimal('200.00')
# EON_HU_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')
# FUSE_THRESHOLD_L2 (1-0:31.4.0)
assert isinstance(telegram.FUSE_THRESHOLD_L2, CosemObject)
assert telegram.FUSE_THRESHOLD_L2.unit == 'A'
assert isinstance(telegram.FUSE_THRESHOLD_L2.value, Decimal)
assert telegram.FUSE_THRESHOLD_L2.value == Decimal('200.00')
# EON_HU_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')
# FUSE_THRESHOLD_L3 (1-0:31.4.0)
assert isinstance(telegram.FUSE_THRESHOLD_L3, CosemObject)
assert telegram.FUSE_THRESHOLD_L3.unit == 'A'
assert isinstance(telegram.FUSE_THRESHOLD_L3.value, Decimal)
assert telegram.FUSE_THRESHOLD_L3.value == Decimal('200.00')
# TEXT_MESSAGE (0-0:96.13.0)
assert isinstance(telegram.TEXT_MESSAGE, CosemObject)
+1 -1
View File
@@ -68,6 +68,6 @@ class ProtocolTest(unittest.TestCase):
# 2nd call of keep_alive should close the transport
self.protocol.keep_alive()
assert mock_transport.close.called_once()
mock_transport.close.assert_called_once()
self.protocol.connection_lost(None)
+1
View File
@@ -6,6 +6,7 @@ deps=
pytest-asyncio
pytest-mock
dlms_cosem
setuptools
commands=
py.test --cov=dsmr_parser test {posargs}
pylama dsmr_parser test