diff --git a/build-flags/build_flags_controllino b/build-flags/build_flags_controllino index a562ad6..df99d1f 100644 --- a/build-flags/build_flags_controllino +++ b/build-flags/build_flags_controllino @@ -2,3 +2,5 @@ -DCUSTOM_FIRMWARE_MAC=de:ad:be:ef:fe:07 -DWiz5100 #-DPID_DISABLE +-DRESTART_LAN_ON_MQTT_ERRORS +-D CORS=\"http://lazyhome.ru\" diff --git a/build-flags/build_flags_esp32-wifi b/build-flags/build_flags_esp32-wifi index 103fbcf..c36a716 100644 --- a/build-flags/build_flags_esp32-wifi +++ b/build-flags/build_flags_esp32-wifi @@ -45,4 +45,5 @@ -DFS_STORAGE -DFS_PREPARE +-DRESTART_LAN_ON_MQTT_ERRORS -D CORS=\"http://lazyhome.ru\" diff --git a/build-flags/build_flags_esp8266-wifi b/build-flags/build_flags_esp8266-wifi index 28ad70a..6061d70 100644 --- a/build-flags/build_flags_esp8266-wifi +++ b/build-flags/build_flags_esp8266-wifi @@ -11,3 +11,9 @@ -DARDUINO_OTA_MDNS_DISABLE ##-DMDNS_ENABLE -DMCP23017 + +-DFS_STORAGE +-DFS_PREPARE + +-DRESTART_LAN_ON_MQTT_ERRORS +#-D CORS=\"http://lazyhome.ru\" diff --git a/build-flags/build_flags_m5stack b/build-flags/build_flags_m5stack index 6df81f1..8e18f89 100644 --- a/build-flags/build_flags_m5stack +++ b/build-flags/build_flags_m5stack @@ -15,4 +15,7 @@ -DMCP23017 -DFS_STORAGE --DFS_PREPARE \ No newline at end of file +-DFS_PREPARE + +-DRESTART_LAN_ON_MQTT_ERRORS +-D CORS=\"http://lazyhome.ru\" \ No newline at end of file diff --git a/build-flags/build_flags_mega2560-5100 b/build-flags/build_flags_mega2560-5100 index 38fc8e7..890fc5c 100644 --- a/build-flags/build_flags_mega2560-5100 +++ b/build-flags/build_flags_mega2560-5100 @@ -5,3 +5,6 @@ #-DPID_DISABLE -DARDUINO_OTA_MDNS_DISABLE -DMDNS_ENABLE + +-DRESTART_LAN_ON_MQTT_ERRORS +-D CORS=\"http://lazyhome.ru\" diff --git a/build-flags/build_flags_mega2560-5500 b/build-flags/build_flags_mega2560-5500 index def428b..1810045 100644 --- a/build-flags/build_flags_mega2560-5500 +++ b/build-flags/build_flags_mega2560-5500 @@ -4,4 +4,7 @@ -DSYSLOG_ENABLE #-DPID_DISABLE -DARDUINO_OTA_MDNS_DISABLE --DMDNS_ENABLE \ No newline at end of file +-DMDNS_ENABLE + +-DRESTART_LAN_ON_MQTT_ERRORS +-D CORS=\"http://lazyhome.ru\" \ No newline at end of file diff --git a/build-flags/build_flags_mega2560slim-5100 b/build-flags/build_flags_mega2560slim-5100 index 4dc23ff..ef53293 100644 --- a/build-flags/build_flags_mega2560slim-5100 +++ b/build-flags/build_flags_mega2560slim-5100 @@ -17,4 +17,6 @@ -DMOTOR_DISABLE -DOTA -DARDUINO_OTA_MDNS_DISABLE -#-DMDNS_ENABLE \ No newline at end of file +#-DMDNS_ENABLE +-DRESTART_LAN_ON_MQTT_ERRORS +-D CORS=\"http://lazyhome.ru\" \ No newline at end of file diff --git a/build-flags/build_flags_mega2560slim2 b/build-flags/build_flags_mega2560slim2 index ef80113..189e496 100644 --- a/build-flags/build_flags_mega2560slim2 +++ b/build-flags/build_flags_mega2560slim2 @@ -18,7 +18,9 @@ #-DWiz5100 -DARDUINO_OTA_MDNS_DISABLE #-DMDNS_ENABLE + -DRESTART_LAN_ON_MQTT_ERRORS +-D CORS=\"http://lazyhome.ru\" # Example of UARTBRIDGE configuration #-DUARTBRIDGE_ENABLE diff --git a/build-flags/build_flags_nrf52840 b/build-flags/build_flags_nrf52840 index ec343b9..3d4ebd2 100644 --- a/build-flags/build_flags_nrf52840 +++ b/build-flags/build_flags_nrf52840 @@ -13,3 +13,4 @@ -DMBUS_DISABLE -DPID_DISABLE #-DMCP23017 + diff --git a/lighthub/config.cpp b/lighthub/config.cpp index e717a05..87e4acf 100644 --- a/lighthub/config.cpp +++ b/lighthub/config.cpp @@ -10,9 +10,9 @@ return res; int systemConfig::openStream(char mode) { #if defined(FS_STORAGE) - stream->open("/config.bin",mode); + return stream->open("/config.bin",mode); #else - stream->open(FN_CONFIG_BIN,mode); + return stream->open(FN_CONFIG_BIN,mode); #endif //stream->setSize(SYSCONF_SIZE); }; diff --git a/lighthub/flashstream.cpp b/lighthub/flashstream.cpp index 219e4ee..02ef05c 100644 --- a/lighthub/flashstream.cpp +++ b/lighthub/flashstream.cpp @@ -14,7 +14,7 @@ #include #endif -#if defined(ARDUINO_ARCH_ESP8266) +#if defined(ARDUINO_ARCH_ESP8266) && !defined(FS_STORAGE) #include #endif @@ -53,24 +53,31 @@ NRFFlashStorage EEPROM; int flashStream::open(String _filename, char mode) { char modestr[4]; - modestr[0]=mode; modestr[1]='b'; modestr[2]='+'; modestr[3]='\0'; + int paramPos=-1; + //modestr[0]=mode; modestr[1]='b'; modestr[2]='+'; modestr[3]='\0'; + modestr[0]=mode; modestr[1]='+'; modestr[2]='\0'; if (fs) fs.close(); - filename=_filename; - if (fs = SPIFFS.open(_filename,modestr)) + if ((paramPos=_filename.indexOf('?'))>=0) + { + filename=_filename.substring(0,paramPos); + } + else filename=_filename; + + if (fs = SPIFFS.open(filename,modestr)) { openedMode=mode; streamSize = DEFAULT_FILESIZE_LIMIT; - if (_filename.endsWith(".json")) {contentType=HTTP_TEXT_JSON;textMode=true;streamSize = MAX_JSON_CONF_SIZE; } - else if (_filename.endsWith(".bin")) {contentType=HTTP_OCTET_STREAM;textMode=false;streamSize = SYSCONF_SIZE; } - else if (_filename.endsWith(".txt")) {contentType=HTTP_TEXT_PLAIN;textMode=true;} - else if (_filename.endsWith(".html")) {contentType=HTTP_TEXT_HTML;textMode=true;} - else if (_filename.endsWith(".gif")) {contentType=HTTP_IMAGE_GIF;textMode=false;} - else if (_filename.endsWith(".jpg")) {contentType=HTTP_IMAGE_JPEG;textMode=false;} + if (filename.endsWith(".json")) {contentType=HTTP_TEXT_JSON;textMode=true;streamSize = MAX_JSON_CONF_SIZE; } + else if (filename.endsWith(".bin")) {contentType=HTTP_OCTET_STREAM;textMode=false;streamSize = SYSCONF_SIZE; } + else if (filename.endsWith(".txt")) {contentType=HTTP_TEXT_PLAIN;textMode=true;} + else if (filename.endsWith(".html")) {contentType=HTTP_TEXT_HTML;textMode=true;} + else if (filename.endsWith(".gif")) {contentType=HTTP_IMAGE_GIF;textMode=false;} + else if (filename.endsWith(".jpg")) {contentType=HTTP_IMAGE_JPEG;textMode=false;} - debugSerial<<(F("Opened ("))<=0) + { + _filename=_filename.substring(0,paramPos); + } + if (_filename == "/config.json") return open (FN_CONFIG_JSON,mode); else if (_filename == "/config.bin") return open (FN_CONFIG_BIN,mode); else return 0; diff --git a/lighthub/flashstream.h b/lighthub/flashstream.h index aa6f629..9f8290e 100644 --- a/lighthub/flashstream.h +++ b/lighthub/flashstream.h @@ -11,8 +11,10 @@ #if defined(FS_STORAGE) #include +#if defined ARDUINO_ARCH_ESP32 #include #endif +#endif #define FN_CONFIG_JSON 1 #define FN_CONFIG_BIN 2 diff --git a/lighthub/item.cpp b/lighthub/item.cpp index 37b0b1f..692c49b 100644 --- a/lighthub/item.cpp +++ b/lighthub/item.cpp @@ -279,7 +279,8 @@ uint8_t Item::getCmd() { void Item::setCmd(uint8_t cmdValue) { aJsonObject *itemCmd = aJson.getArrayItem(itemArr, I_CMD); if (itemCmd) - { + { + itemCmd->type = aJson_Int; itemCmd->valueint = cmdValue & CMD_MASK | itemCmd->valueint & FLAG_MASK; // Preserve special bits debugSerial<type = aJson_Int; itemCmd->valueint |= flag & FLAG_MASK; // Preserve CMD bits // debugSerial<1) if (outBuf == NULL) { sysConfStream.close(); - return; + return 500; } infoSerial<1) infoSerial<1) { serialDebugLevel=atoi(args[1]); sysConf.setSerialDebuglevel(serialDebugLevel); + res = 200; } if (arg_cnt>2) { udpDebugLevel=atoi(args[2]); sysConf.setUdpDebuglevel(udpDebugLevel); + res = 200; } infoSerial<1) { - if (!strcasecmp_P(args[1],ON_P)) {sysConf.setLoadHTTPConfig(true); return;}; - if (!strcasecmp_P(args[1],OFF_P)) {sysConf.setLoadHTTPConfig(false); return;}; + if (!strcasecmp_P(args[1],ON_P)) {sysConf.setLoadHTTPConfig(true); return 200;}; + if (!strcasecmp_P(args[1],OFF_P)) {sysConf.setLoadHTTPConfig(false); return 200;}; infoSerial< 0) { infoSerial.printf("[HTTP] GET... code: %d\n", httpResponseCode); if (httpResponseCode == HTTP_CODE_OK) { String response = httpClient.getString(); + + httpClient.end(); + debugSerial< //this needs to be first, or it all crashes and burns... //#include "SPIFFS.h" -//#include +#ifndef FS_STORAGE +#include +#endif //#include //#include //#include "HttpClient.h" @@ -239,13 +241,13 @@ void Changed(int i, DeviceAddress addr, float currentTemp); void modbusIdle(void); -void cmdFunctionHelp(int arg_cnt, char **args); +int cmdFunctionHelp(int arg_cnt, char **args); -void cmdFunctionKill(int arg_cnt, char **args); +int cmdFunctionKill(int arg_cnt, char **args); void applyConfig(); -void cmdFunctionLoad(int arg_cnt, char **args); +int cmdFunctionLoad(int arg_cnt, char **args); int loadConfigFromEEPROM(); @@ -255,13 +257,13 @@ int loadConfigFromEEPROM(); //int mqttConfigResp(char *as); -void cmdFunctionSave(int arg_cnt, char **args); +int cmdFunctionSave(int arg_cnt, char **args); -void cmdFunctionSetMac(int arg_cnt, char **args); +int cmdFunctionSetMac(int arg_cnt, char **args); -void cmdFunctionGet(int arg_cnt, char **args); +int cmdFunctionGet(int arg_cnt, char **args); -void cmdFunctionLoglevel(int arg_cnt, char **args); +int cmdFunctionLoglevel(int arg_cnt, char **args); void printBool(bool arg); /* @@ -274,7 +276,7 @@ void saveFlash(short n, IPAddress& ip); int ipLoadFromFlash(short n, IPAddress &ip); */ -lan_status loadConfigFromHttp(int arg_cnt = 0, char **args = NULL); +bool loadConfigFromHttp(int arg_cnt = 0, char **args = NULL); void preTransmission();