Current section
Files
Jump to
Current section
Files
lib/tehama_client/objects/device.ex
defmodule TehamaClient.Device do
@moduledoc """
A tehama device.
"""
use TypedStruct
# require Logger
typedstruct do
@typedoc "A typed Device struct"
field(:addr, String.t())
field(:apt, String.t())
field(:node_id, String.t())
field(:building, String.t())
field(:location_note, String.t())
field(:latest_link_status_data_read_time, String.t())
field(:battery_v, String.t())
field(:link_partner, String.t())
field(:radio_dec_id, String.t())
field(:radio_hex_id, String.t())
field(:readings, [TehamaClient.Reading.t()])
end
def new(data) do
# Logger.debug("Parsing #{__MODULE__} raw data: #{inspect(data, pretty: true)}")
%__MODULE__{
addr: data["Addr"],
apt: data["Apt"],
node_id: data["NodeId"],
building: data["Building"],
location_note: data["LocationNote"],
latest_link_status_data_read_time: data["LatestLinkStatusDataReadTime"],
battery_v: data["BattVolt"],
link_partner: data["LP"],
radio_dec_id: data["RadioID-Dec"],
radio_hex_id: data["RadioID-Hex"],
readings: parse_readings(data["readings"])
}
end
defp parse_readings(readings) when is_list(readings) do
readings
|> Enum.map(&TehamaClient.Reading.new/1)
end
defp parse_readings(_) do
[]
end
end