Packages

A library for parsing Dutch Smart Meter Requirements (DSMR) telegram data

Current section

Files

Jump to
dsmr lib dsmr telegram.ex
Raw

lib/dsmr/telegram.ex

defmodule DSMR.Telegram do
@enforce_keys [:header, :checksum]
defstruct [
:header,
:checksum,
:version,
:measured_at,
:equipment_id,
:electricity_delivered_1,
:electricity_delivered_2,
:electricity_returned_1,
:electricity_returned_2,
:electricity_tariff_indicator,
:electricity_currently_delivered,
:electricity_currently_returned,
:power_failures_count,
:power_failures_long_count,
:power_failures_log,
:voltage_sags_l1_count,
:voltage_sags_l2_count,
:voltage_sags_l3_count,
:voltage_swells_l1_count,
:voltage_swells_l2_count,
:voltage_swells_l3_count,
:actual_threshold_electricity,
:actual_switch_position,
:text_message,
:text_message_code,
:phase_power_current_l1,
:phase_power_current_l2,
:phase_power_current_l3,
:currently_delivered_l1,
:currently_delivered_l2,
:currently_delivered_l3,
:currently_returned_l1,
:currently_returned_l2,
:currently_returned_l3,
mbus_devices: []
]
@type obis_t() ::
{non_neg_integer(), non_neg_integer(), non_neg_integer(), non_neg_integer(),
non_neg_integer()}
@type value_t() ::
String.t()
| obis_t()
| DSMR.Timestamp.t()
| DSMR.Measurement.t()
@type obj_t() :: {obis_t(), value_t() | [value_t()]}
@type t() :: %__MODULE__{
header: String.t(),
checksum: String.t(),
version: String.t(),
measured_at: DSMR.Timestamp.t(),
equipment_id: String.t(),
electricity_delivered_1: DSMR.Measurement.t(),
electricity_delivered_2: DSMR.Measurement.t(),
electricity_returned_1: DSMR.Measurement.t(),
electricity_returned_2: DSMR.Measurement.t(),
electricity_tariff_indicator: String.t(),
electricity_currently_delivered: DSMR.Measurement.t(),
electricity_currently_returned: DSMR.Measurement.t(),
power_failures_count: String.t(),
power_failures_long_count: String.t(),
power_failures_log: [{DSMR.Timestamp.t(), DSMR.Measurement.t()}],
voltage_sags_l1_count: String.t(),
voltage_sags_l2_count: String.t(),
voltage_sags_l3_count: String.t(),
voltage_swells_l1_count: String.t(),
voltage_swells_l2_count: String.t(),
voltage_swells_l3_count: String.t(),
actual_threshold_electricity: DSMR.Measurement.t(),
actual_switch_position: String.t(),
text_message: String.t(),
text_message_code: String.t(),
phase_power_current_l1: DSMR.Measurement.t(),
phase_power_current_l2: DSMR.Measurement.t(),
phase_power_current_l3: DSMR.Measurement.t(),
currently_delivered_l1: DSMR.Measurement.t(),
currently_delivered_l2: DSMR.Measurement.t(),
currently_delivered_l3: DSMR.Measurement.t(),
currently_returned_l1: DSMR.Measurement.t(),
currently_returned_l2: DSMR.Measurement.t(),
currently_returned_l3: DSMR.Measurement.t(),
mbus_devices: [DSMR.MBusDevice.t()]
}
end