diff --git a/tools/esp8266/hmInverter.h b/tools/esp8266/hmInverter.h index ca1e1bb6..321dec50 100644 --- a/tools/esp8266/hmInverter.h +++ b/tools/esp8266/hmInverter.h @@ -80,6 +80,7 @@ class Inverter { RECORDTYPE *record; // pointer for values uint16_t chMaxPwr[4]; // maximum power of the modules (Wp) char chName[4][MAX_NAME_LENGTH]; // human readable name for channel + bool initialized; // needed to check if the inverter was correctly added (ESP32 specific - union types are never null) Inverter() { ts = 0; @@ -87,6 +88,7 @@ class Inverter { powerLimit[1] = 0x0000; // devControlRequest = false; devControlCmd = 0xff; + initialized = false; } ~Inverter() { @@ -101,6 +103,7 @@ class Inverter { memset(name, 0, MAX_NAME_LENGTH); memset(chName, 0, MAX_NAME_LENGTH * 4); memset(record, 0, sizeof(RECORDTYPE) * listLen); + initialized = true; } uint8_t getPosByChFld(uint8_t channel, uint8_t fieldId) { diff --git a/tools/esp8266/hmSystem.h b/tools/esp8266/hmSystem.h index c2a7e28a..1070445a 100644 --- a/tools/esp8266/hmSystem.h +++ b/tools/esp8266/hmSystem.h @@ -91,7 +91,7 @@ class HmSystem { INVERTERTYPE *getInverterByPos(uint8_t pos, bool check = true) { DPRINTLN(DBG_VERBOSE, F("hmSystem.h:getInverterByPos")); - if((mInverter[pos].serial.u64 != 0ULL) || false == check) + if((mInverter[pos].initialized && mInverter[pos].serial.u64 != 0ULL) || false == check) return &mInverter[pos]; else return NULL;