* started to implement POST api

* improved web serial console
* added multi inverter total values (published through MQTT)
* fixed: after boot there were transferred wrong data because of incorrect assignment (mqtt, visualization)
  -> not tested with sun
This commit is contained in:
lumapu 2022-09-10 02:19:25 +02:00
parent 9e1b6be70e
commit 6bd7e01f1a
13 changed files with 404 additions and 379 deletions

View file

@ -136,27 +136,26 @@ class Inverter {
}
template <typename T>
void enqueCommand(uint8_t cmd)
{
void enqueCommand(uint8_t cmd) {
_commandQueue.push(std::make_shared<T>(cmd));
DPRINTLN(DBG_INFO, "enqueuedCmd: " + String(cmd));
}
void setQueuedCmdFinished(){
if (!_commandQueue.empty()){
void setQueuedCmdFinished() {
if (!_commandQueue.empty()) {
// Will destroy CommandAbstract Class Object (?)
_commandQueue.pop();
}
}
void clearCmdQueue(){
while (!_commandQueue.empty()){
void clearCmdQueue() {
while (!_commandQueue.empty()) {
// Will destroy CommandAbstract Class Object (?)
_commandQueue.pop();
}
}
uint8_t getQueuedCmd()
{
uint8_t getQueuedCmd() {
if (_commandQueue.empty()){
// Fill with default commands
enqueCommand<InfoCommand>(RealTimeRunData_Debug);
@ -296,36 +295,30 @@ class Inverter {
return false;
}
uint32_t getLastTs(void)
{
uint32_t getLastTs(void) {
DPRINTLN(DBG_VERBOSE, F("hmInverter.h:getLastTs"));
return ts;
}
void getAssignment()
{
void getAssignment() {
DPRINTLN(DBG_DEBUG, F("hmInverter.h:getAssignment"));
// Default assignment;
if (INV_TYPE_1CH == type)
{
if (INV_TYPE_1CH == type) {
listLen = (uint8_t)(HM1CH_LIST_LEN);
assign = (byteAssign_t *)hm1chAssignment;
channels = 1;
}
else if (INV_TYPE_2CH == type)
{
else if (INV_TYPE_2CH == type) {
listLen = (uint8_t)(HM2CH_LIST_LEN);
assign = (byteAssign_t *)hm2chAssignment;
channels = 2;
}
else if (INV_TYPE_4CH == type)
{
else if (INV_TYPE_4CH == type) {
listLen = (uint8_t)(HM4CH_LIST_LEN);
assign = (byteAssign_t *)hm4chAssignment;
channels = 4;
}
else
{
else {
listLen = 0;
channels = 0;
assign = NULL;
@ -352,217 +345,89 @@ class Inverter {
break;
}
}
String getAlarmStr(u_int16_t alarmCode)
{
switch (alarmCode)
{
case 1:
return String(F("Inverter start"));
break;
case 2:
return String(F("DTU command failed"));
break;
case 121:
return String(F("Over temperature protection"));
break;
case 125:
return String(F("Grid configuration parameter error"));
break;
case 126:
return String(F("Software error code 126"));
break;
case 127:
return String(F("Firmware error"));
break;
case 128:
return String(F("Software error code 128"));
break;
case 129:
return String(F("Software error code 129"));
break;
case 130:
return String(F("Offline"));
break;
case 141:
return String(F("Grid overvoltage"));
break;
case 142:
return String(F("Average grid overvoltage"));
break;
case 143:
return String(F("Grid undervoltage"));
break;
case 144:
return String(F("Grid overfrequency"));
break;
case 145:
return String(F("Grid underfrequency"));
break;
case 146:
return String(F("Rapid grid frequency change"));
break;
case 147:
return String(F("Power grid outage"));
break;
case 148:
return String(F("Grid disconnection"));
break;
case 149:
return String(F("Island detected"));
break;
case 205:
return String(F("Input port 1 & 2 overvoltage"));
break;
case 206:
return String(F("Input port 3 & 4 overvoltage"));
break;
case 207:
return String(F("Input port 1 & 2 undervoltage"));
break;
case 208:
return String(F("Input port 3 & 4 undervoltage"));
break;
case 209:
return String(F("Port 1 no input"));
break;
case 210:
return String(F("Port 2 no input"));
break;
case 211:
return String(F("Port 3 no input"));
break;
case 212:
return String(F("Port 4 no input"));
break;
case 213:
return String(F("PV-1 & PV-2 abnormal wiring"));
break;
case 214:
return String(F("PV-3 & PV-4 abnormal wiring"));
break;
case 215:
return String(F("PV-1 Input overvoltage"));
break;
case 216:
return String(F("PV-1 Input undervoltage"));
break;
case 217:
return String(F("PV-2 Input overvoltage"));
break;
case 218:
return String(F("PV-2 Input undervoltage"));
break;
case 219:
return String(F("PV-3 Input overvoltage"));
break;
case 220:
return String(F("PV-3 Input undervoltage"));
break;
case 221:
return String(F("PV-4 Input overvoltage"));
break;
case 222:
return String(F("PV-4 Input undervoltage"));
break;
case 301:
return String(F("Hardware error code 301"));
break;
case 302:
return String(F("Hardware error code 302"));
break;
case 303:
return String(F("Hardware error code 303"));
break;
case 304:
return String(F("Hardware error code 304"));
break;
case 305:
return String(F("Hardware error code 305"));
break;
case 306:
return String(F("Hardware error code 306"));
break;
case 307:
return String(F("Hardware error code 307"));
break;
case 308:
return String(F("Hardware error code 308"));
break;
case 309:
return String(F("Hardware error code 309"));
break;
case 310:
return String(F("Hardware error code 310"));
break;
case 311:
return String(F("Hardware error code 311"));
break;
case 312:
return String(F("Hardware error code 312"));
break;
case 313:
return String(F("Hardware error code 313"));
break;
case 314:
return String(F("Hardware error code 314"));
break;
case 5041:
return String(F("Error code-04 Port 1"));
break;
case 5042:
return String(F("Error code-04 Port 2"));
break;
case 5043:
return String(F("Error code-04 Port 3"));
break;
case 5044:
return String(F("Error code-04 Port 4"));
break;
case 5051:
return String(F("PV Input 1 Overvoltage/Undervoltage"));
break;
case 5052:
return String(F("PV Input 2 Overvoltage/Undervoltage"));
break;
case 5053:
return String(F("PV Input 3 Overvoltage/Undervoltage"));
break;
case 5054:
return String(F("PV Input 4 Overvoltage/Undervoltage"));
break;
case 5060:
return String(F("Abnormal bias"));
break;
case 5070:
return String(F("Over temperature protection"));
break;
case 5080:
return String(F("Grid Overvoltage/Undervoltage"));
break;
case 5090:
return String(F("Grid Overfrequency/Underfrequency"));
break;
case 5100:
return String(F("Island detected"));
break;
case 5120:
return String(F("EEPROM reading and writing error"));
break;
case 5150:
return String(F("10 min value grid overvoltage"));
break;
case 5200:
return String(F("Firmware error"));
break;
case 8310:
return String(F("Shut down"));
break;
case 9000:
return String(F("Microinverter is suspected of being stolen"));
break;
default:
return String(F("Unknown"));
break;
bool isLiveDataAssignment(void) {
if(assign == (byteAssign_t *)hm1chAssignment)
return true;
else if(assign == (byteAssign_t *)hm2chAssignment)
return true;
else if(assign == (byteAssign_t *)hm4chAssignment)
return true;
else
return false;
}
String getAlarmStr(u_int16_t alarmCode) {
switch (alarmCode) { // breaks are intentionally missing!
case 1: return String(F("Inverter start"));
case 2: return String(F("DTU command failed"));
case 121: return String(F("Over temperature protection"));
case 125: return String(F("Grid configuration parameter error"));
case 126: return String(F("Software error code 126"));
case 127: return String(F("Firmware error"));
case 128: return String(F("Software error code 128"));
case 129: return String(F("Software error code 129"));
case 130: return String(F("Offline"));
case 141: return String(F("Grid overvoltage"));
case 142: return String(F("Average grid overvoltage"));
case 143: return String(F("Grid undervoltage"));
case 144: return String(F("Grid overfrequency"));
case 145: return String(F("Grid underfrequency"));
case 146: return String(F("Rapid grid frequency change"));
case 147: return String(F("Power grid outage"));
case 148: return String(F("Grid disconnection"));
case 149: return String(F("Island detected"));
case 205: return String(F("Input port 1 & 2 overvoltage"));
case 206: return String(F("Input port 3 & 4 overvoltage"));
case 207: return String(F("Input port 1 & 2 undervoltage"));
case 208: return String(F("Input port 3 & 4 undervoltage"));
case 209: return String(F("Port 1 no input"));
case 210: return String(F("Port 2 no input"));
case 211: return String(F("Port 3 no input"));
case 212: return String(F("Port 4 no input"));
case 213: return String(F("PV-1 & PV-2 abnormal wiring"));
case 214: return String(F("PV-3 & PV-4 abnormal wiring"));
case 215: return String(F("PV-1 Input overvoltage"));
case 216: return String(F("PV-1 Input undervoltage"));
case 217: return String(F("PV-2 Input overvoltage"));
case 218: return String(F("PV-2 Input undervoltage"));
case 219: return String(F("PV-3 Input overvoltage"));
case 220: return String(F("PV-3 Input undervoltage"));
case 221: return String(F("PV-4 Input overvoltage"));
case 222: return String(F("PV-4 Input undervoltage"));
case 301: return String(F("Hardware error code 301"));
case 302: return String(F("Hardware error code 302"));
case 303: return String(F("Hardware error code 303"));
case 304: return String(F("Hardware error code 304"));
case 305: return String(F("Hardware error code 305"));
case 306: return String(F("Hardware error code 306"));
case 307: return String(F("Hardware error code 307"));
case 308: return String(F("Hardware error code 308"));
case 309: return String(F("Hardware error code 309"));
case 310: return String(F("Hardware error code 310"));
case 311: return String(F("Hardware error code 311"));
case 312: return String(F("Hardware error code 312"));
case 313: return String(F("Hardware error code 313"));
case 314: return String(F("Hardware error code 314"));
case 5041: return String(F("Error code-04 Port 1"));
case 5042: return String(F("Error code-04 Port 2"));
case 5043: return String(F("Error code-04 Port 3"));
case 5044: return String(F("Error code-04 Port 4"));
case 5051: return String(F("PV Input 1 Overvoltage/Undervoltage"));
case 5052: return String(F("PV Input 2 Overvoltage/Undervoltage"));
case 5053: return String(F("PV Input 3 Overvoltage/Undervoltage"));
case 5054: return String(F("PV Input 4 Overvoltage/Undervoltage"));
case 5060: return String(F("Abnormal bias"));
case 5070: return String(F("Over temperature protection"));
case 5080: return String(F("Grid Overvoltage/Undervoltage"));
case 5090: return String(F("Grid Overfrequency/Underfrequency"));
case 5100: return String(F("Island detected"));
case 5120: return String(F("EEPROM reading and writing error"));
case 5150: return String(F("10 min value grid overvoltage"));
case 5200: return String(F("Firmware error"));
case 8310: return String(F("Shut down"));
case 9000: return String(F("Microinverter is suspected of being stolen"));
default: return String(F("Unknown"));
}
}