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.
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.
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.
DSMR-editor
De DSMRloggerAPI heeft de mogelijkheid om meterstanden en instellingen via de browser te veranderen.
Je start de DSMR-editor door in het hoofdscherm op het icoontje te klikken.
Betekenis van de knoppen:
Terug: Terug naar het hoofdscherm van de DSMR-logger
Meterstanden: Hier kunnen, per maand, de meterstanden worden ingevoerd. Er kan gekozen worden tussen de meterstanden van de gebruikte energie, de opgewekte energie en het gas verbruik.
Settings: Hier kunnen bepaalde parameters zoals de energie tarieven, interval voor het lezen van telegrammen, gegevens van de MQTT broker en het autorisatie token van Mindergas.nl worden ingesteld.
Herstel: ingevoerde veranderingen die nog niet zijn opgeslagen worden teniet gedaan.
Opslaan: de ingevoerde gegevens worden opgeslagen
Meterstanden aanpassen
Het muteren van de maanden tabel is nog niet helemaal zoals het zou moeten zijn. Het is vrij lastig omdat de software zeker moet zijn dat de jaar/maand gegevens, van boven naar beneden, aflopen en aansluiten en ook de meterstanden moeten een steeds lagere waarde hebben. Wordt niet aan voorgaande inter-validatie voldaan, dan kleurt het vakje waar de fout is ontdekt rood en worden de gegevens niet opgeslagen.
Settings aanpassen
Hostname
De default Hostname is DSMR-API. De documentatie gaat ook uit van deze default hostname. Mocht je de hostname hier veranderen dan moet je bij het lezen van de documentatie overal "DSMR-API" vervangen door de hier ingevoerde hostname (in bovenstaand plaatje is de hostname veranderd in "DSMR-TST3").
Zet deze rubriek op "1" als je een DSMR 2+ of DSMR 3+ Slimme Meter hebt.
Deze instelling wordt pas actief nadat de DSMR-logger opnieuw is opgestart.
MBus-1 (2,3,4) Type Meter
Voer hier het Type in van de meter die op de betreffende MBus is aangesloten. Het Type van Gas meters is "003". Als in jouw installatie de Gas meter is aangesloten op MBus-ID2 voer je bij de rubriek"MBus-2 Type meter"een "3" in. Bij MBus-ID's waar niets op is aangesloten voer je het beste een "0" in.
Default interval is 10. Dit betekent dat er iedere tien seconden een telegram wordt gelezen en verwerkt. De minimum waarde is 2 seconden.
Te gebruiken index.html pagina
De standaard index pagina is "DSMRindex.html". Mocht je zelf een GUI schrijven dan kun je hier de naam van de index pagina van jouw GUI invullen (nadat je jouw .html pagina naar het bestand systeem hebt ge-upload).
Standaard staat er ook een DSMRindexEDGE.html pagina op het bestand systeem. Deze is gelijk aan de DSMRindex.html pagina maar hij haalt de javascript en css bestanden uit de github repository zodat aanpassingen (uitbreidingen of verbeteringen) automatisch door de DSMR-logger gebruikt worden.
Het ADJindex.html bestand is een bootstrap naar de door gemaakte GUI, het HJMindex.html bestand is een bootstrap naar de door Erik ontwikkelde GUI.
Je kunt deze GUI's eenvoudig uitproberen door in de FSmanager op deze bestanden te klikken.
OLED type
Hier kun je invoeren Ăłf en wat voor OLED schermpje op de DSMR-logger is aangesloten.
Voer een 0 (nul) in als er geen OLED scherm is aangesloten
Voer een 1 in als het scherm van het type SDD1306 is
Voer een 2 in als het scherm van het type SH1106 is
Flip Oled scherm
Voer 0 (nul) in om het scherm standaard te gebruiken
Voet 1 in als je het scherm "op zijn kop" gebruikt.
MQTT Top Topic
Dit is het topic waarmee de MQTT berichten naar de broker worden verstuurd. Standaard is het Top Topic "DSMR-API". In bovenstaand plaatje is het Top Topic veranderd in "DSMR-TST3".
Alle beschikbare gegevens kunnen via restAPI call's bij de DSMR-logger worden opgevraagd. De restAPI's zijn verdeelt in drie groepen. Informatie die met de hardware en firmware te maken heeft (/dev), informatie die met de Slimme Meter te maken heeft (/sm) en historische gegevens die, aan de hand van de door de Slimme Meter afgegeven gegevens, door de DSMR-logger in bestanden worden opgeslagen (/hist).
Ik ben niet erg handig met JSON libraries (liefst parse ik de data helemaal zelf zodat ik ook alles zelf "in de hand" heb). Het zou mij daarom ook niet verbazen als onderstaande code simpeler en beter kan.
Getest door Bert Diepeveen (met dank!).
Verder moet je de Algemene functies onderaan deze pagina in je sketch opnemen.
ESP8266 (WiFi)
Ik ben niet erg handig met JSON libraries (liefst parse ik de data helemaal zelf zodat ik ook alles zelf "in de hand" heb). Het zou mij daarom ook niet verbazen als onderstaande code simpeler en beter kan.
Verder moet je de Algemene functies onderaan deze pagina in je sketch opnemen.
Ik ben niet erg handig met JSON libraries (liefst parse ik de data helemaal zelf zodat ik ook alles zelf "in de hand" heb). Het zou mij daarom ook niet verbazen als onderstaande code simpeler en beter kan.
Verder moet je de Algemene functies onderaan deze pagina in je sketch opnemen.
fetch("http://dsmr-api.local/api/v1/dev/time")
.then(response => response.json())
.then(json => {
console.log("parsed .., data is ["+ JSON.stringify(json)+"]");
for( let i in json.devtime ){
if (json.devtime[i].name == "time")
{
console.log("Got new time ["+json.devtime[i].value+"]");
document.getElementById('theTime').innerHTML = json.devtime[i].value;
}
}
})
.catch(function(error) {
var p = document.createElement('p');
p.appendChild(
document.createTextNode('Error: ' + error.message)
);
});
// in the main program:
#include <Ethernet.h>
#include <SPI.h>
#include <Arduino_JSON.h> // let op! dit is een andere library dan "ArduinoJson"
//
#define _IS_ARDUINO_MEGA
#define _DSMR_IP_ADDRESS "IP_ADDRESS_OF_YOUR_DSMR_LOGGER"
#define _READINTERVAL 60000
//
const char *DSMRprotocol = "http://";
const char *DSMRserverIP = _DSMR_IP_ADDRESS;
const char *DSMRrestAPI = "/api/v1/sm/actual";
String payload;
int httpResponseCode;
uint32_t lastRead = 0;
//--- catch specific fields for further processing -------
//--- these are just an example! see readDsmrLogger() ----
String timeStamp;
int voltageL1, currentL1;
float pwrDelivered, pwrReturned;
//--------------------------------------------------------------------------
bool dsmrGETrequest()
{
EthernetClient ETHclient;
HttpClient DSMRclient = HttpClient(ETHclient, DSMRserverIP, 80);
payload = "";
Serial.println(F("making GET request"));
DSMRclient.get(DSMRrestAPI);
// read the response code and body of the response
httpResponseCode = DSMRclient.responseStatusCode();
Serial.print(F("http Response Code: "));
Serial.println(httpResponseCode);
if (httpResponseCode <= 0)
{
return false;
}
payload = DSMRclient.responseBody();
//--debug-Serial.print(F("payload: "));
//--debug-Serial.println(payload);
// Free resources
DSMRclient.stop();
return true;
} // dsmrGETrequest()
//--------------------------------------------------------------------------
void setup()
{
// setup Serial ..
.
.
// Initialize Ethernet library
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
if (!Ethernet.begin(mac))
{
Serial.println(F("Failed to configure Ethernet"));
return;
}
delay(1000);
.
.
lastRead = millis() + _READINTERVAL;
} // setup()
// Include in the main program:
#include <WiFi.h>
#include <Arduino_JSON.h> // let op! Niet ArduinoJson!
//
#define _IS_ESP8266
#define _DSMR_IP_ADDRESS "IP_ADDRESS_OF_YOUR_DSMR_LOGGER"
#define _WIFI_SSID "YOUR_WIFI_SSID"
#define _WIFI_PASSWRD "YOUR_WIF_PASSWORD"
#define _READINTERVAL 60000
//
const char *ssid = _WIFI_SSID;
const char *password = _WIFI_PASSWRD;
//
const char *DSMRprotocol = "http://";
const char *DSMRserverIP = _DSMR_IP_ADDRESS;
const char *DSMRrestAPI = "/api/v1/sm/actual";
String payload;
int httpResponseCode;
uint32_t lastRead = 0;
//--- catch specific fields for further processing -------
//--- these are just an example! see readDsmrLogger() ----
String timeStamp;
int voltageL1, currentL1;
float pwrDelivered, pwrReturned;
//--------------------------------------------------------------------------
bool dsmrGETrequest()
{
WiFiClient DSMRclient;
payload = "";
Serial.print("DSMRclient.connect("); Serial.print(DSMRserverIP);
Serial.println(", 80)");
if (!DSMRclient.connect(DSMRserverIP, 80))
{
Serial.println(F("error connecting to DSMRlogger "));
payload = "{\"actual\":[{\"name\":\"httpresponse\", \"value\":\"error connecting\"}]}";
return false;
}
//-- normal operation
DSMRclient.print(F("GET "));
DSMRclient.print(DSMRrestAPI);
DSMRclient.println(" HTTP/1.1");
DSMRclient.print(F("Host: "));
DSMRclient.println(DSMRserverIP);
DSMRclient.println(F("Connection: close"));
DSMRclient.println();
DSMRclient.setTimeout(1000);
//--debug-Serial.println("find(HTTP/1.1)..");
DSMRclient.find("HTTP/1.1"); // skip everything up-until "HTTP/1.1"
//--debug-Serial.print("DSMRclient.parseInt() ==> ");
httpResponseCode = DSMRclient.parseInt(); // parse status code
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
if (httpResponseCode <= 0)
{
payload = "{\"actual\":[{\"name\":\"httpresponse\", \"value\": "+String(httpResponseCode)+"}]}";
return false;
}
// Skip HTTP headers
if (!DSMRclient.find("\r\n\r\n"))
{
Serial.println(F("Invalid response"));
payload = "{\"actual\":[{\"name\":\"httpresponse\", \"value\": "+String(httpResponseCode)+"}]}";
return false;
}
while(DSMRclient.connected())
{
if (DSMRclient.available())
{
// read an incoming lines from the server:
String line = DSMRclient.readStringUntil('\r');
line.replace("\n", "");
if ( (line[0] == '{') || (line[0] == ',')
|| (line[0] == '[') || (line[0] == ']') )
{
//--debug-Serial.print(line);
payload += line;
}
}
}
//--debug-Serial.println();
// Free resources
DSMRclient.stop();
return true;
} // dsmrGETrequest()
//--------------------------------------------------------------------------
void setup()
{
// setup serial ..
.
.
// setup WiFi ..
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
lastRead = millis() + _READINTERVAL;
.
.
} // setup()
// Include in the main program:
#include <WiFi.h>
#include <HTTPClient.h>
#include <Arduino_JSON.h> // let op! Niet ArduinoJson!
//
#define _IS_ESP32
#define _DSMR_IP_ADDRESS "IP_ADDRESS_OF_YOUR_DSMR_LOGGER"
#define _WIFI_SSID "YOUR_WIFI_SSID"
#define _WIFI_PASSWRD "YOUR_WIF_PASSWORD"
#define _READINTERVAL 60000
//
const char *ssid = _WIFI_SSID;
const char *password = _WIFI_PASSWRD;
//
const char *DSMRprotocol = "http://";
const char *DSMRserverIP = _DSMR_IP_ADDRESS;
const char *DSMRrestAPI = "/api/v1/sm/actual";
String payload;
int httpResponseCode;
uint32_t lastRead = 0;
//--- catch specific fields for further processing -------
//--- these are just an example! see readDsmrLogger() ----
String timeStamp;
int voltageL1, currentL1;
float pwrDelivered, pwrReturned;
//--------------------------------------------------------------------------
bool dsmrGETrequest()
{
HTTPClient DSMRclient;
// Your IP address with path or Domain name with URL path
DSMRclient.begin(String(DSMRprotocol) + String(DSMRserverIP)+String(DSMRrestAPI));
// Send HTTP GET request
httpResponseCode = DSMRclient.GET();
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
payload = "";
if (httpResponseCode > 0)
{
payload = DSMRclient.getString();
}
else
{
payload = "{\"actual\":[{\"name\":\"httpresponse\", \"value\": "+String(httpResponseCode)+"}]}";
// Free resources
DSMRclient.end();
return false;
}
// Free resources
DSMRclient.end();
return true;
} // dsmrGETrequest()
//--------------------------------------------------------------------------
void setup()
{
// setup Serial ..
.
.
// setup WiFi ..
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
lastRead = millis() + _READINTERVAL;
.
.
} // setup()
//--------------------------------------------------------------------------
void readDsmrLogger()
{
int fieldNr = 0;
dsmrGETrequest();
Serial.println();
Serial.println(F("==== Start parsing payload ======================="));
// This is how the "actual" JSON object looks like:
// {"actual":[
// {"name":"timestamp","value":"200911140716S"}
// ,{"name":"energy_delivered_tariff1","value":3433.297,"unit":"kWh"}
// ,{"name":"energy_delivered_tariff2","value":4453.041,"unit":"kWh"}
// ,{"name":"energy_returned_tariff1","value":678.953,"unit":"kWh"}
// ...
// ,{"name":"power_delivered_l2","value":0.071,"unit":"kW"}
// ,{"name":"power_delivered_l3","value":0,"unit":"kW"}
// ,{"name":"power_returned_l1","value":0,"unit":"kW"}
// ,{"name":"power_returned_l2","value":0,"unit":"kW"}
// ,{"name":"power_returned_l3","value":0.722,"unit":"kW"}
// ,{"name":"gas_delivered","value":2915.08,"unit":"m3"}
// ]}
//--debug-Serial.print(F("payload: "));
//--debug-Serial.println(payload);
JSONVar dsmrJsonObject = JSON.parse(payload);
// JSON.typeof(jsonVar) can be used to get the type of the var
if (JSON.typeof(dsmrJsonObject) == "undefined")
{
Serial.println(F("Parsing failed!"));
return;
}
//--debug-Serial.print("JSON.typeof(dsmrJsonObject) = ");
//--debug-Serial.println(JSON.typeof(dsmrJsonObject));
JSONVar dsmrJsonField = dsmrJsonObject["actual"];
// dsmrJsonField.length() can be used to get the length of the array
//--debug-Serial.print("dsmrJsonField.length() = ");
//--debug-Serial.println(dsmrJsonField.length());
//--debug-Serial.println();
for (int i = 0; i < dsmrJsonField.length(); i++)
{
fieldNr++;
//--debug-Serial.print(dsmrJsonField[i]);
String sName = (const char *)dsmrJsonField[i]["name"];
String sValue = (const char *)dsmrJsonField[i]["value"];
if (sValue == "") sValue = String((double)dsmrJsonField[i]["value"]);
String sUnit = (const char *)dsmrJsonField[i]["unit"];
//---- list all fields and values ----
Serial.print(sName); Serial.print(" \t");
Serial.print(sValue); Serial.print(" ");
Serial.print(sUnit);
Serial.println();
//--- now catch some fields of interrest for further
//--- processing
//--- you need to declare the fields to be captured global
if (sName == "timestamp") timeStamp = sValue;
if (sName == "voltage_l1") voltageL1 = sValue.toInt();
if (sName == "current_l1") currentL1 = sValue.toInt();
if (sName == "power_delivered") pwrDelivered = sValue.toFloat();
if (sName == "power_returned") pwrReturned = sValue.toFloat();
}
Serial.println(F("=================================================="));
Serial.print(F("Parsed [")); Serial.print(fieldNr); Serial.println(F("] fields"));
} // readDsmrLogger()
Met hassOS lukt het mij niet om bij resource de hostname (DSMR-API.local) te gebruiken. Met het IP adres lukt het wel.
Klik na iedere verandering op [Opslaan] (of in ieder geval toch zo vaak mogelijk!
Sommige browser vertalen decimale punten in komma's! Dit is erg verwarrend want de vertaling terug doen ze dan weer niet. Bij het invullen/veranderen van de meterstanden moet een decimale punt (".") gebruikt worden, anders wordt de invoer als ongeldig aangemerkt en niet opgeslagen!
Een nieuw ingevoerde index pagina wordt pas actief na het opnieuw opstarten van de DSMR-logger ([ReBoot] knop in de FSmanager).
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.
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 "-".
Hoe je de firmware moet upgraden van DSMRloggerWS naar DSMRloggerAPIstaat beschreven!
Pre compiled Binaries
Op staan van de major releases binaries van zowel de firmware als van het LittleFS bestand systeem.
Klik op "" en download het meest recente of door jou gewenste DSMRloggerAPI.ino.bin bestand (deze staan onder iedere release beschrijving bij "Assets").
Onder iedere release beschrijving staan de bijbehorende "Assets".
OTA flashen met de Update Server
Ga nu op de DSMR-logger naar de FSmanager (door op het icoon te klikken) en klik vervolgens op de knop [Update Firmware].
Klik nu op de bovenste [Choose File] knop
Selecteer in het popup-window het zojuist gedownloade DSMRloggerAPI.ino.bin file:
Klik op [Open] of [Select] en klik vervolgens op de knop [Flash Firmware].
Na enige tijd verschijnt het volgende scherm:
.. waarna, zodra de teller op nul staat, het hoofdscherm van de DSMR-logger weer verschijnt.
Bedraad flashen met het Espressif Flash Download tool
Espressif heeft voor zijn ESP-boards een (helaas alleen Windows) tool ontwikkeld dat het bedraad flashen erg eenvoudig maakt.
Het tool kun je downloaden.
Pak het .zip file uit (unzip) en start het door op het mapje te klikken:
Klik nu op "flash_download_tools.exe" en selecteer [esp8266 DownloadTool] in het volgende scherm:
Selecteer de twee bin bestanden. Het DSMRloggerAPI.ino.bin bestand moet op adres 0x0 starten, het DSMRloggerAPI.mklittlefs.bin op adres 0x200000. Selecteer de COM poort waar de DSMR-logger op is aangesloten, zet de DSMR-logger in flash mode en klik op [START]. Na enige tijd krijg je de melding dat alles goed is gegaan.
Bij een gewone firmware update is het meestal niet nodig ook het bestand system opnieuw te downloaden en te flashen.
Vanaf versie 3 van de firmware zijn er geen compiler opties meer die de firmware voor een bepaald type Slimme Meter geschikt maken. Alleen in het zeer specifieke geval waarbij je wilt testen of debuggen kan het nodig zijn om zelf de binaries te compileren.
Alleen als in de beschrijving van een release staat dat ook het bestand system opnieuw geflased moet worden moet u dit doen. In veel gevallen zal volstaan om eventueel een bepaald bestand naar de DSMR-logger te uploaden. Ook dit zal dan expliciet in de release beschrijving staan.
Download en installeer de meest actuele versie van de Arduino Integrated Development Environment (IDE) voor het Operating Systeem (OS) waar jouw Desktop of Laptop computer (er zijn versies voor Windows, Linux en Mac) mee werkt.
Je kunt de Software hier downloaden.
De DSMRloggerAPI firmware is getest met de ArduinoIDE v1.8.13
Na het downloaden moet je het ontvangen bestand uitpakken (unzip of untar) en installeren. Dat installeren is per OS anders maar staat duidelijk op de website van Arduino aangegeven. Eenmaal geĂŻnstalleerd kun je direct met de Arduino IDE aan de slag.
Om de IDE met de ESP8266 microprocessor te kunnen gebruiken moeten we nog wat stappen uitvoeren.
DSMRloggerAPI firmware
Om de firmware op de DSMR-logger te krijgen moeten een aantal stappen worden ondernomen. Hieronder staat welke stappen dat zijn.
Het upgraden vanaf de DSMRloggerAPI v2 firmware naar de DSMRloggerAPIfirmware v3 is nodig omdat het SPIFFS bestand systeem binnenkort niet meer ondersteund wordt door de esp8266 core. Versie 3 van de DSMRloggerAPI firmware maakt daarom gebruik van het zgn. LittleFS (little file system) en daarom is het noodzakelijk de volgende stappen uit te voeren:
Gebruik de FSexplorer om de RINGhours.csv, RINGdays.csv enRINGmonths.csv naar je computer te downloaden (dit hoef je alleen te doen als je de opgebouwde historie na de upgrade terug wilt zien in de GUI van de DSMR-logger met de nieuwe firmware).
Download de laatste (nieuwste) versie DSMRloggerAPI.ino.bin en DSMRloggerAPI.mklittlefs.bin files van naar je computer.
Klik op de knop [Update Firmware], selecteer met [Choose File] het goede firmware bestand (DSMRloggerAPI.ino.bin) en flash eerst deze nieuwe firmware door op de knop
Wacht na de boodschap dat de update goed is gegaan tot de teller op 10 staat en klik dan in de browser op [Back] , tik in de URL-balk het IP-Adres van de DSMR-logger in met daarachter "/update" of wacht tot de DSMR-logger opnieuw is opgestart. Je komt nu weer in het scherm waar je nieuwe firmware kunt flashen.
Klik nu op de knop [Update Firmware], selecteer door op [Choose File] onder de tekst "Selecteer een
Als het flashen goed is gegaan verschijnt na enige tijd het start scherm van de DSMR-logger.
Gebruik vervolgens de FSmanager om de, in stap 1 naar de PC gekopieerde, RINGbestanden terug naar de DSMR-logger te zetten.
[Flash Firmware]
te klikken.
.mklittlefs.bin
bestand
" te klikken. Selecteer nu het zojuist gedownloade
Met de Update Server is het mogelijk om firmware en het bestand systeem naar een DSMR-logger te flashen.
Je kunt de Update Server op twee manieren opstarten:
Door op de knop [Update Firmware] in de FSmanager te klikken
Door in de browser de volgende URL in te toetsen:
http://dsmr-api.local/update
of:
http://<hetIPadresVanDeDSMRlogger>/update
Flash Firmware
Om (nieuwe) firmware te flashen moet je op de knop [Choose file] onder de kop "Selecteer een .ino.bin bestand" klikken.
Er verschijnt nu een drop-down window waar je de gewenste firmware kunt selecteren.
Klik vervolgens op [Flash Firmware]
Flash File Systeem
Om een nieuw bestands systeem op de DSMR-logger te flashen klik je op de knop [Choose file] onder de kop "Selecteer een .mklittlefs.bin bestand".
Er verschijnt nu een drop-down window waar je het gewenste .mklittlefs.bin bestand systeem kunt selecteren.
Klik vervolgens op de knop [Flash FileSYS]
Flashen is geslaagd
Integratie met Home Assistant
Om in Home Assistant de gegevens uit de DSMR-logger (met de DSMRloggerAPI firmware) te gebruiken heb ik het configuration.yaml bestand als volgt aangepast:
in deze voorbeelden worden de power_delivered en gas_delivered velden via MQTT uitgelezen en de power_returned via de restAPI's. Uiteraard kun je voor alle velden de manier van uitlezen gebruiken die voor jou het prettigste werkt.
Dit is het resultaat:
Merk op dat ik voor de resource bij de restAPI's het IP adres van de DSMR-logger gebruik. Ik krijg het in mijn opzet niet voor elkaar hier de hostname (dsmr-api.local) te gebruiken. Controleer ook of het MQTT topic juist is.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Upgrade DSMRloggerWS naar DSMRloggerAPI
Deze video laat zien hoe je de DSMRloggerWS firmware eenvoudig kunt upgraden naar de nieuwe DSMRloggerAPI firmware.
Het upgraden vanaf de DSMRloggerWS firmware naar de DSMRloggerAPIfirmware bestaat uit de volgende stappen:
Gebruik de FSexplorer om de PRDhours.csv, PRDdays.csv en PRDmonths.csv naar je computer te downloaden (dit hoef je alleen te doen als je de opgebouwde historie na de upgrade terug wilt zien in de GUI van de DSMR-logger met de nieuwe firmware).
Verwijder het bestand DSMRsettings.ini van de DSMR-logger (gebruik weer de FSexplorer).
Pas op! Sla deze stap niet over!!
Voer nu de stappen uit zoals in beschreven.
Als de voorgaande stap goed is gegaan verschijnt na enige tijd het start scherm van de DSMR-logger.
De DSMRloggerAPI firmware heeft een mogelijkheid om bestanden van de DSMRloggerWS (zgn. PRD-bestanden) automatisch te converteren naar het door de DSMRloggerAPI gebruikt (RING) formaat.
Nadat je de DSMRloggerAPI hebt geĂŻnstalleerd en deze 'werkt' kun je met de FSmanager de drie bewaarde PRD-bestanden naar het bestand systeem uploaden.
Upload vervolgens een bestand met de exacte naam !PRDconvert (het eerste teken is een uitroep-teken) naar het File Systeem (de inhoud van dit bestand is niet belangrijk). Start de DSMR-logger nu opnieuw op (klik op de knop [ReBoot]) en de RING bestanden zullen automatisch gevuld worden met de inhoud van de PRD bestanden.
Let op!
Je moet ervoor zorgen dat de PRD bestanden zo actueel mogelijk, maar in ieder geval binnen dezelfde dag en bij voorkeur in hetzelfde uur waarop je de conversie uitvoert, nog ge-update zijn!
Missen er uren of dagen dan geeft dit vreemde resultaten (maar dat komt na verloop van tijd vanzelf goed)!
Het gebruik van de DSMR-logger v2 en v3 wordt niet meer ondersteunt.
Slimme Meters
Onderstaande tabel geeft de gegevens weer zoals deze door gebruikers worden gemeld. Om de lijst zo compleet mogelijk te maken verzoek ik iedere maker/gebruiker om deze gegevens met ons te delen!
Je kunt in je programma dit bestand systeem niet alleen gebruiken om (bijvoorbeeld meet-) gegevens maar ook om de inhoud van een web-pagina (index.html) of een configuratie-bestand in op te slaan.
Om het LittleFS voor dit soort bestanden te kunnen gebruiken moet je een plug-in in je Arduino Projecten map installeren.
De plug-in haal je vandaan. Ga naar deze pagina en download het meest recente .zip bestand ..
Download vervolgens het ESP8266LittleFS-x.y.z.zip bestand door er op te klikken.
En bewaar het bestand op een plek die voor jou handig is.
Ga nu naar je Sketchbook Location map en maak daarin een nieuwe map tools aan (als deze nog niet bestaat). Pak het zojuist ge-download-de zip bestand uit in deze tools map. Er wordt nu een aantal nieuwe mappen aangemaakt waar de plug-in wordt neergezet. Het pad ziet er ongeveer zo uit:
Op de menu-balk zie je nu onder[Tools]een nieuwe optie: ESP8266 LittleFS Data Upload.
Als er onder de map van je Sketch óók een map data staat, dan kun je de bestanden die in deze data-map staan met het ESP8266 LittleFS Data Upload tool naar het bestand systeem van de ESP8266 flashen.
De bestands-tree van de DSMRloggerAPI firmware data-map ziet er zo uit:
Het ESP8266 LittleFS Data Upload tool zal alle bestanden die in de data-map zitten naar het bestand systeem van de aangesloten ESP8266 uploaden.
Ga naar: [tools] -> [ESP8266 LittleFS Data Upload]
Randvoorwaarde is natuurlijk dat het bestand systeem groot genoeg is! In de selectie van je board moet je, behalve het juiste type board ook aangeven hoeveel ruimte van je Flash geheugen je wilt gebruiken voor het bestand-systeem (vóórdat je je programma naar de ESP8266 upload!).
Normaliter zou je dit zo groot mogelijk willen maken, maar als je “Over The Air” programma’s op je ESP8266 wilt zetten (dus zonder fysieke verbinding maar via WiFi) dan moet je er rekening mee houden dat je twee maal de grootte van je programma nodig hebt om dit te kunnen doen. Wat er overblijft kun je als bestand-systeem gebruiken.
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 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 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
beschrijft het eerste idee achter de Slimme Meter uitlezer.
In kun je de ontwikkeling van de hardware en firmware vinden.
staat een introductie van de DSMRloggerAPI firmware
Begrippen
In dit document worden de volgende begrippen gebruikt:
Begrip
Omschrijving
Een volledige beschrijving van dit project kun je vinden.
Veel informatie over de hardware en het gebruik wordt hier beschreven.
Voor de meeste mensen is het gebruik van de twee binaries het eenvoudigste. je kunt deze binaries hier vinden.
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
DSMR
Dutch Smart Meter Requirements De DSMR-specificatie 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.
In de Arduino IDE moet bij “Instellingen” de volgende URL worden ingevoerd achter “Additional Boards Manager URL’s:” (zie rood omlijnde kader)
Lees vooral de uitleg in het bestand en de uitgebreide op hun website!
Er kunnen meer additional board manager URL’s worden ingevuld. Je moet ze dan achter elkaar zetten en scheiden door een komma (,).
Eventueel kun je ook het pad waar je projecten staan (de Sketchbook Location) aanpassen. Standaard verwijst deze naar je Documenten map:
C:\Users\<YourLoginName>\Documents\arduino\
.. en dat is een prima plek!
De andere instellingen kun je naar behoefte aanpassen. Hierboven staan de instellingen die ik prettig vind.
Na het maken van aanpassingen klik je op [OK].
Ga nu via de ArduinoIDE menu-balk naar [tools]-> [Board] -> [Boards Manager].
Voer bij filter “esp8266” in.
Selecteer de versie die je wilt gaan gebruiken en klik op [Install].
Let op! De DSMRloggerAPI firmware is getest met versie 2.7.4 van de Arduino/ESP8266 core. Nieuwere versies zullen zeer waarschijnlijk ook werken, maar bij problemen is het het beste om deze versie te gebruiken.
Nu je een ArduinoIDE hebt waarmee je ESP8266’s kunt programmeren (flashen) zul je ontdekken dat er door briljante mensen software is ontwikkeld die je kunt gebruiken om complexe projecten te realiseren, zonder dat je zelf het wiel hoeft uit te vinden.
Deze software wordt veelal in de vorm van een bibliotheek aangeboden en je hoeft zo’n bibliotheek alleen maar te installeren om er gebruik van te kunnen maken.
Hier vind je de officiële instructies voor het installeren van bibliotheken met de ArduinoIDE.
Stel je wilt je ESP8266 benaderen met een telnet client zodat je vanaf je Desktop of Laptop op de ESP8266 kunt inloggen. Je hebt op de ESP8266 dan een telnet server nodig. Met wat Googelen naar "ESP8266 telnet" blijken hier een aantal bibliotheken voor te bestaan.
Als voorbeeld nemen we TelnetStream van Juraj Andrassy. Zijn telnet implementatie kun je vanaf deze pagina als bibliotheek downloaden.
Om de bibliotheek te installeren klik je op de groene [Clone or download] knop en selecteer je [Download ZIP].
Onthou waar je het zip-file bewaard!
Ga nu naar de Arduino IDE en selecteer:
[Sketch]=>[Include Library] =>[Add .ZIP Library]
Er verschijnt een selectie window waar je het zojuist ge-download-de bestand selecteert.
Klik op [Choose].
De bibliotheek is nu geïnstalleerd en klaar om gebruikt te worden. De meeste bibliotheken komen met een aantal voorbeeld programma’s waarmee je kunt leren hoe je de bibliotheek kunt gebruiken.
In onderstaande tabel kun je zien of een bepaalde functionaliteit beschikbaar is voor de DSMR-logger.
#define
Functie
Default
Met de Update Server kun je vanuit de FSexplorer updates van de firmware installeren
JA
Deze optie zorgt ervoor dat de functionaliteit voor het versturen van gegevens naar een MQTT broker wordt ingebouwd
JA
Deze optie zorgt voor de functionaliteit voor het versturen van gegevens naar waar je het huidige gasverbruik kunt vergelijken met anderen.
JA
Met de System logger is het mogelijk om debug informatie over de werking van de DSMR-logger op te slaan in een bestand van 500 regels.
NEE
alleen gebruiken om te debuggen.
Of je de gebruikte passwords in het Systeem Info scherm en via telnet wilt tonen
NEE
Als je geen Slimme Meter op de DSMR-logger hebt aangesloten maar toch (dummy) data wilt zien.
NEE
alleen om te testen
/******************** compiler options ********************************************/
#define USE_UPDATE_SERVER // define if there is enough memory and updateServer to be used
// #define HAS_NO_SLIMMEMETER // define for testing only!
#define USE_MQTT // define if you want to use MQTT
#define USE_MINDERGAS // define if you want to update mindergas (also add token down below)
// #define USE_SYSLOGGER // define if you want to use the sysLog library for debugging
// #define SHOW_PASSWRDS // well .. show the PSK key and MQTT password, what else?
/******************** don't change anything below this comment **********************/
Voor nu ga ik ervan uit dat je git op je systeem hebt staan en dat je weet hoe je ermee moet werken.
Ga naar de Arduino Sketchbook location (de map waar al je Sketches in staan, ) en toets het volgende commando in:
That's it!
In Sketchbook location staat hierna een nieuwe map met de naam DSMRloggerAPI.
DSMRloggerAPI Sketch openen
Start de ArduinoIDE opnieuw op en klik op het open icoon.
Selecteer in het drop-down menu ..
.. de sketch DSMRloggerAPI(In jouw situatie staat deze firmware waarschijnlijk niet onder een submap "SlimmeMeter"!)
Er verschijnt een nieuw editor window met de firmware van de DSMRlogger!
Rename de map DSMRloggerAPI-master naar DSMRloggerAPI (dus zonder -master)
Vul hier de URL of het IP adres van de MQTT broker in.
Voorbeeld: "test.mosquitto.org"
MQTT Poort
Het default poortnummer is 1883.
Hou er wel rekening mee dat de ESP8266 geen encryptie aan kan!
MQTT Username
Vul hier de naam in van de gebruiker van de MQTT broker.
MQTT Password
Als de MQTT broker gebruiker een wachtwoord nodig heeft vul die dan hier in.
MQTT Interval (sec.)
De Interval geeft aan om de hoeveel seconden de DSMR-logger gegevens naar de MQTT broker moet sturen.
De DSMRloggerAPI firmware zal nooit vaker een MQTT bericht versturen dan de interval waarmee telegrammen worden gelezen. Voer je een interval in die kleiner is dan de telegram interval dan zal er, na het lezen van een telegram direct een MQTT bericht worden verzonden.
Deze define zorgt ervoor dat de Firmware data uit de Slimme Meter naar een MQTT Broker stuurt (default).
USE_SYSLOGGER
Deze functionaliteit is in versie 3 nog niet getest.
Deze nieuwe versie maakt geen gebruik meer van SPIFFS maar gebruikt het LittleFS. De SysLogger is hier nog niet voor aangepast!
Als deze optie actief is zal de DSMRloggerAPI firmware debug informatie naar een logfile schrijven. Dit logfile kan mbv.het commando 'Q' in het telnet menu bekeken worden.
Er is ook een restAPI waarmee de log regels uit de DSMR-logger opgehaald kunnen worden.
Ophalen debug informatie
GEThttp://dsmr-api.local/api/v1/dev/debug
Met deze api kun je de gegevens uit het sysLog bestand opvragen
#define
Functie
USE_SYSLOGGER
De ESP_SysLogger is een library waarmee log regels in een RING bestand van 500 regels kunnen worden geschreven. Na 500 regels wordt steeds de oudste regel overschreven door de nieuwste regel.
**
***************************************************************************************************
***************************************************************************************************
***************************************************************************************************
[15:23:35][ 12624][openSysLog ] Last Reset Reason [Software/System restart]
[15:23:35][ 13968][openSysLog ] actTimestamp[200316152328W], nrReboots[0], Errors[0]
[15:24:05][ 12640][forceMinderg] Force Write Data to [/Mindergas.post]
[15:24:05][ 12640][processMinde] Mindergas State: MG_WRITE_TO_FILE
[15:24:05][ 12640][writePostToF] Writing to [/Mindergas.post] ..
[15:24:05][ 12640][writePostToF] Mindergas.post aangemaakt
[15:24:05][ 12640][writePostToF] MinderGas update in [118] minute(s)
[15:25:05][ 12496][processMinde] Mindergas State: MG_DO_COUNTDOWN (118 minuten te gaan)
[15:26:05][ 12480][processMinde] Mindergas State: MG_DO_COUNTDOWN (117 minuten te gaan)
[15:26:50][ 12216][processSlimm] Processed [25] telegrams ([0] errors)
[15:27:05][ 12672][processMinde] Mindergas State: MG_DO_COUNTDOWN (116 minuten te gaan)
[15:28:05][ 12688][processMinde] Mindergas State: MG_DO_COUNTDOWN (115 minuten te gaan)
.
.
.
[15:39:05][ 12688][processMinde] Mindergas State: MG_DO_COUNTDOWN (104 minuten te gaan)
[15:40:05][ 12672][processMinde] Mindergas State: MG_DO_COUNTDOWN (103 minuten te gaan)
[15:40:10][ 10632][processSlimm] Processed [125] telegrams ([0] errors)
[15:41:05][ 12688][processMinde] Mindergas State: MG_DO_COUNTDOWN (102 minuten te gaan)
[15:42:05][ 12688][processMinde] Mindergas State: MG_DO_COUNTDOWN (101 minuten te gaan)
[15:43:05][ 12688][processMinde] Mindergas State: MG_DO_COUNTDOWN (100 minuten te gaan)
[15:43:30][ 12000][processSlimm] Processed [150] telegrams ([0] errors)
[15:44:05][ 12688][processMinde] Mindergas State: MG_DO_COUNTDOWN (99 minuten te gaan)
[15:45:05][ 14264][processMinde] Mindergas State: MG_DO_COUNTDOWN (98 minuten te gaan)
[15:46:05][ 14280][processMinde] Mindergas State: MG_DO_COUNTDOWN (97 minuten te gaan)
[15:46:50][ 12920][processSlimm] Processed [175] telegrams ([0] errors)
[15:47:05][ 14280][processMinde] Mindergas State: MG_DO_COUNTDOWN (96 minuten te gaan)
[15:48:05][ 14280][processMinde] Mindergas State: MG_DO_COUNTDOWN (95 minuten te gaan)
[15:49:05][ 14280][processMinde] Mindergas State: MG_DO_COUNTDOWN (94 minuten te gaan)
[15:50:05][ 14032][processMinde] Mindergas State: MG_DO_COUNTDOWN (93 minuten te gaan)
[15:50:10][ 12920][processSlimm] Processed [200] telegrams ([0] errors)
.
.
.
[15:57:05][ 14264][processMinde] Mindergas State: MG_DO_COUNTDOWN (2 minuten te gaan)
[15:58:34][ 13744][forceMinderg] found [/Mindergas.post] at day#[16]
[15:58:34][ 12400][processMinde] Mindergas State: MG_DO_COUNTDOWN (1 minuten te gaan)
[15:59:34][ 12184][processMinde] Mindergas State: MG_SEND_MINDERGAS
[15:59:34][ 11672][sendMinderga] Send to Mindergas.nl...
POST /api/gas_meter_readings HTTP/1.1**AUTH-TOKEN:<token>**Host: mindergas.nl**User-Ag
[15:59:35][ 12360][sendMinderga] Mindergas response: [422]
Unprocessed entity, goto website mindergas for more information
[15:59:35][ 11208][sendMinderga] Disconnected from mindergas.nl
[15:59:35][ 12184][processMinde] Deleted Mindergas.post !
[16:00:03][ 11000][processTeleg] Update RING-files
[16:00:11][ 10368][processSlimm] Processed [275] telegrams ([0] errors)
[16:03:31][ 11160][processSlimm] Processed [300] telegrams ([0] errors)
USE_UPDATE_SERVER
Met deze optie wordt het mogelijk om nieuwe Firmware naar de DSMR-logger te flashen door in de FSmanager op de knop [Update Firmware] te klikken.
en vervolgens in de Flash Utility ..
.. op [Choose file] te klikken en daarna op [Flash Firmware]
#define
Functie
USE_UPDATE_SERVER
Om gebruik te kunnen maken van zgn. "Over The Air" (OTA) updates van de firmware en het bestand systeem moet je deze optie activeren (default).
Dit kan alleen met een ESP-12 of een, met 4MB chip ge-upgrade ESP-01 bordjes!
'Normale' (1MB) ESP-01 bordjes hebben hier niet genoeg flash-geheugen voor.
Let op!
Deze functionaliteit werkt alleen als je 4MB flash geheugen hebt. Standaard heeft iedere ESP-12 dat en dus ook de DSMR-logger v4 of v4.5.
Je kunt een ESP-01 eventueel upgraden naar 4MB door de aanwezige flash chip te vervangen door een W25Q32FVSIG 32Mbit flash chip.
SHOW_PASSWRDS
Met deze #define geef je aan of je wilt dat de PSK Key van je WiFi netwerk, het wachtwoord van de gebruikte MQTT Broker en het Authenticatie Token van Mindergas.nl zichtbaar worden.
Via telnet het opvragen van de Board Info:
en de Settings:
In de System Info tab wordt, als deze #define actief is, de PSK Key van het WiFi netwerk getoond.
Bij de B - Board Info uitvoer wordt met deze deze #define de PSK Key zichtbaar en bij S - list Settings het wachtwoord van de MQTT Broker en de Authenticatie Token van Mindergas.nl.
B - Board Info
.
.
.
==================================================================
Board type [ESP8266_GENERIC]
SSID [A@nd@W@F@]
PSK key [**********]
IP Address [192.168.1.108]
Hostname [DSMR-API]
Last reset reason: [Exception]
upTime [32(d):02:01]
==================================================================
S - list Settings
.
.
.
==== MQTT settings ==============================================
MQTT broker URL/IP : hassio.local
MQTT user : hassUser1
MQTT password : *************
MQTT send Interval : 120
MQTT top Topic : DSMR-API
Define
Functie
SHOW_PASSWRDS
USE_MINDERGAS
Met deze optie wordt de functionaliteit om gasverbruik naar mindergas.nl te sturen geactiveerd.
Via FSmanager -> DSMR Editor -> Settings kun je het jouw toegekende authorisatie token invoeren.
img
Rubriek
Lees ook .
Functie
Mindergas Authenticatie Token
Bij aanmelding bij mindergas.nl kun je een zgn. Authenticatie Token opvragen. Dit token heb je nodig om data naar mindergas.nl te kunnen uploaden. Voer dit token hier in.
Versie 4 van de DSMR-logger hardware maakt gebruik van een ESP-12 processor. Deze processor zit op de printplaat van de DSMR-logger gesoldeerd en moet dus, op de printplaat, geflashed worden.
Om de firmware naar de DSMR-logger Versie 4 te kunnen flashen moet deze eerst voor deze versie van de DSMR-logger geschikt worden gemaakt.
Dit doe je door in de ArduinoIDE de #define's in het eerste tab-blad aan te passen.
/******************** compiler options ********************************************/
#define USE_UPDATE_SERVER // define if there is enough memory and updateServer to be used
// #define HAS_NO_SLIMMEMETER // define for testing only!
#define USE_MQTT // define if you want to use MQTT
#define USE_MINDERGAS // define if you want to update mindergas (also add token down below)
// #define USE_SYSLOGGER // define if you want to use the sysLog library for debugging
// #define SHOW_PASSWRDS // well .. show the PSK key and MQTT password, what else?
/******************** don't change anything below this comment **********************/
Vervolgens moeten de Boards settings als volgt worden ingevuld:
Firmware Bedraad Flashen
Sluit de aan op de Program-header van de DSMR-logger v4
Druk de FLASH knop in en houd deze ingedrukt
Druk op de RESET knop
Laat de
De DSMR-logger v4 staat nu in Flash-mode en blijft in die mode tot er gegevens vanaf de programmer naar de DSMR-logger zijn overgebracht Ăłf tot je nog een keer op de RESET knop drukt.
Vergeet niet in de Arduino IDE de Port te selecteren waarop je de USB->ESP12 programmer hebt aangesloten en druk op het Compile and Upload icoon.
Firmware Over The Air Flashen
Bij het Over The Air flashen van de firmware of data-map kan (moet) de DSMR-logger v4 gewoon op de Slimme Meter aangesloten blijven.
Alle instellingen voor de DSMRloggerAPI firmware blijven gelijk aan de bedrade methode van flashen.
Vervolgens moet je niet op het Compile & Upload-Icoon
klikken maar in het[Sketch]drop-down menu de keuze Upload Compiled Binary selecteren.
De firmware wordt nu gecompileerd en in de Arduino Sketch map waar de DSMRloggerAPI firmware ook staat neergezet. Het bestand heeft de extensie .bin.
Als de firmware gecompileerd is klik je op de DSMR-logger pagina op het icoontje.
In de FSmanager klik je op de knop [Update Firmware]
Er verschijnt nu een scherm waarin je een firmware bestand (de naam eindigt op .bin met ergens in de naam ook .ino.) kunt kiezen door op de bovenste knop [Choose File] te klikken.
Selecteer uit het popUp scherm dat nu verschijnt het binary file dat je wilt uploaden ..
.. klik op [Choose] (of [Open]) en daarna op de knop [Flash Firmware]
Na enige tijd krijg je de melding dat de upload is geslaagd en dat de DSMR-logger opnieuw opstart.
De DSMRloggerAPI firmware zorgt zelf voor test-data.
Als deze functionaliteit actief is moet de DSMR-logger niet op een Slimme Meter worden aangesloten!
RESET
knop los
Laat de FLASH knop los
Instelling
Waarde
Board
"Generic ESP8266 Module"
Upload Speed
"115200"
CPU Frequency
"80MHz" (of 160MHz)
Flash Frequency
"40MHz"
Flash Mode
"DIO" of "DOUT (compatible)"
Flash Size
"4MB (FS: 2MB OAT:~1019KB)" <<== let op! 2MB
Crystal Frequency
"26MHz"
Reset Method
"None"
Debug Port
"Disabled"
Debug Level
"None"
IwIP Variant
"v2 Lower Memory"
VTables
"Flash"
Exeptions
"Disabled"
Builtin Led
"2"
Erase Flash
"Only Sketch"
(First Time: "All Flash Contents")
Port
Bedraad: "Serial Port"
Let op!
Als je de Flash Mode veranderd t.o.v. wat je gebruikt hebt voor de firmware die nu in de DSMR-logger zit en je doet een OTA update van de firmware, dan zal de Flash Mode pas veranderen na een power cycle!
Pas op!
Koppel de DSMR-logger los van de Slimme Meter vóórdat je de DSMR-logger op de programmer aansluit!!
Let op!
De firmware heeft áltijd ".ino." in de naam en eindigt áltijd op ".bin"!
Let op!
Het komt soms voor dat het scherm niet automatisch ge-refreshed wordt. Klik in dat geval, na ongeveer 3 minuten, op de tekst "hier"
Als het lijkt of er niets gebeurd, wacht dan ongeveer drie minuten en klik daarna hier.
Als de verbinding met de server vóór die tijd verbroken wordt klik dan op de [back] knop van de browser waarna de tekst alsnog (weer) verschijnt. Klik nu op hier om de DSMRloggerAPI hoofd pagina opnieuw te laden.
Voor de DSMRloggerAPI firmware zijn de volgende bibliotheken nodig:
dsmr2Lib
Deze library is een uitbreiding op de arduino-dsmr van Matthijs Kooijman. Je kunt de dsmr2Lib library vinden.
TimeLib
Deze is door Paul Stoffregen ontwikkeld. Je kunt hem hier downloaden.
WiFiManager
Je kunt de, door Tzapu ontwikkelde, bibliotheek hier downloaden.
De DSMR-logger firmware is getest met version 0.14.0 van deze bibliotheek maar nieuwere versies zullen waarschijnlijk ook werken.
TelnetStream
Deze bibliotheek is door Juraj Andrassy ontwikkeld. Je kunt deze bibliotheek hier downloaden.
De firmware is getest met version 0.0.2 maar nieuwere versies zullen waarschijnlijk ook werken.
SSD1306Ascii
William Greiman heeft deze bibliotheek ontwikkeld met in het achterhoofd minimaal gebruik van resources (dus: een bibliotheek die weinig geheugen gebruikt). Je kunt de bibliotheek hier downloaden.
De DSMR-logger Firmware is getest met Version 1.2.x - Commit 97a05cd on 24 Mar 2019 maar nieuwere versies zullen waarschijnlijk ook werken.
PubSubClient
Nick O'Leary (knolleary) heeft deze bibliotheek ontwikkeld. Je kunt de bibliotheek hier downloaden.
ModUpdateServer
Deze bibliotheek maakt het mogelijk om firmware en SPIFFS Over The Air te flashen naar de DSMR-logger.
Deze bibliotheek is nodig vanaf versie 2.6.2 van de Arduino/ESP8266 core. Je kunt de bibliotheek hier downloaden.
ESP_SysLogger
Deze bibliotheek is alleen nodig als je USE_SYSLOGGER defined. Je kunt de bibliotheek hier downloaden (vanaf v1.6.3 commit 43eb15681125442addaf8b697f2b8557d4afa300).
Pas op! (nog) Niet geschikt voor het LittleFS!
Overige libraries
Onderstaande libraries zijn onderdeel van de ESP8266 Core en moeten dus niet handmatig geĂŻnstalleerd worden!
In de FSmanager klik je op de knop [Update Firmware]
Er verschijnt nu een scherm waarin je een mklittlefs bestand (de naam eindigt op .mklittlefs.bin) kunt kiezen door op de onderste knop [Choose File] te klikken.
Selecteer uit het popUp scherm dat nu verschijnt het binary file dat je wilt uploaden ..
.. klik op [Open] en daarna op de knop [Flash FileSystem]
Na enige tijd krijg je de melding dat de upload is geslaagd en dat de DSMR-logger opnieuw opstart.
Laat nu ook de FLASH knop los.
Pas op!
Koppel de DSMR-logger los van de Slimme Meter vóórdat je de DSMR-logger op de programmer aansluit!!
Let op!
Het uploaden van de data map mislukt als de Serial Monitor open staat!
Let op!
Hou er rekening mee dat eventuele data-bestanden die al op het LittleFS stonden nu weg zijn! Als je ze niet kwijt wil moet je er eerst een kopie van maken op je computer en deze, na het flashen van het LittleFS weer terug zetten (dat kan met de DSMR-logger FSmanager )!
Let op!
Hou er rekening mee dat eventuele data-bestanden die al op het bestand systeem stonden nu weg zijn! Als je ze niet kwijt wil moet je er eerst een kopie van maken op je computer en deze, na het flashen van het LittleFS weer terug zetten (dat kan met de DSMR-logger FSmanager )!
Let op!
Het komt soms voor dat het scherm niet automatisch ge-refreshed wordt (dit lijkt te maken te hebben met de omvang van de firmware die je upload). Klik in dat geval, na ongeveer 3 minuten, op de tekst "hier"
Als het lijkt of er niets gebeurd, wacht dan ongeveer drie minuten en klik daarna hier.
Als de verbinding met de server vóór die tijd verbroken wordt klik dan op de [back] knop van de browser waarna de tekst alsnog (weer) verschijnt. Klik nu op hier om de DSMRloggerAPI hoofd pagina opnieuw te laden.