Skip to content
This repository was archived by the owner on Feb 9, 2022. It is now read-only.

Commit 7480b73

Browse files
authored
v1.2.2
### Releases v1.2.2 1. Fix rare Config Portal bug not updating Config and dynamic Params data successfully in very noisy or weak WiFi situation
1 parent fe40128 commit 7480b73

7 files changed

+321
-156
lines changed

README.md

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
* [Why using Async](#why-using-async)
1818
* [Currently supported Boards](#currently-supported-boards)
1919
* [Changelog](#changelog)
20+
* [Releases v1.2.2](#releases-v122)
2021
* [Releases v1.2.1](#releases-v121)
2122
* [Major Releases v1.2.0](#major-releases-v120)
2223
* [Releases v1.1.0](#releases-v110)
@@ -143,6 +144,10 @@ This [**BlynkESP32_BT_WF** library](https://github.com/khoih-prog/BlynkESP32_BT_
143144

144145
## Changelog
145146

147+
### Releases v1.2.2
148+
149+
1. Fix rare Config Portal bug not updating Config and dynamic Params data successfully in very noisy or weak WiFi situation
150+
146151
### Releases v1.2.1
147152

148153
1. Add functions to control Config Portal from software or Virtual Switches. Check [How to trigger a Config Portal from code #25](https://github.com/khoih-prog/Blynk_WM/issues/25)
@@ -1203,7 +1208,7 @@ The following is the sample terminal output when running example [Async_ESP8266W
12031208

12041209
```
12051210
Starting Async_ESP8266WM_MRD_Config using LittleFS with SSL on ESP8266_NODEMCU
1206-
Blynk_Async_WM SSL for ESP8266 v1.2.1
1211+
Blynk_Async_WM SSL for ESP8266 v1.2.2
12071212
ESP_MultiResetDetector v1.1.1
12081213
LittleFS Flag read = 0xFFFE0001
12091214
multiResetDetectorFlag = 0xFFFE0001
@@ -1283,7 +1288,7 @@ BBBBBB
12831288

12841289
```
12851290
Starting Async_ESP8266WM_MRD_Config using LittleFS with SSL on ESP8266_NODEMCU
1286-
Blynk_Async_WM SSL for ESP8266 v1.2.1
1291+
Blynk_Async_WM SSL for ESP8266 v1.2.2
12871292
ESP_MultiResetDetector v1.1.1
12881293
LittleFS Flag read = 0xFFFC0003
12891294
multiResetDetectorFlag = 0xFFFC0003
@@ -1394,7 +1399,7 @@ F[229521] id: = HueNet1
13941399

13951400
```
13961401
Starting Async_ESP8266WM_MRD_Config using LittleFS with SSL on ESP8266_NODEMCU
1397-
Blynk_Async_WM SSL for ESP8266 v1.2.1
1402+
Blynk_Async_WM SSL for ESP8266 v1.2.2
13981403
ESP_MultiResetDetector v1.1.1
13991404
LittleFS Flag read = 0xFFFE0001
14001405
multiResetDetectorFlag = 0xFFFE0001
@@ -1480,7 +1485,7 @@ The following is the sample terminal output when running example [Async_ESP32WM_
14801485

14811486
```
14821487
Starting Async_ESP32WM_MRD_Config using LittleFS with SSL on ESP32_DEV
1483-
Blynk_Async_WM SSL for ESP32 v1.2.1
1488+
Blynk_Async_WM SSL for ESP32 v1.2.2
14841489
ESP_MultiResetDetector v1.1.1
14851490
LittleFS Flag read = 0xFFFE0001
14861491
multiResetDetectorFlag = 0xFFFE0001
@@ -1559,7 +1564,7 @@ Pubs Topics = default-mqtt-PubTopic
15591564

15601565
```
15611566
Starting Async_ESP32WM_MRD_Config using LittleFS with SSL on ESP32_DEV
1562-
Blynk_Async_WM SSL for ESP32 v1.2.1
1567+
Blynk_Async_WM SSL for ESP32 v1.2.2
15631568
ESP_MultiResetDetector v1.1.1
15641569
LittleFS Flag read = 0xFFFC0003
15651570
multiResetDetectorFlag = 0xFFFC0003
@@ -1664,7 +1669,7 @@ RFRFRF[188660] id: = HueNet1
16641669

16651670
```
16661671
Starting Async_ESP32WM_MRD_Config using LittleFS with SSL on ESP32_DEV
1667-
Blynk_Async_WM SSL for ESP32 v1.2.1
1672+
Blynk_Async_WM SSL for ESP32 v1.2.2
16681673
ESP_MultiResetDetector v1.1.1
16691674
LittleFS Flag read = 0xFFFE0001
16701675
multiResetDetectorFlag = 0xFFFE0001
@@ -1801,7 +1806,7 @@ The following is the sample terminal output when running example [Async_ESP32_Mu
18011806

18021807
```
18031808
Starting Async_ESP32_MultiTask using LittleFS without SSL on ESP32_DEV
1804-
Blynk_Async_WM for ESP32 v1.2.1
1809+
Blynk_Async_WM for ESP32 v1.2.2
18051810
ESP_DoubleResetDetector v1.1.1
18061811
[1431] Hostname=ESP32-Async-MTask
18071812
[1517] LoadCfgFile
@@ -2013,7 +2018,7 @@ Blynk.resetAndEnterConfigPortal();
20132018

20142019
```
20152020
Starting Async_ESP32WM_MRD_ForcedConfig using LittleFS with SSL on ESP32_DEV
2016-
Blynk_Async_WM SSL for ESP32 v1.2.1
2021+
Blynk_Async_WM SSL for ESP32 v1.2.2
20172022
ESP_MultiResetDetector v1.1.1
20182023
LittleFS Flag read = 0xFFFE0001
20192024
multiResetDetectorFlag = 0xFFFE0001
@@ -2104,7 +2109,7 @@ Non-Persistent CP will be removed after first reset, even you didn't enter the C
21042109

21052110
```
21062111
Starting Async_ESP32WM_MRD_ForcedConfig using LittleFS with SSL on ESP32_DEV
2107-
Blynk_Async_WM SSL for ESP32 v1.2.1
2112+
Blynk_Async_WM SSL for ESP32 v1.2.2
21082113
ESP_MultiResetDetector v1.1.1
21092114
LittleFS Flag read = 0xFFFE0001
21102115
multiResetDetectorFlag = 0xFFFE0001
@@ -2219,7 +2224,7 @@ RF[66298] id: = HueNet1
22192224

22202225
```
22212226
Starting Async_ESP32WM_MRD_ForcedConfig using LittleFS with SSL on ESP32_DEV
2222-
Blynk_Async_WM SSL for ESP32 v1.2.1
2227+
Blynk_Async_WM SSL for ESP32 v1.2.2
22232228
ESP_MultiResetDetector v1.1.1
22242229
LittleFS Flag read = 0xFFFE0001
22252230
multiResetDetectorFlag = 0xFFFE0001
@@ -2318,7 +2323,7 @@ Blynk.resetAndEnterConfigPortalPersistent();
23182323

23192324
```
23202325
Starting Async_ESP32WM_MRD_ForcedConfig using LittleFS with SSL on ESP32_DEV
2321-
Blynk_Async_WM SSL for ESP32 v1.2.1
2326+
Blynk_Async_WM SSL for ESP32 v1.2.2
23222327
ESP_MultiResetDetector v1.1.1
23232328
LittleFS Flag read = 0xFFFE0001
23242329
multiResetDetectorFlag = 0xFFFE0001
@@ -2409,7 +2414,7 @@ Persistent CP will remain after resets. The only way to get rid of Config Portal
24092414

24102415
```
24112416
Starting Async_ESP32WM_MRD_ForcedConfig using LittleFS with SSL on ESP32_DEV
2412-
Blynk_Async_WM SSL for ESP32 v1.2.1
2417+
Blynk_Async_WM SSL for ESP32 v1.2.2
24132418
ESP_MultiResetDetector v1.1.1
24142419
LittleFS Flag read = 0xFFFE0001
24152420
multiResetDetectorFlag = 0xFFFE0001
@@ -2521,7 +2526,7 @@ Enter CP, input (even fake data or none) and `Save` config data to exit persiste
25212526

25222527
```
25232528
Starting Async_ESP32WM_MRD_ForcedConfig using LittleFS with SSL on ESP32_DEV
2524-
Blynk_Async_WM SSL for ESP32 v1.2.1
2529+
Blynk_Async_WM SSL for ESP32 v1.2.2
25252530
ESP_MultiResetDetector v1.1.1
25262531
LittleFS Flag read = 0xFFFE0001
25272532
multiResetDetectorFlag = 0xFFFE0001
@@ -2635,6 +2640,10 @@ Sometimes, the library will only work if you update the board core to the latest
26352640

26362641
## Releases
26372642

2643+
### Releases v1.2.2
2644+
2645+
1. Fix rare Config Portal bug not updating Config and dynamic Params data successfully in very noisy or weak WiFi situation
2646+
26382647
### Releases v1.2.1
26392648

26402649
1. Add functions to control Config Portal from software or Virtual Switches. Check [How to trigger a Config Portal from code #25](https://github.com/khoih-prog/Blynk_WM/issues/25)

library.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Blynk_Async_WM",
3-
"version": "1.2.1",
3+
"version": "1.2.2",
44
"description": "Library, using AsyncWebServer instead of (ESP8266)WebServer, for configuring/auto(re)connecting ESP8266/ESP32 modules to best or available MultiWiFi APs and MultiBlynk servers at runtime. Enable adding dynamic custom parameters from sketch and input using the same Config Portal. Config Portal will be auto-adjusted to match the number of dynamic parameters. Optional default Credentials to be autoloaded into Config Portal to use or change instead of manually input. Static STA IP and DHCP Hostname as well as Config Portal AP channel, IP, SSID, Password can be configured. Multi or Double DetectDetector feature permits entering Config Portal as requested.",
55
"keywords": "sensors, control, device, smartphone, mobile, app, web, cloud, communication, protocol, iot, m2m, wifi, ble, bluetooth, ethernet, usb, serial, gsm, gprs, 3g, data, esp8266, esp32, http, drd, mrd, double-reset, multi-reset, configportal, portal, credentials, async",
66
"authors":

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=Blynk_Async_WM
2-
version=1.2.1
2+
version=1.2.2
33
author=Khoi Hoang
44
license=MIT
55
maintainer=Khoi Hoang <[email protected]>

src/BlynkSimpleEsp32_Async_WM.h

Lines changed: 74 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
@date Jan 2015
1818
@brief
1919
20-
Version: 1.2.1
20+
Version: 1.2.2
2121
2222
Version Modified By Date Comments
2323
------- ----------- ---------- -----------
@@ -26,6 +26,7 @@
2626
1.1.0 K Hoang 26/11/2020 Add examples using RTOS MultiTask to avoid blocking in operation.
2727
1.2.0 K Hoang 01/01/2021 Add support to ESP32 LittleFS. Remove possible compiler warnings. Update examples. Add MRD
2828
1.2.1 K Hoang 16/01/2021 Add functions to control Config Portal from software or Virtual Switches
29+
1.2.2 K Hoang 28/01/2021 Fix Config Portal and Dynamic Params bugs
2930
********************************************************************************************************************************/
3031

3132
#pragma once
@@ -34,7 +35,7 @@
3435
#error This code is intended to run on the ESP32 platform! Please check your Tools->Board setting.
3536
#endif
3637

37-
#define BLYNK_ASYNC_WM_VERSION "Blynk_Async_WM for ESP32 v1.2.1"
38+
#define BLYNK_ASYNC_WM_VERSION "Blynk_Async_WM for ESP32 v1.2.2"
3839

3940
#define BLYNK_SEND_ATOMIC
4041

@@ -197,6 +198,7 @@ typedef struct
197198
#if USE_DYNAMIC_PARAMETERS
198199
extern uint16_t NUM_MENU_ITEMS;
199200
extern MenuItem myMenuItems [];
201+
bool *menuItemUpdated = NULL;
200202
#endif
201203

202204
#define SSID_MAX_LEN 32
@@ -2033,100 +2035,134 @@ class BlynkWifi
20332035
memset(&BlynkESP32_WM_config, 0, sizeof(BlynkESP32_WM_config));
20342036
strcpy(BlynkESP32_WM_config.header, BLYNK_BOARD_TYPE);
20352037
}
2036-
2037-
if (key == "id")
2038+
2039+
#if USE_DYNAMIC_PARAMETERS
2040+
if (!menuItemUpdated)
20382041
{
2039-
BLYNK_LOG2(BLYNK_F("id: = "), value.c_str());
2042+
// Don't need to free
2043+
menuItemUpdated = new bool[NUM_MENU_ITEMS];
20402044

2045+
if (menuItemUpdated)
2046+
{
2047+
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
2048+
{
2049+
// To flag item is not yet updated
2050+
menuItemUpdated[i] = false;
2051+
}
2052+
#if ( BLYNK_WM_DEBUG > 2)
2053+
BLYNK_LOG1(BLYNK_F("h: Init menuItemUpdated" ));
2054+
#endif
2055+
}
2056+
else
2057+
{
2058+
BLYNK_LOG1(BLYNK_F("h: Error can't alloc memory for menuItemUpdated" ));
2059+
}
2060+
}
2061+
#endif
2062+
2063+
static bool id_Updated = false;
2064+
static bool pw_Updated = false;
2065+
static bool id1_Updated = false;
2066+
static bool pw1_Updated = false;
2067+
static bool sv_Updated = false;
2068+
static bool tk_Updated = false;
2069+
static bool sv1_Updated = false;
2070+
static bool tk1_Updated = false;
2071+
static bool pt_Updated = false;
2072+
static bool nm_Updated = false;
2073+
2074+
if (!id_Updated && (key == String("id")))
2075+
{
2076+
id_Updated = true;
20412077
number_items_Updated++;
2078+
20422079
if (strlen(value.c_str()) < sizeof(BlynkESP32_WM_config.WiFi_Creds[0].wifi_ssid) - 1)
20432080
strcpy(BlynkESP32_WM_config.WiFi_Creds[0].wifi_ssid, value.c_str());
20442081
else
20452082
strncpy(BlynkESP32_WM_config.WiFi_Creds[0].wifi_ssid, value.c_str(), sizeof(BlynkESP32_WM_config.WiFi_Creds[0].wifi_ssid) - 1);
20462083
}
2047-
else if (key == "pw")
2084+
else if (!pw_Updated && (key == String("pw")))
20482085
{
2049-
BLYNK_LOG2(BLYNK_F("pw = "), value.c_str());
2050-
2086+
pw_Updated = true;
20512087
number_items_Updated++;
2088+
20522089
if (strlen(value.c_str()) < sizeof(BlynkESP32_WM_config.WiFi_Creds[0].wifi_pw) - 1)
20532090
strcpy(BlynkESP32_WM_config.WiFi_Creds[0].wifi_pw, value.c_str());
20542091
else
20552092
strncpy(BlynkESP32_WM_config.WiFi_Creds[0].wifi_pw, value.c_str(), sizeof(BlynkESP32_WM_config.WiFi_Creds[0].wifi_pw) - 1);
20562093
}
2057-
2058-
else if (key == "id1")
2094+
else if (!id1_Updated && (key == String("id1")))
20592095
{
2060-
BLYNK_LOG2(BLYNK_F("id1 = "), value.c_str());
2061-
2096+
id1_Updated = true;
20622097
number_items_Updated++;
2098+
20632099
if (strlen(value.c_str()) < sizeof(BlynkESP32_WM_config.WiFi_Creds[1].wifi_ssid) - 1)
20642100
strcpy(BlynkESP32_WM_config.WiFi_Creds[1].wifi_ssid, value.c_str());
20652101
else
20662102
strncpy(BlynkESP32_WM_config.WiFi_Creds[1].wifi_ssid, value.c_str(), sizeof(BlynkESP32_WM_config.WiFi_Creds[1].wifi_ssid) - 1);
20672103
}
2068-
else if (key == "pw1")
2104+
else if (!pw1_Updated && (key == String("pw1")))
20692105
{
2070-
BLYNK_LOG2(BLYNK_F("pw1 = "), value.c_str());
2071-
2106+
pw1_Updated = true;
20722107
number_items_Updated++;
2108+
20732109
if (strlen(value.c_str()) < sizeof(BlynkESP32_WM_config.WiFi_Creds[1].wifi_pw) - 1)
20742110
strcpy(BlynkESP32_WM_config.WiFi_Creds[1].wifi_pw, value.c_str());
20752111
else
20762112
strncpy(BlynkESP32_WM_config.WiFi_Creds[1].wifi_pw, value.c_str(), sizeof(BlynkESP32_WM_config.WiFi_Creds[1].wifi_pw) - 1);
20772113
}
2078-
else if (key == "sv")
2114+
else if (!sv_Updated && (key == String("sv")))
20792115
{
2080-
BLYNK_LOG2(BLYNK_F("sv = "), value.c_str());
2081-
2116+
sv_Updated = true;
20822117
number_items_Updated++;
2118+
20832119
if (strlen(value.c_str()) < sizeof(BlynkESP32_WM_config.Blynk_Creds[0].blynk_server) - 1)
20842120
strcpy(BlynkESP32_WM_config.Blynk_Creds[0].blynk_server, value.c_str());
20852121
else
20862122
strncpy(BlynkESP32_WM_config.Blynk_Creds[0].blynk_server, value.c_str(), sizeof(BlynkESP32_WM_config.Blynk_Creds[0].blynk_server) - 1);
20872123
}
2088-
else if (key == "tk")
2124+
else if (!tk_Updated && (key == String("tk")))
20892125
{
2090-
BLYNK_LOG2(BLYNK_F("tk = "), value.c_str());
2091-
2126+
tk_Updated = true;
20922127
number_items_Updated++;
2128+
20932129
if (strlen(value.c_str()) < sizeof(BlynkESP32_WM_config.Blynk_Creds[0].blynk_token) - 1)
20942130
strcpy(BlynkESP32_WM_config.Blynk_Creds[0].blynk_token, value.c_str());
20952131
else
20962132
strncpy(BlynkESP32_WM_config.Blynk_Creds[0].blynk_token, value.c_str(), sizeof(BlynkESP32_WM_config.Blynk_Creds[0].blynk_token) - 1);
20972133
}
2098-
else if (key == "sv1")
2134+
else if (!sv1_Updated && (key == String("sv1")))
20992135
{
2100-
BLYNK_LOG2(BLYNK_F("sv1 = "), value.c_str());
2101-
2136+
sv1_Updated = true;
21022137
number_items_Updated++;
2138+
21032139
if (strlen(value.c_str()) < sizeof(BlynkESP32_WM_config.Blynk_Creds[1].blynk_server) - 1)
21042140
strcpy(BlynkESP32_WM_config.Blynk_Creds[1].blynk_server, value.c_str());
21052141
else
21062142
strncpy(BlynkESP32_WM_config.Blynk_Creds[1].blynk_server, value.c_str(), sizeof(BlynkESP32_WM_config.Blynk_Creds[1].blynk_server) - 1);
21072143
}
2108-
else if (key == "tk1")
2144+
else if (!tk1_Updated && (key == String("tk1")))
21092145
{
2110-
BLYNK_LOG2(BLYNK_F("tk1 = "), value.c_str());
2111-
2146+
tk1_Updated = true;
21122147
number_items_Updated++;
2148+
21132149
if (strlen(value.c_str()) < sizeof(BlynkESP32_WM_config.Blynk_Creds[1].blynk_token) - 1)
21142150
strcpy(BlynkESP32_WM_config.Blynk_Creds[1].blynk_token, value.c_str());
21152151
else
21162152
strncpy(BlynkESP32_WM_config.Blynk_Creds[1].blynk_token, value.c_str(), sizeof(BlynkESP32_WM_config.Blynk_Creds[1].blynk_token) - 1);
21172153
}
2118-
else if (key == "pt")
2154+
else if (!pt_Updated && (key == String("pt")))
21192155
{
2120-
BLYNK_LOG2(BLYNK_F("pt = "), value.toInt());
2121-
2156+
pt_Updated = true;
21222157
number_items_Updated++;
2158+
21232159
BlynkESP32_WM_config.blynk_port = value.toInt();
21242160
}
2125-
else if (key == "nm")
2161+
else if (!nm_Updated && (key == String("nm")))
21262162
{
2127-
BLYNK_LOG2(BLYNK_F("nm = "), value.c_str());
2128-
2163+
nm_Updated = true;
21292164
number_items_Updated++;
2165+
21302166
if (strlen(value.c_str()) < sizeof(BlynkESP32_WM_config.board_name) - 1)
21312167
strcpy(BlynkESP32_WM_config.board_name, value.c_str());
21322168
else
@@ -2136,9 +2172,12 @@ class BlynkWifi
21362172
#if USE_DYNAMIC_PARAMETERS
21372173
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
21382174
{
2139-
if (key == myMenuItems[i].id)
2175+
if ( !menuItemUpdated[i] && (key == myMenuItems[i].id) )
21402176
{
2141-
//BLYNK_LOG4(F("h:"), myMenuItems[i].id, F("="), value.c_str() );
2177+
BLYNK_LOG4(BLYNK_F("h:"), myMenuItems[i].id, BLYNK_F("="), value.c_str() );
2178+
2179+
menuItemUpdated[i] = true;
2180+
21422181
number_items_Updated++;
21432182

21442183
// Actual size of pdata is [maxlen + 1]

0 commit comments

Comments
 (0)