#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åttElvaco (FTP)Mivo (webhook)Varför Mivo
ProtokollElvaco (FTP)FTP och en CSV-fil per hämtningMivo (webhook)HTTP POST med JSONVarför Mivoett JSON-paket vi läser direkt, inte en CSV-fil att hämta
KvittoElvaco (FTP)inget per filMivo (webhook)204 i samma svarVarför Mivo204 i samma svar; filen ger inget kvitto
Förväntat intervallElvaco (FTP)3600 sMivo (webhook)900 sVarför Mivo900 s mot 3600 s
Räknas som gammal efterElvaco (FTP)7200 sMivo (webhook)1800 sVarför Mivo1800 s mot 7200 s
BevakningElvaco (FTP)tittar i inkorgen var trettionde sekundMivo (webhook)Mivo skickar själv, ingen bevakningVarför MivoMivo skickar själv; ingen bevakning av en inkorg
InloggningElvaco (FTP)ett konto till hela FTP-inkorgenMivo (webhook)Bearer-nyckel i varje rapportVarför MivoBearer per rapport, inte ett konto till hela inkorgen
TidsstämpelElvaco (FTP)svensk lokal tid, ingen zonMivo (webhook)ISO 8601 med ZVarför MivoISO 8601 med Z, inte svensk tid utan tidszon
Från mätning till databasElvaco (FTP)FTP-inkorg, en bevakning var trettionde sekund, sedan ett senare samlingsjobbMivo (webhook)skrivs in innan svaret 204Varfö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.

  1. 01Mottagethur stort paketet är
  2. 02Kontrollsummaså att vi vet att inget ändrats på vägen
  3. 03JSONtexten läses som JSON
  4. 04Mätaremätaren måste vara känd och påslagen
  5. 05Identitetsamma Mivo ger alltid samma identitet
  6. 06Typbara mätartyper vi känner igen
  7. 07Sparany rad om den saknas, annars uppdateras den som finns — aldrig två
  8. 08Svar204, då slutar Mivo skicka om
  9. 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 än
  1. 02Varfö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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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.