mirror of
https://github.com/lumapu/ahoy.git
synced 2025-08-06 09:58:23 +02:00
0.8.39
* fix MqTT dis_night_comm in the morning #1309 * seperated offset for sunrise and sunset #1308
This commit is contained in:
parent
1b73e493a9
commit
2cda39c9f9
9 changed files with 79 additions and 55 deletions
|
@ -1,5 +1,5 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// 2023 Ahoy, https://ahoydtu.de
|
||||
// 2024 Ahoy, https://ahoydtu.de
|
||||
// Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
@ -600,7 +600,8 @@ class RestApi {
|
|||
void getSun(JsonObject obj) {
|
||||
obj[F("lat")] = mConfig->sun.lat ? String(mConfig->sun.lat, 5) : "";
|
||||
obj[F("lon")] = mConfig->sun.lat ? String(mConfig->sun.lon, 5) : "";
|
||||
obj[F("offs")] = mConfig->sun.offsetSec;
|
||||
obj[F("offsSr")] = mConfig->sun.offsetSecMorning;
|
||||
obj[F("offsSs")] = mConfig->sun.offsetSecEvening;
|
||||
}
|
||||
|
||||
void getPinout(JsonObject obj) {
|
||||
|
@ -685,10 +686,11 @@ class RestApi {
|
|||
|
||||
void getIndex(AsyncWebServerRequest *request, JsonObject obj) {
|
||||
getGeneric(request, obj.createNestedObject(F("generic")));
|
||||
obj[F("ts_now")] = mApp->getTimestamp();
|
||||
obj[F("ts_sunrise")] = mApp->getSunrise();
|
||||
obj[F("ts_sunset")] = mApp->getSunset();
|
||||
obj[F("ts_offset")] = mConfig->sun.offsetSec;
|
||||
obj[F("ts_now")] = mApp->getTimestamp();
|
||||
obj[F("ts_sunrise")] = mApp->getSunrise();
|
||||
obj[F("ts_sunset")] = mApp->getSunset();
|
||||
obj[F("ts_offsSr")] = mConfig->sun.offsetSecMorning;
|
||||
obj[F("ts_offsSs")] = mConfig->sun.offsetSecEvening;
|
||||
|
||||
JsonArray inv = obj.createNestedArray(F("inverter"));
|
||||
Inverter<> *iv;
|
||||
|
|
|
@ -45,12 +45,12 @@
|
|||
|
||||
function apiCb(obj) {
|
||||
var e = document.getElementById("apiResult");
|
||||
if(obj["success"]) {
|
||||
if(obj.success) {
|
||||
e.innerHTML = " command executed";
|
||||
getAjax("/api/index", parse);
|
||||
}
|
||||
else
|
||||
e.innerHTML = " Error: " + obj["error"];
|
||||
e.innerHTML = " Error: " + obj.error;
|
||||
}
|
||||
|
||||
function setTime() {
|
||||
|
@ -68,9 +68,9 @@
|
|||
}
|
||||
|
||||
function parseSys(obj) {
|
||||
ts = obj["ts_now"];
|
||||
var date = new Date(obj["ts_now"] * 1000);
|
||||
var up = obj["generic"]["ts_uptime"];
|
||||
ts = obj.ts_now;
|
||||
var date = new Date(obj.ts_now * 1000);
|
||||
var up = obj.generic["ts_uptime"];
|
||||
var days = parseInt(up / 86400) % 365;
|
||||
var hrs = parseInt(up / 3600) % 24;
|
||||
var min = parseInt(up / 60) % 60;
|
||||
|
@ -83,8 +83,8 @@
|
|||
+ ("0"+min).substr(-2) + ":"
|
||||
+ ("0"+sec).substr(-2);
|
||||
var dSpan = document.getElementById("date");
|
||||
if(0 != obj["ts_now"]) {
|
||||
if(obj["ts_now"] < 1680000000)
|
||||
if(0 != obj.ts_now) {
|
||||
if(obj.ts_now < 1680000000)
|
||||
setTime();
|
||||
else
|
||||
dSpan.innerHTML = toIsoDateStr(date);
|
||||
|
@ -98,18 +98,18 @@
|
|||
e.addEventListener("click", setTime);
|
||||
}
|
||||
|
||||
if(obj["disNightComm"]) {
|
||||
if(((obj["ts_sunrise"] - obj["ts_offset"]) < obj["ts_now"])
|
||||
&& ((obj["ts_sunset"] + obj["ts_offset"]) > obj["ts_now"])) {
|
||||
commInfo = "Polling inverter(s), will pause at sunset " + (new Date((obj["ts_sunset"] + obj["ts_offset"]) * 1000).toLocaleString('de-DE'));
|
||||
if(obj.disNightComm) {
|
||||
if(((obj.ts_sunrise - obj.ts_offsSr) < obj.ts_now)
|
||||
&& ((obj.ts_sunset + obj.ts_offsSs) > obj.ts_now)) {
|
||||
commInfo = "Polling inverter(s), will pause at sunset " + (new Date((obj.ts_sunset + obj.ts_offsSs) * 1000).toLocaleString('de-DE'));
|
||||
}
|
||||
else {
|
||||
commInfo = "Night time, inverter polling disabled, ";
|
||||
if(obj["ts_now"] > (obj["ts_sunrise"] - obj["ts_offset"])) {
|
||||
commInfo += "paused at " + (new Date((obj["ts_sunset"] + obj["ts_offset"]) * 1000).toLocaleString('de-DE'));
|
||||
if(obj.ts_now > (obj.ts_sunrise - obj.ts_offsSr)) {
|
||||
commInfo += "paused at " + (new Date((obj.ts_sunset + obj.ts_offsSs) * 1000).toLocaleString('de-DE'));
|
||||
}
|
||||
else {
|
||||
commInfo += "will start polling at " + (new Date((obj["ts_sunrise"] - obj["ts_offset"]) * 1000).toLocaleString('de-DE'));
|
||||
commInfo += "will start polling at " + (new Date((obj.ts_sunrise - obj.ts_offsSr) * 1000).toLocaleString('de-DE'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -190,11 +190,11 @@
|
|||
function parse(obj) {
|
||||
if(null != obj) {
|
||||
if(exeOnce)
|
||||
parseNav(obj["generic"]);
|
||||
parseGeneric(obj["generic"]);
|
||||
parseNav(obj.generic);
|
||||
parseGeneric(obj.generic);
|
||||
parseSys(obj);
|
||||
parseIv(obj["inverter"], obj.ts_now);
|
||||
parseWarn(obj["warnings"]);
|
||||
parseIv(obj.inverter, obj.ts_now);
|
||||
parseWarn(obj.warnings);
|
||||
if(exeOnce) {
|
||||
window.setInterval("tick()", 1000);
|
||||
exeOnce = false;
|
||||
|
@ -210,7 +210,7 @@
|
|||
}
|
||||
|
||||
function parseRelease(obj) {
|
||||
release = obj["name"].substring(6);
|
||||
release = obj.name.substring(6);
|
||||
getAjax("/api/index", parse);
|
||||
}
|
||||
|
||||
|
|
|
@ -227,8 +227,12 @@
|
|||
<div class="col-12 col-sm-9"><input type="number" name="sunLon" step="any"/></div>
|
||||
</div>
|
||||
<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-9"><select name="sunOffs"></select></div>
|
||||
<div class="col-12 col-sm-3 my-2">Offset (sunrise)</div>
|
||||
<div class="col-12 col-sm-9"><select name="sunOffsSr"></select></div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<div class="col-12 col-sm-3 my-2">Offset (sunset)</div>
|
||||
<div class="col-12 col-sm-9"><select name="sunOffsSs"></select></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
@ -889,9 +893,11 @@
|
|||
function parseSun(obj) {
|
||||
document.getElementsByName("sunLat")[0].value = obj["lat"];
|
||||
document.getElementsByName("sunLon")[0].value = obj["lon"];
|
||||
const sel = document.getElementsByName("sunOffs")[0];
|
||||
for(var i = 0; i <= 60; i++) {
|
||||
sel.appendChild(opt(i, i + " minutes", (i == (obj["offs"] / 60))));
|
||||
for(p of [["sunOffsSr", "offsSr"], ["sunOffsSs", "offsSs"]]) {
|
||||
const sel = document.getElementsByName(p[0])[0];
|
||||
for(var i = 0; i <= 60; i++) {
|
||||
sel.appendChild(opt(i, i + " minutes", (i == (obj[p[1]] / 60))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// 2022 Ahoy, https://www.mikrocontroller.net/topic/525778
|
||||
// 2024 Ahoy, https://www.mikrocontroller.net/topic/525778
|
||||
// Creative Commons - http://creativecommons.org/licenses/by-nc-sa/4.0/deed
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
@ -541,11 +541,13 @@ class Web {
|
|||
if (request->arg("sunLat") == "" || (request->arg("sunLon") == "")) {
|
||||
mConfig->sun.lat = 0.0;
|
||||
mConfig->sun.lon = 0.0;
|
||||
mConfig->sun.offsetSec = 0;
|
||||
mConfig->sun.offsetSecMorning = 0;
|
||||
mConfig->sun.offsetSecEvening = 0;
|
||||
} else {
|
||||
mConfig->sun.lat = request->arg("sunLat").toFloat();
|
||||
mConfig->sun.lon = request->arg("sunLon").toFloat();
|
||||
mConfig->sun.offsetSec = request->arg("sunOffs").toInt() * 60;
|
||||
mConfig->sun.offsetSecMorning = request->arg("sunOffsSr").toInt() * 60;
|
||||
mConfig->sun.offsetSecEvening = request->arg("sunOffsSs").toInt() * 60;
|
||||
}
|
||||
|
||||
// mqtt
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue