mirror of
https://github.com/lumapu/ahoy.git
synced 2025-06-03 19:21:38 +02:00
commit
ea36ed7b48
6 changed files with 62 additions and 33 deletions
|
@ -313,6 +313,7 @@ typedef struct {
|
|||
unsigned long lastRefresh;
|
||||
uint16_t wait;
|
||||
|
||||
bool battSwitchInit;
|
||||
bool battSwitch;
|
||||
|
||||
// PID controller
|
||||
|
@ -716,6 +717,7 @@ class settings {
|
|||
// mCfg.plugin.zeroExport.groups[group].pm_P2 = 0;
|
||||
// mCfg.plugin.zeroExport.groups[group].pm_P3 = 0;
|
||||
|
||||
mCfg.plugin.zeroExport.groups[group].battSwitchInit = false;
|
||||
mCfg.plugin.zeroExport.groups[group].battSwitch = false;
|
||||
mCfg.plugin.zeroExport.groups[group].power = 0;
|
||||
}
|
||||
|
|
|
@ -294,7 +294,7 @@ class powermeter {
|
|||
/** setHeader
|
||||
*
|
||||
*/
|
||||
void setHeader(HTTPClient *h, String auth = "", u8_t realm = NULL) {
|
||||
void setHeader(HTTPClient *h, String auth = "", u8_t realm = 0) {
|
||||
h->setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
|
||||
/// h->setUserAgent("Ahoy-Agent");
|
||||
/// // TODO: Ahoy-0.8.850024-zero
|
||||
|
|
|
@ -91,6 +91,31 @@ class ZeroExport {
|
|||
zeroExportGroup_t *CfgGroup = &mCfg->groups[group];
|
||||
zeroExportGroupInverter_t *CfgGroupInv = &CfgGroup->inverters[inv];
|
||||
Inverter<> *iv = mSys->getInverterByPos(Queue.id);
|
||||
if(NULL == iv) return;
|
||||
|
||||
if(!CfgGroup->battSwitch && !CfgGroup->battSwitchInit)
|
||||
{
|
||||
if(!iv->alarmCnt) return;
|
||||
bool stb_flag = false;
|
||||
|
||||
for(int16_t i = 0; i < iv->alarmCnt; i++) {
|
||||
if(iv->lastAlarm[i].code == 124) {
|
||||
stb_flag = true;
|
||||
_log.addProperty("alarm1", stb_flag);
|
||||
_log.addProperty("start", iv->lastAlarm[i].start );
|
||||
_log.addProperty("end", iv->lastAlarm[i].end );
|
||||
|
||||
if (iv->lastAlarm[i].end > iv->lastAlarm[i].start) {
|
||||
stb_flag = false;
|
||||
_log.addProperty("alarm2", stb_flag);
|
||||
}
|
||||
sendLog();
|
||||
clearLog();
|
||||
}
|
||||
}
|
||||
if(!stb_flag) CfgGroup->battSwitch = true;
|
||||
CfgGroup->battSwitchInit = true;
|
||||
}
|
||||
|
||||
_log.addProperty("g", group);
|
||||
_log.addProperty("i", inv);
|
||||
|
@ -115,7 +140,7 @@ class ZeroExport {
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
// Wird nur zum debuggen benötigt?
|
||||
uint16_t groupPower = 0;
|
||||
uint16_t groupLimit = 0;
|
||||
for (uint8_t inv = 0; inv < ZEROEXPORT_GROUP_MAX_INVERTERS; inv++) {
|
||||
|
@ -125,6 +150,8 @@ class ZeroExport {
|
|||
|
||||
_log.addProperty("gP", groupPower);
|
||||
_log.addProperty("gL", groupLimit);
|
||||
// Wird nur zum debuggen benötigt?
|
||||
|
||||
|
||||
// Batteryprotection
|
||||
_log.addProperty("bEn", (uint8_t)CfgGroup->battCfg);
|
||||
|
@ -145,10 +172,10 @@ class ZeroExport {
|
|||
CfgGroup->battSwitch = true;
|
||||
_log.addProperty("bA", "turn on");
|
||||
}
|
||||
if ((CfgGroup->battValue > CfgGroup->battLimitOff) && (CfgGroupInv->power > 0)) {
|
||||
CfgGroup->battSwitch = true;
|
||||
_log.addProperty("bA", "turn on");
|
||||
}
|
||||
//if ((CfgGroup->battValue > CfgGroup->battLimitOff) && (CfgGroupInv->power > 0)) {
|
||||
// CfgGroup->battSwitch = true;
|
||||
// _log.addProperty("bA", "turn on");
|
||||
//}
|
||||
} else {
|
||||
if (CfgGroup->battValue < CfgGroup->battLimitOff) {
|
||||
CfgGroup->battSwitch = false;
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// 2022 Ahoy, https://github.com/lumpapu/ahoy
|
||||
// 2024 Ahoy, https://github.com/lumpapu/ahoy
|
||||
// Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
|
||||
//
|
||||
// The DynamicJsonHandler class is a helper class designed to facilitate the handling of JSON documents on embedded systems such as the ESP32.
|
||||
// It uses the ArduinoJson library to dynamically manage JSON data and provides functionality for adding properties,
|
||||
// serializing the document, and managing storage.
|
||||
//
|
||||
// Written from tictrick & DanielR92
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef __DYNAMICJSONHANDLER_H__
|
||||
|
@ -9,6 +16,7 @@
|
|||
#include <Arduino.h>
|
||||
#include <ArduinoJson.h>
|
||||
#include <string>
|
||||
#include "config/settings.h" // needed for MAX_ALLOWED_BUF_SIZE
|
||||
|
||||
class DynamicJsonHandler {
|
||||
public:
|
||||
|
@ -24,8 +32,8 @@ public:
|
|||
|
||||
private:
|
||||
DynamicJsonDocument doc;
|
||||
static const size_t min_size = 256;
|
||||
static const size_t max_size = 5000; // Max RAM : 2 = da es für resizeDocument eng werden könnte?
|
||||
const size_t min_size = 256;
|
||||
const size_t max_size = MAX_ALLOWED_BUF_SIZE / 2; // Max RAM : 2 = da es für resizeDocument eng werden könnte?
|
||||
|
||||
void resizeDocument(size_t requiredSize);
|
||||
size_t min(size_t a, size_t b);
|
||||
|
|
|
@ -866,7 +866,7 @@ class RestApi {
|
|||
// Advanced
|
||||
objGroup[F("setPoint")] = (int16_t)mConfig->plugin.zeroExport.groups[group].setPoint;
|
||||
objGroup[F("minimum")] = (bool)mConfig->plugin.zeroExport.groups[group].minimum;
|
||||
objGroup[F("power")] = (int32_t)mConfig->plugin.zeroExport.groups[group].power;
|
||||
objGroup[F("power")] = (float)mConfig->plugin.zeroExport.groups[group].power;
|
||||
objGroup[F("powerTolerance")] = (uint8_t)mConfig->plugin.zeroExport.groups[group].powerTolerance;
|
||||
objGroup[F("powerMax")] = (uint16_t)mConfig->plugin.zeroExport.groups[group].powerMax;
|
||||
objGroup[F("Kp")] = (uint8_t)mConfig->plugin.zeroExport.groups[group].Kp;
|
||||
|
@ -1146,8 +1146,8 @@ class RestApi {
|
|||
// Plugin ZeroExport
|
||||
#if defined(PLUGIN_ZEROEXPORT)
|
||||
else if(F("ze_batt_onff") == jsonIn[F("cmd")]) {
|
||||
uint8_t group = jsonIn[F("id")];
|
||||
mConfig->plugin.zeroExport.groups[group].battSwitch = (bool)jsonIn[F("battSwitch")];
|
||||
uint8_t group = (uint8_t)jsonIn[F("id")];
|
||||
mConfig->plugin.zeroExport.groups[group].battSwitch = (bool)jsonIn[F("val")];
|
||||
}
|
||||
else if(F("ze_save_group") == jsonIn[F("cmd")]) {
|
||||
// General
|
||||
|
|
|
@ -1290,29 +1290,21 @@
|
|||
/*IF_PLUGIN_ZEROEXPORT*/
|
||||
|
||||
function apiCbBattOnOff(obj) {
|
||||
// var e = document.getElementById("battSwitch");
|
||||
// e.value = "88";
|
||||
// selDelAllOpt(e);
|
||||
// if(obj["success"])
|
||||
// e.appendChild(opt("-1", "{#NETWORK_SCANNING}"))
|
||||
// else
|
||||
// e.appendChild(opt("-1", "{#ERROR} " + obj["error"]));
|
||||
var e = document.getElementById("battSwitch");
|
||||
if(obj["success"]) {
|
||||
// dann über ajax denn gesetzten wert zurück aus dem system holen
|
||||
modalClose();
|
||||
getAjax("/api/setup", parse);
|
||||
}
|
||||
else
|
||||
e.innerHTML = "{#ERROR}" + obj["error"];
|
||||
|
||||
}
|
||||
|
||||
function battOnOff() {
|
||||
// TODO: zuerst wert setzen
|
||||
// dann über ajax denn gesetzten wert zurück aus dem system holen
|
||||
// damit man sieht das es erfolgreich gesetzt worden ist.
|
||||
const sw = document.getElementById("battSwitch");
|
||||
if (sw.value == 0) {
|
||||
sw.value = 1;
|
||||
sw.innerHTML = "{#BTN_ON}";
|
||||
} else {
|
||||
sw.value = 0;
|
||||
sw.innerHTML = "{#BTN_OFF}";
|
||||
}
|
||||
|
||||
var obj = {cmd: "ze_batt_onff", token: "*"}
|
||||
if(sw == null) return;
|
||||
var obj = {cmd: "ze_batt_onff", token: "*", id: parseInt(sw.dataset.group), val: (sw.dataset.status === "true") ? false : true}
|
||||
getAjax("/api/setup", apiCbBattOnOff, "POST", JSON.stringify(obj));
|
||||
}
|
||||
|
||||
|
@ -1442,7 +1434,7 @@
|
|||
divRow("{#ZE_GROUP_TAB_BATTERY_TOPIC}", ml("input", {name: "battTopic", class: "text", type: "text", value: obj.battTopic}, null),),
|
||||
divRow("{#ZE_GROUP_TAB_BATTERY_LIMITON}", ml("input", {name: "battLimitOn", class: "text", type: "number", min: "0", max: "100", step: "0.1", value: obj.battLimitOn}, null),),
|
||||
divRow("{#ZE_GROUP_TAB_BATTERY_LIMITOFF}", ml("input", {name: "battLimitOff", class: "text", type: "number", min: "0", max: "100", step: "0.1", value: obj.battLimitOff}, null),),
|
||||
divRow("{#ZE_GROUP_TAB_BATTERY_ONOFF}", ml("input", {name: "battSwitch", id: "battSwitch", class: "btn", type: "button", value: obj.battSwitch}, null)),
|
||||
divRow("{#ZE_GROUP_TAB_BATTERY_ONOFF}", ml("input", {name: "battSwitch", id: "battSwitch", "data-group": String(obj.id), "data-status": String(obj.battSwitch), class: "btn", type: "button", value: (obj.battSwitch ? "{#BTN_ON}" : "{#BTN_OFF}")}, null)),
|
||||
// TODO: Uebersetzen mit lang.json und auf die entsprechende Dokuseite verlinken
|
||||
divRow("Hinweis: ", ml("a", {href: "https://docs.ahoydtu.de/de/latest/zeroExport.html"}, "Bitte beachten Sie die Ausfüllhinweise in der Dokumentation."),),
|
||||
// TODO: Hinweis Github/Discord - Entfernen wenn erledigt
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue