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...
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)
);
});
curl http://dsmr-api.local/api/v1/dev/time{"devtime":[
{"name": "time", "value": "2020-03-23 11:45:40"},
{"name": "epoch", "value": 1584963941}
]}### configuration.yaml
### DSMRloggerAPI
- platform: rest
name: "Levering"
resource: http://<ip-dsmr-logger>/api/v1/sm/fields/power_returned
unit_of_measurement: "kWh"
value_template: '{{ value_json.fields[1].value | round(3) }}'
- platform: rest
name: "Laatste Update restAPI"
resource: http://192.168.2.106/api/v1/sm/fields/timestamp
# value_template: '{{ value_json.fields[0].value }}'
value_template: >
{{ value_json.fields[0].value[4:6] + "-" +
value_json.fields[0].value[2:4] + "-" +
"20"+value_json.fields[0].value[0:2] + " " +
value_json.fields[0].value[6:8] + ":" +
value_json.fields[0].value[8:10] + ":" +
value_json.fields[0].value[10:13] }}
- platform: rest
name: "Levering l1"
resource: http://192.168.2.106/api/v1/sm/fields/power_returned_l1
unit_of_measurement: "Watt"
value_template: '{{ (value_json.fields[1].value | float * 1000.0) | round(1) }}'
- platform: rest
name: "Levering l2"
resource: http://192.168.2.106/api/v1/sm/fields/power_returned_l2
unit_of_measurement: 'Watt'
value_template: '{{ (value_json.fields[1].value | float * 1000.0) | round(1) }}'
- platform: rest
name: "Levering l3"
resource: http://192.168.2.106/api/v1/sm/fields/power_returned_l3
unit_of_measurement: 'Watt'
value_template: '{{ (value_json.fields[1].value | float * 1000.0) | round(1) }}'
// 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()
//--------------------------------------------------------------------------
void loop()
{
if ((millis() - lastRead) > _READINTERVAL)
{
lastRead = millis();
Serial.println("\r\nread API from DSMR-logger...");
readDsmrLogger();
Serial.println(F("\r\nCaptured fields .."));
Serial.print(F("timestamp : \t")); Serial.println(timeStamp);
Serial.print(F("voltage L1 : \t")); Serial.println(voltageL1);
Serial.print(F("current L1 : \t")); Serial.println(currentL1);
Serial.print(F("pwrDelivered : \t")); Serial.println(pwrDelivered);
Serial.print(F("pwrReturned : \t")); Serial.println(pwrReturned);
}
.
.
} // loop(){"devinfo":[
{"name": "author", "value": "Willem Aandewiel (www.aandewiel.nl)"},
{"name": "hostname", "value": "DSMR-108"},
{"name": "fwversion", "value": "v0.2.9 (31-01-2020)"},
{"name": "compiled", "value": "Jan 31 2020 12:22:10"},
{"name": "freeheap", "value": 16224, "unit": "bytes"},
{"name": "maxfreeblock", "value": 15400, "unit": "bytes"},
{"name": "chipid", "value": "cc6156"},
{"name": "coreversion", "value": "2_6_3"},
{"name": "sdkversion", "value": "2.2.1(cfd48f3)"},
{"name": "cpufreq", "value": 80, "unit": "MHz"},
{"name": "sketchsize", "value": 521.953, "unit": "kB"},
{"name": "freesketchSpace", "value": 1524.000, "unit": "kB"},
{"name": "flashchipid", "value": "00164020"},
{"name": "flashchipsize", "value": 4.000, "unit": "MB"},
{"name": "flashchiprealsize", "value": 4.000, "unit": "MB"},
{"name": "flashchipspeed", "value": 80.000, "unit": "MHz"},
{"name": "flashchipmode", "value": "DOUT"},
{"name": "boardtype", "value": "ESP8266_GENERIC"},
{"name": "ssid", "value": "YourWiFi"},
{"name": "ipaddress", "value": "192.168.1.106"},
{"name": "wifirssi", "value": -52},
{"name": "hostname", "value": "DSMR-API"},
{"name": "uptime", "value": "0(d):00(h):10"},
{"name": "telegramcount", "value": 56},
{"name": "telegramerrors", "value": 0},
{"name": "mqttbroker", "value": "mosqitto.org:1883"},
{"name": "mqttinterval", "value": 120},
{"name": "mqttbroker_connected", "value": "yes"},
{"name": "mindergas_response", "value": "countdown for sending"},
{"name": "mindergas_status", "value": "@31|12:28 -> :0"},
{"name": "reboots", "value": 6},
{"name": "lastreset", "value": "Software/System restart"}
]}{"devtime":[
{"name": "timestamp", "value": "201027085021S"},
{"name": "time", "value": "2020-10-27 08:50:21"},
{"name": "epoch", "value": 1603788623},
{"name": "uptime", "value": "0(d)-01:22(H:m)"},
{"name": "uptime_secs", "value": 4955, "unit": "sec"}
]}{"settings":[
{"name": "hostname", "value":"DSMR-API", "type": "s", "maxlen": 29},
{"name": "pre_dsmr40", "value": 0, "type": "i", "min": 0, "max": 1},
{"name": "ed_tariff1", "value": 0.50000, "type": "f", "min": 0, "max": 10},
{"name": "ed_tariff2", "value": 0.50000, "type": "f", "min": 0, "max": 10},
{"name": "er_tariff1", "value": 0.50000, "type": "f", "min": 0, "max": 10},
{"name": "er_tariff2", "value": 0.50000, "type": "f", "min": 0, "max": 10},
{"name": "gd_tariff", "value": 0.50000, "type": "f", "min": 0, "max": 10},
{"name": "electr_netw_costs", "value": 15.14, "type": "f", "min": 0, "max": 100},
{"name": "gas_netw_costs", "value": 11.10, "type": "f", "min": 0, "max": 100},
{"name": "mbus1_type", "value": 0, "type": "i", "min": 0, "max": 200},
{"name": "mbus2_type", "value": 3, "type": "i", "min": 0, "max": 200},
{"name": "mbus3_type", "value": 5, "type": "i", "min": 0, "max": 200},
{"name": "mbus4_type", "value": 0, "type": "i", "min": 0, "max": 200},
{"name": "sm_has_fase_info", "value": 1, "type": "i", "min": 0, "max": 1},
{"name": "tlgrm_interval", "value": 5, "type": "i", "min": 2, "max": 60},
{"name": "oled_type", "value": 1, "type": "i", "min": 0, "max": 2},
{"name": "oled_screen_time", "value": 10, "type": "i", "min": 1, "max": 300},
{"name": "oled_flip_screen", "value": 0, "type": "i", "min": 0, "max": 1},
{"name": "index_page", "value":"DSMRindex.html", "type": "s", "maxlen": 49},
{"name": "mqtt_broker", "value":"192.168.21.244", "type": "s", "maxlen": 100},
{"name": "mqtt_broker_port", "value": 1883, "type": "i", "min": 1, "max": 9999},
{"name": "mqtt_user", "value":"", "type": "s", "maxlen": 39},
{"name": "mqtt_passwd", "value":"", "type": "s", "maxlen": 39},
{"name": "mqtt_toptopic", "value":"DSMR-API", "type": "s", "maxlen": 20},
{"name": "mqtt_interval", "value": 60, "type": "i", "min": 0, "max": 600},
{"name": "mindergastoken", "value":"Ay76AFwQ", "type": "s", "maxlen": 20}
]}{"name":"<settingVeld>","value":"<nieuweWaarde>"}{"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"}
]}{"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"}
]}{
"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
}{"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": "-"}
]}{"fields":[
{"name": "timestamp", "value": "210315080001S"},
{"name": "current_l2", "value": 1, "unit": "A"}
]}/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
README.md bestand en de uitgebreide documentatie op hun website!/api/v1/hist/{hours|days|months}/api/v1/hist/{hours|days|months}/{asc|desc}{"hours":[
{"recnr": 0, "recid": "21031006", "slot": 17,"edt1": 2328.742, "edt2": 8500.609,"ert1": 353.507, "ert2": 196.479,"gdt": 2958.498},
{"recnr": 1, "recid": "21031005", "slot": 16,"edt1": 2328.739, "edt2": 8500.598,"ert1": 353.506, "ert2": 196.479,"gdt": 2958.495},
{"recnr": 2, "recid": "21031004", "slot": 15,"edt1": 2328.735, "edt2": 8500.588,"ert1": 353.506, "ert2": 196.479,"gdt": 2958.488},
{"recnr": 3, "recid": "21031003", "slot": 14,"edt1": 2328.729, "edt2": 8500.563,"ert1": 353.506, "ert2": 196.479,"gdt": 2958.481},
{"recnr": 4, "recid": "21031002", "slot": 13,"edt1": 2328.725, "edt2": 8500.551,"ert1": 353.506, "ert2": 196.479,"gdt": 2958.478},
{"recnr": 5, "recid": "21031001", "slot": 12,"edt1": 2328.721, "edt2": 8500.539,"ert1": 353.506, "ert2": 196.479,"gdt": 2958.474},
.
.
.
{"recnr": 43, "recid": "21030811", "slot": 23,"edt1": 2328.563, "edt2": 8499.973,"ert1": 353.492, "ert2": 196.472,"gdt": 2958.277},
{"recnr": 44, "recid": "21030810", "slot": 22,"edt1": 2328.558, "edt2": 8499.949,"ert1": 353.491, "ert2": 196.471,"gdt": 2958.272},
{"recnr": 45, "recid": "21030809", "slot": 21,"edt1": 2328.555, "edt2": 8499.940,"ert1": 353.490, "ert2": 196.471,"gdt": 2958.270},
{"recnr": 46, "recid": "21030808", "slot": 20,"edt1": 2328.550, "edt2": 8499.921,"ert1": 353.489, "ert2": 196.471,"gdt": 2958.260},
{"recnr": 47, "recid": "21030807", "slot": 19,"edt1": 2328.546, "edt2": 8499.904,"ert1": 353.488, "ert2": 196.470,"gdt": 2958.255},
{"recnr": 48, "recid": "21030806", "slot": 18,"edt1": 2328.543, "edt2": 8499.895,"ert1": 353.488, "ert2": 196.470,"gdt": 2958.250}
]}{"days":[
{"recnr": 0, "recid": "21031104", "slot": 7,"edt1": 2328.828, "edt2": 8500.923,"ert1": 353.516, "ert2": 196.483,"gdt": 2958.626},
{"recnr": 1, "recid": "21031023", "slot": 6,"edt1": 2328.810, "edt2": 8500.861,"ert1": 353.516, "ert2": 196.483,"gdt": 2958.598},
{"recnr": 2, "recid": "21030923", "slot": 5,"edt1": 2328.712, "edt2": 8500.511,"ert1": 353.506, "ert2": 196.479,"gdt": 2958.463},
{"recnr": 3, "recid": "21030823", "slot": 4,"edt1": 2328.616, "edt2": 8500.146,"ert1": 353.497, "ert2": 196.475,"gdt": 2958.338},
{"recnr": 4, "recid": "21030723", "slot": 3,"edt1": 2328.513, "edt2": 8499.809,"ert1": 353.488, "ert2": 196.470,"gdt": 2958.209},
.
.
.
{"recnr": 9, "recid": "21030223", "slot": 13,"edt1": 2328.028, "edt2": 8498.042,"ert1": 353.444, "ert2": 196.446,"gdt": 2957.589},
{"recnr": 10, "recid": "21030123", "slot": 12,"edt1": 2327.934, "edt2": 8497.677,"ert1": 353.435, "ert2": 196.441,"gdt": 2957.457},
{"recnr": 11, "recid": "21022823", "slot": 11,"edt1": 2327.651, "edt2": 8496.564,"ert1": 353.407, "ert2": 196.428,"gdt": 2957.076},
{"recnr": 12, "recid": "21022723", "slot": 10,"edt1": 2327.560, "edt2": 8496.223,"ert1": 353.400, "ert2": 196.424,"gdt": 2956.947},
{"recnr": 13, "recid": "21022623", "slot": 9,"edt1": 2327.472, "edt2": 8495.822,"ert1": 353.391, "ert2": 196.419,"gdt": 2956.831},
{"recnr": 14, "recid": "21022523", "slot": 8,"edt1": 2327.383, "edt2": 8495.460,"ert1": 353.383, "ert2": 196.415,"gdt": 2956.704}
]}{"months":[
{"recnr": 0, "recid": "21031106", "slot": 18,"edt1": 2328.836, "edt2": 8500.952,"ert1": 353.517, "ert2": 196.484,"gdt": 2958.637},
{"recnr": 1, "recid": "21022823", "slot": 17,"edt1": 2327.651, "edt2": 8496.564,"ert1": 353.407, "ert2": 196.428,"gdt": 2957.076},
{"recnr": 2, "recid": "21013023", "slot": 16,"edt1": 2324.980, "edt2": 8486.277,"ert1": 353.170, "ert2": 196.306,"gdt": 2953.531},
{"recnr": 3, "recid": "20123023", "slot": 15,"edt1": 2322.095, "edt2": 8475.463,"ert1": 352.912, "ert2": 196.175,"gdt": 2949.813},
{"recnr": 4, "recid": "20113023", "slot": 14,"edt1": 2319.278, "edt2": 8464.555,"ert1": 352.654, "ert2": 196.047,"gdt": 2946.054},
{"recnr": 5, "recid": "20103023", "slot": 13,"edt1": 2316.394, "edt2": 8453.577,"ert1": 352.392, "ert2": 195.919,"gdt": 2942.263},
.
.
.
{"recnr": 19, "recid": "19083023", "slot": 24,"edt1": 2276.118, "edt2": 8300.609,"ert1": 348.744, "ert2": 194.109,"gdt": 2889.412},
{"recnr": 20, "recid": "19073023", "slot": 23,"edt1": 2273.252, "edt2": 8289.574,"ert1": 348.484, "ert2": 193.979,"gdt": 2885.693},
{"recnr": 21, "recid": "19063023", "slot": 22,"edt1": 2270.319, "edt2": 8278.475,"ert1": 348.228, "ert2": 193.847,"gdt": 2881.936},
{"recnr": 22, "recid": "19053023", "slot": 21,"edt1": 2267.456, "edt2": 8267.560,"ert1": 347.971, "ert2": 193.718,"gdt": 2878.164},
{"recnr": 23, "recid": "19042918", "slot": 20,"edt1": 2264.495, "edt2": 8256.316,"ert1": 347.702, "ert2": 193.585,"gdt": 2874.242},
{"recnr": 24, "recid": "19033023", "slot": 19,"edt1": 2261.732, "edt2": 8245.799,"ert1": 347.443, "ert2": 193.461,"gdt": 2870.651}
]}DSMRloggerAPI-master naar DSMRloggerAPI (dus zonder -master)git clone https://github.com/mrWheel/DSMRloggerAPI.git
/******************** 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 **********************/
DSMR-API/identification {"identification":"XMX5LGBBLB2410065887"}
DSMR-API/p1_version {"p1_version":"50"}
DSMR-API/timestamp {"timestamp":"140223173001S"}
DSMR-API/equipment_id {"equipment_id":"4530303336303000000000000000000040"}
DSMR-API/energy_delivered_tariff1 {"energy_delivered_tariff1":170.899,"unit":"kWh"}
DSMR-API/energy_delivered_tariff2 {"energy_delivered_tariff2":163.798,"unit":"kWh"}
DSMR-API/energy_returned_tariff1 {"energy_returned_tariff1":113.378,"unit":"kWh"}
DSMR-API/energy_returned_tariff2 {"energy_returned_tariff2":76.650,"unit":"kWh"}
DSMR-API/electricity_tariff {"electricity_tariff":"0001"}
DSMR-API/power_delivered {"power_delivered":1.230,"unit":"kW"}
DSMR-API/power_returned {"power_returned":1.770,"unit":"kW"}
DSMR-API/voltage_l1 {"voltage_l1":237.0,"unit":"volt"}
DSMR-API/voltage_l2 {"voltage_l2":238.0,"unit":"volt"}
DSMR-API/voltage_l3 {"voltage_l3":235.0,"unit":"volt"}
DSMR-API/current_l1 {"current_l1":2,"unit":"ampere"}
DSMR-API/current_l2 {"current_l2":2,"unit":"ampere"}
DSMR-API/current_l3 {"current_l3":0,"unit":"ampere"}
DSMR-API/power_delivered_l1 {"power_delivered_l1":874,"unit":"Watt"}
DSMR-API/power_delivered_l2 {"power_delivered_l2":336,"unit":"Watt"}
DSMR-API/power_delivered_l3 {"power_delivered_l3":17,"unit":"Watt"}
DSMR-API/power_returned_l1 {"power_returned_l1":1066,"unit":"Watt"}
DSMR-API/power_returned_l2 {"power_returned_l2":274,"unit":"Watt"}
DSMR-API/power_returned_l3 {"power_returned_l3":427,"unit":"Watt"}
DSMR-API/gas_device_type {"gas_device_type":"3"}
DSMR-API/gas_equipment_id {"gas_equipment_id":"4730303339303031363532303530323136"}
DSMR-API/gas_delivered {"gas_delivered":119.69,"unit":"m3"}
/******************** 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 **********************/
[Flash Firmware][Flash FileSystem] - platform: mqtt
name: "Gas gebruik"
state_topic: "DSMR-API/gas_delivered"
unit_of_measurement: 'm3'
value_template: "{{ (value_json.gas_delivered[0].value | float * 1000.0) | round(1) }}"#################################
# uitbreiding configuratie.yaml #
#################################
# koppeling met de DSMR-logger #
#################################
sensor:
- platform: mqtt
name: "Gebruik"
state_topic: "DSMR-API/power_delivered"
unit_of_measurement: "kWh"
value_template: '{{ value_json.power_delivered[0].value | round(3) }}'
- platform: mqtt
name: "Laatste Update mqtt"
state_topic: "DSMR-API/timestamp"
# value_template: '{{ value_json.timestamp[0].value }}'
value_template: >
{{ value_json.timestamp[0].value[4:6] + "-" +
value_json.timestamp[0].value[2:4] + "-" +
"20"+value_json.timestamp[0].value[0:2] + " " +
value_json.timestamp[0].value[6:8] + ":" +
value_json.timestamp[0].value[8:10] + ":" +
value_json.timestamp[0].value[10:13] }}
- platform: mqtt
name: "Gebruik l1"
state_topic: "DSMR-API/power_delivered_l1"
unit_of_measurement: 'Watt'
value_template: "{{ (value_json.power_delivered_l1[0].value | float * 1000.0) | round(1) }}"
- platform: mqtt
name: "Gebruik l2"
state_topic: "DSMR-API/power_delivered_l2"
unit_of_measurement: 'Watt'
value_template: "{{ (value_json.power_delivered_l2[0].value | float * 1000.0) | round(1) }}"
- platform: mqtt
name: "Gebruik l3"
state_topic: "DSMR-API/power_delivered_l3"
unit_of_measurement: 'Watt'
value_template: "{{ (value_json.power_delivered_l3[0].value | float * 1000.0) | round(1) }}"
- platform: rest
name: "Levering"
resource: http://192.168.2.106/api/v1/sm/fields/power_returned
unit_of_measurement: "kWh"
value_template: '{{ value_json.fields[1].value | round(3) }}'
- platform: rest
name: "Laatste Update restAPI"
resource: http://192.168.2.106/api/v1/sm/fields/timestamp
# value_template: '{{ value_json.fields[0].value }}'
value_template: >
{{ value_json.fields[0].value[4:6] + "-" +
value_json.fields[0].value[2:4] + "-" +
"20"+value_json.fields[0].value[0:2] + " " +
value_json.fields[0].value[6:8] + ":" +
value_json.fields[0].value[8:10] + ":" +
value_json.fields[0].value[10:13] }}
- platform: rest
name: "Levering l1"
resource: http://192.168.2.106/api/v1/sm/fields/power_returned_l1
unit_of_measurement: "Watt"
value_template: '{{ (value_json.fields[1].value | float * 1000.0) | round(1) }}'
- platform: rest
name: "Levering l2"
resource: http://192.168.2.106/api/v1/sm/fields/power_returned_l2
unit_of_measurement: 'Watt'
value_template: '{{ (value_json.fields[1].value | float * 1000.0) | round(1) }}'
- platform: rest
name: "Levering l3"
resource: http://192.168.2.106/api/v1/sm/fields/power_returned_l3
unit_of_measurement: 'Watt'
value_template: '{{ (value_json.fields[1].value | float * 1000.0) | round(1) }}'**
***************************************************************************************************
***************************************************************************************************
***************************************************************************************************
[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) 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


















































































