mirror of
https://github.com/lumapu/ahoy.git
synced 2025-05-13 00:46:38 +02:00
* 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:
parent
9e1b6be70e
commit
6bd7e01f1a
13 changed files with 404 additions and 379 deletions
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue