Browse Source

0.8.850034-zero

pull/1474/head
Patrick Amrhein 7 months ago
parent
commit
9476d76660
  1. 7
      src/config/settings.h
  2. 2
      src/defines.h
  3. 72
      src/plugins/zeroExport/zeroExport.h
  4. 10
      src/web/html/setup.html
  5. 28
      src/web/lang.json

7
src/config/settings.h

@ -244,10 +244,11 @@ typedef struct {
uint16_t powerMax;
float power;
uint16_t limit;
bool limitAck;
float dcVoltage;
// uint16_t waitingTime;
// uint16_t limit;
// bool limitAck;
} zeroExportGroupInverter_t;
typedef struct {

2
src/defines.h

@ -13,7 +13,7 @@
//-------------------------------------
#define VERSION_MAJOR 0
#define VERSION_MINOR 8
#define VERSION_PATCH 850032
#define VERSION_PATCH 850034
//-------------------------------------
typedef struct {

72
src/plugins/zeroExport/zeroExport.h

@ -521,10 +521,78 @@ DBGPRINTLN(String(mCfg->groups[group].pmPower));
bool ret = false;
DBGPRINT(String("getInverterPowerWatts: "));
DBGPRINTLN(String(group));
// switch (mCfg->groups[group].pm_type) {
for (uint8_t inv = 0; inv < ZEROEXPORT_GROUP_MAX_INVERTERS; inv++) {
DBGPRINT(String("iv: "));
DBGPRINT(String(inv));
DBGPRINT(String(" "));
// Wenn Inverter deaktiviert -> Eintrag ignorieren
if (!mCfg->groups[group].inverters[inv].enabled) {
DBGPRINT(String("(ze disabled)."));
continue;
}
// Daten holen
Inverter<> *iv;
record_t<> *rec;
// TODO: getInverterById
for (uint8_t i = 0; i < mSys->getNumInverters(); i++) {
iv = mSys->getInverterByPos(i);
// Wenn kein Inverter -> ignorieren
if (iv == NULL) {
continue;
}
// Wenn falscher Inverter -> ignorieren
if (iv->id != (uint8_t)mCfg->groups[group].inverters[inv].id) {
continue;
}
DBGPRINT(String("("));
DBGPRINT(String(iv->id));
DBGPRINT(String("( gefunden)"));
// wenn Inverter deaktiviert -> Daten ignorieren
// if (!iv->enabled()) {
//DBGPRINT(String(" aber deaktiviert "));
// continue;
// }
// wenn Inverter nicht verfügbar -> Daten ignorieren
if (!iv->isAvailable()) {
DBGPRINT(String(" aber nicht erreichbar "));
continue;
}
// wenn Inverter nicht produziert -> Daten ignorieren
// if (!iv->isProducing()) {
//DBGPRINT(String(" aber produziert nix "));
// continue;
// }
// Daten abrufen
rec = iv->getRecordStruct(RealTimeRunData_Debug);
// TODO: gibts hier nen Timestamp? Wenn die Daten nicht aktueller sind als beim letzten Durchlauf dann brauch ich nix machen
mCfg->groups[group].inverters[inv].power = iv->getChannelFieldValue(CH0, FLD_PAC, rec);
DBGPRINT(String("(P="));
DBGPRINT(String(mCfg->groups[group].inverters[inv].power));
DBGPRINT(String("W "));
mCfg->groups[group].inverters[inv].limit = iv->actPowerLimit;
DBGPRINT(String("Li="));
DBGPRINT(String(mCfg->groups[group].inverters[inv].limit));
DBGPRINT(String("% "));
mCfg->groups[group].inverters[inv].limitAck = iv->powerLimitAck;
DBGPRINT(String("Ack= "));
DBGPRINT(String(mCfg->groups[group].inverters[inv].limitAck));
DBGPRINT(String(" "));
mCfg->groups[group].inverters[inv].dcVoltage = iv->getChannelFieldValue(CH1, FLD_UDC, rec);
DBGPRINT(String("U="));
DBGPRINT(String(mCfg->groups[group].inverters[inv].dcVoltage));
DBGPRINT(String("V) "));
// TODO: Eingang muss konfigurierbar sein
ret = true;
}
}
DBGPRINTLN(String(""));
return ret;
}

10
src/web/html/setup.html

@ -1194,8 +1194,8 @@
ml("th", {style: "width: 10%;"}, "{#ZE_GROUP_TAB_INVERTER_ENABLED}"),
ml("th", {}, "{#ZE_GROUP_TAB_INVERTER_NAME}"),
ml("th", {}, "{#ZE_GROUP_TAB_INVERTER_SUM}"),
ml("th", {style: "width: 10%;"}, "2%"),
ml("th", {style: "width: 15%;"}, "Max Power"),
ml("th", {style: "width: 10%;"}, "{#ZE_GROUP_TAB_INVERTER_TWOPERCENT}"),
ml("th", {style: "width: 15%;"}, "{#ZE_GROUP_TAB_INVERTER_POWERMAX}"),
]));
for(var inv = 0; inv < maxInv; inv++) {
@ -1251,6 +1251,7 @@
),
divRow("{#ZE_GROUP_TAB_POWERMETER_URL}", [
ml("input", {name: "pm_url", class: "text", type: "text", value: obj.pm_url, maxlength: "100"}, null),
// TODO: Hilfstexte -> übersetzen mit lang.json
ml("p", {}, "(3em) - http://IP/status"),
ml("p", {}, "(pro3em) - http://IP/rpc/Shelly.GetStatus"),
ml("p", {}, "(plus1pm) - http://IP/rpc/Shelly.GetStatus"),
@ -1261,6 +1262,7 @@
]),
divRow("{#ZE_GROUP_TAB_POWERMETER_JSONPATH}", [
ml("input", {name: "pm_jsonPath", class: "text", type: "text", value: obj.pm_jsonPath}, null),
// TODO: Hilfstexte -> übersetzen mit lang.json
ml("p", {}, "Only for HICHI needed!"),
]),
divRow("{#ZE_GROUP_TAB_POWERMETER_USER}",
@ -1299,6 +1301,7 @@
// Inhalt für pm_type aus config laden und in eine Funktion ausgliedern
var e = document.getElementById("pm_type");
selDelAllOpt(e);
// TODO: übersetzen?
e.appendChild(opt("0", "---"));
e.appendChild(opt("1", "Shelly"));
e.appendChild(opt("2", "Tasmota"));
@ -1335,6 +1338,7 @@
for (var inv = 0; inv < maxInv; inv++) {
var e = document.getElementById("invTarget"+inv);
selDelAllOpt(e);
// TODO: übersetzen?
e.appendChild(opt("-1", "---"));
e.appendChild(opt("0", "Sum"));
e.appendChild(opt("1", "L1"));
@ -1483,6 +1487,7 @@
return;
}
// TODO: übersetzen? / Überflüssig? Wenn das Modul später entsprechend deaktiviert wird über das Define PLUGIN_ZEROEXPORT
// enabled
document.getElementsByName("ze_enabled")[0].checked = obj["enabled"];
@ -1507,7 +1512,6 @@
ml("td", {style: "text-align: center;", }, String(obj.groups[group].id)),
ml("td", {style: "text-align: left;", }, String(obj.groups[group].name)),
ml("td", {style: "text-align: right;", id: "groupPowerTotal"+group}, "n/a"),
// ml("td", {style: "text-align: center;", onclick: function() {ZeroExportGroup_Modal(obj.groups[group]);}}, svg(iconGear, 25, 25, "icon icon-fg pointer")),
ml("td", {style: "text-align: center;", onclick: function() {
function zeroGetIvList(ivObj) {
ZeroExportGroup_Modal(obj.groups[group], ivObj)

28
src/web/lang.json

@ -868,9 +868,6 @@
"en": "Password:",
"de": "Passwort:"
},
{
"token": "ZE_GROUP_TAB_INVERTER",
"en": "Inverter",
@ -892,28 +889,15 @@
"de": "Gesamt"
},
{
"token": "ZE_GROUP_TAB_INVERTER_SUM",
"en": "Sum",
"de": "Gesamt"
},
{
"token": "ZE_GROUP_TAB_INVERTER_SUM_PHA",
"en": "Ph A",
"de": "L1"
},
{
"token": "ZE_GROUP_TAB_INVERTER_SUM_PHB",
"en": "Ph B",
"de": "L2"
"token": "ZE_GROUP_TAB_INVERTER_TWOPERCENT",
"en": "2%",
"de": "2%"
},
{
"token": "ZE_GROUP_TAB_INVERTER_SUM_PHC",
"en": "Ph C",
"de": "L3"
"token": "ZE_GROUP_TAB_INVERTER_POWERMAX",
"en": "Power (Max)",
"de": "Leistung (Max)"
},
{
"token": "ZE_GROUP_TAB_BATTERY",
"en": "Battery",

Loading…
Cancel
Save