E-logger | Manualer | Forum

REST-API

Från Loggerwiki
Hoppa till: navigering, sök

Innehåll

REST-API mot E-logger

Denna funktion finns endast i företagsabonnemang.

Via REST API går det att få ut vissa mätdata i JSON-format från E-logger med vanliga enkla HTTP-anrop. Det är användbart då mätdata från E-logger regelbundet behöver presenteras eller bearbetas i ett annat system.

Det går även att få ut data från E-logger via den manuella eller automatiska exportfunktionen, vilken metod som är bäst beror på tillämpningen.

För närvarande stöder REST-API:et utläsning av räkneverk från elmätare, vattenmätare samt värmemätare. Mätarna kan vara anlutna via Modbus RTU, Modbus TCP, M-bus, HAN/H1 (huvudmätare) eller LoRaWAN.

Anropsmetod

Utläsning sker med HTTP GET-anrop där parametrarna är en del av URL:en.

Grundadressen till API:et är https://e-logger.se/api/. Därefter följer en sökväg till det som skall läses ut. Den kompletta adressen brukar kallas för endpoint. Efter endpointen följer ett frågetecken "?" och därefter anropsparametrar på formatet parameternamn = parametervärde. Parametrarna skiljs åt av och-tecken "&".

Autentisering

Innan det går att göra API-anrop behöver en API-nyckel genereras under E-logger->Inställningar->M2M. Denna nyckel måste sedan skickas med varje anrop som görs mot API:et.

API-nyckeln kan skickas på två olika sätt.

1) Som HTTP-header på formatet "Authorization: Bearer: _API_NYCKEL_"

Exempel på anrop med curl med nyckel i header

curl --compressed "https://e-logger.se/api/counters/123456?resolution=3600&timeStart=2024-01-21T21&timeStop=2024-01-21T23" \
-H "Accept: application/json" -H "Accept-Encoding: gzip" \
-H "Authorization: Bearer: REYjHDehW1QtCquYnqaP2wTAM"

2) Som parameter till HTTP GET, k=_API_NYCKEL_.

Exempel på anrop i webbläsare med nyckel i k-parameter

https://e-logger.se/api/counters/123456?k=REYjHDehW1QtCquYnqaP2wTAM&resolution=3600&timeStart=2024-01-21T21&timeStop=2024-01-21T23

Tidsformat utdata

Förvalt tidsformat för tidsangivelserna i alla utdata är ISO8601 på formen YYYYMMDD vid dagsintervall respektive YYYYMMDDTHHMM vid timintervall. Önskas datum- och tidskomponenterna separerade med bindestreck respektive kolon, dvs YYYY-MM-DD eller YYYY-MM-DDTHH:MM, så kan det aktiveras genom att bifoga parametern "timeSeparators=1" till API-anropet.

Som alternativ till ISO8601 finns även ett mer kompakt tidformat på formen "YYMMDD" eller "YYMMDDHHMM". Det aktiveras genom att bifoga parametern "timeFormat=compact" till API-anropet.

Endpoints

Läsa ut alla tillgängliga räkneverk

https://e-logger.se/api/counters/

Detta anrop returnerar alla kontots tillgängliga räkneverk från alla anslutna loggrar och LoRaWAN-enheter.

Utdata: För varje räkneverk - namn, serienummer, tid för senaste värde samt senaste värde.

Exempel - läs ut alla räkneverk
https://e-logger.se/api/counters?k=REYjHDehW1QtCquYnqaP2wTAM

Returnerar:

[
  {
     "name":"HUS3_LGH1",
     "serial":"123458",
     "time":"20240207T1015",
     "value":"23119.42"
  },
  {
     "name":"HUS3_LGH2",
     "serial":"123457",
     "time":"20240207T1016",
     "value":"1009.16"
  },
  {
     "name":"HUS3_LGH3",
     "serial":"123456",
     "time":"20240207T1016",
     "value":"35069.26"
  }
  ...
  ...
]

Läsa ut specifikt räkneverk

https://e-logger.se/api/counters/serienummer

Serienummer anger serienummer för den mätare vars data skall läsas ut. Serienummer för loggerkanaler ändras/återfinns under E-logger->Inställningar->Kanaler. Serienummer för LoRaWAN-kanaler ändras/återfinns under E-logger->Inställningar->LoRaWAN.

Använd header "Accept-Encoding: gzip" vid anropet för att få komprimerad data, dvs. mindre last på nätet.

Utdata: Om tidintervall inte anges - namn, serienummer, tid för senaste värde samt senaste värde Om tidintervall anges - namn, serienummer, lista med tidpunkter och värden

Parametrar

Starttid anges med parametern timeStart på formen YYYYMMDD eller YYYYMMDDTHH.

Sluttid anges med parametern timeStop på formen YYYYMMDD eller YYYYMMDDTHH.

År, månad och dag i parametrarna för start- och sluttid kan separeras med bindestreck för den som så önskar, det vill säga YYYY-MM-DD eller YYYY-MM-DDTHH. Det går även att ange årtal med bara två siffror.

Sluttid kan utelämnas om bara värden för en enda dag önskas.

Om både start- och sluttid utelämnas så returneras senaste mätvärde.

Utläsning av data kan ske med tim- eller dagsintervall. Val av intervall sker med parametern resolution. Vid timintervall anges resolution=3600. Vid dagsintervall anges resolution=86400. Om parametern resolution utelämnas är 86400 förvalt.

Maximalt tidsintervall vid timupplösning är en månad.

Maximalt tidsintervall vid dagsupplösning är ett år.

Exempel 1 - från mätare med serienummer 123456 - läs senaste värde med kompakt tidsformat

I detta exempel används parametern timeFormat=compact för utdata med kompakt tidsformat.

https://e-logger.se/api/counters/123456?k=REYjHDehW1QtCquYnqaP2wTAM&timeFormat=compact

Returnerar:

[
  {
     "name":"HUS1_LGH3",
     "serial":"123456",
     "time":"2402071027",
     "value":"35066.32"
  }
]
Exempel 2 - från mätare med serienummer 123456 - läs ut mätarställning 240201
https://e-logger.se/api/counters/123456?k=REYjHDehW1QtCquYnqaP2wTAM&timeStart=2024-02-01

Returnerar

{
  "name":"HUS1_LGH3",
  "serial":"123456",
  "values":{
     "20240201":"34166.29"
  }
}
Exempel 3 - från mätare med serienummer 123456 - läs ut tre timvärden från 24-01-21 kl 21 till 24-01-21 kl 23

I detta exempel används parametern timeSeparators=1 för att få tidskomponenterna i utdata separerade med bindestreck respektive kolon.

https://e-logger.se/api/counters/123456?k=REYjHDehW1QtCquYnqaP2wTAM&timeSeparators=1&resolution=3600&timeStart=2024-01-21T21&timeStop=2024-01-21T23

Returnerar:

{
  "name":"HUS1_LGH3",
  "serial":"123456",
  "values":{
     "2024-01-21T21:00":"34998.51",
     "2024-01-21T22:00":"35001.95",
     "2024-01-21T23:00":"35002.22"
  }
}

Felmeddelanden

Om något går fel vid REST-anropet returneras ett felmeddelande i JSON-format.

Exempel:

{"error":"timeStop must be greater than timeStart"}
{"error":"wait at least 1 second between calls"}
{"error":"no values found"}
Manualer