View Source TehamaClient (Tehama Elixir Client API v0.3.0)

Documentation for TehamaClient.

Link to this section Summary

Functions

Create an auth for the client or fail.

Create an auth for the client.

Get most recent read data.

Get all read data between two dates.

Create a temporary Site object to be used to get data

Get Site List from API

Gets a list of units for a site.

Link to this section Functions

Link to this function

client!(username, password)

View Source
@spec client!(String.t(), String.t()) :: TehamaClient.Auth.t()

Create an auth for the client or fail.

examples

Examples

iex> TehamaClient.client!("username", "password")
%TehamaClient.Auth{token: "testtoken"}
Link to this function

client(username, password)

View Source
@spec client(String.t(), String.t()) :: {:error, any()} | {:ok, TehamaClient.Auth.t()}

Create an auth for the client.

examples

Examples

iex> TehamaClient.client("username", "password")
{:ok, %TehamaClient.Auth{token: "testtoken"}}
@spec report_data(
  %TehamaClient.Auth{token: String.t()},
  %TehamaClient.Site{
    access_code: String.t(),
    address: term(),
    city: term(),
    dcap_ip_adrs: term(),
    get_port_num: term(),
    knocker_dly: term(),
    knocker_dly_enbld: term(),
    name: term(),
    node_id: term(),
    node_type: term(),
    note: term(),
    parent_node_id: term(),
    property_id: term(),
    sql_user_name: term(),
    state: term(),
    zipcode: term()
  }
) :: {:ok, [TehamaClient.Device.t()]} | {:error, any()}

Get most recent read data.

examples

Examples

iex> auth = %TehamaClient.Auth{token: "testtoken"}
...> site = %TehamaClient.Site{access_code: "88471391331"}
...> data = TehamaClient.report_data(auth, site)
[%TehamaClient.Device{
  addr: "",
  apt: "68 ",
  battery_v: "3020",
  building: "1",
  latest_link_status_data_read_time: "2022-03-02 04:51:12",
  link_partner: "e3000a78",
  location_note: "Vacant",
  node_id: "5532",
  radio_dec_id: "2175922659",
  radio_hex_id: "81B1F1E3",
  readings: [
    %TehamaClient.Reading{
      alerts: [],
      display_type: "Encoded_Meter_1",
      factor: "10.000",
      initial_meter_read: nil,
      initial_meter_time: nil,
      mon_pt: nil,
      note: nil,
      raw: 47190,
      read_time: "2022-03-02 04:29:41",
      reading: 491900,
      sensor_type: "53",
      serial_number: "0000203389",
      style: "A",
      type: "W",
      units: nil
    }
  ]
}] = data
Link to this function

report_data(auth, site, start_time, end_time)

View Source
@spec report_data(
  %TehamaClient.Auth{token: String.t()},
  %TehamaClient.Site{
    access_code: String.t(),
    address: term(),
    city: term(),
    dcap_ip_adrs: term(),
    get_port_num: term(),
    knocker_dly: term(),
    knocker_dly_enbld: term(),
    name: term(),
    node_id: term(),
    node_type: term(),
    note: term(),
    parent_node_id: term(),
    property_id: term(),
    sql_user_name: term(),
    state: term(),
    zipcode: term()
  },
  Date.t(),
  Date.t()
) :: {:ok, [TehamaClient.Device.t()]} | {:error, any()}

Get all read data between two dates.

examples

Examples

iex> auth = %TehamaClient.Auth{token: "testtoken"}
...> site = %TehamaClient.Site{access_code: "88471391331"}
...> {:ok, data} = TehamaClient.report_data(auth, site, ~D[2022-05-01], ~D[2022-05-02])
...> data
[%TehamaClient.Device{
  addr: "",
  apt: "68 ",
  battery_v: "3020",
  building: "1",
  latest_link_status_data_read_time: "2022-03-02 04:51:12",
  link_partner: "e3000a78",
  location_note: "Vacant",
  node_id: "5532",
  radio_dec_id: "2175922659",
  radio_hex_id: "81B1F1E3",
  readings: [
    %TehamaClient.Reading{
      alerts: [],
      display_type: "Encoded_Meter_1",
      factor: "10.000",
      initial_meter_read: nil,
      initial_meter_time: nil,
      mon_pt: nil,
      note: nil,
      raw: 47190,
      read_time: "2022-03-02 04:29:41",
      reading: 491900,
      sensor_type: "53",
      serial_number: "0000203389",
      style: "A",
      type: "W",
      units: nil
    }
  ]
}]
@spec site(String.t()) :: %TehamaClient.Site{
  access_code: String.t(),
  address: term(),
  city: term(),
  dcap_ip_adrs: term(),
  get_port_num: term(),
  knocker_dly: term(),
  knocker_dly_enbld: term(),
  name: term(),
  node_id: term(),
  node_type: term(),
  note: term(),
  parent_node_id: term(),
  property_id: term(),
  sql_user_name: term(),
  state: term(),
  zipcode: term()
}

Create a temporary Site object to be used to get data

examples

Examples

iex> TehamaClient.site("88471391331")
%TehamaClient.Site{access_code: "88471391331"}
@spec site_list(%TehamaClient.Auth{token: String.t()}) :: [TehamaClient.Site.t()]

Get Site List from API

examples

Examples

iex> result = TehamaClient.client!("username", "password")
...> |> TehamaClient.site_list()
[%TehamaClient.Site{
  access_code: "88471391331",
  property_id: "4706362",
  name: "Elan Flower Mound #12294 (28667)",
  node_type: "DCAP"
}] = result
@spec units(
  %TehamaClient.Auth{token: String.t()},
  %TehamaClient.Site{
    access_code: String.t(),
    address: term(),
    city: term(),
    dcap_ip_adrs: term(),
    get_port_num: term(),
    knocker_dly: term(),
    knocker_dly_enbld: term(),
    name: term(),
    node_id: term(),
    node_type: term(),
    note: term(),
    parent_node_id: term(),
    property_id: term(),
    sql_user_name: term(),
    state: term(),
    zipcode: term()
  }
) :: {:ok, [TehamaClient.Unit.t()]} | {:error, any()}

Gets a list of units for a site.

examples

Examples

iex> auth = %TehamaClient.Auth{token: "testtoken"}
...> site = %TehamaClient.Site{access_code: "88471391331"}
...> data = TehamaClient.units(auth, site)
{:ok, [%TehamaClient.Unit{
  id: "5532",
  apt: "68",
  addr: "",
  building: "4706362",
  meters: []
}]} = data