mirror of
https://github.com/lumapu/ahoy.git
synced 2025-05-11 16:06:38 +02:00
Merge branch 'development03' of https://github.com/lumapu/ahoy into development03
This commit is contained in:
commit
6bf6e357ca
9 changed files with 72 additions and 131 deletions
|
@ -13,7 +13,7 @@
|
|||
<a href="/live">Visualization</a><br/>
|
||||
<br/>
|
||||
<a href="/setup">Setup</a><br/>
|
||||
<a href="/serial">Serial Console</a><br/>
|
||||
<a href="/serial">Webserial & Commands</a><br/>
|
||||
</p>
|
||||
<p><span class="des">Uptime: </span><span id="uptime"></span></p>
|
||||
<p><span class="des">ESP-Time: </span><span id="date"></span></p>
|
||||
|
|
|
@ -15,25 +15,41 @@
|
|||
Uptime: <span id="uptime"></span>
|
||||
<input type="button" value="clear" class="btn" id="clear"/>
|
||||
<input type="button" value="autoscroll" class="btn" id="scroll"/>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<hr>
|
||||
<h3>handle next buttons with care - test / debug only!!</h3>
|
||||
<h3>Commands</h3>
|
||||
<br/>
|
||||
<label for="iv">Select Inverter:</label>
|
||||
<select name="iv" id="InvID">
|
||||
</select>
|
||||
<br/>
|
||||
<input type="button" value="power limit 100%" class="btn" id="pwrlim2"/>
|
||||
<input type="button" value="power limit 10%" class="btn" id="pwrlim"/>
|
||||
<input type="button" value="Restart" class="btn" id="restart"/>
|
||||
<input type="button" value="Turn Off" class="btn" id="turnoff"/>
|
||||
<input type="button" value="Turn On" class="btn" id="turnon"/>
|
||||
<div id="power">
|
||||
<input type="button" value="Restart" class="btn" id="restart"/>
|
||||
<input type="button" value="Turn Off" class="btn" id="power_off"/>
|
||||
<input type="button" value="Turn On" class="btn" id="power_on"/>
|
||||
</div>
|
||||
<br/>
|
||||
Ctrl result: <span id="result">n/a</span>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
<label>Send Power Limit: </label>
|
||||
<input type="number" class="text" name="pwrlimval" maxlength="4"/>
|
||||
<label> </label>
|
||||
<select name="pwrlimcntrl" id="pwrlimcntrl">
|
||||
<option value="" selected disabled hidden>select the unit and persistence</option>
|
||||
<option value="0">absolute in Watt non persistent</option>
|
||||
<option value="1">relativ in percent non persistent</option>
|
||||
<option value="256">absolute in Watt persistent</option>
|
||||
<option value="257">relativ in percent persistent</option>
|
||||
</select>
|
||||
<br/>
|
||||
<input type="button" value="Send Power Limit" class="btn" id="sendpwrlim"/>
|
||||
<br/>
|
||||
<p>Ctrl result: <span id="result">n/a</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
|
@ -120,48 +136,49 @@
|
|||
function get_selected_iv()
|
||||
{
|
||||
var e = document.getElementById("InvID");
|
||||
return e.value;
|
||||
return parseInt(e.value);
|
||||
}
|
||||
|
||||
document.getElementById("turnon").addEventListener("click", function() {
|
||||
const wrapper = document.getElementById('power');
|
||||
|
||||
wrapper.addEventListener('click', (event) => {
|
||||
var power = event.target.value;
|
||||
var obj = new Object();
|
||||
|
||||
switch (power)
|
||||
{
|
||||
case "Turn On":
|
||||
obj.cmd = 0;
|
||||
break;
|
||||
case "Turn Off":
|
||||
obj.cmd = 1;
|
||||
break;
|
||||
default:
|
||||
obj.cmd = 2;
|
||||
}
|
||||
|
||||
obj.inverter = get_selected_iv();
|
||||
obj.cmd = 0;
|
||||
obj.tx_request = 81;
|
||||
getAjax("/api/ctrl", ctrlCb, "POST", JSON.stringify(obj));
|
||||
});
|
||||
|
||||
document.getElementById("turnoff").addEventListener("click", function() {
|
||||
var obj = new Object();
|
||||
obj.inverter = get_selected_iv();
|
||||
obj.cmd = 1;
|
||||
obj.tx_request = 81;
|
||||
getAjax("/api/ctrl", ctrlCb, "POST", JSON.stringify(obj));
|
||||
});
|
||||
|
||||
document.getElementById("restart").addEventListener("click", function() {
|
||||
var obj = new Object();
|
||||
obj.inverter = get_selected_iv();
|
||||
obj.cmd = 2;
|
||||
obj.tx_request = 81;
|
||||
getAjax("/api/ctrl", ctrlCb, "POST", JSON.stringify(obj));
|
||||
});
|
||||
|
||||
document.getElementById("pwrlim").addEventListener("click", function() {
|
||||
document.getElementById("sendpwrlim").addEventListener("click", function() {
|
||||
var val = parseInt(document.getElementsByName('pwrlimval')[0].value);
|
||||
var ctrl = parseInt(document.getElementsByName('pwrlimcntrl')[0].value);
|
||||
|
||||
if((ctrl == 1 || ctrl == 257) && unit < 2) unit = 2;
|
||||
if(isNaN(val) || isNaN(ctrl))
|
||||
{
|
||||
var tmp = (isNaN(val)) ? "Value" : "Unit";
|
||||
document.getElementById("result").textContent = tmp + " is missing";
|
||||
return;
|
||||
}
|
||||
|
||||
var obj = new Object();
|
||||
obj.inverter = get_selected_iv();
|
||||
obj.cmd = 11;
|
||||
obj.tx_request = 81;
|
||||
obj.payload = [10, 1];
|
||||
getAjax("/api/ctrl", ctrlCb, "POST", JSON.stringify(obj));
|
||||
});
|
||||
|
||||
document.getElementById("pwrlim2").addEventListener("click", function() {
|
||||
var obj = new Object();
|
||||
obj.inverter = get_selected_iv();
|
||||
obj.cmd = 11;
|
||||
obj.tx_request = 81;
|
||||
obj.payload = [2000, 1];
|
||||
obj.payload = [val, ctrl];
|
||||
getAjax("/api/ctrl", ctrlCb, "POST", JSON.stringify(obj));
|
||||
});
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
|
||||
document.getElementsByName("btnAdd")[0].addEventListener("click", function() {
|
||||
if(highestId < (maxInv-1))
|
||||
ivHtml(JSON.parse('{"name":"","serial":"","channels":4,"ch_max_power":[0,0,0,0],"ch_name":["","","",""],"power_limit":1500,"power_limit_option":65535}'), highestId + 1);
|
||||
ivHtml(JSON.parse('{"name":"","serial":"","channels":4,"ch_max_power":[0,0,0,0],"ch_name":["","","",""]}'), highestId + 1);
|
||||
});
|
||||
|
||||
function apiCb(obj) {
|
||||
|
@ -189,20 +189,11 @@
|
|||
}
|
||||
});
|
||||
|
||||
for(var i of [["Name", "name", "Name*", 32], ["ActivePowerLimit", "power_limit", "Active Power Limit", 5]]) {
|
||||
for(var i of [["Name", "name", "Name*", 32]]) { // so richtig?
|
||||
iv.appendChild(lbl(id + i[0], i[2]));
|
||||
iv.appendChild(inp(id + i[0], obj[i[1]], i[3]));
|
||||
}
|
||||
|
||||
iv.appendChild(lbl(id + "PowerLimitControl", "Active Power Limit Control Type"));
|
||||
iv.appendChild(sel(id + "PowerLimitControl", [
|
||||
[65535, "no power limit"],
|
||||
[0, "absolute in Watt non persistent"],
|
||||
[1, "absolute in Watt persistent"],
|
||||
[256, "relativ in percent non persistent"],
|
||||
[257, "relativ in percent persistent"]
|
||||
], obj.power_limit_option));
|
||||
|
||||
for(var j of [["ModPwr", "ch_max_power", "Max Module Power (Wp)", 4], ["ModName", "ch_name", "Module Name", 16]]) {
|
||||
var cl = (re.test(obj["serial"])) ? null : ["hide"];
|
||||
iv.appendChild(lbl(null, j[2], cl, "lbl" + id + j[0]));
|
||||
|
|
|
@ -39,8 +39,7 @@
|
|||
var limit = iv["power_limit_read"] + "%";
|
||||
if(limit == "65535%")
|
||||
limit = "n/a";
|
||||
var ctrl = (iv["power_limit_active"]) ? "" : " (not controlled)";
|
||||
ch0.appendChild(span(iv["name"] + " Limit " + limit + ctrl + " | last Alarm: " + iv["last_alarm"], ["head"]));
|
||||
ch0.appendChild(span(iv["name"] + " Limit " + limit + " | last Alarm: " + iv["last_alarm"], ["head"]));
|
||||
|
||||
for(var j = 0; j < root.ch0_fld_names.length; j++) {
|
||||
var val = Math.round(iv["ch"][0][j] * 100) / 100;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue