This commit is contained in:
root 2023-07-30 15:15:18 +02:00
parent 2994bb5406
commit d793daf363
6 changed files with 51 additions and 34 deletions

View File

@ -5,6 +5,7 @@ import json
import pytz
class Telegram(dict):
"""
Container for parsed telegram data.

View File

@ -102,7 +102,11 @@ class TelegramParser(object):
logger.error("Unexpected {}: {}".format(type(err), err))
raise
else:
telegram.add(obis_reference=object["obis_reference"], dsmr_object=dsmr_object, obis_name=object["value_name"])
telegram.add(
obis_reference=object["obis_reference"],
dsmr_object=dsmr_object,
obis_name=object["value_name"]
)
return telegram

View File

@ -775,9 +775,9 @@ LUXEMBOURG_SMARTY['objects'].extend([
},
# This is already presented in V5, with the same data
# {
# 'obis_reference': obis.ELECTRICITY_IMPORTED_TOTAL,
# 'value_parser': CosemParser(ValueParser(Decimal)),
# 'value_name': 'ELECTRICITY_IMPORTED_TOTAL'
# 'obis_reference': obis.ELECTRICITY_IMPORTED_TOTAL,
# 'value_parser': CosemParser(ValueParser(Decimal)),
# 'value_name': 'ELECTRICITY_IMPORTED_TOTAL'
# },
{
'obis_reference': obis.ELECTRICITY_EXPORTED_TOTAL,
@ -1432,30 +1432,30 @@ EON_HUNGARY = {
},
# I'm not sure which datas does this line containes. It should be the data of last minute of last month.
# {
# 'obis_reference': obis.BELGIUM_MAXIMUM_DEMAND_13_MONTHS,
# 'value_parser': NonExistingParser(
# ValueParser(timestamp),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal)
# ),
# 'value_name': 'LAST_MONTH_DATA'
# 'obis_reference': obis.BELGIUM_MAXIMUM_DEMAND_13_MONTHS,
# 'value_parser': NonExistingParser(
# ValueParser(timestamp),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal),
# ValueParser(Decimal)
# ),
# 'value_name': 'LAST_MONTH_DATA'
# },
{
'obis_reference': obis.TEXT_MESSAGE,

View File

@ -12,13 +12,25 @@ class MbusDeviceTest(unittest.TestCase):
def setUp(self):
v5_objects = telegram_specifications.V5['objects']
device_type_parser = [object["value_parser"] for object in v5_objects if object["obis_reference"] == obis_references.DEVICE_TYPE][0]
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')
equipment_parser = [object["value_parser"] for object in v5_objects if object["obis_reference"] == obis_references.EQUIPMENT_IDENTIFIER_GAS][0]
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')
gas_reading_parser = [object["value_parser"] for object in v5_objects if object["obis_reference"] == obis_references.HOURLY_GAS_METER_READING][0]
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')
mbus_device = MbusDevice(channel_id=1)

View File

@ -7,7 +7,7 @@ import pytz
from dsmr_parser import telegram_specifications
from dsmr_parser.exceptions import InvalidChecksumError, ParseError
from dsmr_parser.objects import CosemObject, MBusObject
from dsmr_parser.objects import CosemObject
from dsmr_parser.parsers import TelegramParser
from test.example_telegrams import TELEGRAM_V5_EON_HU