Discovergy

Build StatusDocsHex.pm

A simple wrapper for the Discovergy REST API, providing access to meters and measurements.

Usage

Create a Discovergy.Client and authenticate with the Discovergy API using your email address and password.

iex> {:ok, client} = Discovergy.Client.new() |> Discovergy.Client.login(email, password)
{:ok, %Discovergy.Client{}}

Then pass the client to the respective endpoint function. For example, to list all meters the user has access to:

iex> Discovergy.Metadata.get_meters(client)
{:ok, [%Discovergy.Meter{
administration_number: "",
current_scaling_factor: 1,
first_measurement_time: 1563286659367,
full_serial_number: "1ESY1161229886",
internal_meters: 1,
last_measurement_time: 1593949473598,
load_profile_type: "SLP",
location: %Discovergy.Location{
city: "Greven",
country: "DE",
street: "Sedanstr.",
street_number: "8",
zip: "48268"
},
manufacturer_id: "ESY",
measurement_type: "ELECTRICITY",
meter_id: "c1972a89ce3a4d58aadcb7908a1d31c7",
scaling_factor: 1,
serial_number: "61229886",
type: "EASYMETER",
voltage_scaling_factor: 1
}]}

Or to obtain the last measurement of a particular meter:

iex> Discovergy.Measurements.get_last_reading(client, "c1972a89ce3a4d58aadcb7908a1d31c7")
{:ok, %Discovergy.Measurement{
time: ~U[2019-07-16 22:00:00.000Z],
values: %{
"energy" => 441576730000,
"energyOut" => 2154853000,
"power" => 205980,
"power1" => 63090,
"power2" => 53780,
"power3" => 89100,
"voltage1" => 234100,
"voltage2" => 234000,
"voltage3" => 233800
}
}}

Installation

Add discovergy to your list of dependencies in mix.exs:

def deps do
[
{:discovergy, "~> 0.4"},
{:hackney, "~> 1.15"}
]
end

By default, discovergy uses hackney (via Tesla.Adapter.Hackney). Add hackney to the list of dependencies too if you don't want to use another HTTP adapter (see Tesla Adapters to find all available adapters and Discovergy.Client.new/1 on how to configure another adapter).

The docs can be found at hexdocs.pm/discovergy.