Current section

Files

Jump to
helen lib fact remote.ex
Raw

lib/fact/remote.ex

defmodule Fact.Remote do
@moduledoc false
require Logger
use Timex
import Fact.Influx, only: [write: 2]
@env Application.get_env(:helen, :build_env, "unknown")
# %{
# points: [
# %{
# database: "my_database", # Can be omitted, so default is used.
# measurement: "my_measurement",
# fields: %{answer: 42, value: 1},
# tags: %{foo: "bar"},
# timestamp: 1439587926000000000 # Nanosecond unix timestamp with
# default precision, can be omitted.
# },
# # more points possible ...
# ],
# database: "my_database", # Can be omitted, so default is used.
# }
# |> MyApp.MyConnection.write()
def record(%{metadata: :ok} = r) do
point(r) |> write(precision: :nanosecond, async: true)
end
def record(_catchall), do: false
defp point(%{msg_recv_dt: msg_recv_dt} = r) do
fields =
Map.take(r, [
:uptime_us,
:heap_free,
:heap_min,
:batt_mv,
:reset_reason,
:ap_rssi
])
tags = Map.take(r, [:name, :host]) |> Map.put(:env, @env)
%{
points: [
%{
measurement: "remote",
fields: fields,
tags: tags,
timestamp: DateTime.to_unix(msg_recv_dt, :nanosecond)
}
]
}
end
end