Browse Source

0.8.1230003

pull/1660/head
Patrick Amrhein 8 months ago
parent
commit
14a30d3be0
  1. 2
      src/defines.h
  2. 62
      src/plugins/zeroExport/zeroExport.h

2
src/defines.h

@ -13,7 +13,7 @@
//------------------------------------- //-------------------------------------
#define VERSION_MAJOR 0 #define VERSION_MAJOR 0
#define VERSION_MINOR 8 #define VERSION_MINOR 8
#define VERSION_PATCH 1230002 #define VERSION_PATCH 1230003
//------------------------------------- //-------------------------------------
typedef struct { typedef struct {
uint8_t ch; uint8_t ch;

62
src/plugins/zeroExport/zeroExport.h

@ -14,7 +14,6 @@
#include "AsyncJson.h" #include "AsyncJson.h"
#include "powermeter.h" #include "powermeter.h"
#include "utils/DynamicJsonHandler.h" #include "utils/DynamicJsonHandler.h"
template <class HMSYSTEM> template <class HMSYSTEM>
@ -24,7 +23,7 @@ class ZeroExport {
/** ZeroExport /** ZeroExport
* constructor * constructor
*/ */
ZeroExport() { } ZeroExport() {}
/** ~ZeroExport /** ~ZeroExport
* destructor * destructor
@ -52,7 +51,6 @@ class ZeroExport {
mIsInitialized = mPowermeter.setup(mApp, mCfg, mqtt, &_log); mIsInitialized = mPowermeter.setup(mApp, mCfg, mqtt, &_log);
} }
/*void printJson() { /*void printJson() {
serializeJson(doc, Serial); serializeJson(doc, Serial);
Serial.println(); Serial.println();
@ -91,19 +89,18 @@ class ZeroExport {
zeroExportGroup_t *CfgGroup = &mCfg->groups[group]; zeroExportGroup_t *CfgGroup = &mCfg->groups[group];
zeroExportGroupInverter_t *CfgGroupInv = &CfgGroup->inverters[inv]; zeroExportGroupInverter_t *CfgGroupInv = &CfgGroup->inverters[inv];
Inverter<> *iv = mSys->getInverterByPos(Queue.id); Inverter<> *iv = mSys->getInverterByPos(Queue.id);
if(NULL == iv) return; if (NULL == iv) return;
if(!CfgGroup->battSwitch && !CfgGroup->battSwitchInit) if (!CfgGroup->battSwitch && !CfgGroup->battSwitchInit) {
{ if (!iv->alarmCnt) return;
if(!iv->alarmCnt) return;
bool stb_flag = false; bool stb_flag = false;
for(int16_t i = 0; i < iv->alarmCnt; i++) { for (int16_t i = 0; i < iv->alarmCnt; i++) {
if(iv->lastAlarm[i].code == 124) { if (iv->lastAlarm[i].code == 124) {
stb_flag = true; stb_flag = true;
_log.addProperty("alarm1", stb_flag); _log.addProperty("alarm1", stb_flag);
_log.addProperty("start", iv->lastAlarm[i].start ); _log.addProperty("start", iv->lastAlarm[i].start);
_log.addProperty("end", iv->lastAlarm[i].end ); _log.addProperty("end", iv->lastAlarm[i].end);
if (iv->lastAlarm[i].end > iv->lastAlarm[i].start) { if (iv->lastAlarm[i].end > iv->lastAlarm[i].start) {
stb_flag = false; stb_flag = false;
@ -113,7 +110,7 @@ class ZeroExport {
clearLog(); clearLog();
} }
} }
if(!stb_flag) CfgGroup->battSwitch = true; if (!stb_flag) CfgGroup->battSwitch = true;
CfgGroup->battSwitchInit = true; CfgGroup->battSwitchInit = true;
} }
@ -144,15 +141,14 @@ class ZeroExport {
uint16_t groupPower = 0; uint16_t groupPower = 0;
uint16_t groupLimit = 0; uint16_t groupLimit = 0;
for (uint8_t inv = 0; inv < ZEROEXPORT_GROUP_MAX_INVERTERS; inv++) { for (uint8_t inv = 0; inv < ZEROEXPORT_GROUP_MAX_INVERTERS; inv++) {
groupPower += mCfg->groups[group].inverters[inv].power; // Calc Data->groupPower groupPower += mCfg->groups[group].inverters[inv].power; // Calc Data->groupPower
groupLimit += mCfg->groups[group].inverters[inv].limit; // Calc Data->groupLimit groupLimit += mCfg->groups[group].inverters[inv].limit; // Calc Data->groupLimit
} }
_log.addProperty("gP", groupPower); _log.addProperty("gP", groupPower);
_log.addProperty("gL", groupLimit); _log.addProperty("gL", groupLimit);
// Wird nur zum debuggen benötigt? // Wird nur zum debuggen benötigt?
// Batteryprotection // Batteryprotection
_log.addProperty("bEn", (uint8_t)CfgGroup->battCfg); _log.addProperty("bEn", (uint8_t)CfgGroup->battCfg);
@ -172,10 +168,10 @@ class ZeroExport {
CfgGroup->battSwitch = true; CfgGroup->battSwitch = true;
_log.addProperty("bA", "turn on"); _log.addProperty("bA", "turn on");
} }
//if ((CfgGroup->battValue > CfgGroup->battLimitOff) && (CfgGroupInv->power > 0)) { // if ((CfgGroup->battValue > CfgGroup->battLimitOff) && (CfgGroupInv->power > 0)) {
// CfgGroup->battSwitch = true; // CfgGroup->battSwitch = true;
// _log.addProperty("bA", "turn on"); // _log.addProperty("bA", "turn on");
//} // }
} else { } else {
if (CfgGroup->battValue < CfgGroup->battLimitOff) { if (CfgGroup->battValue < CfgGroup->battLimitOff) {
CfgGroup->battSwitch = false; CfgGroup->battSwitch = false;
@ -649,7 +645,7 @@ class ZeroExport {
mPowermeter.onMqttConnect(); mPowermeter.onMqttConnect();
// "topic":"userdefined battSoCTopic" // "topic":"userdefined battSoCTopic" oder "userdefinedUTopic"
for (uint8_t group = 0; group < ZEROEXPORT_MAX_GROUPS; group++) { for (uint8_t group = 0; group < ZEROEXPORT_MAX_GROUPS; group++) {
if (!mCfg->groups[group].enabled) continue; if (!mCfg->groups[group].enabled) continue;
@ -673,7 +669,7 @@ class ZeroExport {
String topic = String(obj["topic"]); String topic = String(obj["topic"]);
// "topic":"userdefined battSoCTopic" // "topic":"userdefined battSoCTopic" oder "userdefinedUTopic"
for (uint8_t group = 0; group < ZEROEXPORT_MAX_GROUPS; group++) { for (uint8_t group = 0; group < ZEROEXPORT_MAX_GROUPS; group++) {
if (!mCfg->groups[group].enabled) continue; if (!mCfg->groups[group].enabled) continue;
@ -684,7 +680,6 @@ class ZeroExport {
if (strcmp(mCfg->groups[group].battTopic, String(topic).c_str())) { if (strcmp(mCfg->groups[group].battTopic, String(topic).c_str())) {
mCfg->groups[group].battValue = (bool)obj["val"]; mCfg->groups[group].battValue = (bool)obj["val"];
_log.addProperty("k", mCfg->groups[group].battTopic); _log.addProperty("k", mCfg->groups[group].battTopic);
_log.addProperty("v", mCfg->groups[group].battValue); _log.addProperty("v", mCfg->groups[group].battValue);
} }
@ -693,7 +688,6 @@ class ZeroExport {
// "topic":"ctrl/zero" // "topic":"ctrl/zero"
if (topic.indexOf("ctrl/zero") == -1) return; if (topic.indexOf("ctrl/zero") == -1) return;
_log.addProperty("d", obj); _log.addProperty("d", obj);
if (obj["path"] == "ctrl" && obj["cmd"] == "zero") { if (obj["path"] == "ctrl" && obj["cmd"] == "zero") {
@ -721,8 +715,7 @@ class ZeroExport {
mCfg->sleep = (bool)obj["val"]; mCfg->sleep = (bool)obj["val"];
} }
else if ((topicGroup >= 0) && (topicGroup < ZEROEXPORT_MAX_GROUPS)) else if ((topicGroup >= 0) && (topicGroup < ZEROEXPORT_MAX_GROUPS)) {
{
String stopicGroup = String(topicGroup); String stopicGroup = String(topicGroup);
// "topic":"ctrl/zero/groups/+/enabled" // "topic":"ctrl/zero/groups/+/enabled"
@ -765,8 +758,7 @@ class ZeroExport {
mCfg->groups[topicGroup].battSwitch = (bool)obj["val"]; mCfg->groups[topicGroup].battSwitch = (bool)obj["val"];
} }
else if (topic.indexOf("/advanced/") != -1) else if (topic.indexOf("/advanced/") != -1) {
{
// "topic":"ctrl/zero/groups/+/advanced/setPoint" // "topic":"ctrl/zero/groups/+/advanced/setPoint"
if (topic.endsWith("/setPoint")) { if (topic.endsWith("/setPoint")) {
_log.addProperty("v", (int16_t)obj["val"]); _log.addProperty("v", (int16_t)obj["val"]);
@ -780,15 +772,12 @@ class ZeroExport {
} }
// "topic":"ctrl/zero/groups/+/advanced/powerMax" // "topic":"ctrl/zero/groups/+/advanced/powerMax"
else if (topic.endsWith("/powerMax")) { else if (topic.endsWith("/powerMax")) {
_log.addProperty("v", (uint16_t)obj["val"]); _log.addProperty("v", (uint16_t)obj["val"]);
mCfg->groups[topicGroup].powerMax = (uint16_t)obj["val"]; mCfg->groups[topicGroup].powerMax = (uint16_t)obj["val"];
} }
} } else if (topic.indexOf("/inverter/") != -1) {
else if (topic.indexOf("/inverter/") != -1) if ((topicInverter >= 0) && (topicInverter < ZEROEXPORT_GROUP_MAX_INVERTERS)) {
{
if ((topicInverter >= 0) && (topicInverter < ZEROEXPORT_GROUP_MAX_INVERTERS))
{
// "topic":"ctrl/zero/groups/+/inverter/+/enabled" // "topic":"ctrl/zero/groups/+/inverter/+/enabled"
if (topic.endsWith("/enabled")) { if (topic.endsWith("/enabled")) {
_log.addProperty("v", (bool)obj["val"]); _log.addProperty("v", (bool)obj["val"]);
@ -804,14 +793,11 @@ class ZeroExport {
else if (topic.endsWith("/powerMax")) { else if (topic.endsWith("/powerMax")) {
_log.addProperty("v", (uint16_t)obj["val"]); _log.addProperty("v", (uint16_t)obj["val"]);
mCfg->groups[topicGroup].inverters[topicInverter].powerMax = (uint16_t)obj["val"]; mCfg->groups[topicGroup].inverters[topicInverter].powerMax = (uint16_t)obj["val"];
} } else {
else
{
_log.addProperty("k", "error"); _log.addProperty("k", "error");
} }
} }
} } else {
else {
_log.addProperty("k", "error"); _log.addProperty("k", "error");
} }
} }

Loading…
Cancel
Save