Add some WIFI respawning & relability improvements for ESPx

MEGA compilation error fixed
This commit is contained in:
2019-04-01 01:58:29 +03:00
parent dc16a663ec
commit eb29e4f227
4 changed files with 47 additions and 10 deletions

View File

@@ -7,7 +7,7 @@
extern PubSubClient mqttClient; extern PubSubClient mqttClient;
int abstractIn::publish(int value, char* subtopic) int abstractIn::publish(long value, char* subtopic)
{ {
char valstr[16]; char valstr[16];
printUlongValueToStr(valstr, value); printUlongValueToStr(valstr, value);

View File

@@ -10,7 +10,7 @@ public:
protected: protected:
Input * in; Input * in;
int publish(int value, char* subtopic = NULL); int publish(long value, char* subtopic = NULL);
int publish(float value, char* subtopic = NULL ); int publish(float value, char* subtopic = NULL );
int publish(char * value, char* subtopic = NULL); int publish(char * value, char* subtopic = NULL);
friend Input; friend Input;

View File

@@ -79,11 +79,21 @@ EthernetClient ethClient;
#ifdef ARDUINO_ARCH_ESP8266 #ifdef ARDUINO_ARCH_ESP8266
WiFiClient ethClient; WiFiClient ethClient;
#if not defined(WIFI_MANAGER_DISABLE)
WiFiManager wifiManager;
#endif
#endif #endif
#ifdef ARDUINO_ARCH_ESP32 #ifdef ARDUINO_ARCH_ESP32
WiFiClient ethClient; WiFiClient ethClient;
NRFFlashStorage EEPROM; NRFFlashStorage EEPROM;
#if not defined(WIFI_MANAGER_DISABLE)
WiFiManager wifiManager;
#endif
#endif #endif
#ifdef ARDUINO_ARCH_STM32 #ifdef ARDUINO_ARCH_STM32
@@ -314,6 +324,14 @@ lan_status lanLoop() {
{ {
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
if (WiFi.status() != WL_CONNECTED)
{
wifiInitialized=false;
lanStatus = INITIAL_STATE;
}
#endif
#if defined(ARDUINO_ARCH_AVR) || defined(__SAM3X8E__) #if defined(ARDUINO_ARCH_AVR) || defined(__SAM3X8E__)
wdt_dis(); wdt_dis();
if (lanStatus > 0) if (lanStatus > 0)
@@ -573,12 +591,13 @@ void ip_ready_config_loaded_connecting_to_broker() {
} }
void onInitialStateInitLAN() { void onInitialStateInitLAN() {
#if defined(ARDUINO_ARCH_ESP8266) and defined(WIFI_MANAGER_DISABLE) #if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
#if defined(WIFI_MANAGER_DISABLE)
if(!wifiInitialized) { if(!wifiInitialized) {
WiFi.mode(WIFI_STA); WiFi.mode(WIFI_STA); // ESP 32 - WiFi.disconnect(); instead
debugSerial<<F("WIFI AP/Password:")<<QUOTE(ESP_WIFI_AP)<<F("/")<<QUOTE(ESP_WIFI_PWD)<<endl; debugSerial<<F("WIFI AP/Password:")<<QUOTE(ESP_WIFI_AP)<<F("/")<<QUOTE(ESP_WIFI_PWD)<<endl;
wifi_set_macaddr(STATION_IF,mac); wifi_set_macaddr(STATION_IF,mac); //ESP32 to check
WiFi.begin(QUOTE(ESP_WIFI_AP), QUOTE(ESP_WIFI_PWD)); WiFi.begin(QUOTE(ESP_WIFI_AP), QUOTE(ESP_WIFI_PWD));
int wifi_connection_wait = 10000; int wifi_connection_wait = 10000;
@@ -590,8 +609,22 @@ void onInitialStateInitLAN() {
} }
wifiInitialized = true; wifiInitialized = true;
} }
#else
// Wifi Manager
if (!wifiInitialized)
{
WiFi.disconnect();
#if defined(ESP_WIFI_AP) and defined(ESP_WIFI_PWD)
wifiInitialized = wifiManager.autoConnect(QUOTE(ESP_WIFI_AP), QUOTE(ESP_WIFI_PWD));
#else
wifiInitialized = wifiManager.autoConnect();
#endif
}
#endif
#endif #endif
/*
#if defined(ARDUINO_ARCH_ESP32) and defined(WIFI_MANAGER_DISABLE) #if defined(ARDUINO_ARCH_ESP32) and defined(WIFI_MANAGER_DISABLE)
if(!wifiInitialized) { if(!wifiInitialized) {
// WiFi.mode(WIFI_STA); // WiFi.mode(WIFI_STA);
@@ -608,6 +641,7 @@ void onInitialStateInitLAN() {
wifiInitialized = true; wifiInitialized = true;
} }
#endif #endif
*/
#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266) #if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
if (WiFi.status() == WL_CONNECTED) { if (WiFi.status() == WL_CONNECTED) {
@@ -616,7 +650,7 @@ void onInitialStateInitLAN() {
} else } else
{ {
debugSerial<<F("Problem with WiFi!"); debugSerial<<F("Problem with WiFi!");
nextLanCheckTime = millis() + DHCP_RETRY_INTERVAL/5; nextLanCheckTime = millis() + DHCP_RETRY_INTERVAL;
} }
#endif #endif
@@ -1315,12 +1349,15 @@ void setup_main() {
#endif #endif
#if (defined(ARDUINO_ARCH_ESP8266) or defined(ARDUINO_ARCH_ESP32)) and not defined(WIFI_MANAGER_DISABLE) #if (defined(ARDUINO_ARCH_ESP8266) or defined(ARDUINO_ARCH_ESP32)) and not defined(WIFI_MANAGER_DISABLE)
WiFiManager wifiManager; // WiFiManager wifiManager;
wifiManager.setTimeout(180);
#if defined(ESP_WIFI_AP) and defined(ESP_WIFI_PWD) #if defined(ESP_WIFI_AP) and defined(ESP_WIFI_PWD)
wifiManager.autoConnect(QUOTE(ESP_WIFI_AP), QUOTE(ESP_WIFI_PWD)); wifiInitialized = wifiManager.autoConnect(QUOTE(ESP_WIFI_AP), QUOTE(ESP_WIFI_PWD));
#else #else
wifiManager.autoConnect(); wifiInitialized = wifiManager.autoConnect();
#endif #endif
#endif #endif
delay(LAN_INIT_DELAY);//for LAN-shield initializing delay(LAN_INIT_DELAY);//for LAN-shield initializing

View File

@@ -5,7 +5,7 @@
CCS811 ccs811(CCS811_ADDR); CCS811 ccs811(CCS811_ADDR);
ClosedCube_HDC1080 hdc1080; ClosedCube_HDC1080 hdc1080;
uint16_t ccs811Baseline; long ccs811Baseline;
int in_ccs811::Setup(int addr) int in_ccs811::Setup(int addr)
{ {