Only this pageAll pages
Powered by GitBook
1 of 33

DSMRloggerAPI

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Documentatie DSMRloggerAPI firmware

In dit gitbook vind je alle informatie over de restAPI firmware voor de DSMR-logger

Mijn !

Introductie

Je vindt hier de documentatie over de DSMRloggerAPI firmware voor versie 4 van de DSMR-logger.

De DSMR-logger v4.5 die je via opencircuit.nl kunt kopen (na juni 2021) is voorzien van de hier beschreven firmware. Deze DSMR-logger is "Plug-And-Play" en alleen in bijzondere gevallen moet er iets aan de instellingen aangepast worden (bijvoorbeeld als je een hele oude Slimme Meter hebt of als je een zgn. "Enkel Fase" Slimme meter hebt).

Deze documentatie is voor de gebruikers en makers die meer willen dan alleen de DSMR-logger aansluiten op hun Slimme meter. De meeste gebruikers zullen voldoende hebben aan alleen dit hoofdstuk.

Let op! Deze documentatie is "work in progress"! Controleer daarom regelmatig op updates.

De DSMR-logger is een hardware en software systeem waarmee de Slimme Meter kan worden uitgelezen. De uitgelezen data (zgn. telegrammen) worden in de DSMR-logger opgeslagen en kunnen met behulp van gestandaardiseerde restAPI call's worden opgevraagd.

Vanaf versie 3 kan de DSMRloggerAPI firmware overweg met vrijwel alle, mij bekende, Slimme Meters (DSMR 2+, DSMR3+, DSMR4+, DSMR5+ en de Belgische varianten hiervan). Het probleem van sommige installaties met de voor geprogrammeerde aansluiting van de Gas Meter op MBus-1 is vanaf versie 3 via settingen aan te passen.

Meer informatie

  • Deze post beschrijft het eerste idee achter de Slimme Meter uitlezer.

  • In deze post kun je de ontwikkeling van de hardware en firmware vinden.

  • Hier staat een introductie van de DSMRloggerAPI firmware

  • Veel informatie over de hardware en het gebruik wordt hier beschreven.

  • De DSMRloggerAPI firmware kun je op github vinden

  • Voor de meeste mensen is het gebruik van de twee binaries het eenvoudigste. je kunt deze binaries hier vinden.

Begrippen

In dit document worden de volgende begrippen gebruikt:

Begrip
Omschrijving

DSMR

De is een afgeleide van de NTA 8130-normering. De DSMR-logger (versie 4) is ontworpen voor de DSMR 4.0 of hoger. DSMR 4.0 geeft aan dat de Slimme Meter op de P1-poort 5 volt bij 100mA moet kunnen leveren (zie pagina 8 en 9 van de specificatie). Vanaf DSMR 5.0+ moet de Slimme Meter 250mA op de P1 poort kunnen leveren. De DSMR-logger gebruikt tijdens het opstarten ~250mA. Heb je een Slimme Meter die volgens een DSMR standaard < 5.0 werkt, dan zul je bijna altijd een externe voeding nodig hebben!

DSMR-logger

de Hardware (Let op! Streepje tussen DSMR en logger)

DSMR-logger v4 (of Versie 4)

Versie 4 van de Hardware. Deze hardware is de basis voor dit project.

DSMR-logger v4.5 (of Versie 4.5)

van de Hardware Deze hardware is een verbetering van de v4 hardware. Standaard heeft deze hardware een 5Volt DC Jack-Plug voor gebruik van een externe voeding en een jumper om de voeding te selecteren vanuit de Slimme Meter of de Jack-Plug. Bij gebruik van de Jack-Plug wordt de 5Volt van de Slimme Meter ontkoppelt. De draadbruggen voor de selectie van de signalen naar een OLED display zijn nu standaard [GND,3v3,SCL,SDA] doorverbonden maar deze kunnen, door de verbindingen aan de achterkant van de PCB door te snijden, ook aangepast worden.

DSMRloggerAPI

De firmware voor de DSMR-logger v4 Deze firmware maakt intensief gebruik van restAPI's. Let op! De firmware heeft geen streepje (-) tussen "DSMR" en "logger"

ESP-12

Een bordje met een ESP8266 processor en 4MB Flash Geheugen Dit bordje wordt gebruikt in de DSMR-logger v4

Een volledige beschrijving van dit project kun je hier vinden.

Dutch Smart Meter Requirements
DSMR-specificatie
Versie 4.5

DSMRloggerAPI GUI

Hieronder wat afbeeldingen van de standaard meegeleverde GUI

per Maand
per Maand Grafisch
Telegram
Systeem Info

FSmanager

Met de FSmanager is het mogelijk bestanden op het bestand systeem (Little File System) van de DSMR-logger te plaatsen of ze ervan te verwijderen. Ook kan de inhoud van bestanden die aanwezig zijn op het bestand systeem worden getoond (dit is niet mogelijk met .html bestanden omdat deze direct door de browser geïnterpreteerd -en dus uitgevoerd- worden).

Daarnaast kent de FSmanager nog de volgende functies:

  • Starten van de Update Server [Update Firmware]

  • Rebooten van de DSMR-logger[Reboot]

  • Formatteren van het LittleFS [Format FileSYS]

  • Soms blijft het scherm leeg. Klik dan op de knop[List File System]

  • Met de knop[Exit FSmanager] keer je terug naar het hoofdscherm.

Er zijn verschillende manieren om de FSmanager te starten:

  • Vanuit het DSMR-logger hoofdscherm door op het icoon te klikken

  • Door in de browser de volgende URL in te toetsen http://dsmr-api.local/FSmanager of: http://<ipAdresVanDeLogger>/FSmanager

Het bestand systeem formatteren

De FSmanager heeft de mogelijkheid om het bestand systeem te formatteren. Deze functie is alleen nodig als het bestand systeem problemen vertoont. Normaal gesproken is deze functie nooit nodig en daarom is de knop ook uitgeschakeld. Om de knop te activeren moet het bestand met de naam !doNotFormat(het eerste teken is een uitroep-teken) ge-delete worden. De inhoud van het bestand is niet belangrijk. Zodra dit bestand afwezig is wordt de [Format FileSYS] knop geactiveerd.

Pas op! Door het bestand systeem te formatteren raak je álle bestanden die op het bestand systeem staan kwijt! Maak zo nodig eerst kopiëren van belangrijke bestanden.

Na iedere herstart zal de DSMRloggerAPI firmware controleren of het bestand systeem correct geformatteerd is. In dat geval plaatst het automatisch een bestand met de naam !doNotFormat in de root directory.

Slimme Meter gerelateerde restAPI's

Systeem Informatie van de Slimme Meter

GET http://dsmr-api.local/api/v1/sm/info

Geeft systeem een JSON string met informatie van de Slimme Meter, zoals ID's en Serie nummers, terug.

{"info":[
  {"name": "identification", "value": "XMX5LABCDB2410065887"},
  {"name": "p1_version", "value": "50"},
  {"name": "equipment_id", "value": "4530303336303000000000000000000040"},
  {"name": "electricity_tariff", "value": "0001"},
  {"name": "mbus1_device_type", "value": 3},
  {"name": "mbus1_equipment_id_tc", "value": "4730303339303031363532303530323136"},
  {"name": "mbus4_device_type", "value": 5},
  {"name": "mbus4_equipment_id_tc", "value": "4730303339303031344444444444444444"}
]}

Informatie uit het laatst gelezen telegram

GET http://dsmr-api.local/api/v1/sm/actual

Geeft de actuele meterstanden van de Slimme Meter terug in een JSON string.

{"actual":[
  {"name": "timestamp", "value": "210419050001S"},
  {"name": "energy_delivered_tariff1", "value": 2332.511, "unit": "kWh"},
  {"name": "energy_delivered_tariff2", "value": 8514.767, "unit": "kWh"},
  {"name": "energy_returned_tariff1", "value": 353.841, "unit": "kWh"},
  {"name": "energy_returned_tariff2", "value": 196.645, "unit": "kWh"},
  {"name": "power_delivered", "value": 1.880, "unit": "kW"},
  {"name": "power_returned", "value": 0.000, "unit": "kW"},
  {"name": "voltage_l1", "value": 239.000, "unit": "V"},
  {"name": "voltage_l2", "value": 236.000, "unit": "V"},
  {"name": "voltage_l3", "value": 237.000, "unit": "V"},
  {"name": "current_l1", "value": 3, "unit": "A"},
  {"name": "current_l2", "value": 0, "unit": "A"},
  {"name": "current_l3", "value": 0, "unit": "A"},
  {"name": "power_delivered_l1", "value": 0.500, "unit": "kW"},
  {"name": "power_delivered_l2", "value": 0.899, "unit": "kW"},
  {"name": "power_delivered_l3", "value": 0.480, "unit": "kW"},
  {"name": "power_returned_l1", "value": 0.000, "unit": "kW"},
  {"name": "power_returned_l2", "value": 0.000, "unit": "kW"},
  {"name": "power_returned_l3", "value": 0.000, "unit": "kW"},
  {"name": "gas_delivered", "value": 2963.380, "unit": "m3"}
]}

Informatie uit het laatst gelezen telegram

GET http://dsmr-api.local/api/v0/sm/actual

Deze api dient voor backwards compatibility met de DSMRloggerWS firmware. Deze api call geeft de actuele informatie van de Slimme Meter terug in een JSON string.

{
  "timestamp": "170102105001S",
  "energy_delivered_tariff1": 146.380,
  "energy_delivered_tariff2": 70.511,
  "energy_returned_tariff1": 111.164,
  "energy_returned_tariff2": 75.530,
  "power_delivered": 1.750,
  "power_returned": 1.270,
  "voltage_l1": 242.000,
  "voltage_l2": 240.000,
  "voltage_l3": 234.000,
  "current_l1": 0,
  "current_l2": 0,
  "current_l3": 0,
  "power_delivered_l1": 1.046,
  "power_delivered_l2": 0.464,
  "power_delivered_l3": 0.243,
  "power_returned_l1": 0.669,
  "power_returned_l2": 0.521,
  "power_returned_l3": 0.078,
  "gas_delivered": 100.550
}

Alle velden die de dsmr library terug kan geven

GET http://dsmr-api.local/api/v1/sm/fields

Geeft een JSON string met alle velden die door de DSMRloggerAPI firmware kunnen worden terug gegeven. Let op! Niet iedere Slimme Meter geeft ook al deze velden terug. Als de Slimme meter een veld niet terug geeft heeft "value" de waarde "-".

{"fields":[
  {"name": "identification", "value": "XYZ12345678909897654"},
  {"name": "p1_version", "value": "50"},
  {"name": "p1_version_be", "value": "-"},
  {"name": "timestamp", "value": "210610103351S"},
  {"name": "equipment_id", "value": "45303033363030333754321098765"},
  {"name": "energy_delivered_tariff1", "value": 4491.266, "unit": "kWh"},
  {"name": "energy_delivered_tariff2", "value": 6065.275, "unit": "kWh"},
  {"name": "energy_returned_tariff1", "value": 788.990, "unit": "kWh"},
  {"name": "energy_returned_tariff2", "value": 1809.853, "unit": "kWh"},
  {"name": "electricity_tariff", "value": "0002"},
  {"name": "power_delivered", "value": 0.000, "unit": "kW"},
  {"name": "power_returned", "value": 1.023, "unit": "kW"},
  {"name": "electricity_threshold", "value": "-"},
  {"name": "electricity_switch_position", "value": "-"},
  {"name": "electricity_failures", "value": 11},
  {"name": "electricity_long_failures", "value": 1},
  {"name": "electricity_failure_log", "value": "(1)(0-0:96.7.19)(200210104719W)(0000014540*s)"},
  {"name": "electricity_sags_l1", "value": 10},
  {"name": "electricity_sags_l2", "value": 7},
  {"name": "electricity_sags_l3", "value": 9},
  {"name": "electricity_swells_l1", "value": 0},
  {"name": "electricity_swells_l2", "value": 0},
  {"name": "electricity_swells_l3", "value": 0},
  {"name": "message_short", "value": "-"},
  {"name": "message_long", "value": ""},
  {"name": "voltage_l1", "value": 235.000, "unit": "V"},
  {"name": "voltage_l2", "value": 238.000, "unit": "V"},
  {"name": "voltage_l3", "value": 239.000, "unit": "V"},
  {"name": "current_l1", "value": 0.000, "unit": "A"},
  {"name": "current_l2", "value": 0.000, "unit": "A"},
  {"name": "current_l3", "value": 5.000, "unit": "A"},
  {"name": "power_delivered_l1", "value": 0.075, "unit": "kW"},
  {"name": "power_delivered_l2", "value": 0.106, "unit": "kW"},
  {"name": "power_delivered_l3", "value": 0.000, "unit": "kW"},
  {"name": "power_returned_l1", "value": 0.000, "unit": "kW"},
  {"name": "power_returned_l2", "value": 0.000, "unit": "kW"},
  {"name": "power_returned_l3", "value": 1.205, "unit": "kW"},
  {"name": "mbus1_device_type", "value": 3},
  {"name": "mbus1_equipment_id_tc", "value": "47303044449303031363532309876543211"},
  {"name": "mbus1_equipment_id_ntc", "value": "-"},
  {"name": "mbus1_valve_position", "value": "-"},
  {"name": "mbus1_delivered", "value": 3845.379, "unit": "m3"},
  {"name": "mbus1_delivered_ntc", "value": "-"},
  {"name": "mbus1_delivered_dbl", "value": "-"},
  {"name": "mbus2_device_type", "value": "-"},
  {"name": "mbus2_equipment_id_tc", "value": "-"},
  {"name": "mbus2_equipment_id_ntc", "value": "-"},
  {"name": "mbus2_valve_position", "value": "-"},
  {"name": "mbus2_delivered", "value": 0.000, "unit": "GJ"},
  {"name": "mbus2_delivered_ntc", "value": "-"},
  {"name": "mbus2_delivered_dbl", "value": "-"},
  {"name": "mbus3_device_type", "value": "-"},
  {"name": "mbus3_equipment_id_tc", "value": "-"},
  {"name": "mbus3_equipment_id_ntc", "value": "-"},
  {"name": "mbus3_valve_position", "value": "-"},
  {"name": "mbus3_delivered", "value": 0.000, "unit": "m3"},
  {"name": "mbus3_delivered_ntc", "value": "-"},
  {"name": "mbus3_delivered_dbl", "value": "-"},
  {"name": "mbus4_device_type", "value": "-"},
  {"name": "mbus4_equipment_id_tc", "value": "-"},
  {"name": "mbus4_equipment_id_ntc", "value": "-"},
  {"name": "mbus4_valve_position", "value": "-"},
  {"name": "mbus4_delivered", "value": 0.000, "unit": "m3"},
  {"name": "mbus4_delivered_ntc", "value": "-"},
  {"name": "mbus4_delivered_dbl", "value": "-"}
]}

Informatie van één veld uit het laatst gelezen telegram

GET http://dsmr-api.local/api/v1/sm/fields/<fieldName>

Geeft een JSON string met informatie over één veld terug. Bijvoorbeeld: http://dsmr-api.local/api/v1/sm/fields/current_l2

{"fields":[
  {"name": "timestamp", "value": "210315080001S"},
  {"name": "current_l2", "value": 1, "unit": "A"}
]}

Onbewerkt telegram uit de Slimme Meter

GET http://dsmr-api.local/api/v1/sm/telegram

Geeft een telegram terug precies zo als de Slimme Meter die ook afgeeft, dus inclusief "\r\n" line endings en inclusief de CheckSum!

/XMX5LABCDE2410065447

1-3:0.2.8(50)
0-0:1.0.0(210610104031S)
0-0:96.1.1(4530304446303033373839312345678906)
1-0:1.8.1(004491.266*kWh)
1-0:1.8.2(006065.310*kWh)
1-0:2.8.1(000788.990*kWh)
1-0:2.8.2(001809.893*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(00.037*kW)
1-0:2.7.0(00.000*kW)
0-0:96.7.21(00011)
0-0:96.7.9(00001)
1-0:99.97.0(1)(0-0:96.7.19)(200210104719W)(0000014540*s)
1-0:32.32.0(00010)
1-0:52.32.0(00007)
1-0:72.32.0(00009)
1-0:32.36.0(00000)
1-0:52.36.0(00000)
1-0:72.36.0(00000)
0-0:96.13.0()
1-0:32.7.0(238.0*V)
1-0:52.7.0(238.0*V)
1-0:72.7.0(238.0*V)
1-0:31.7.0(002*A)
1-0:51.7.0(000*A)
1-0:71.7.0(003*A)
1-0:21.7.0(00.598*kW)
1-0:41.7.0(00.102*kW)
1-0:61.7.0(00.000*kW)
1-0:22.7.0(00.000*kW)
1-0:42.7.0(00.000*kW)
1-0:62.7.0(00.663*kW)
0-1:24.1.0(003)
0-1:96.1.0(4730305559303031363839312345678906)
0-1:24.2.1(210610104007S)(03845.376*m3)
!344A