@ -1,25 +1,14 @@
<!doctype html>
<!doctype html>
< html >
< html lang = "en" >
< head >
< head >
< title > Setup< / title >
< title > Setup< / title >
{#HTML_HEADER}
{#HTML_HEADER}
< script type = "text/javascript" >
function load() {
for(it of document.getElementsByClassName("s_collapsible")) {
it.addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
content.style.display = (content.style.display === "block") ? "none" : "block";
});
}
}
< / script >
< / head >
< / head >
< body onload = "load()" >
< body >
{#HTML_NAV}
{#HTML_NAV}
< div id = "wrapper" >
< div id = "wrapper" >
< div id = "content" >
< div id = "content" >
< form method = "post" action = "/save" >
< form method = "post" action = "/save" id = "settings" >
< button type = "button" class = "s_collapsible mt-4" > System Config< / button >
< button type = "button" class = "s_collapsible mt-4" > System Config< / button >
< div class = "s_content" >
< div class = "s_content" >
< fieldset class = "mb-2" >
< fieldset class = "mb-2" >
@ -147,11 +136,11 @@
< / div >
< / div >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > Interval [s]< / div >
< div class = "col-12 col-sm-3 my-2" > Interval [s]< / div >
< div class = "col-12 col-sm-9" > < input type = "text " name = "invInterval" pattern = "[0-9]+ " title = "Invalid input" / > < / div >
< div class = "col-12 col-sm-9" > < input type = "number " name = "invInterval" title = "Invalid input" / > < / div >
< / div >
< / div >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > Max retries per Payload< / div >
< div class = "col-12 col-sm-3 my-2" > Max retries per Payload< / div >
< div class = "col-12 col-sm-9" > < input type = "text " name = "invRetry" / > < / div >
< div class = "col-12 col-sm-9" > < input type = "number " name = "invRetry" / > < / div >
< / div >
< / div >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-8 col-sm-3 mb-2" > Reset values and YieldDay at midnight< / div >
< div class = "col-8 col-sm-3 mb-2" > Reset values and YieldDay at midnight< / div >
@ -178,7 +167,7 @@
< / div >
< / div >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > NTP Port< / div >
< div class = "col-12 col-sm-3 my-2" > NTP Port< / div >
< div class = "col-12 col-sm-9" > < input type = "text " name = "ntpPort" / > < / div >
< div class = "col-12 col-sm-9" > < input type = "number " name = "ntpPort" / > < / div >
< / div >
< / div >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > set system time< / div >
< div class = "col-12 col-sm-3 my-2" > set system time< / div >
@ -195,15 +184,13 @@
< div class = "s_content" >
< div class = "s_content" >
< fieldset class = "mb-4" >
< fieldset class = "mb-4" >
< legend class = "des" > Sunrise & Sunset< / legend >
< legend class = "des" > Sunrise & Sunset< / legend >
< p > Use a decimal separator: '.' (dot) for Latitude and Longitude< / p >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > Latitude (decimal)< / div >
< div class = "col-12 col-sm-3 my-2" > Latitude (decimal)< / div >
< div class = "col-12 col-sm-9" > < input type = "text " name = "sunLat" / > < / div >
< div class = "col-12 col-sm-9" > < input type = "number " name = "sunLat" step = "any " / > < / div >
< / div >
< / div >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > Longitude (decimal)< / div >
< div class = "col-12 col-sm-3 my-2" > Longitude (decimal)< / div >
< div class = "col-12 col-sm-9" > < input type = "text " name = "sunLon" / > < / div >
< div class = "col-12 col-sm-9" > < input type = "number " name = "sunLon" step = "any " / > < / div >
< / div >
< / div >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > Offset (pre sunrise, post sunset)< / div >
< div class = "col-12 col-sm-3 my-2" > Offset (pre sunrise, post sunset)< / div >
@ -226,7 +213,7 @@
< / div >
< / div >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > Port< / div >
< div class = "col-12 col-sm-3 my-2" > Port< / div >
< div class = "col-12 col-sm-9" > < input type = "text " name = "mqttPort" / > < / div >
< div class = "col-12 col-sm-9" > < input type = "number " name = "mqttPort" / > < / div >
< / div >
< / div >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > Username (optional)< / div >
< div class = "col-12 col-sm-3 my-2" > Username (optional)< / div >
@ -243,7 +230,7 @@
< p class = "des" > Send Inverter data in a fixed interval, even if there is no change. A value of '0' disables the fixed interval. The data is published once it was successfully received from inverter. (default: 0)< / p >
< p class = "des" > Send Inverter data in a fixed interval, even if there is no change. A value of '0' disables the fixed interval. The data is published once it was successfully received from inverter. (default: 0)< / p >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > Interval [s]< / div >
< div class = "col-12 col-sm-3 my-2" > Interval [s]< / div >
< div class = "col-12 col-sm-9" > < input type = "text " name = "mqttInterval" pattern = "[0-9]+ " title = "Invalid input" / > < / div >
< div class = "col-12 col-sm-9" > < input type = "number " name = "mqttInterval" title = "Invalid input" / > < / div >
< / div >
< / div >
< div class = "row mb-3" >
< div class = "row mb-3" >
< div class = "col-12 col-sm-3 my-2" > Discovery Config (homeassistant)< / div >
< div class = "col-12 col-sm-3 my-2" > Discovery Config (homeassistant)< / div >
@ -292,11 +279,13 @@
< fieldset class = "mb-4" >
< fieldset class = "mb-4" >
< legend class = "des" > Import / Export JSON Settings< / legend >
< legend class = "des" > Import / Export JSON Settings< / legend >
< div class = "row mb-4 mt-4" >
< div class = "row mb-4 mt-4" >
< div class = "col-12 col-sm-3 my-2 " > Import< / div >
< div class = "col-12 col-sm-3" > Import< / div >
< div class = "col-12 col-sm-9 my-2 " >
< div class = "col-12 col-sm-9" >
< form id = "form" method = "POST" action = "/upload" enctype = "multipart/form-data" accept-charset = "utf-8" >
< form id = "form" method = "POST" action = "/upload" enctype = "multipart/form-data" accept-charset = "utf-8" >
< input type = "file" name = "upload" >
< div class = "row" >
< input type = "button" class = "btn" value = "Import" onclick = "hide()" >
< div class = "col-12 col-sm-8 my-2" > < input type = "file" name = "upload" > < / div >
< div class = "col-12 col-sm-4 my-2" > < input type = "button" class = "btn" value = "Import" onclick = "hide()" > < / div >
< / div >
< / form >
< / form >
< / div >
< / div >
< / div >
< / div >
@ -419,6 +408,24 @@
const re = /11[2,4,6]1.*/;
const re = /11[2,4,6]1.*/;
window.onload = function() {
for(it of document.getElementsByClassName("s_collapsible")) {
it.addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
content.style.display = (content.style.display === "block") ? "none" : "block";
});
}
document.getElementById("settings").addEventListener("submit", function() {
var inputs = document.querySelectorAll("input[type='number']");
for (var i = 0; i < inputs.length ; i + + ) {
if (inputs[i].value.indexOf(",") != -1)
inputs[i].value = inputs[i].value.replace(",", ".");
}
});
}
document.getElementById("btnAdd").addEventListener("click", function() {
document.getElementById("btnAdd").addEventListener("click", function() {
if(highestId < = (maxInv-1)) {
if(highestId < = (maxInv-1)) {
ivHtml(JSON.parse('{"enabled":true,"name":"","serial":"","channels":4,"ch_max_pwr":[0,0,0,0],"ch_name":["","","",""],"ch_yield_cor":[0,0,0,0]}'), highestId);
ivHtml(JSON.parse('{"enabled":true,"name":"","serial":"","channels":4,"ch_max_pwr":[0,0,0,0],"ch_name":["","","",""],"ch_yield_cor":[0,0,0,0]}'), highestId);