Trying to figure out esp8266 wifi reconnect

This commit is contained in:
Gunnar Skjold
2021-12-05 12:07:20 +01:00
parent 76f8e2c343
commit cbd2ab4a7a
5 changed files with 25 additions and 38 deletions

View File

@@ -1,6 +1,7 @@
# After decode:
7E A1 E9 41 03 13 C6 37 E6 E7 00 DB 08 4B 41 4D 45 01 AC 4D 6E 82 01 D0 30 00 00 A3 2F 0F 00 00 00 00
0C 07 E4 05 0C 02 0A 19 00 FF 80 00 80
7E A1 E9 41 03 13 C6 37
E6 E7 00 DB 08 4B 41 4D 45 01 AC 4D 6E 82 01 D0 30 00 00 A3 2F 0F 00 00 00 00
0C 07 E4 05 0C 02 0A 19 00 FF 80 00 80 // Package timestamp
02 41
0A 0E 4B 61 6D 73 74 72 75 70 5F 56 30 30 30 31 - List ID

View File

@@ -2,7 +2,7 @@
extra_configs = platformio-user.ini
[common]
lib_deps = file://lib/Timezone, MQTT@2.5.0, OneWireNg@0.10.0, DallasTemperature@3.9.1, EspSoftwareSerial@6.14.1, https://github.com/gskjold/RemoteDebug.git@3.0.5, Time@1.6.0
lib_deps = file://lib/Timezone, 256dpi/MQTT@2.5.0, OneWireNg@0.10.0, DallasTemperature@3.9.1, EspSoftwareSerial@6.14.1, https://github.com/gskjold/RemoteDebug.git, Time@1.6.0
lib_ignore = OneWire
[env:esp8266]

View File

@@ -1,18 +0,0 @@
CONFIG_ENABLE_ARDUINO_DEPENDS=y
CONFIG_AUTOSTART_ARDUINO=y
CONFIG_ARDUINO_RUN_CORE1=y
CONFIG_ARDUINO_RUNNING_CORE=1
CONFIG_ARDUINO_EVENT_RUN_CORE1=y
CONFIG_ARDUINO_EVENT_RUNNING_CORE=1
CONFIG_ARDUINO_UDP_RUN_CORE1=y
CONFIG_ARDUINO_UDP_RUNNING_CORE=1
CONFIG_DISABLE_HAL_LOCKS=y
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_ERROR=y
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL=1
CONFIG_ARDUHAL_PARTITION_SCHEME_DEFAULT=y
CONFIG_ARDUHAL_PARTITION_SCHEME="default"
CONFIG_AUTOCONNECT_WIFI=y
CONFIG_ARDUINO_SELECTIVE_WiFi=y
CONFIG_MBEDTLS_PSK_MODES=y
CONFIG_MBEDTLS_KEY_EXCHANGE_PSK=y
CONFIG_FREERTOS_UNICORE=y

View File

@@ -15,6 +15,9 @@
* The original developer for this project
* https://github.com/roarfred/AmsToMqttBridge
*/
#if defined(ESP8266)
ADC_MODE(ADC_VCC);
#endif
#include "AmsToMqttBridge.h"
#include "AmsStorage.h"
@@ -426,10 +429,6 @@ void loop() {
}
if (mqttEnabled) {
if(mqtt != NULL) {
mqtt->loop();
delay(10); // Needed to preserve power. After adding this, the voltage is super smooth on a HAN powered device
}
if(mqtt == NULL || !mqtt->connected() || config.isMqttChanged()) {
MQTT_connect();
}
@@ -459,7 +458,12 @@ void loop() {
}
config.ackEntsoeChange();
}
ws.loop();
readHanPort(); // TODO: Move to bottom
}
if(mqtt != NULL) { // Run loop regardless, to let MQTT do its work.
mqtt->loop();
delay(10); // Needed to preserve power. After adding this, the voltage is super smooth on a HAN powered device
}
} else {
if(dnsServer != NULL) {
@@ -471,6 +475,7 @@ void loop() {
hw.ledBlink(LED_INTERNAL, 1);
}
}
ws.loop();
}
if(config.isMeterChanged()) {
@@ -478,9 +483,7 @@ void loop() {
setupHanPort(gpioConfig.hanPin, meterConfig.baud, meterConfig.parity, meterConfig.invert);
config.ackMeterChanged();
}
delay(1);
readHanPort();
ws.loop();
delay(1); // Needed for auto modem sleep
}
@@ -777,15 +780,16 @@ void readHanPort() {
}
}
if(ds.update(&data)) {
meterState.apply(data);
if(ds.update(&meterState)) {
debugI("Saving day plot");
ds.save();
} else if(data.getListType() == 3) {
debugE("Unable to update day plot");
}
meterState.apply(data);
}
delay(1);
}
void debugPrint(byte *buffer, int start, int length) {
@@ -819,7 +823,7 @@ void WiFi_connect() {
ESP.restart();
return;
}
if (Debug.isActive(RemoteDebug::INFO)) debugI("Disconnecting from WiFi");
if (Debug.isActive(RemoteDebug::INFO)) debugI("Not connected to WiFi, closing resources");
if(mqtt != NULL) {
mqtt->disconnect();
mqtt->loop();
@@ -843,10 +847,12 @@ void WiFi_connect() {
#endif
MDNS.end();
WiFi.persistent(false);
WiFi.disconnect(true);
WiFi.softAPdisconnect(true);
WiFi.mode(WIFI_OFF);
WiFi.enableAP(false);
WiFi.mode(WIFI_OFF);
wifi_fpm_close();
yield();
wifiTimeout = 5000;
return;
@@ -864,6 +870,7 @@ void WiFi_connect() {
wifiReconnectCount++;
WiFi.mode(WIFI_STA);
WiFi.setOutputPower(0);
if(strlen(wifi.ip) > 0) {
IPAddress ip, gw, sn(255,255,255,0), dns1, dns2;
ip.fromString(wifi.ip);
@@ -890,7 +897,7 @@ void WiFi_connect() {
if(WiFi.begin(wifi.ssid, wifi.psk)) {
yield();
} else {
if (Debug.isActive(RemoteDebug::ERROR)) debugI("Unable to enable WiFi");
if (Debug.isActive(RemoteDebug::ERROR)) debugI("Unable to start WiFi");
}
}
}

View File

@@ -1,7 +1,4 @@
#include "HwTools.h"
#if defined(ESP8266)
ADC_MODE(ADC_VCC);
#endif
void HwTools::setup(GpioConfig* config, AmsConfiguration* amsConf) {
this->config = config;