@ -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);