diff --git a/src/CHANGES.md b/src/CHANGES.md index 380458fc..9ea5ff5d 100644 --- a/src/CHANGES.md +++ b/src/CHANGES.md @@ -1,5 +1,10 @@ # Development Changes +## 0.8.9 - 2023-11-19 +* merged PR #1234 +* added new alarm codes +* removed serial interval, was not in use anymore + ## 0.8.8 - 2023-11-16 * fix ESP8266 save inverter #1232 diff --git a/src/app.cpp b/src/app.cpp index edd58306..5226f5ac 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -142,7 +142,7 @@ void app::regularTickers(void) { if (mConfig->plugin.display.type != 0) everySec(std::bind(&DisplayType::tickerSecond, &mDisplay), "disp"); #endif - every(std::bind(&PubSerialType::tick, &mPubSerial), mConfig->serial.interval, "uart"); + every(std::bind(&PubSerialType::tick, &mPubSerial), 5, "uart"); #if !defined(ETHERNET) //everySec([this]() { mImprov.tickSerial(); }, "impro"); #endif diff --git a/src/config/config.h b/src/config/config.h index e9d3adec..5b17ca9d 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -142,9 +142,6 @@ #define MAX_NUM_INVERTERS 4 #endif -// default serial interval -#define SERIAL_INTERVAL 5 - // default send interval #define SEND_INTERVAL 15 diff --git a/src/config/settings.h b/src/config/settings.h index 76a42e23..50632d0a 100644 --- a/src/config/settings.h +++ b/src/config/settings.h @@ -114,7 +114,6 @@ typedef struct { } cfgSun_t; typedef struct { - uint16_t interval; bool showIv; bool debug; } cfgSerial_t; @@ -423,7 +422,6 @@ class settings { mCfg.sun.lon = 0.0; mCfg.sun.offsetSec = 0; - mCfg.serial.interval = SERIAL_INTERVAL; mCfg.serial.showIv = false; mCfg.serial.debug = false; @@ -617,11 +615,9 @@ class settings { void jsonSerial(JsonObject obj, bool set = false) { if(set) { - obj[F("intvl")] = mCfg.serial.interval; obj[F("show")] = mCfg.serial.showIv; obj[F("debug")] = mCfg.serial.debug; } else { - getVal(obj, F("intvl"), &mCfg.serial.interval); getVal(obj, F("show"), &mCfg.serial.showIv); getVal(obj, F("debug"), &mCfg.serial.debug); } diff --git a/src/hm/hmInverter.h b/src/hm/hmInverter.h index 0b87fbb1..eddf0664 100644 --- a/src/hm/hmInverter.h +++ b/src/hm/hmInverter.h @@ -594,14 +594,40 @@ class Inverter { static String getAlarmStr(uint16_t alarmCode) { switch (alarmCode) { // breaks are intentionally missing! case 1: return String(F("Inverter start")); - case 2: return String(F("DTU command failed")); - case 73: return String(F("Temperature >80°C")); // https://github.com/tbnobody/OpenDTU/discussions/590#discussioncomment-6049750 + case 2: return String(F("Time calibration")); + case 3: return String(F("EEPROM reading and writing error during operation")); + case 4: return String(F("Offline")); + case 11: return String(F("Grid voltage surge")); + case 12: return String(F("Grid voltage sharp drop")); + case 13: return String(F("Grid frequency mutation")); + case 14: return String(F("Grid phase mutation")); + case 15: return String(F("Grid transient fluctuation")); + case 36: return String(F("INV overvoltage or overcurrent")); + case 46: return String(F("FB overvoltage")); + case 47: return String(F("FB overcurrent")); + case 48: return String(F("FB clamp overvoltage")); + case 49: return String(F("FB clamp overvoltage")); + case 61: return String(F("Calibration parameter error")); + case 62: return String(F("System configuration parameter error")); + case 63: return String(F("Abnormal power generation data")); + + case 71: return String(F("Grid overvoltage load reduction (VW) function enable")); + case 72: return String(F("Power grid over-frequency load reduction (FW) function enable")); + case 73: return String(F("Over-temperature load reduction (TW) function enable")); + + case 95: return String(F("PV-1: Module in suspected shadow")); + case 96: return String(F("PV-2: Module in suspected shadow")); + case 97: return String(F("PV-3: Module in suspected shadow")); + case 98: return String(F("PV-4: Module in suspected shadow")); + case 121: return String(F("Over temperature protection")); + case 122: return String(F("Microinverter is suspected of being stolen")); + case 123: return String(F("Locked by remote control")); case 124: return String(F("Shut down by remote control")); case 125: return String(F("Grid configuration parameter error")); - case 126: return String(F("Software error code 126")); + case 126: return String(F("EEPROM reading and writing error")); case 127: return String(F("Firmware error")); - case 128: return String(F("Software error code 128")); + case 128: return String(F("Hardware configuration error")); case 129: return String(F("Abnormal bias")); case 130: return String(F("Offline")); case 141: return String(F("Grid: Grid overvoltage")); @@ -613,7 +639,12 @@ class Inverter { case 147: return String(F("Grid: Power grid outage")); case 148: return String(F("Grid: Grid disconnection")); case 149: return String(F("Grid: Island detected")); + + case 150: return String(F("DCI exceeded")); + case 171: return String(F("Grid: Abnormal phase difference between phase to phase")); + case 181: return String(F("Abnormal insulation impedance")); + case 182: return String(F("Abnormal grounding")); case 205: return String(F("MPPT-A: Input overvoltage")); case 206: return String(F("MPPT-B: Input overvoltage")); case 207: return String(F("MPPT-A: Input undervoltage")); @@ -632,24 +663,33 @@ class Inverter { 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 301: return String(F("FB short circuit failure")); + case 302: return String(F("FB short circuit failure")); + case 303: return String(F("FB overcurrent protection failure")); + case 304: return String(F("FB overcurrent protection failure")); + case 305: return String(F("FB clamp circuit failure")); + case 306: return String(F("FB clamp circuit failure")); + case 307: return String(F("INV power device failure")); + case 308: return String(F("INV overcurrent or overvoltage protection failure")); 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 5011: return String(F("PV-1: MOSFET overcurrent (II)")); + case 5012: return String(F("PV-2: MOSFET overcurrent (II)")); + case 5013: return String(F("PV-3: MOSFET overcurrent (II)")); + case 5014: return String(F("PV-4: MOSFET overcurrent (II)")); + case 5020: return String(F("H-bridge MOSFET overcurrent or H-bridge overvoltage")); + + case 5041: return String(F("PV-1: current overcurrent (II)")); + case 5042: return String(F("PV-2: current overcurrent (II)")); + case 5043: return String(F("PV-3: current overcurrent (II)")); + case 5044: return String(F("PV-4: current overcurrent (II)")); + 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")); @@ -659,10 +699,18 @@ class Inverter { case 5080: return String(F("Grid Overvoltage/Undervoltage")); case 5090: return String(F("Grid Overfrequency/Underfrequency")); case 5100: return String(F("Island detected")); + case 5110: return String(F("GFDI")); case 5120: return String(F("EEPROM reading and writing error")); + case 5141: + case 5142: + case 5143: + case 5144: + return String(F("FB clamp overvoltage")); case 5150: return String(F("10 min value grid overvoltage")); + case 5160: return String(F("Grid transient fluctuation")); case 5200: return String(F("Firmware error")); - case 8310: return String(F("Shut down")); + case 8310: return String(F("Shut down by remote control")); + case 8320: return String(F("Locked by remote control")); case 9000: return String(F("Microinverter is suspected of being stolen")); default: return String(F("Unknown")); } diff --git a/src/platformio.ini b/src/platformio.ini index d3c3c43c..e7c87979 100644 --- a/src/platformio.ini +++ b/src/platformio.ini @@ -25,9 +25,9 @@ extra_scripts = lib_deps = https://github.com/yubox-node-org/ESPAsyncWebServer - nrf24/RF24 @ 1.4.7 + nrf24/RF24 @ 1.4.8 paulstoffregen/Time @ ^1.6.1 - https://github.com/bertmelis/espMqttClient#v1.4.5 + https://github.com/bertmelis/espMqttClient#v1.5.0 bblanchon/ArduinoJson @ ^6.21.3 https://github.com/JChristensen/Timezone @ ^1.2.4 olikraus/U8g2 @ ^2.35.7 @@ -71,7 +71,7 @@ monitor_filters = esp8266_exception_decoder [env:esp32-wroom32] -platform = espressif32@6.3.2 +platform = espressif32@6.4.0 board = lolin_d32 build_flags = ${env.build_flags} -DUSE_HSPI_FOR_EPD @@ -79,7 +79,7 @@ monitor_filters = esp32_exception_decoder [env:esp32-wroom32-prometheus] -platform = espressif32@6.3.2 +platform = espressif32@6.4.0 board = lolin_d32 build_flags = ${env.build_flags} -DUSE_HSPI_FOR_EPD @@ -93,9 +93,9 @@ board = esp32dev lib_deps = khoih-prog/AsyncWebServer_ESP32_W5500 khoih-prog/AsyncUDP_ESP32_W5500 - nrf24/RF24 @ ^1.4.7 + nrf24/RF24 @ ^1.4.8 paulstoffregen/Time @ ^1.6.1 - https://github.com/bertmelis/espMqttClient#v1.4.4 + https://github.com/bertmelis/espMqttClient#v1.5.0 bblanchon/ArduinoJson @ ^6.21.3 https://github.com/JChristensen/Timezone @ ^1.2.4 olikraus/U8g2 @ ^2.35.7 @@ -110,7 +110,7 @@ monitor_filters = esp32_exception_decoder [env:esp32-s2-mini] -platform = espressif32@6.3.2 +platform = espressif32@6.4.0 board = lolin_s2_mini build_flags = ${env.build_flags} -DUSE_HSPI_FOR_EPD @@ -124,7 +124,7 @@ monitor_filters = esp32_exception_decoder [env:opendtufusion] -platform = espressif32@6.3.2 +platform = espressif32@6.4.0 board = esp32-s3-devkitc-1 upload_protocol = esp-builtin build_flags = ${env.build_flags} @@ -147,7 +147,7 @@ monitor_filters = esp32_exception_decoder, colorize [env:opendtufusion-dev] -platform = espressif32@6.3.2 +platform = espressif32@6.4.0 board = esp32-s3-devkitc-1 upload_protocol = esp-builtin build_flags = ${env.build_flags} diff --git a/src/web/RestApi.h b/src/web/RestApi.h index d44e0f1e..2378819c 100644 --- a/src/web/RestApi.h +++ b/src/web/RestApi.h @@ -559,7 +559,6 @@ class RestApi { } void getSerial(JsonObject obj) { - obj[F("interval")] = (uint16_t)mConfig->serial.interval; obj[F("show_live_data")] = mConfig->serial.showIv; obj[F("debug")] = mConfig->serial.debug; } diff --git a/src/web/html/setup.html b/src/web/html/setup.html index c1c1c841..aa0f5435 100644 --- a/src/web/html/setup.html +++ b/src/web/html/setup.html @@ -48,10 +48,6 @@
Serial Debug
-
-
Interval [s]
-
-
@@ -939,7 +935,6 @@ function parseSerial(obj) { for(var i of [["serEn", "show_live_data"], ["serDbg", "debug"]]) document.getElementsByName(i[0])[0].checked = obj[i[1]]; - document.getElementsByName("serIntvl")[0].value = obj["interval"]; } function parseDisplay(obj, type, system) { diff --git a/src/web/web.h b/src/web/web.h index ae2fc091..a795d5ed 100644 --- a/src/web/web.h +++ b/src/web/web.h @@ -558,14 +558,8 @@ class Web { mConfig->mqtt.interval = request->arg("mqttInterval").toInt(); // serial console - if (request->arg("serIntvl") != "") { - mConfig->serial.interval = request->arg("serIntvl").toInt() & 0xffff; - - mConfig->serial.debug = (request->arg("serDbg") == "on"); - mConfig->serial.showIv = (request->arg("serEn") == "on"); - // Needed to log TX buffers to serial console - // mSys->Radio.mSerialDebug = mConfig->serial.debug; - } + mConfig->serial.debug = (request->arg("serDbg") == "on"); + mConfig->serial.showIv = (request->arg("serEn") == "on"); // display mConfig->plugin.display.pwrSaveAtIvOffline = (request->arg("disp_pwr") == "on");