From 59e27b9737082f9b2901f63eaa4f59e0622075c9 Mon Sep 17 00:00:00 2001 From: mrWheel <5585427+mrWheel@users.noreply.github.com> Date: Tue, 31 Mar 2020 11:57:43 +0200 Subject: [PATCH] v1.1.3 SM_HAS_NO_FASE_INFO is nu een setting --- DSMRloggerAPI.h | 3 +- DSMRloggerAPI.ino | 7 ++-- data/DSMRindex.js | 87 ++++++++++++++++++++++++++----------------- edge/DSMRindex.js | 87 ++++++++++++++++++++++++++----------------- handleSlimmeMeter.ino | 33 ++++++++-------- menuStuff.ino | 5 +-- restAPI.ino | 7 ++-- settingsStuff.ino | 46 +++++++++++++++-------- 8 files changed, 163 insertions(+), 112 deletions(-) diff --git a/DSMRloggerAPI.h b/DSMRloggerAPI.h index 192931b..7f70e1c 100644 --- a/DSMRloggerAPI.h +++ b/DSMRloggerAPI.h @@ -1,7 +1,7 @@ /* *************************************************************************** ** Program : DSMRloggerAPI.h - definitions for DSMRloggerAPI -** Version : v1.1.2 +** Version : v1.1.3 ** ** Copyright (c) 2020 Willem Aandewiel ** @@ -227,6 +227,7 @@ IPAddress ipDNS, ipGateWay, ipSubnet; float settingEDT1, settingEDT2, settingERT1, settingERT2, settingGDT; float settingENBK, settingGNBK; uint8_t settingTelegramInterval; +uint8_t settingSmHasFaseInfo = 1; char settingHostname[30]; char settingIndexPage[50]; char settingMQTTbroker[101], settingMQTTuser[40], settingMQTTpasswd[30], settingMQTTtopTopic[21]; diff --git a/DSMRloggerAPI.ino b/DSMRloggerAPI.ino index 0ca8ab8..528f76d 100644 --- a/DSMRloggerAPI.ino +++ b/DSMRloggerAPI.ino @@ -2,7 +2,7 @@ *************************************************************************** ** Program : DSMRloggerAPI (restAPI) */ -#define _FW_VERSION "v1.1.2 (29-03-2020)" +#define _FW_VERSION "v1.1.3 (30-03-2020)" /* ** Copyright (c) 2020 Willem Aandewiel ** @@ -36,12 +36,11 @@ /******************** compiler options ********************************************/ #define USE_REQUEST_PIN // define if it's a esp8266 with GPIO 12 connected to SM DTR pin #define USE_UPDATE_SERVER // define if there is enough memory and updateServer to be used -#define HAS_OLED_SSD1306 // define if a 0.96" OLED display is present -// #define HAS_OLED_SH1106 // define if a 1.3" OLED display is present +//#define HAS_OLED_SSD1306 // define if a 0.96" OLED display is present + #define HAS_OLED_SH1106 // define if a 1.3" OLED display is present // #define USE_BELGIUM_PROTOCOL // define if Slimme Meter is a Belgium Smart Meter // #define USE_PRE40_PROTOCOL // define if Slimme Meter is pre DSMR 4.0 (2.2 .. 3.0) // #define USE_NTP_TIME // define to generate Timestamp from NTP (Only Winter Time for now) -// #define SM_HAS_NO_FASE_INFO // if your SM does not give fase info use total delivered/returned // #define HAS_NO_SLIMMEMETER // define for testing only! #define USE_MQTT // define if you want to use MQTT (configure through webinterface) #define USE_MINDERGAS // define if you want to update mindergas (configure through webinterface) diff --git a/data/DSMRindex.js b/data/DSMRindex.js index 76083be..b17e91c 100644 --- a/data/DSMRindex.js +++ b/data/DSMRindex.js @@ -1,7 +1,7 @@ /* *************************************************************************** ** Program : DSMRindex.js, part of DSMRfirmwareAPI -** Version : v1.1.2 +** Version : v1.1.3 ** ** Copyright (c) 2020 Willem Aandewiel ** @@ -37,7 +37,7 @@ var data = []; - var longFieldsMain = [ "identification","p1_version","timestamp","equipment_id" + var longFields = [ "identification","p1_version","timestamp","equipment_id" ,"energy_delivered_tariff1","energy_delivered_tariff2" ,"energy_returned_tariff1","energy_returned_tariff2","electricity_tariff" ,"power_delivered","power_returned" @@ -57,10 +57,23 @@ ,"water_valve_position","water_delivered" ,"slave_device_type","slave_equipment_id" ,"slave_valve_position","slave_delivered" + ,"ed_tariff1","ed_tariff2" + ,"er_tariff1","er_tariff2" + ,"gd_tariff","electr_netw_costs" + ,"gas_netw_costs" + ,"smhasfaseinfo", "sm_has_fase_info" + ,"oled_flip_screen" + ,"tlgrm_interval","telegraminterval" + ,"index_page" + ,"oled_screen_time" + ,"mqttbroker","mqttbrokerport" + ,"mqttuser","mqttpasswd","mqtttoptopic" + ,"mqttinterval","mqttbroker_connected" + ,"mindergas_token" ,"\0" - ]; - - var humanFieldsMain = [ "Slimme Meter ID","P1 Versie","timestamp","Equipment ID" + ]; + + var humanFields = [ "Slimme Meter ID","P1 Versie","timestamp","Equipment ID" ,"Energie Gebruikt tarief 1","Energie Gebruikt tarief 2" ,"Energie Opgewekt tarief 1","Energie Opgewekt tarief 2","Electriciteit tarief" ,"Vermogen Gebruikt","Vermogen Opgewekt" @@ -80,8 +93,25 @@ ,"water_valve_position","water_delivered" ,"slave_device_type","slave_equipment_id" ,"slave_valve_position","slave_delivered" + ,"Energy Verbruik Tarief-1/kWh","Energy Verbruik Tarief-2/kWh" + ,"Energy Opgewekt Tarief-1/kWh","Energy Opgewekt Tarief-2/kWh" + ,"Gas Verbruik Tarief/m3","Netwerkkosten Energie/maand" + ,"Netwerkkosten Gas/maand" + ,"SM Has Fase Info (0=No, 1=Yes)","SM Has Fase Info (0=No, 1=Yes)" + ,"Flip OLED scherm (0=No, 1=Yes)" + ,"Telegram Lees Interval (Sec.)" + ,"Telegram Lees Interval (Sec.)" + ,"Te Gebruiken index.html Pagina" + ,"Oled Screen Time (Min., 0=infinite)" + ,"MQTT Broker IP/URL","MQTT Broker Poort" + ,"MQTT Gebruiker","Password MQTT Gebruiker" + ,"MQTT Top Topic" + ,"Verzend MQTT Berichten (Sec.)" + ,"MQTT broker connected" + ,"Mindergas Token" ,"\0" - ]; + ]; + let monthType = "ED"; let settingBgColor = 'deepskyblue'; let settingFontColor = 'white' @@ -89,7 +119,9 @@ var longFieldsSettings = [ "ed_tariff1","ed_tariff2" ,"er_tariff1","er_tariff2" ,"gd_tariff","electr_netw_costs" - ,"gas_netw_costs","tlgrm_interval","index_page" + ,"gas_netw_costs","smhasfaseinfo" + ,"tlgrm_interval" + ,"index_page" ,"oled_screen_time" ,"mqtt_broker","mqtt_broker_port" ,"mqtt_user","mqtt_passwd","mqtt_toptopic" @@ -100,7 +132,8 @@ var humanFieldsSettings = [ "Energy Verbruik Tarief-1/kWh","Energy Verbruik Tarief-2/kWh" ,"Energy Opgewekt Tarief-1/kWh","Energy Opgewekt Tarief-2/kWh" ,"Gas Verbruik Tarief/m3","Netwerkkosten Energie/maand" - ,"Netwerkkosten Gas/maand","Telegram Lees Interval (Sec.)" + ,"Netwerkkosten Gas/maand","SM Has Fase Info (1=Yes, 0=No)" + ,"Telegram Lees Interval (Sec.)" ,"Te Gebruiken index.html Pagina" ,"Oled Screen Time (Min., 0=infinite)" ,"MQTT Broker IP/URL","MQTT Broker Poort" @@ -338,7 +371,8 @@ for( let i in data ) { var tableRef = document.getElementById('devInfoTable').getElementsByTagName('tbody')[0]; - + data[i].shortName = longToHuman(data[i].name); + if( ( document.getElementById("devInfoTable_"+data[i].name)) == null ) { //console.log("data["+i+"] => name["+data[i].name+"]"); @@ -354,7 +388,8 @@ newCell.appendChild(newText); } tableCells = document.getElementById("devInfoTable_"+data[i].name).cells; - tableCells[0].innerHTML = data[i].name; + //tableCells[0].innerHTML = data[i].name; + tableCells[0].innerHTML = data[i].shortName; tableCells[1].innerHTML = data[i].value; if (data[i].hasOwnProperty('unit')) { @@ -467,7 +502,7 @@ data = json.fields; for (var i in data) { - data[i].shortName = smToHuman(data[i].name); + data[i].shortName = longToHuman(data[i].name); var tableRef = document.getElementById('fieldsTable').getElementsByTagName('tbody')[0]; if( ( document.getElementById("fieldsTable_"+data[i].name)) == null ) { @@ -704,7 +739,7 @@ for (var i in data) { - data[i].shortName = smToHuman(data[i].name); + data[i].shortName = longToHuman(data[i].name); var tableRef = document.getElementById('actualTable').getElementsByTagName('tbody')[0]; if( ( document.getElementById("actualTable_"+data[i].name)) == null ) { @@ -1256,7 +1291,7 @@ http://DSMR-API.local/api/v1/dev/settings", false); fldDiv.setAttribute("style", "margin-right: 10px;"); fldDiv.style.width = "250px"; fldDiv.style.float = 'left'; - fldDiv.textContent = smToHuman(data[i].name); + fldDiv.textContent = longToHuman(data[i].name); rowDiv.appendChild(fldDiv); //--- input --- var inputDiv = document.createElement("div"); @@ -1914,33 +1949,17 @@ http://DSMR-API.local/api/v1/dev/settings", false); //============================================================================ - function smToHuman(longName) { - //console.log("smToHuman("+longName+") for ["+longFieldsSettings.length+"] elements"); - for(var index = 0; index < (longFieldsSettings.length -1); index++) - { - if (longFieldsSettings[index] == longName) - { - return humanFieldsSettings[index]; - } - }; - return longName; - - } // smToHuman() - - - //============================================================================ - function smToHuman(longName) { - //console.log("smToHuman("+longName+") for ["+longFieldsMain.length+"] elements"); - for(var index = 0; index < (longFieldsMain.length -1); index++) + function longToHuman(longName) { + for(var index = 0; index < (longFields.length -1); index++) { - if (longFieldsMain[index] == longName) + if (longFields[index] == longName) { - return humanFieldsMain[index]; + return humanFields[index]; } }; return longName; - } // smToHuman() + } // longToHuman() //============================================================================ diff --git a/edge/DSMRindex.js b/edge/DSMRindex.js index 76083be..b17e91c 100644 --- a/edge/DSMRindex.js +++ b/edge/DSMRindex.js @@ -1,7 +1,7 @@ /* *************************************************************************** ** Program : DSMRindex.js, part of DSMRfirmwareAPI -** Version : v1.1.2 +** Version : v1.1.3 ** ** Copyright (c) 2020 Willem Aandewiel ** @@ -37,7 +37,7 @@ var data = []; - var longFieldsMain = [ "identification","p1_version","timestamp","equipment_id" + var longFields = [ "identification","p1_version","timestamp","equipment_id" ,"energy_delivered_tariff1","energy_delivered_tariff2" ,"energy_returned_tariff1","energy_returned_tariff2","electricity_tariff" ,"power_delivered","power_returned" @@ -57,10 +57,23 @@ ,"water_valve_position","water_delivered" ,"slave_device_type","slave_equipment_id" ,"slave_valve_position","slave_delivered" + ,"ed_tariff1","ed_tariff2" + ,"er_tariff1","er_tariff2" + ,"gd_tariff","electr_netw_costs" + ,"gas_netw_costs" + ,"smhasfaseinfo", "sm_has_fase_info" + ,"oled_flip_screen" + ,"tlgrm_interval","telegraminterval" + ,"index_page" + ,"oled_screen_time" + ,"mqttbroker","mqttbrokerport" + ,"mqttuser","mqttpasswd","mqtttoptopic" + ,"mqttinterval","mqttbroker_connected" + ,"mindergas_token" ,"\0" - ]; - - var humanFieldsMain = [ "Slimme Meter ID","P1 Versie","timestamp","Equipment ID" + ]; + + var humanFields = [ "Slimme Meter ID","P1 Versie","timestamp","Equipment ID" ,"Energie Gebruikt tarief 1","Energie Gebruikt tarief 2" ,"Energie Opgewekt tarief 1","Energie Opgewekt tarief 2","Electriciteit tarief" ,"Vermogen Gebruikt","Vermogen Opgewekt" @@ -80,8 +93,25 @@ ,"water_valve_position","water_delivered" ,"slave_device_type","slave_equipment_id" ,"slave_valve_position","slave_delivered" + ,"Energy Verbruik Tarief-1/kWh","Energy Verbruik Tarief-2/kWh" + ,"Energy Opgewekt Tarief-1/kWh","Energy Opgewekt Tarief-2/kWh" + ,"Gas Verbruik Tarief/m3","Netwerkkosten Energie/maand" + ,"Netwerkkosten Gas/maand" + ,"SM Has Fase Info (0=No, 1=Yes)","SM Has Fase Info (0=No, 1=Yes)" + ,"Flip OLED scherm (0=No, 1=Yes)" + ,"Telegram Lees Interval (Sec.)" + ,"Telegram Lees Interval (Sec.)" + ,"Te Gebruiken index.html Pagina" + ,"Oled Screen Time (Min., 0=infinite)" + ,"MQTT Broker IP/URL","MQTT Broker Poort" + ,"MQTT Gebruiker","Password MQTT Gebruiker" + ,"MQTT Top Topic" + ,"Verzend MQTT Berichten (Sec.)" + ,"MQTT broker connected" + ,"Mindergas Token" ,"\0" - ]; + ]; + let monthType = "ED"; let settingBgColor = 'deepskyblue'; let settingFontColor = 'white' @@ -89,7 +119,9 @@ var longFieldsSettings = [ "ed_tariff1","ed_tariff2" ,"er_tariff1","er_tariff2" ,"gd_tariff","electr_netw_costs" - ,"gas_netw_costs","tlgrm_interval","index_page" + ,"gas_netw_costs","smhasfaseinfo" + ,"tlgrm_interval" + ,"index_page" ,"oled_screen_time" ,"mqtt_broker","mqtt_broker_port" ,"mqtt_user","mqtt_passwd","mqtt_toptopic" @@ -100,7 +132,8 @@ var humanFieldsSettings = [ "Energy Verbruik Tarief-1/kWh","Energy Verbruik Tarief-2/kWh" ,"Energy Opgewekt Tarief-1/kWh","Energy Opgewekt Tarief-2/kWh" ,"Gas Verbruik Tarief/m3","Netwerkkosten Energie/maand" - ,"Netwerkkosten Gas/maand","Telegram Lees Interval (Sec.)" + ,"Netwerkkosten Gas/maand","SM Has Fase Info (1=Yes, 0=No)" + ,"Telegram Lees Interval (Sec.)" ,"Te Gebruiken index.html Pagina" ,"Oled Screen Time (Min., 0=infinite)" ,"MQTT Broker IP/URL","MQTT Broker Poort" @@ -338,7 +371,8 @@ for( let i in data ) { var tableRef = document.getElementById('devInfoTable').getElementsByTagName('tbody')[0]; - + data[i].shortName = longToHuman(data[i].name); + if( ( document.getElementById("devInfoTable_"+data[i].name)) == null ) { //console.log("data["+i+"] => name["+data[i].name+"]"); @@ -354,7 +388,8 @@ newCell.appendChild(newText); } tableCells = document.getElementById("devInfoTable_"+data[i].name).cells; - tableCells[0].innerHTML = data[i].name; + //tableCells[0].innerHTML = data[i].name; + tableCells[0].innerHTML = data[i].shortName; tableCells[1].innerHTML = data[i].value; if (data[i].hasOwnProperty('unit')) { @@ -467,7 +502,7 @@ data = json.fields; for (var i in data) { - data[i].shortName = smToHuman(data[i].name); + data[i].shortName = longToHuman(data[i].name); var tableRef = document.getElementById('fieldsTable').getElementsByTagName('tbody')[0]; if( ( document.getElementById("fieldsTable_"+data[i].name)) == null ) { @@ -704,7 +739,7 @@ for (var i in data) { - data[i].shortName = smToHuman(data[i].name); + data[i].shortName = longToHuman(data[i].name); var tableRef = document.getElementById('actualTable').getElementsByTagName('tbody')[0]; if( ( document.getElementById("actualTable_"+data[i].name)) == null ) { @@ -1256,7 +1291,7 @@ http://DSMR-API.local/api/v1/dev/settings", false); fldDiv.setAttribute("style", "margin-right: 10px;"); fldDiv.style.width = "250px"; fldDiv.style.float = 'left'; - fldDiv.textContent = smToHuman(data[i].name); + fldDiv.textContent = longToHuman(data[i].name); rowDiv.appendChild(fldDiv); //--- input --- var inputDiv = document.createElement("div"); @@ -1914,33 +1949,17 @@ http://DSMR-API.local/api/v1/dev/settings", false); //============================================================================ - function smToHuman(longName) { - //console.log("smToHuman("+longName+") for ["+longFieldsSettings.length+"] elements"); - for(var index = 0; index < (longFieldsSettings.length -1); index++) - { - if (longFieldsSettings[index] == longName) - { - return humanFieldsSettings[index]; - } - }; - return longName; - - } // smToHuman() - - - //============================================================================ - function smToHuman(longName) { - //console.log("smToHuman("+longName+") for ["+longFieldsMain.length+"] elements"); - for(var index = 0; index < (longFieldsMain.length -1); index++) + function longToHuman(longName) { + for(var index = 0; index < (longFields.length -1); index++) { - if (longFieldsMain[index] == longName) + if (longFields[index] == longName) { - return humanFieldsMain[index]; + return humanFields[index]; } }; return longName; - } // smToHuman() + } // longToHuman() //============================================================================ diff --git a/handleSlimmeMeter.ino b/handleSlimmeMeter.ino index bfef939..5afd565 100644 --- a/handleSlimmeMeter.ino +++ b/handleSlimmeMeter.ino @@ -1,7 +1,7 @@ /* *************************************************************************** ** Program : handleSlimmeMeter - part of DSMRloggerAPI -** Version : v1.1.0 +** Version : v1.1.3 ** ** Copyright (c) 2020 Willem Aandewiel ** @@ -120,22 +120,23 @@ void processSlimmemeter() yield(); } } -#ifdef SM_HAS_NO_FASE_INFO - if (DSMRdata.power_delivered_present && !DSMRdata.power_delivered_l1_present) + if (!settingSmHasFaseInfo) { - DSMRdata.power_delivered_l1 = DSMRdata.power_delivered; - DSMRdata.power_delivered_l1_present = true; - DSMRdata.power_delivered_l2_present = true; - DSMRdata.power_delivered_l3_present = true; - } - if (DSMRdata.power_returned_present && !DSMRdata.power_returned_l1_present) - { - DSMRdata.power_returned_l1 = DSMRdata.power_returned; - DSMRdata.power_returned_l1_present = true; - DSMRdata.power_returned_l2_present = true; - DSMRdata.power_returned_l3_present = true; - } -#endif + if (DSMRdata.power_delivered_present && !DSMRdata.power_delivered_l1_present) + { + DSMRdata.power_delivered_l1 = DSMRdata.power_delivered; + DSMRdata.power_delivered_l1_present = true; + DSMRdata.power_delivered_l2_present = true; + DSMRdata.power_delivered_l3_present = true; + } + if (DSMRdata.power_returned_present && !DSMRdata.power_returned_l1_present) + { + DSMRdata.power_returned_l1 = DSMRdata.power_returned; + DSMRdata.power_returned_l1_present = true; + DSMRdata.power_returned_l2_present = true; + DSMRdata.power_returned_l3_present = true; + } + } // No Fase Info #ifdef USE_NTP_TIME if (!DSMRdata.timestamp_present) //USE_NTP diff --git a/menuStuff.ino b/menuStuff.ino index 066e722..3fa8499 100644 --- a/menuStuff.ino +++ b/menuStuff.ino @@ -1,7 +1,7 @@ /* *************************************************************************** ** Program : menuStuff, part of DSMRloggerAPI -** Version : v1.1.0 +** Version : v1.1.3 ** ** Copyright (c) 2020 Willem Aandewiel ** @@ -76,9 +76,6 @@ void displayBoardInfo() #ifdef USE_BELGIUM_PROTOCOL Debug(F("[USE_BELGIUM_PROTOCOL]")); #endif -#ifdef SM_HAS_NO_FASE_INFO - Debug(F("[SM_HAS_NO_FASE_INFO]")); -#endif #ifdef SHOW_PASSWRDS Debug(F("[SHOW_PASSWRDS]")); #endif diff --git a/restAPI.ino b/restAPI.ino index 753c946..c6fa900 100644 --- a/restAPI.ino +++ b/restAPI.ino @@ -1,7 +1,7 @@ /* *************************************************************************** ** Program : restAPI, part of DSMRloggerAPI -** Version : v1.1.2 +** Version : v1.1.3 ** ** Copyright (c) 2020 Willem Aandewiel ** @@ -340,9 +340,6 @@ void sendDeviceInfo() #if defined( HAS_OLED_SH1106 ) strConcat(compileOptions, sizeof(compileOptions), "[HAS_OLED_SH1106]"); #endif -#ifdef SM_HAS_NO_FASE_INFO - strConcat(compileOptions, sizeof(compileOptions), "[SM_HAS_NO_FASE_INFO]"); -#endif sendStartJsonObj("devinfo"); @@ -399,6 +396,7 @@ void sendDeviceInfo() #endif sendNestedJsonObj("wifirssi", WiFi.RSSI()); sendNestedJsonObj("uptime", upTime()); + sendNestedJsonObj("smhasfaseinfo", (int)settingSmHasFaseInfo); sendNestedJsonObj("telegraminterval", (int)settingTelegramInterval); sendNestedJsonObj("telegramcount", (int)telegramCount); sendNestedJsonObj("telegramerrors", (int)telegramErrors); @@ -453,6 +451,7 @@ void sendDeviceSettings() sendJsonSettingObj("gd_tariff", settingGDT, "f", 0, 10, 5); sendJsonSettingObj("electr_netw_costs", settingENBK, "f", 0, 100, 2); sendJsonSettingObj("gas_netw_costs", settingGNBK, "f", 0, 100, 2); + sendJsonSettingObj("sm_has_fase_info", settingSmHasFaseInfo, "i", 0, 1); sendJsonSettingObj("tlgrm_interval", settingTelegramInterval,"i", 2, 60); sendJsonSettingObj("oled_screen_time", settingOledSleep, "i", 1, 300); sendJsonSettingObj("oled_flip_screen", settingOledFlip, "i", 0, 1); diff --git a/settingsStuff.ino b/settingsStuff.ino index fb044b1..5a0af03 100644 --- a/settingsStuff.ino +++ b/settingsStuff.ino @@ -1,7 +1,7 @@ /* *************************************************************************** ** Program : settingsStuff, part of DSMRloggerAPI -** Version : v1.1.2 +** Version : v1.1.3 ** ** Copyright (c) 2020 Willem Aandewiel ** @@ -38,12 +38,13 @@ void writeSettings() file.print("EnergyVasteKosten = "); file.println(String(settingENBK, 2)); Debug(F(".")); file.print("GasVasteKosten = "); file.println(String(settingGNBK, 2)); Debug(F(".")); file.print("OledSleep = "); file.println(settingOledSleep); Debug(F(".")); - file.print("TelegramInterval = "); file.println(settingTelegramInterval); Debug(F(".")); - file.print("IndexPage = "); file.println(settingIndexPage); Debug(F(".")); - #if defined( HAS_OLED_SSD1306 ) || defined( HAS_OLED_SH1106 ) file.print("OledFlip = "); file.println(settingOledFlip); Debug(F(".")); #endif + file.print("SmHasFaseInfo = "); file.println(settingSmHasFaseInfo); Debug(F(".")); + + file.print("TelegramInterval = "); file.println(settingTelegramInterval); Debug(F(".")); + file.print("IndexPage = "); file.println(settingIndexPage); Debug(F(".")); #ifdef USE_MQTT //sprintf(settingMQTTbroker, "%s:%d", MQTTbroker, MQTTbrokerPort); @@ -73,15 +74,16 @@ file.close(); DebugT(F("EnergyVasteKosten = ")); Debugln(String(settingENBK, 2)); DebugT(F("GasVasteKosten = ")); Debugln(String(settingGNBK, 2)); DebugT(F("OledSleep = ")); Debugln(settingOledSleep); - DebugT(F("TelegramInterval = ")); Debugln(settingTelegramInterval); - DebugT(F("IndexPage = ")); Debugln(settingIndexPage); - #if defined( HAS_OLED_SSD1306 ) || defined( HAS_OLED_SH1106 ) DebugT(F("OledFlip = ")); if (settingOledFlip) Debugln(F("Yes")); else Debugln(F("No")); #endif + DebugT(F("SmHasFaseInfo")); Debugln(settingSmHasFaseInfo); + DebugT(F("TelegramInterval = ")); Debugln(settingTelegramInterval); + DebugT(F("IndexPage = ")); Debugln(settingIndexPage); + #ifdef USE_MQTT DebugT(F("MQTTbroker = ")); Debugln(settingMQTTbroker); DebugT(F("MQTTbrokerPort = ")); Debugln(settingMQTTbrokerPort); @@ -125,6 +127,7 @@ void readSettings(bool show) settingGDT = 0.5; settingENBK = 15.15; settingGNBK = 11.11; + settingSmHasFaseInfo = 1; // default: it does settingTelegramInterval = 10; // seconds settingOledSleep = 0; // infinite settingOledFlip = 0; // Don't flip @@ -175,7 +178,13 @@ void readSettings(bool show) if (words[0].equalsIgnoreCase("GasDeliveredT")) settingGDT = strToFloat(words[1].c_str(), 5); if (words[0].equalsIgnoreCase("EnergyVasteKosten")) settingENBK = strToFloat(words[1].c_str(), 2); if (words[0].equalsIgnoreCase("GasVasteKosten")) settingGNBK = strToFloat(words[1].c_str(), 2); - + if (words[0].equalsIgnoreCase("SmHasFaseInfo")) + { + settingSmHasFaseInfo = words[1].toInt(); + if (settingSmHasFaseInfo != 0) settingSmHasFaseInfo = 1; + else settingSmHasFaseInfo = 0; + } + if (words[0].equalsIgnoreCase("OledSleep")) { settingOledSleep = words[1].toInt(); @@ -183,6 +192,11 @@ void readSettings(bool show) CHANGE_INTERVAL_MIN(oledSleepTimer, settingOledSleep); #endif } +#if defined( HAS_OLED_SSD1306 ) || defined( HAS_OLED_SH1106 ) + if (words[0].equalsIgnoreCase("OledFlip")) settingOledFlip = words[1].toInt(); + if (settingOledFlip != 0) settingOledFlip = 1; + else settingOledFlip = 0; +#endif if (words[0].equalsIgnoreCase("TelegramInterval")) { @@ -196,12 +210,6 @@ void readSettings(bool show) if (words[0].equalsIgnoreCase("MindergasAuthtoken")) strCopy(settingMindergasToken, 20, words[1].c_str()); #endif -#if defined( HAS_OLED_SSD1306 ) || defined( HAS_OLED_SH1106 ) - if (words[0].equalsIgnoreCase("OledFlip")) settingOledFlip = words[1].toInt(); - if (settingOledFlip != 0) settingOledFlip = 1; - else settingOledFlip = 0; -#endif - #ifdef USE_MQTT if (words[0].equalsIgnoreCase("MQTTbroker")) { @@ -236,7 +244,7 @@ void readSettings(bool show) if (!show) return; Debugln(F("\r\n==== Settings ===================================================\r")); - Debugf(" Hostname : %s\r\n", settingHostname); + Debugf(" Hostname : %s\r\n", settingHostname); Debugf(" Energy Delivered Tarief 1 : %9.7f\r\n", settingEDT1); Debugf(" Energy Delivered Tarief 2 : %9.7f\r\n", settingEDT2); Debugf(" Energy Delivered Tarief 1 : %9.7f\r\n", settingERT1); @@ -244,6 +252,7 @@ void readSettings(bool show) Debugf(" Gas Delivered Tarief : %9.7f\r\n", settingGDT); Debugf(" Energy Netbeheer Kosten : %9.2f\r\n", settingENBK); Debugf(" Gas Netbeheer Kosten : %9.2f\r\n", settingGNBK); + Debugf(" SM Fase Info (0=No, 1=Yes) : %d\r\n", settingSmHasFaseInfo); Debugf(" Telegram Process Interval : %d\r\n", settingTelegramInterval); Debugf("OLED Sleep Min. (0=oneindig) : %d\r\n", settingOledSleep); #if defined( HAS_OLED_SSD1306 ) || defined( HAS_OLED_SH1106 ) @@ -301,6 +310,13 @@ void updateSetting(const char *field, const char *newValue) if (!stricmp(field, "gd_tariff")) settingGDT = String(newValue).toFloat(); if (!stricmp(field, "gas_netw_costs")) settingGNBK = String(newValue).toFloat(); + if (!stricmp(field, "sm_has_fase_info")) + { + settingSmHasFaseInfo = String(newValue).toInt(); + if (settingSmHasFaseInfo != 0) settingSmHasFaseInfo = 1; + else settingSmHasFaseInfo = 0; + } + if (!stricmp(field, "oled_screen_time")) { settingOledSleep = String(newValue).toInt();