REST-API
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"}