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 import pytz
class Telegram(dict): class Telegram(dict):
""" """
Container for parsed telegram data. Container for parsed telegram data.

View File

@ -102,7 +102,11 @@ class TelegramParser(object):
logger.error("Unexpected {}: {}".format(type(err), err)) logger.error("Unexpected {}: {}".format(type(err), err))
raise raise
else: 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 return telegram

View File

@ -775,9 +775,9 @@ LUXEMBOURG_SMARTY['objects'].extend([
}, },
# This is already presented in V5, with the same data # This is already presented in V5, with the same data
# { # {
# 'obis_reference': obis.ELECTRICITY_IMPORTED_TOTAL, # 'obis_reference': obis.ELECTRICITY_IMPORTED_TOTAL,
# 'value_parser': CosemParser(ValueParser(Decimal)), # 'value_parser': CosemParser(ValueParser(Decimal)),
# 'value_name': 'ELECTRICITY_IMPORTED_TOTAL' # 'value_name': 'ELECTRICITY_IMPORTED_TOTAL'
# }, # },
{ {
'obis_reference': obis.ELECTRICITY_EXPORTED_TOTAL, 'obis_reference': obis.ELECTRICITY_EXPORTED_TOTAL,
@ -1349,7 +1349,7 @@ EON_HUNGARY = {
'value_parser': CosemParser(ValueParser(Decimal)), 'value_parser': CosemParser(ValueParser(Decimal)),
'value_name': 'INSTANTANEOUS_CURRENT_L2' 'value_name': 'INSTANTANEOUS_CURRENT_L2'
# Only with 3 phase meters # Only with 3 phase meters
}, },
{ {
'obis_reference': obis.INSTANTANEOUS_CURRENT_L3, 'obis_reference': obis.INSTANTANEOUS_CURRENT_L3,
'value_parser': CosemParser(ValueParser(Decimal)), 'value_parser': CosemParser(ValueParser(Decimal)),
@ -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. # 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, # 'obis_reference': obis.BELGIUM_MAXIMUM_DEMAND_13_MONTHS,
# 'value_parser': NonExistingParser( # 'value_parser': NonExistingParser(
# ValueParser(timestamp), # 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), # 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' # 'value_name': 'LAST_MONTH_DATA'
# }, # },
{ {
'obis_reference': obis.TEXT_MESSAGE, 'obis_reference': obis.TEXT_MESSAGE,

View File

@ -362,4 +362,4 @@ TELEGRAM_V5_EON_HU = (
'0-0:98.1.0(230701000000S)(000040.777*kWh)(000008.950*kWh)(000031.827*kWh)(000142.250*kWh)(000111.164*kWh)(000031.086*kWh)(000000.030*kvarh)(000073.988*kvarh)(000000.205*kvarh)(000000.048*kvarh)(000039.199*kvarh)(000035.020*kvarh)(000183.027*kWh)(03.564*kW)(02.156*kW)(03.564*kW)(04.104*kW)(04.104*kW)(03.400*kW)\r\n' '0-0:98.1.0(230701000000S)(000040.777*kWh)(000008.950*kWh)(000031.827*kWh)(000142.250*kWh)(000111.164*kWh)(000031.086*kWh)(000000.030*kvarh)(000073.988*kvarh)(000000.205*kvarh)(000000.048*kvarh)(000039.199*kvarh)(000035.020*kvarh)(000183.027*kWh)(03.564*kW)(02.156*kW)(03.564*kW)(04.104*kW)(04.104*kW)(03.400*kW)\r\n'
'0-0:96.13.0()\r\n' '0-0:96.13.0()\r\n'
'!99DA\r\n' '!99DA\r\n'
) )

View File

@ -12,13 +12,25 @@ 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 = [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') 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') 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') 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)

View File

@ -7,7 +7,7 @@ import pytz
from dsmr_parser import telegram_specifications from dsmr_parser import telegram_specifications
from dsmr_parser.exceptions import InvalidChecksumError, ParseError 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 dsmr_parser.parsers import TelegramParser
from test.example_telegrams import TELEGRAM_V5_EON_HU from test.example_telegrams import TELEGRAM_V5_EON_HU