defmodule TehamaClient.Reading do
@moduledoc """
A device reading.
"""
use TypedStruct
typedstruct do
@typedoc "A typed Reading struct"
field(:raw, integer())
field(:read_time, String.t())
field(:reading, integer())
field(:alerts, String.t())
field(:display_type, String.t())
field(:factor, float())
field(:initial_meter_read, integer())
field(:initial_meter_time, String.t())
field(:serial_number, String.t())
field(:style, String.t())
field(:type, String.t())
field(:mon_pt, String.t())
field(:note, String.t())
field(:sensor_type, String.t())
field(:units, String.t())
end
def new(data) when is_map(data) do
%__MODULE__{
raw: data["RawReading"] |> TehamaClient.Object.parse_i(),
read_time: data["ReadTime"],
reading: data["Reading"] |> TehamaClient.Object.parse_i(),
alerts: data["alerts"],
display_type: data["display_type"],
factor: data["factor"] |> TehamaClient.Object.parse_f(),
initial_meter_read: data["initial_meter_read"] |> TehamaClient.Object.parse_i(0),
initial_meter_time: data["initial_meter_time"],
serial_number: data["meter_serial_number"],
style: data["meter_style"],
type: data["meter_type"],
mon_pt: data["mon_pt"],
note: data["note"],
sensor_type: data["sensor_type"],
units: data["units"]
}
end
def new(_) do
nil
end
def sensor_type(type) do
case type do
"51" -> :pulse_totalizer_1
end
end
end