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,
@ -1349,7 +1349,7 @@ EON_HUNGARY = {
'value_parser': CosemParser(ValueParser(Decimal)),
'value_name': 'INSTANTANEOUS_CURRENT_L2'
# Only with 3 phase meters
},
},
{
'obis_reference': obis.INSTANTANEOUS_CURRENT_L3,
'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.
# {
# '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

@ -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:96.13.0()\r\n'
'!99DA\r\n'
)
)

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