From 9c679bafe287f1d8d6e301907377ec7c6a94a616 Mon Sep 17 00:00:00 2001
From: Jean-Louis Dupond <jean-louis@dupond.be>
Date: Wed, 25 Oct 2023 10:38:38 +0200
Subject: [PATCH] Change default V5 to mbus

At least the BE and the NL DSMR devices use MBUS.
Therefor we make the MBUS obis reference generic, and convert the V5
telegram to use MBUS values.

Also remove BELGIUM_MAX_POWER_PER_PHASE as this was a duplicate.

Finally set self.maxDiff = None to have a full test output on some
tests.
---
 dsmr_parser/obis_references.py         |  73 +++++----
 dsmr_parser/telegram_specifications.py | 215 ++++++++++++++++++-------
 test/objects/test_mbusdevice.py        |  42 ++---
 test/objects/test_telegram.py          |  98 ++++++-----
 test/test_parse_fluvius.py             |  80 ++++-----
 test/test_parse_v5.py                  |  46 +++---
 6 files changed, 334 insertions(+), 220 deletions(-)

diff --git a/dsmr_parser/obis_references.py b/dsmr_parser/obis_references.py
index 83d3b8b..ac5c5a5 100644
--- a/dsmr_parser/obis_references.py
+++ b/dsmr_parser/obis_references.py
@@ -69,8 +69,48 @@ ACTUAL_TRESHOLD_ELECTRICITY = r'^\d-\d:17\.0\.0.+?\r\n'
 ACTUAL_SWITCH_POSITION = r'^\d-\d:96\.3\.10.+?\r\n'
 VALVE_POSITION_GAS = r'^\d-\d:24\.4\.0.+?\r\n'
 
+# Multiple 'slaves' can be linked to the main device.
+# The type is reported on 24.1.0
+# Specifications are in EN 13757-3
+# For example: Water mater = 7, Gas meter = 3
+# Identifier is on 96.1.0 (in NL for ex) or
+# on 96.1.1 (in BE for ex)
+# The values are reported on 24.2.1
+# With an exception in Belgium for the GAS meter
+# Be aware that for the gas volume, another OBIS-code is published
+# than the one listed in section 7 of DSMR P1.
+# This is due to the fact that in Belgium the not-temperature
+# corrected gas volume is used while in the Netherlands,
+# the temperature corrected gas volume is used.
+MBUS1_DEVICE_TYPE = r'^\d-1:24\.1\.0.+?\r\n'
+MBUS1_EQUIPMENT_IDENTIFIER = r'^\d-1:96\.1\.0.+?\r\n'
+MBUS1_EQUIPMENT_IDENTIFIER_ALT = r'^\d-1:96\.1\.1.+?\r\n'
+MBUS1_VALVE_POSITION = r'^\d-1:24\.4\.0.+?\r\n'
+MBUS1_METER_READING = r'^\d-1:24\.2\.1.+?\r\n'
+MBUS1_METER_READING_ALT = r'^\d-1:24\.2\.3.+?\r\n'
+
+MBUS2_DEVICE_TYPE = r'^\d-2:24\.1\.0.+?\r\n'
+MBUS2_EQUIPMENT_IDENTIFIER = r'^\d-2:96\.1\.0.+?\r\n'
+MBUS2_EQUIPMENT_IDENTIFIER_ALT = r'^\d-2:96\.1\.1.+?\r\n'
+MBUS2_VALVE_POSITION = r'^\d-2:24\.4\.0.+?\r\n'
+MBUS2_METER_READING = r'^\d-2:24\.2\.1.+?\r\n'
+MBUS2_METER_READING_ALT = r'^\d-2:24\.2\.3.+?\r\n'
+
+MBUS3_DEVICE_TYPE = r'^\d-3:24\.1\.0.+?\r\n'
+MBUS3_EQUIPMENT_IDENTIFIER = r'^\d-3:96\.1\.0.+?\r\n'
+MBUS3_EQUIPMENT_IDENTIFIER_ALT = r'^\d-3:96\.1\.1.+?\r\n'
+MBUS3_VALVE_POSITION = r'^\d-3:24\.4\.0.+?\r\n'
+MBUS3_METER_READING = r'^\d-3:24\.2\.1.+?\r\n'
+MBUS3_METER_READING_ALT = r'^\d-3:24\.2\.3.+?\r\n'
+
+MBUS4_DEVICE_TYPE = r'^\d-4:24\.1\.0.+?\r\n'
+MBUS4_EQUIPMENT_IDENTIFIER = r'^\d-4:96\.1\.0.+?\r\n'
+MBUS4_EQUIPMENT_IDENTIFIER_ALT = r'^\d-4:96\.1\.1.+?\r\n'
+MBUS4_VALVE_POSITION = r'^\d-4:24\.4\.0.+?\r\n'
+MBUS4_METER_READING = r'^\d-4:24\.2\.1.+?\r\n'
+MBUS4_METER_READING_ALT = r'^\d-4:24\.2\.3.+?\r\n'
+
 # TODO 17.0.0
-# TODO 96.3.10
 
 ELECTRICITY_USED_TARIFF_ALL = (
     ELECTRICITY_USED_TARIFF_1,
@@ -91,37 +131,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
-
-# Multiple 'slaves' can be linked to the main device.
-# Mostly MBUS1 = GAS METER with values on 24.2.3
-# While WATER METER reports it's values on 24.2.1
-# The GAS METER also reports its valve state on 24.4.0
-# Dev type for gas = 7 and water = 8
-BELGIUM_MBUS1_DEVICE_TYPE = r'^\d-1:24\.1\.0.+?\r\n'
-BELGIUM_MBUS1_EQUIPMENT_IDENTIFIER = r'^\d-1:96\.1\.1.+?\r\n'
-BELGIUM_MBUS1_VALVE_POSITION = r'^\d-1:24\.4\.0.+?\r\n'
-BELGIUM_MBUS1_METER_READING1 = r'^\d-1:24\.2\.1.+?\r\n'
-BELGIUM_MBUS1_METER_READING2 = r'^\d-1:24\.2\.3.+?\r\n'
-
-BELGIUM_MBUS2_DEVICE_TYPE = r'^\d-2:24\.1\.0.+?\r\n'
-BELGIUM_MBUS2_EQUIPMENT_IDENTIFIER = r'^\d-2:96\.1\.1.+?\r\n'
-BELGIUM_MBUS2_VALVE_POSITION = r'^\d-2:24\.4\.0.+?\r\n'
-BELGIUM_MBUS2_METER_READING1 = r'^\d-2:24\.2\.1.+?\r\n'
-BELGIUM_MBUS2_METER_READING2 = r'^\d-2:24\.2\.3.+?\r\n'
-
-BELGIUM_MBUS3_DEVICE_TYPE = r'^\d-3:24\.1\.0.+?\r\n'
-BELGIUM_MBUS3_EQUIPMENT_IDENTIFIER = r'^\d-3:96\.1\.1.+?\r\n'
-BELGIUM_MBUS3_VALVE_POSITION = r'^\d-3:24\.4\.0.+?\r\n'
-BELGIUM_MBUS3_METER_READING1 = r'^\d-3:24\.2\.1.+?\r\n'
-BELGIUM_MBUS3_METER_READING2 = r'^\d-3:24\.2\.3.+?\r\n'
-
-BELGIUM_MBUS4_DEVICE_TYPE = r'^\d-4:24\.1\.0.+?\r\n'
-BELGIUM_MBUS4_EQUIPMENT_IDENTIFIER = r'^\d-4:96\.1\.1.+?\r\n'
-BELGIUM_MBUS4_VALVE_POSITION = r'^\d-4:24\.4\.0.+?\r\n'
-BELGIUM_MBUS4_METER_READING1 = r'^\d-4:24\.2\.1.+?\r\n'
-BELGIUM_MBUS4_METER_READING2 = r'^\d-4:24\.2\.3.+?\r\n'
-
 
 LUXEMBOURG_EQUIPMENT_IDENTIFIER = r'^\d-\d:42\.0\.0.+?\r\n'  # Logical device name
 
diff --git a/dsmr_parser/telegram_specifications.py b/dsmr_parser/telegram_specifications.py
index ee54b0a..1e39029 100644
--- a/dsmr_parser/telegram_specifications.py
+++ b/dsmr_parser/telegram_specifications.py
@@ -430,11 +430,6 @@ V5 = {
             'value_parser': CosemParser(ValueParser(str)),
             'value_name': 'TEXT_MESSAGE'
         },
-        {
-            'obis_reference': obis.DEVICE_TYPE,
-            'value_parser': CosemParser(ValueParser(int)),
-            'value_name': 'DEVICE_TYPE'
-        },
         {
             'obis_reference': obis.INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE,
             'value_parser': CosemParser(ValueParser(Decimal)),
@@ -466,17 +461,128 @@ V5 = {
             'value_name': 'INSTANTANEOUS_ACTIVE_POWER_L3_NEGATIVE'
         },
         {
-            'obis_reference': obis.EQUIPMENT_IDENTIFIER_GAS,
-            'value_parser': CosemParser(ValueParser(str)),
-            'value_name': 'EQUIPMENT_IDENTIFIER_GAS'
+            'obis_reference': obis.MBUS1_DEVICE_TYPE,
+            'value_parser': CosemParser(ValueParser(int)),
+            'value_name': 'MBUS1_DEVICE_TYPE'
         },
         {
-            'obis_reference': obis.HOURLY_GAS_METER_READING,
-            'value_parser':  MBusParser(
+            'obis_reference': obis.MBUS1_EQUIPMENT_IDENTIFIER,
+            'value_parser': CosemParser(ValueParser(str)),
+            'value_name': 'MBUS1_EQUIPMENT_IDENTIFIER'
+        },
+        {
+            'obis_reference': obis.MBUS1_VALVE_POSITION,
+            'value_parser': CosemParser(ValueParser(int)),
+            'value_name': 'MBUS1_VALVE_POSITION'
+        },
+        {
+            'obis_reference': obis.MBUS1_METER_READING,
+            'value_parser': MBusParser(
                 ValueParser(timestamp),
                 ValueParser(Decimal)
             ),
-            'value_name': 'HOURLY_GAS_METER_READING'
+            'value_name': 'MBUS1_METER_READING'
+        },
+        {
+            'obis_reference': obis.MBUS1_METER_READING_ALT,
+            'value_parser': MBusParser(
+                ValueParser(timestamp),
+                ValueParser(Decimal)
+            ),
+            'value_name': 'MBUS1_METER_READING_ALT'
+        },
+        {
+            'obis_reference': obis.MBUS2_DEVICE_TYPE,
+            'value_parser': CosemParser(ValueParser(int)),
+            'value_name': 'MBUS2_DEVICE_TYPE'
+        },
+        {
+            'obis_reference': obis.MBUS2_EQUIPMENT_IDENTIFIER,
+            'value_parser': CosemParser(ValueParser(str)),
+            'value_name': 'MBUS2_EQUIPMENT_IDENTIFIER'
+        },
+        {
+            'obis_reference': obis.MBUS2_VALVE_POSITION,
+            'value_parser': CosemParser(ValueParser(int)),
+            'value_name': 'MBUS2_VALVE_POSITION'
+        },
+        {
+            'obis_reference': obis.MBUS2_METER_READING,
+            'value_parser': MBusParser(
+                ValueParser(timestamp),
+                ValueParser(Decimal)
+            ),
+            'value_name': 'MBUS2_METER_READING'
+        },
+        {
+            'obis_reference': obis.MBUS2_METER_READING_ALT,
+            'value_parser': MBusParser(
+                ValueParser(timestamp),
+                ValueParser(Decimal)
+            ),
+            'value_name': 'MBUS2_METER_READING_ALT'
+        },
+        {
+            'obis_reference': obis.MBUS3_DEVICE_TYPE,
+            'value_parser': CosemParser(ValueParser(int)),
+            'value_name': 'MBUS3_DEVICE_TYPE'
+        },
+        {
+            'obis_reference': obis.MBUS3_EQUIPMENT_IDENTIFIER,
+            'value_parser': CosemParser(ValueParser(str)),
+            'value_name': 'MBUS3_EQUIPMENT_IDENTIFIER'
+        },
+        {
+            'obis_reference': obis.MBUS3_VALVE_POSITION,
+            'value_parser': CosemParser(ValueParser(int)),
+            'value_name': 'MBUS3_VALVE_POSITION'
+        },
+        {
+            'obis_reference': obis.MBUS3_METER_READING,
+            'value_parser': MBusParser(
+                ValueParser(timestamp),
+                ValueParser(Decimal)
+            ),
+            'value_name': 'MBUS3_METER_READING'
+        },
+        {
+            'obis_reference': obis.MBUS3_METER_READING_ALT,
+            'value_parser': MBusParser(
+                ValueParser(timestamp),
+                ValueParser(Decimal)
+            ),
+            'value_name': 'MBUS3_METER_READING_ALT'
+        },
+        {
+            'obis_reference': obis.MBUS4_DEVICE_TYPE,
+            'value_parser': CosemParser(ValueParser(int)),
+            'value_name': 'MBUS4_DEVICE_TYPE'
+        },
+        {
+            'obis_reference': obis.MBUS4_EQUIPMENT_IDENTIFIER,
+            'value_parser': CosemParser(ValueParser(str)),
+            'value_name': 'MBUS4_EQUIPMENT_IDENTIFIER'
+        },
+        {
+            'obis_reference': obis.MBUS4_VALVE_POSITION,
+            'value_parser': CosemParser(ValueParser(int)),
+            'value_name': 'MBUS4_VALVE_POSITION'
+        },
+        {
+            'obis_reference': obis.MBUS4_METER_READING,
+            'value_parser': MBusParser(
+                ValueParser(timestamp),
+                ValueParser(Decimal)
+            ),
+            'value_name': 'MBUS4_METER_READING'
+        },
+        {
+            'obis_reference': obis.MBUS4_METER_READING_ALT,
+            'value_parser': MBusParser(
+                ValueParser(timestamp),
+                ValueParser(Decimal)
+            ),
+            'value_name': 'MBUS4_METER_READING_ALT'
         },
     ]
 }
@@ -624,11 +730,6 @@ BELGIUM_FLUVIUS = {
             'value_parser': CosemParser(ValueParser(Decimal)),
             'value_name': 'ACTUAL_TRESHOLD_ELECTRICITY'
         },
-        {
-            'obis_reference': obis.BELGIUM_MAX_POWER_PER_PHASE,
-            'value_parser': CosemParser(ValueParser(Decimal)),
-            'value_name': 'BELGIUM_MAX_POWER_PER_PHASE'
-        },
         {
             'obis_reference': obis.FUSE_THRESHOLD_L1,
             'value_parser': CosemParser(ValueParser(Decimal)),
@@ -640,128 +741,128 @@ BELGIUM_FLUVIUS = {
             'value_name': 'TEXT_MESSAGE'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS1_DEVICE_TYPE,
+            'obis_reference': obis.MBUS1_DEVICE_TYPE,
             'value_parser': CosemParser(ValueParser(int)),
-            'value_name': 'BELGIUM_MBUS1_DEVICE_TYPE'
+            'value_name': 'MBUS1_DEVICE_TYPE'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS1_EQUIPMENT_IDENTIFIER,
+            'obis_reference': obis.MBUS1_EQUIPMENT_IDENTIFIER_ALT,
             'value_parser': CosemParser(ValueParser(str)),
-            'value_name': 'BELGIUM_MBUS1_EQUIPMENT_IDENTIFIER'
+            'value_name': 'MBUS1_EQUIPMENT_IDENTIFIER_ALT'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS1_VALVE_POSITION,
+            'obis_reference': obis.MBUS1_VALVE_POSITION,
             'value_parser': CosemParser(ValueParser(int)),
-            'value_name': 'BELGIUM_MBUS1_VALVE_POSITION'
+            'value_name': 'MBUS1_VALVE_POSITION'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS1_METER_READING1,
+            'obis_reference': obis.MBUS1_METER_READING,
             'value_parser': MBusParser(
                 ValueParser(timestamp),
                 ValueParser(Decimal)
             ),
-            'value_name': 'BELGIUM_MBUS1_METER_READING1'
+            'value_name': 'MBUS1_METER_READING'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS1_METER_READING2,
+            'obis_reference': obis.MBUS1_METER_READING_ALT,
             'value_parser': MBusParser(
                 ValueParser(timestamp),
                 ValueParser(Decimal)
             ),
-            'value_name': 'BELGIUM_MBUS1_METER_READING2'
+            'value_name': 'MBUS1_METER_READING_ALT'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS2_DEVICE_TYPE,
+            'obis_reference': obis.MBUS2_DEVICE_TYPE,
             'value_parser': CosemParser(ValueParser(int)),
-            'value_name': 'BELGIUM_MBUS2_DEVICE_TYPE'
+            'value_name': 'MBUS2_DEVICE_TYPE'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS2_EQUIPMENT_IDENTIFIER,
+            'obis_reference': obis.MBUS2_EQUIPMENT_IDENTIFIER_ALT,
             'value_parser': CosemParser(ValueParser(str)),
-            'value_name': 'BELGIUM_MBUS2_EQUIPMENT_IDENTIFIER'
+            'value_name': 'MBUS2_EQUIPMENT_IDENTIFIER_ALT'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS2_VALVE_POSITION,
+            'obis_reference': obis.MBUS2_VALVE_POSITION,
             'value_parser': CosemParser(ValueParser(int)),
-            'value_name': 'BELGIUM_MBUS2_VALVE_POSITION'
+            'value_name': 'MBUS2_VALVE_POSITION'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS2_METER_READING1,
+            'obis_reference': obis.MBUS2_METER_READING,
             'value_parser': MBusParser(
                 ValueParser(timestamp),
                 ValueParser(Decimal)
             ),
-            'value_name': 'BELGIUM_MBUS2_METER_READING1'
+            'value_name': 'MBUS2_METER_READING'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS2_METER_READING2,
+            'obis_reference': obis.MBUS2_METER_READING_ALT,
             'value_parser': MBusParser(
                 ValueParser(timestamp),
                 ValueParser(Decimal)
             ),
-            'value_name': 'BELGIUM_MBUS2_METER_READING2'
+            'value_name': 'MBUS2_METER_READING_ALT'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS3_DEVICE_TYPE,
+            'obis_reference': obis.MBUS3_DEVICE_TYPE,
             'value_parser': CosemParser(ValueParser(int)),
-            'value_name': 'BELGIUM_MBUS3_DEVICE_TYPE'
+            'value_name': 'MBUS3_DEVICE_TYPE'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS3_EQUIPMENT_IDENTIFIER,
+            'obis_reference': obis.MBUS3_EQUIPMENT_IDENTIFIER_ALT,
             'value_parser': CosemParser(ValueParser(str)),
-            'value_name': 'BELGIUM_MBUS3_EQUIPMENT_IDENTIFIER'
+            'value_name': 'MBUS3_EQUIPMENT_IDENTIFIER_ALT'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS3_VALVE_POSITION,
+            'obis_reference': obis.MBUS3_VALVE_POSITION,
             'value_parser': CosemParser(ValueParser(int)),
-            'value_name': 'BELGIUM_MBUS3_VALVE_POSITION'
+            'value_name': 'MBUS3_VALVE_POSITION'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS3_METER_READING1,
+            'obis_reference': obis.MBUS3_METER_READING,
             'value_parser': MBusParser(
                 ValueParser(timestamp),
                 ValueParser(Decimal)
             ),
-            'value_name': 'BELGIUM_MBUS3_METER_READING1'
+            'value_name': 'MBUS3_METER_READING'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS3_METER_READING2,
+            'obis_reference': obis.MBUS3_METER_READING_ALT,
             'value_parser': MBusParser(
                 ValueParser(timestamp),
                 ValueParser(Decimal)
             ),
-            'value_name': 'BELGIUM_MBUS3_METER_READING2'
+            'value_name': 'MBUS3_METER_READING_ALT'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS4_DEVICE_TYPE,
+            'obis_reference': obis.MBUS4_DEVICE_TYPE,
             'value_parser': CosemParser(ValueParser(int)),
-            'value_name': 'BELGIUM_MBUS4_DEVICE_TYPE'
+            'value_name': 'MBUS4_DEVICE_TYPE'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS4_EQUIPMENT_IDENTIFIER,
+            'obis_reference': obis.MBUS4_EQUIPMENT_IDENTIFIER_ALT,
             'value_parser': CosemParser(ValueParser(str)),
-            'value_name': 'BELGIUM_MBUS4_EQUIPMENT_IDENTIFIER'
+            'value_name': 'MBUS4_EQUIPMENT_IDENTIFIER_ALT'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS4_VALVE_POSITION,
+            'obis_reference': obis.MBUS4_VALVE_POSITION,
             'value_parser': CosemParser(ValueParser(int)),
-            'value_name': 'BELGIUM_MBUS4_VALVE_POSITION'
+            'value_name': 'MBUS4_VALVE_POSITION'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS4_METER_READING1,
+            'obis_reference': obis.MBUS4_METER_READING,
             'value_parser': MBusParser(
                 ValueParser(timestamp),
                 ValueParser(Decimal)
             ),
-            'value_name': 'BELGIUM_MBUS4_METER_READING1'
+            'value_name': 'MBUS4_METER_READING'
         },
         {
-            'obis_reference': obis.BELGIUM_MBUS4_METER_READING2,
+            'obis_reference': obis.MBUS4_METER_READING_ALT,
             'value_parser': MBusParser(
                 ValueParser(timestamp),
                 ValueParser(Decimal)
             ),
-            'value_name': 'BELGIUM_MBUS4_METER_READING2'
+            'value_name': 'MBUS4_METER_READING_ALT'
         },
     ]
 }
@@ -1233,7 +1334,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'
         },
diff --git a/test/objects/test_mbusdevice.py b/test/objects/test_mbusdevice.py
index 03fde3f..7a88174 100644
--- a/test/objects/test_mbusdevice.py
+++ b/test/objects/test_mbusdevice.py
@@ -15,59 +15,59 @@ class MbusDeviceTest(unittest.TestCase):
         device_type_parser = [
             object["value_parser"]
             for object in v5_objects
-            if object["obis_reference"] == obis_references.DEVICE_TYPE
+            if object["obis_reference"] == obis_references.MBUS2_DEVICE_TYPE
         ][0]
         device_type = device_type_parser.parse('0-2:24.1.0(003)\r\n')
 
         equipment_parser = [
             object["value_parser"]
             for object in v5_objects
-            if object["obis_reference"] == obis_references.EQUIPMENT_IDENTIFIER_GAS
+            if object["obis_reference"] == obis_references.MBUS2_EQUIPMENT_IDENTIFIER
         ][0]
         equipment = equipment_parser.parse('0-2:96.1.0(4730303339303031393336393930363139)\r\n')
 
         gas_reading_parser = [
             object["value_parser"]
             for object in v5_objects
-            if object["obis_reference"] == obis_references.HOURLY_GAS_METER_READING
+            if object["obis_reference"] == obis_references.MBUS2_METER_READING
         ][0]
         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.add(obis_references.DEVICE_TYPE, device_type, "DEVICE_TYPE")
-        mbus_device.add(obis_references.EQUIPMENT_IDENTIFIER_GAS, equipment, "EQUIPMENT_IDENTIFIER_GAS")
-        mbus_device.add(obis_references.HOURLY_GAS_METER_READING, gas_reading, "HOURLY_GAS_METER_READING")
+        mbus_device = MbusDevice(channel_id=2)
+        mbus_device.add(obis_references.MBUS2_DEVICE_TYPE, device_type, "MBUS2_DEVICE_TYPE")
+        mbus_device.add(obis_references.MBUS2_EQUIPMENT_IDENTIFIER, equipment, "MBUS2_EQUIPMENT_IDENTIFIER")
+        mbus_device.add(obis_references.MBUS2_METER_READING, gas_reading, "MBUS2_METER_READING")
 
         self.mbus_device = mbus_device
 
     def test_attributes(self):
-        self.assertEqual(self.mbus_device.DEVICE_TYPE.value, 3)
-        self.assertEqual(self.mbus_device.DEVICE_TYPE.unit, None)
+        self.assertEqual(self.mbus_device.MBUS2_DEVICE_TYPE.value, 3)
+        self.assertEqual(self.mbus_device.MBUS2_DEVICE_TYPE.unit, None)
 
-        self.assertEqual(self.mbus_device.EQUIPMENT_IDENTIFIER_GAS.value,
+        self.assertEqual(self.mbus_device.MBUS2_EQUIPMENT_IDENTIFIER.value,
                          '4730303339303031393336393930363139')
-        self.assertEqual(self.mbus_device.EQUIPMENT_IDENTIFIER_GAS.unit, None)
+        self.assertEqual(self.mbus_device.MBUS2_EQUIPMENT_IDENTIFIER.unit, None)
 
-        self.assertEqual(self.mbus_device.HOURLY_GAS_METER_READING.value, Decimal('246.138'))
-        self.assertEqual(self.mbus_device.HOURLY_GAS_METER_READING.unit, 'm3')
+        self.assertEqual(self.mbus_device.MBUS2_METER_READING.value, Decimal('246.138'))
+        self.assertEqual(self.mbus_device.MBUS2_METER_READING.unit, 'm3')
 
     def test_to_json(self):
         self.assertEqual(
             json.loads(self.mbus_device.to_json()),
             {
-                'CHANNEL_ID': 1,
-                'DEVICE_TYPE': {'value': 3, 'unit': None},
-                'EQUIPMENT_IDENTIFIER_GAS': {'value': '4730303339303031393336393930363139', 'unit': None},
-                'HOURLY_GAS_METER_READING': {'datetime': '2020-04-26T20:30:01+00:00', 'value': 246.138, 'unit': 'm3'}}
+                'CHANNEL_ID': 2,
+                'MBUS2_DEVICE_TYPE': {'value': 3, 'unit': None},
+                'MBUS2_EQUIPMENT_IDENTIFIER': {'value': '4730303339303031393336393930363139', 'unit': None},
+                'MBUS2_METER_READING': {'datetime': '2020-04-26T20:30:01+00:00', 'value': 246.138, 'unit': 'm3'}}
         )
 
     def test_str(self):
         self.assertEqual(
             str(self.mbus_device),
             (
-                'MBUS DEVICE (channel 1)\n'
-                '\tDEVICE_TYPE: 	 3	[None]\n'
-                '\tEQUIPMENT_IDENTIFIER_GAS: 	 4730303339303031393336393930363139	[None]\n'
-                '\tHOURLY_GAS_METER_READING: 	 246.138	[m3] at 2020-04-26T20:30:01+00:00\n'
+                'MBUS DEVICE (channel 2)\n'
+                '\tMBUS2_DEVICE_TYPE: 	 3	[None]\n'
+                '\tMBUS2_EQUIPMENT_IDENTIFIER: 	 4730303339303031393336393930363139	[None]\n'
+                '\tMBUS2_METER_READING: 	 246.138	[m3] at 2020-04-26T20:30:01+00:00\n'
             )
         )
diff --git a/test/objects/test_telegram.py b/test/objects/test_telegram.py
index 3f39d4b..c85fbc8 100644
--- a/test/objects/test_telegram.py
+++ b/test/objects/test_telegram.py
@@ -216,14 +216,6 @@ class TelegramTest(unittest.TestCase):
                                   value_type=Decimal,
                                   value_val=Decimal('2'))
 
-        # DEVICE_TYPE (0-x:24.1.0)
-        self.verify_telegram_item(telegram,
-                                  'DEVICE_TYPE',
-                                  object_type=CosemObject,
-                                  unit_val=None,
-                                  value_type=int,
-                                  value_val=3)
-
         # INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE (1-0:21.7.0)
         self.verify_telegram_item(telegram,
                                   'INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE',
@@ -272,7 +264,15 @@ class TelegramTest(unittest.TestCase):
                                   value_type=Decimal,
                                   value_val=Decimal('0'))
 
-        # EQUIPMENT_IDENTIFIER_GAS (0-x:96.1.0)
+        # DEVICE_TYPE (0-1:24.1.0)
+        self.verify_telegram_item(telegram,
+                                  'DEVICE_TYPE',
+                                  object_type=CosemObject,
+                                  unit_val=None,
+                                  value_type=int,
+                                  value_val=3)
+
+        # EQUIPMENT_IDENTIFIER_GAS (0-1:96.1.0)
         self.verify_telegram_item(telegram,
                                   'EQUIPMENT_IDENTIFIER_GAS',
                                   object_type=CosemObject,
@@ -340,28 +340,28 @@ class TelegramTest(unittest.TestCase):
         self.assertEqual(len(mbus_devices), 2)
 
         mbus_device_1 = mbus_devices[0]
-        self.assertEqual(mbus_device_1.DEVICE_TYPE.value, 3)
-        self.assertEqual(mbus_device_1.EQUIPMENT_IDENTIFIER_GAS.value, None)
-        self.assertEqual(mbus_device_1.HOURLY_GAS_METER_READING.value, Decimal('0'))
+        self.assertEqual(mbus_device_1.MBUS1_DEVICE_TYPE.value, 3)
+        self.assertEqual(mbus_device_1.MBUS1_EQUIPMENT_IDENTIFIER.value, None)
+        self.assertEqual(mbus_device_1.MBUS1_METER_READING.value, Decimal('0'))
 
         mbus_device_2 = mbus_devices[1]
-        self.assertEqual(mbus_device_2.DEVICE_TYPE.value, 3)
-        self.assertEqual(mbus_device_2.EQUIPMENT_IDENTIFIER_GAS.value, '4730303339303031393336393930363139')
-        self.assertEqual(mbus_device_2.HOURLY_GAS_METER_READING.value, Decimal('246.138'))
+        self.assertEqual(mbus_device_2.MBUS2_DEVICE_TYPE.value, 3)
+        self.assertEqual(mbus_device_2.MBUS2_EQUIPMENT_IDENTIFIER.value, '4730303339303031393336393930363139')
+        self.assertEqual(mbus_device_2.MBUS2_METER_READING.value, Decimal('246.138'))
 
     def test_get_mbus_device_by_channel(self):
         parser = TelegramParser(telegram_specifications.V5)
         telegram = parser.parse(TELEGRAM_V5_TWO_MBUS)
 
         mbus_device_1 = telegram.get_mbus_device_by_channel(1)
-        self.assertEqual(mbus_device_1.DEVICE_TYPE.value, 3)
-        self.assertEqual(mbus_device_1.EQUIPMENT_IDENTIFIER_GAS.value, None)
-        self.assertEqual(mbus_device_1.HOURLY_GAS_METER_READING.value, Decimal('0'))
+        self.assertEqual(mbus_device_1.MBUS1_DEVICE_TYPE.value, 3)
+        self.assertEqual(mbus_device_1.MBUS1_EQUIPMENT_IDENTIFIER.value, None)
+        self.assertEqual(mbus_device_1.MBUS1_METER_READING.value, Decimal('0'))
 
         mbus_device_2 = telegram.get_mbus_device_by_channel(2)
-        self.assertEqual(mbus_device_2.DEVICE_TYPE.value, 3)
-        self.assertEqual(mbus_device_2.EQUIPMENT_IDENTIFIER_GAS.value, '4730303339303031393336393930363139')
-        self.assertEqual(mbus_device_2.HOURLY_GAS_METER_READING.value, Decimal('246.138'))
+        self.assertEqual(mbus_device_2.MBUS2_DEVICE_TYPE.value, 3)
+        self.assertEqual(mbus_device_2.MBUS2_EQUIPMENT_IDENTIFIER.value, '4730303339303031393336393930363139')
+        self.assertEqual(mbus_device_2.MBUS2_METER_READING.value, Decimal('246.138'))
 
     def test_without_mbus_devices(self):
         parser = TelegramParser(telegram_specifications.V5, apply_checksum_validation=False)
@@ -375,11 +375,12 @@ class TelegramTest(unittest.TestCase):
         telegram = parser.parse(TELEGRAM_V5)
         json_data = json.loads(telegram.to_json())
 
+        self.maxDiff = None
+
         self.assertEqual(
             json_data,
             {'CURRENT_ELECTRICITY_DELIVERY': {'unit': 'kW', 'value': 0.0},
              'CURRENT_ELECTRICITY_USAGE': {'unit': 'kW', 'value': 0.244},
-             'DEVICE_TYPE': {'unit': None, 'value': 3},
              'ELECTRICITY_ACTIVE_TARIFF': {'unit': None, 'value': '0002'},
              'ELECTRICITY_DELIVERED_TARIFF_1': {'unit': 'kWh', 'value': 2.444},
              'ELECTRICITY_DELIVERED_TARIFF_2': {'unit': 'kWh', 'value': 0.0},
@@ -387,10 +388,6 @@ class TelegramTest(unittest.TestCase):
              'ELECTRICITY_USED_TARIFF_2': {'unit': 'kWh', 'value': 2.399},
              'EQUIPMENT_IDENTIFIER': {'unit': None,
                                       'value': '4B384547303034303436333935353037'},
-             'EQUIPMENT_IDENTIFIER_GAS': {'unit': None, 'value': None},
-             'HOURLY_GAS_METER_READING': {'datetime': '2017-01-02T15:10:05+00:00',
-                                          'unit': 'm3',
-                                          'value': 0.107},
              'INSTANTANEOUS_ACTIVE_POWER_L1_NEGATIVE': {'unit': 'kW', 'value': 0.0},
              'INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE': {'unit': 'kW', 'value': 0.07},
              'INSTANTANEOUS_ACTIVE_POWER_L2_NEGATIVE': {'unit': 'kW', 'value': 0.0},
@@ -404,16 +401,25 @@ class TelegramTest(unittest.TestCase):
              'INSTANTANEOUS_VOLTAGE_L2': {'unit': 'V', 'value': 230.0},
              'INSTANTANEOUS_VOLTAGE_L3': {'unit': 'V', 'value': 229.0},
              'LONG_POWER_FAILURE_COUNT': {'unit': None, 'value': 0},
+             'MBUS1_DEVICE_TYPE': {'unit': None, 'value': 3},
+             'MBUS1_EQUIPMENT_IDENTIFIER': {'unit': None,
+                                            'value': '3232323241424344313233343536373839'},
+             'MBUS1_METER_READING': {'datetime': '2017-01-02T15:10:05+00:00',
+                                     'unit': 'm3',
+                                     'value': 0.107},
+             'MBUS2_DEVICE_TYPE': {'unit': None, 'value': 3},
+             'MBUS2_EQUIPMENT_IDENTIFIER': {'unit': None, 'value': None},
              'MBUS_DEVICES': [{'CHANNEL_ID': 1,
-                               'DEVICE_TYPE': {'unit': None, 'value': 3},
-                               'EQUIPMENT_IDENTIFIER_GAS': {'unit': None,
-                                                            'value': '3232323241424344313233343536373839'},
-                               'HOURLY_GAS_METER_READING': {'datetime': '2017-01-02T15:10:05+00:00',
-                                                            'unit': 'm3',
-                                                            'value': 0.107}},
+                               'MBUS1_DEVICE_TYPE': {'unit': None, 'value': 3},
+                               'MBUS1_EQUIPMENT_IDENTIFIER': {'unit': None,
+                                                              'value': '3232323241424344313233343536373839'},
+                               'MBUS1_METER_READING': {'datetime': '2017-01-02T15:10:05+00:00',
+                                                       'unit': 'm3',
+                                                       'value': 0.107}},
                               {'CHANNEL_ID': 2,
-                               'DEVICE_TYPE': {'unit': None, 'value': 3},
-                               'EQUIPMENT_IDENTIFIER_GAS': {'unit': None, 'value': None}}],
+                               'MBUS2_DEVICE_TYPE': {'unit': None, 'value': 3},
+                               'MBUS2_EQUIPMENT_IDENTIFIER': {'unit': None,
+                                                              'value': None}}],
              'P1_MESSAGE_HEADER': {'unit': None, 'value': '50'},
              'P1_MESSAGE_TIMESTAMP': {'unit': None, 'value': '2017-01-02T18:20:02+00:00'},
              'POWER_EVENT_FAILURE_LOG': {'buffer': [],
@@ -433,6 +439,8 @@ class TelegramTest(unittest.TestCase):
         parser = TelegramParser(telegram_specifications.V5)
         telegram = parser.parse(TELEGRAM_V5)
 
+        self.maxDiff = None
+
         self.assertEqual(
             str(telegram),
             (
@@ -463,22 +471,24 @@ class TelegramTest(unittest.TestCase):
                 'INSTANTANEOUS_CURRENT_L2: 	 0.44	[A]\n'
                 'INSTANTANEOUS_CURRENT_L3: 	 0.86	[A]\n'
                 'TEXT_MESSAGE: 	 None	[None]\n'
-                'DEVICE_TYPE: 	 3	[None]\n'
-                'MBUS DEVICE (channel 1)\n'
-                '	DEVICE_TYPE: 	 3	[None]\n'
-                '	EQUIPMENT_IDENTIFIER_GAS: 	 3232323241424344313233343536373839	[None]\n'
-                '	HOURLY_GAS_METER_READING: 	 0.107	[m3] at 2017-01-02T15:10:05+00:00\n'
-                'MBUS DEVICE (channel 2)\n'
-                '	DEVICE_TYPE: 	 3	[None]\n'
-                '	EQUIPMENT_IDENTIFIER_GAS: 	 None	[None]\n'
                 'INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE: 	 0.070	[kW]\n'
                 'INSTANTANEOUS_ACTIVE_POWER_L2_POSITIVE: 	 0.032	[kW]\n'
                 'INSTANTANEOUS_ACTIVE_POWER_L3_POSITIVE: 	 0.142	[kW]\n'
                 'INSTANTANEOUS_ACTIVE_POWER_L1_NEGATIVE: 	 0.000	[kW]\n'
                 'INSTANTANEOUS_ACTIVE_POWER_L2_NEGATIVE: 	 0.000	[kW]\n'
                 'INSTANTANEOUS_ACTIVE_POWER_L3_NEGATIVE: 	 0.000	[kW]\n'
-                'EQUIPMENT_IDENTIFIER_GAS: 	 None	[None]\n'
-                'HOURLY_GAS_METER_READING: 	 0.107	[m3] at 2017-01-02T15:10:05+00:00\n'
+                'MBUS1_DEVICE_TYPE: 	 3	[None]\n'
+                'MBUS DEVICE (channel 1)\n'
+                '	MBUS1_DEVICE_TYPE: 	 3	[None]\n'
+                '	MBUS1_EQUIPMENT_IDENTIFIER: 	 3232323241424344313233343536373839	[None]\n'
+                '	MBUS1_METER_READING: 	 0.107	[m3] at 2017-01-02T15:10:05+00:00\n'
+                'MBUS DEVICE (channel 2)\n'
+                '	MBUS2_DEVICE_TYPE: 	 3	[None]\n'
+                '	MBUS2_EQUIPMENT_IDENTIFIER: 	 None	[None]\n'
+                'MBUS1_EQUIPMENT_IDENTIFIER: 	 3232323241424344313233343536373839	[None]\n'
+                'MBUS1_METER_READING: 	 0.107	[m3] at 2017-01-02T15:10:05+00:00\n'
+                'MBUS2_DEVICE_TYPE: 	 3	[None]\n'
+                'MBUS2_EQUIPMENT_IDENTIFIER: 	 None	[None]\n'
             )
         )
 
diff --git a/test/test_parse_fluvius.py b/test/test_parse_fluvius.py
index af67417..3ef90a4 100644
--- a/test/test_parse_fluvius.py
+++ b/test/test_parse_fluvius.py
@@ -210,11 +210,11 @@ 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')
 
         # FUSE_THRESHOLD_L1 (1-0:31.4.0)
         assert isinstance(result.FUSE_THRESHOLD_L1, CosemObject)
@@ -227,47 +227,47 @@ class TelegramParserFluviusTest(unittest.TestCase):
         assert result.TEXT_MESSAGE.unit is None
         assert result.TEXT_MESSAGE.value is None
 
-        # BELGIUM_MBUS1_DEVICE_TYPE (0-1:24.1.0)
-        assert isinstance(result.BELGIUM_MBUS1_DEVICE_TYPE, CosemObject)
-        assert result.BELGIUM_MBUS1_DEVICE_TYPE.unit is None
-        assert isinstance(result.BELGIUM_MBUS1_DEVICE_TYPE.value, int)
-        assert result.BELGIUM_MBUS1_DEVICE_TYPE.value == 3
+        # MBUS1_DEVICE_TYPE (0-1:24.1.0)
+        assert isinstance(result.MBUS1_DEVICE_TYPE, CosemObject)
+        assert result.MBUS1_DEVICE_TYPE.unit is None
+        assert isinstance(result.MBUS1_DEVICE_TYPE.value, int)
+        assert result.MBUS1_DEVICE_TYPE.value == 3
 
-        # BELGIUM_MBUS1_EQUIPMENT_IDENTIFIER (0-1:96.1.1)
-        assert isinstance(result.BELGIUM_MBUS1_EQUIPMENT_IDENTIFIER, CosemObject)
-        assert result.BELGIUM_MBUS1_EQUIPMENT_IDENTIFIER.unit is None
-        assert isinstance(result.BELGIUM_MBUS1_EQUIPMENT_IDENTIFIER.value, str)
-        assert result.BELGIUM_MBUS1_EQUIPMENT_IDENTIFIER.value == '37464C4F32313139303333373333'
+        # MBUS1_EQUIPMENT_IDENTIFIER_ALT (0-1:96.1.1)
+        assert isinstance(result.MBUS1_EQUIPMENT_IDENTIFIER_ALT, CosemObject)
+        assert result.MBUS1_EQUIPMENT_IDENTIFIER_ALT.unit is None
+        assert isinstance(result.MBUS1_EQUIPMENT_IDENTIFIER_ALT.value, str)
+        assert result.MBUS1_EQUIPMENT_IDENTIFIER_ALT.value == '37464C4F32313139303333373333'
 
-        # BELGIUM_MBUS1_VALVE_POSITION (0-1:24.4.0)
-        assert isinstance(result.BELGIUM_MBUS1_VALVE_POSITION, CosemObject)
-        assert result.BELGIUM_MBUS1_VALVE_POSITION.unit is None
-        assert isinstance(result.BELGIUM_MBUS1_VALVE_POSITION.value, int)
-        assert result.BELGIUM_MBUS1_VALVE_POSITION.value == 1
+        # MBUS1_VALVE_POSITION (0-1:24.4.0)
+        assert isinstance(result.MBUS1_VALVE_POSITION, CosemObject)
+        assert result.MBUS1_VALVE_POSITION.unit is None
+        assert isinstance(result.MBUS1_VALVE_POSITION.value, int)
+        assert result.MBUS1_VALVE_POSITION.value == 1
 
-        # BELGIUM_MBUS1_METER_READING2 (0-1:24.2.3)
-        assert isinstance(result.BELGIUM_MBUS1_METER_READING2, MBusObject)
-        assert result.BELGIUM_MBUS1_METER_READING2.unit == 'm3'
-        assert isinstance(result.BELGIUM_MBUS1_METER_READING2.value, Decimal)
-        assert result.BELGIUM_MBUS1_METER_READING2.value == Decimal('112.384')
+        # MBUS1_METER_READING_ALT (0-1:24.2.3)
+        assert isinstance(result.MBUS1_METER_READING_ALT, MBusObject)
+        assert result.MBUS1_METER_READING_ALT.unit == 'm3'
+        assert isinstance(result.MBUS1_METER_READING_ALT.value, Decimal)
+        assert result.MBUS1_METER_READING_ALT.value == Decimal('112.384')
 
-        # BELGIUM_MBUS2_DEVICE_TYPE (0-2:24.1.0)
-        assert isinstance(result.BELGIUM_MBUS2_DEVICE_TYPE, CosemObject)
-        assert result.BELGIUM_MBUS2_DEVICE_TYPE.unit is None
-        assert isinstance(result.BELGIUM_MBUS2_DEVICE_TYPE.value, int)
-        assert result.BELGIUM_MBUS2_DEVICE_TYPE.value == 7
+        # MBUS2_DEVICE_TYPE (0-2:24.1.0)
+        assert isinstance(result.MBUS2_DEVICE_TYPE, CosemObject)
+        assert result.MBUS2_DEVICE_TYPE.unit is None
+        assert isinstance(result.MBUS2_DEVICE_TYPE.value, int)
+        assert result.MBUS2_DEVICE_TYPE.value == 7
 
-        # BELGIUM_MBUS2_EQUIPMENT_IDENTIFIER (0-2:96.1.1)
-        assert isinstance(result.BELGIUM_MBUS2_EQUIPMENT_IDENTIFIER, CosemObject)
-        assert result.BELGIUM_MBUS2_EQUIPMENT_IDENTIFIER.unit is None
-        assert isinstance(result.BELGIUM_MBUS2_EQUIPMENT_IDENTIFIER.value, str)
-        assert result.BELGIUM_MBUS2_EQUIPMENT_IDENTIFIER.value == '3853414731323334353637383930'
+        # MBUS2_EQUIPMENT_IDENTIFIER_ALT (0-2:96.1.1)
+        assert isinstance(result.MBUS2_EQUIPMENT_IDENTIFIER_ALT, CosemObject)
+        assert result.MBUS2_EQUIPMENT_IDENTIFIER_ALT.unit is None
+        assert isinstance(result.MBUS2_EQUIPMENT_IDENTIFIER_ALT.value, str)
+        assert result.MBUS2_EQUIPMENT_IDENTIFIER_ALT.value == '3853414731323334353637383930'
 
-        # BELGIUM_MBUS2_METER_READING1 (0-1:24.2.1)
-        assert isinstance(result.BELGIUM_MBUS2_METER_READING1, MBusObject)
-        assert result.BELGIUM_MBUS2_METER_READING1.unit == 'm3'
-        assert isinstance(result.BELGIUM_MBUS2_METER_READING1.value, Decimal)
-        assert result.BELGIUM_MBUS2_METER_READING1.value == Decimal('872.234')
+        # MBUS2_METER_READING (0-1:24.2.1)
+        assert isinstance(result.MBUS2_METER_READING, MBusObject)
+        assert result.MBUS2_METER_READING.unit == 'm3'
+        assert isinstance(result.MBUS2_METER_READING.value, Decimal)
+        assert result.MBUS2_METER_READING.value == Decimal('872.234')
 
     def test_checksum_valid(self):
         # No exception is raised.
diff --git a/test/test_parse_v5.py b/test/test_parse_v5.py
index 1736037..e2d8583 100644
--- a/test/test_parse_v5.py
+++ b/test/test_parse_v5.py
@@ -172,12 +172,6 @@ class TelegramParserV5Test(unittest.TestCase):
         assert telegram.TEXT_MESSAGE.unit is None
         assert telegram.TEXT_MESSAGE.value is None
 
-        # DEVICE_TYPE (0-x:24.1.0)
-        assert isinstance(telegram.DEVICE_TYPE, CosemObject)
-        assert telegram.DEVICE_TYPE.unit is None
-        assert isinstance(telegram.DEVICE_TYPE.value, int)
-        assert telegram.DEVICE_TYPE.value == 3
-
         # INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE (1-0:21.7.0)
         assert isinstance(telegram.INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE, CosemObject)
         assert telegram.INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE.unit == 'kW'
@@ -219,23 +213,23 @@ class TelegramParserV5Test(unittest.TestCase):
         gas_meter_devices = telegram.MBUS_DEVICES
         gas_meter_device = gas_meter_devices[0]
 
-        # EQUIPMENT_IDENTIFIER_GAS (0-x:96.1.0)
-        assert isinstance(gas_meter_device.DEVICE_TYPE, CosemObject)
-        assert gas_meter_device.DEVICE_TYPE.unit is None
-        assert isinstance(gas_meter_device.DEVICE_TYPE.value, int)
-        assert gas_meter_device.DEVICE_TYPE.value == 3
+        # MBUS1_DEVICE_TYPE (0-1:96.1.0)
+        assert isinstance(gas_meter_device.MBUS1_DEVICE_TYPE, CosemObject)
+        assert gas_meter_device.MBUS1_DEVICE_TYPE.unit is None
+        assert isinstance(gas_meter_device.MBUS1_DEVICE_TYPE.value, int)
+        assert gas_meter_device.MBUS1_DEVICE_TYPE.value == 3
 
-        # EQUIPMENT_IDENTIFIER_GAS (0-x:96.1.0)
-        assert isinstance(gas_meter_device.EQUIPMENT_IDENTIFIER_GAS, CosemObject)
-        assert gas_meter_device.EQUIPMENT_IDENTIFIER_GAS.unit is None
-        assert isinstance(gas_meter_device.EQUIPMENT_IDENTIFIER_GAS.value, str)
-        assert gas_meter_device.EQUIPMENT_IDENTIFIER_GAS.value == '3232323241424344313233343536373839'
+        # MBUS1_EQUIPMENT_IDENTIFIER (0-1:96.1.0)
+        assert isinstance(gas_meter_device.MBUS1_EQUIPMENT_IDENTIFIER, CosemObject)
+        assert gas_meter_device.MBUS1_EQUIPMENT_IDENTIFIER.unit is None
+        assert isinstance(gas_meter_device.MBUS1_EQUIPMENT_IDENTIFIER.value, str)
+        assert gas_meter_device.MBUS1_EQUIPMENT_IDENTIFIER.value == '3232323241424344313233343536373839'
 
-        # HOURLY_GAS_METER_READING (0-1:24.2.1)
-        assert isinstance(gas_meter_device.HOURLY_GAS_METER_READING, MBusObject)
-        assert gas_meter_device.HOURLY_GAS_METER_READING.unit == 'm3'
-        assert isinstance(telegram.HOURLY_GAS_METER_READING.value, Decimal)
-        assert gas_meter_device.HOURLY_GAS_METER_READING.value == Decimal('0.107')
+        # MBUS1_METER_READING (0-1:24.2.1)
+        assert isinstance(gas_meter_device.MBUS1_METER_READING, MBusObject)
+        assert gas_meter_device.MBUS1_METER_READING.unit == 'm3'
+        assert isinstance(telegram.MBUS1_METER_READING.value, Decimal)
+        assert gas_meter_device.MBUS1_METER_READING.value == Decimal('0.107')
 
     def test_checksum_valid(self):
         # No exception is raised.
@@ -270,8 +264,8 @@ class TelegramParserV5Test(unittest.TestCase):
         parser = TelegramParser(telegram_specifications.V5)
         telegram = parser.parse(invalid_date_telegram)
 
-        # HOURLY_GAS_METER_READING (0-1:24.2.1)
-        assert isinstance(telegram.HOURLY_GAS_METER_READING, MBusObject)
-        assert telegram.HOURLY_GAS_METER_READING.unit is None
-        assert isinstance(telegram.HOURLY_GAS_METER_READING.value, Decimal)
-        assert telegram.HOURLY_GAS_METER_READING.value == Decimal('0.000')
+        # MBUS1_METER_READING (0-1:24.2.1)
+        assert isinstance(telegram.MBUS1_METER_READING, MBusObject)
+        assert telegram.MBUS1_METER_READING.unit is None
+        assert isinstance(telegram.MBUS1_METER_READING.value, Decimal)
+        assert telegram.MBUS1_METER_READING.value == Decimal('0.000')