#koligo
Mivo för alla
I många fastigheter sitter en Mivo som läser el, vatten och värme.Den kan själv skicka mätvärdena hit som JSON, med HTTP POST och en Bearer-nyckel — en webhook.Svaret är 204.Elvaco skriver i stället CSV-filer till en FTP-inkorg.
01Så är sidan uppbyggd
Först en tabell: Elvaco mot Mivo, med tider vi har mätt.Under tabellen kan du skicka en rapport hit på riktigt.Resten förklarar varför webhooken är bättre, vad som står i rapporten och vad som händer när den kommer fram.
Elvaco mot Mivo, sida vid sida
| Mått | Elvaco (FTP) | Mivo (webhook) | Varför Mivo |
|---|---|---|---|
| Protokoll | Elvaco (FTP)FTP och en CSV-fil per hämtning | Mivo (webhook)HTTP POST med JSON | Varför Mivoett JSON-paket vi läser direkt, inte en CSV-fil att hämta |
| Kvitto | Elvaco (FTP)inget per fil | Mivo (webhook)204 i samma svar | Varför Mivo204 i samma svar; filen ger inget kvitto |
| Förväntat intervall | Elvaco (FTP)3600 s | Mivo (webhook)900 s | Varför Mivo900 s mot 3600 s |
| Räknas som gammal efter | Elvaco (FTP)7200 s | Mivo (webhook)1800 s | Varför Mivo1800 s mot 7200 s |
| Bevakning | Elvaco (FTP)tittar i inkorgen var trettionde sekund | Mivo (webhook)Mivo skickar själv, ingen bevakning | Varför MivoMivo skickar själv; ingen bevakning av en inkorg |
| Inloggning | Elvaco (FTP)ett konto till hela FTP-inkorgen | Mivo (webhook)Bearer-nyckel i varje rapport | Varför MivoBearer per rapport, inte ett konto till hela inkorgen |
| Tidsstämpel | Elvaco (FTP)svensk lokal tid, ingen zon | Mivo (webhook)ISO 8601 med Z | Varför MivoISO 8601 med Z, inte svensk tid utan tidszon |
| Från mätning till databas | Elvaco (FTP)FTP-inkorg, en bevakning var trettionde sekund, sedan ett senare samlingsjobb | Mivo (webhook)skrivs in innan svaret 204 | Varför Mivoskrivs in före 204, inget senare samlingsjobb |
Så tas rapporten emot
Här ser du vad som händer när en rapport kommer in. Storlek och kontrollsumma räknas i din webbläsare, på riktigt. Inget skickas förrän du trycker på knappen.
- 01Mottagethur stort paketet är
- 02Kontrollsummaså att vi vet att inget ändrats på vägen
- 03JSONtexten läses som JSON
- 04Mätaremätaren måste vara känd och påslagen
- 05Identitetsamma Mivo ger alltid samma identitet
- 06Typbara mätartyper vi känner igen
- 07Sparany rad om den saknas, annars uppdateras den som finns — aldrig två
- 08Svar204, då slutar Mivo skicka om
- 09Sparatdet som togs emot går att läsa tillbaka
Samma rapport från din dator till den här sajten. Byt Bearer-nyckeln mot din egen innan du kör.
curl -i -X POST https://cedricflodin.se/api/mivo \
-H "Authorization: Bearer DIN-EGEN-NYCKEL" \
-H "Content-Type: application/json" \
-d '{
"ProtocolVersion": 2,
"UnitSerial": "DEMO-MIVO-001",
"Readings": [
{
"ID": "20250412",
"MType": "Heat",
"Time": "2026-09-08T06:00:00Z",
"Values": [
{ "Code": "VE", "Unit": "kWh", "Value": 128450.7 },
{ "Code": "VO", "Unit": "m3", "Value": 3120.44 }
]
}
]
}'Knappen skickar på riktigt och visar det svar webbläsaren får. Sidan hittar inte på ett 204.
Inget skickat än02Varför egen lagring
En mätare som bara syns i leverantörens portal är ett lån.Byter fastigheten leverantör försvinner historiken.Om värdena ligger i en egen databas kan de kombineras med hyresgäster, väder och drift.De finns kvar oavsett vem som läser av mätarna nästa år.
- Codd, A Relational Model of Data for Large Shared Data Banks, CACM 1970
03Webhooken: Mivo skickar själv
Mivo läser mätarna och kan, på tider vi sätter, skicka värdena till en adress vi själva väljer.Det är en webhook: Mivo tar kontakt, vi behöver inte fråga.Innehållet är JSON och går som HTTP POST.I varje rapport ligger en Bearer-nyckel som visar att avsändaren får lämna in.Nyckeln ska med varje gång, inte bara den första.Utan nyckel kommer ingenting in.
- MIVO Connect: Type 0 ValueReport, JSON, HTTP, Bearer
- Saltzer & Schroeder, The Protection of Information in Computer Systems, IEEE 1975 — complete mediation
04Alternativet: Elvaco och filen i inkorgen
Så gör de flesta.En Elvaco-enhet skriver mätvärdena som CSV-filer och lägger dem i en inkorg på en FTP-server.Ett program tittar i inkorgen och läser filen.Ingen enskild avläsning får ett eget kvitto.Inloggningen är ett konto till hela inkorgen, inte en nyckel per rapport.Tiderna har dessutom stått i svensk lokal tid, utan tidszon.
- RFC 959 File Transfer Protocol
- RFC 3339 Date and Time on the Internet: Timestamps
05Svaret 204
När rapporten kommer in skrivs värdena in: ny rad om den saknas, annars uppdateras den som redan finns — aldrig två.Svaret är 204: mottaget, inget mer att säga.Får Mivo något annat svar tror den att leveransen misslyckades och skickar om.204 är kvittot.En filinkorg ger inget sådant kvitto.
- RFC 9110 HTTP Semantics, §15.3.5 204 No Content
- RFC 9110 HTTP Semantics, §9.2.2 idempotent methods
06Vad rapporten innehåller
Först serienumret på insamlingsenheten.Sedan en avläsning per mätare: identitet, typ, tidsstämpel i ISO 8601, och värdena.Varje värde har en kod, en enhet och ett tal.Typen är en sluten lista, så inget okänt slinker in.Koden blir en etikett i databasen.
- Kent, Data and Reality, 1978 — name the referent, not the store
- Mivo-schema MI-000022-005, värden som kod, enhet och tal
07När det går fel
Ett okänt serienummer stoppas innan något skrivs in.Trasig JSON eller en mätartyp utanför listan ger ett svar i 400-serien — felet ligger hos avsändaren.Mivo försöker igen.
- Saltzer & Schroeder — fail-safe defaults
08Nästa
Nästa steg är att se att värdena finns kvar: rätt mätare, rätt tid, rätt enhet.Elvacos filer blir kvar som en andra väg in, för hus som redan har den utrustningen.I nya hus är webhooken förstahandsvalet.