Browse Source

0.8.9

* merged PR #1234
* added new alarm codes
* removed serial interval, was not in use anymore
pull/1239/head
lumapu 1 year ago
parent
commit
49ef94cb7a
  1. 5
      src/CHANGES.md
  2. 2
      src/app.cpp
  3. 3
      src/config/config.h
  4. 4
      src/config/settings.h
  5. 82
      src/hm/hmInverter.h
  6. 18
      src/platformio.ini
  7. 1
      src/web/RestApi.h
  8. 5
      src/web/html/setup.html
  9. 10
      src/web/web.h

5
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

2
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

3
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

4
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<uint16_t>(obj, F("intvl"), &mCfg.serial.interval);
getVal<bool>(obj, F("show"), &mCfg.serial.showIv);
getVal<bool>(obj, F("debug"), &mCfg.serial.debug);
}

82
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"));
}

18
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}

1
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;
}

5
src/web/html/setup.html

@ -48,10 +48,6 @@
<div class="col-8 col-sm-3">Serial Debug</div>
<div class="col-4 col-sm-9"><input type="checkbox" name="serDbg"/></div>
</div>
<div class="row mb-3">
<div class="col-12 col-sm-3 my-2">Interval [s]</div>
<div class="col-12 col-sm-9"><input type="number" name="serIntvl" title="Invalid input"/></div>
</div>
</fieldset>
</div>
@ -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) {

10
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");

Loading…
Cancel
Save