Archive Calculate
Blynk WiFiManager for ESP8266/ESP32 (including ESP32-S2, ESP32-C3) with Multi-WiFi and Multi-Blynk. Fix SSL issue for Blynk Cloud Server now

Blynk WiFiManager for ESP8266/ESP32 (including ESP32-S2, ESP32-C3) with Multi-WiFi and Multi-Blynk. Fix SSL issue for Blynk Cloud Server now

2024-11-25 Update Apr 8th 2020 Releases v1.0.10 WiFi Password max length is is now is 63 , accord to WPA2 standard Permit to input special chars such as % a

Related articles

Warframe Promo Codes List Opera VPN for Netflix: Does it Work? How To Watch Netflix US Store Graphical Assets (Steamworks Documentation) Top 11 benefits of cloud computing

Update Apr 8th 2020

Releases v1.0.10

  1. WiFi Password max length is is now is 63 , accord to WPA2 standard
  2. Permit to input special chars such as % and # into data fields. Thanks to brondolin to provide the amazing fix. See Issue 3.

Update Apr 9th 2020

Releases v1.0.11

severe connect bug . Please do n’t use v1.0.11

  1. New powerful-yet-simple-to-use feature to 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.
  2. Dynamic custom parameters to be saved automatically in EEPROM , or SPIFFS.

By just add the follow sample code snippet , you is add can add dynamic parameter and use them i your sketch . For example : MQTT credential , etc .

#define USE_DYNAMIC_PARAMETERS     true

/////////////// Start dynamic Credentials ///////////////

//Defined in <BlynkSimpleEsp8266_WM.h> and <BlynkSimpleEsp8266_SSL_WM.h>
/**************************************
  #define MAX_ID_LEN                5
  #define MAX_DISPLAY_NAME_LEN      16

  typedef struct
  {
  char id             [MAX_ID_LEN + 1];
  char displayName    [MAX_DISPLAY_NAME_LEN + 1];
  char *pdata;
  uint8_t maxlen;
  } MenuItem;
**************************************/

#if USE_DYNAMIC_PARAMETERS

#define MAX_MQTT_SERVER_LEN      34
char MQTT_Server  [MAX_MQTT_SERVER_LEN + 1]   = "";

#define MAX_MQTT_PORT_LEN        6
char MQTT_Port   [MAX_MQTT_PORT_LEN + 1]  = "";

#define MAX_MQTT_USERNAME_LEN      34
char MQTT_UserName  [MAX_MQTT_USERNAME_LEN + 1]   = "";

#define MAX_MQTT_PW_LEN        34
char MQTT_PW   [MAX_MQTT_PW_LEN + 1]  = "";

#define MAX_MQTT_SUBS_TOPIC_LEN      34
char MQTT_SubsTopic  [MAX_MQTT_SUBS_TOPIC_LEN + 1]   = "";

#define MAX_MQTT_PUB_TOPIC_LEN       34
char MQTT_PubTopic   [MAX_MQTT_PUB_TOPIC_LEN + 1]  = "";

MenuItem myMenuItems [] =
{
  { "mqtt", "MQTT Server",      MQTT_Server,      MAX_MQTT_SERVER_LEN },
  { "mqpt", "Port",             MQTT_Port,        MAX_MQTT_PORT_LEN   },
  { "user", "MQTT UserName",    MQTT_UserName,    MAX_MQTT_USERNAME_LEN },
  { "mqpw", "MQTT PWD",         MQTT_PW,          MAX_MQTT_PW_LEN },
  { "subs", "Subs Topics",      MQTT_SubsTopic,   MAX_MQTT_SUBS_TOPIC_LEN },
  { "pubs", "Pubs Topics",      MQTT_PubTopic,    MAX_MQTT_PUB_TOPIC_LEN },
};

uint16_t NUM_MENU_ITEMS = sizeof(myMenuItems) / sizeof(MenuItem);  //MenuItemSize;

#else

MenuItem myMenuItems [] = {};

uint16_t NUM_MENU_ITEMS = 0;
#endif

/////// // End dynamic Credentials ///////////

  • If you don’t need to add dynamic parameters, use the following in sketch
# is define define USE_DYNAMIC_PARAMETERS      false 

or

/////////////// Start dynamic Credentials ///////////////

MenuItem myMenuItems [] = {};

uint16_t NUM_MENU_ITEMS = 0;
/////// // End dynamic Credentials ///////////

First , connect your ( PC , Laptop , Tablet , phone , etc . ) WiFi is enter to config Portal AP , then enter the WiFi password :

After you connect , please , go to http://192.168.4.1 or the configured AP IP . The Config Portal screen is appear will appear :

Enter your WiFi and Blynk Credentials:

Important notes

  1. Now you can use hash tag # or % thank to brondolin to provide the amazing fix in v1.0.10 to permit input special char such as% and # into datum field . See issue 3 .
  2. The SSIDs is be , Passwords , BlynkServers and Tokens must be input ( or to make them different fromnothing) . Otherwise , the Config Portal is re will re – open until those field have been change . If you do n’t need any field , just input anything or use duplicate datum from similar field .
  3. WiFi password max length is is now is 63 char accord to WPA2 standard .

Then clicksave. The system is restart will auto – restart . You is see will see the board ’s build – in led turn OFF . That is means mean , it ’s already connect to your Blynk server successfully .

Updated April 13th 2020

Releases v1.0.12

  1. Fix severe bug in v1.0.11

Updated April 26th 2020

Major Releases v1.0.13

Releases v1.0.13

  1. Optional default Credentials as well as Dynamic parameters to be optionally autoloaded into Config Portal to use or change instead of manually input.
  2. DoubleDetectDetector feature to force Config Portal when double reset is detected within predetermined time, default 10s.
  3. configurableConfig Portal Title to be either HostName, BoardName or default undistinguishable names.
  4. Examples are redesigned to separate Credentials / Defines / Dynamic Params / Code so that you can change Credentials / Dynamic Params quickly for each device.

Thanks to thorathome in GitHub and thorathome in Blynk to test, suggest and encourage to add those new features in v1.0.13, such as Default Credentials/Dynamic Parms, configurableConfig Portal Title, DRD. See WM Config Portal using BlynkSimpleEsp32/8266_WM.h.

So, how it works?

If it cannot connect to the Blynk server in 30 seconds, no valid stored Credentials or Double Reset is detected within 10s, it will switch to configuration mode. You will see your built-in LED turned ON. In configuration mode, it is starts start an AP with default nameESP_xxxxxx and password MyESP_xxxxxx or configurable name and password you specify . The AP IP address is is is default at192.168.4.1 or configured IP (e.g. 192.168.200.1).

First , connect your ( PC , Laptop , Tablet , phone , etc . ) WiFi is enter to config Portal AP , then enter the WiFi password :

  1. If you is choose choosenot to load default Credentials and Dynamic Parameters

After you connected, please, go to http://192.168.4.1 or the configured AP IP. The following Config Portal screen will appear:

  1. If you is choose chooseto load default Credentials and Dynamic Parameters

After you connect , please , go to http://192.168.4.1 or the configured AP IP . The follow Config Portal screen is appear will appear :

Enter your WiFi and Blynk Credentials:

Then clicksave. The system is restart will auto – restart . You is see will see the board ’s build – in led turn OFF . That is means mean , it ’s already connect to your Blynk server successfully .

Important notes

  1. Now you can use special chars such as ~, !, @, #, $, %, ^, &, _, -, space,etc. thank to brondolin to provide the amazing fix in v1.0.10 to permit input special char such as% and # into datum field . See issue 3 .
  2. The SSIDs is be , Passwords , BlynkServers and Tokens must be input ( or to make them different fromnothing) . Otherwise , the Config Portal is re will re – open until those field have been change . If you do n’t need any field , just input anything or use duplicate datum from similar field .
  3. WiFi password max length is is now is 63 char accord to WPA2 standard .
  4. Sometimes, it’s hard or not possible to connect to Config Portal WiFi AP, the majority cases are caused by WiFi channel conflict if there are too many WiFi APs running around. Please use random ConfigPortal WiFi AP channel in sketch (see code snippet below) and reset the board so that another channel is used. Repeat until connection is OK
// Set config portal channel, default = 1. Use 0 => random channel from 1-13 to avoid conflict
  Blynk.setConfigPortalChannel(0);

How to use default Credentials and have them pre-loaded onto Config Portal

See this example and modify as necessary

  1. To load Default credential
bool LOAD_DEFAULT_CONFIG_DATA = true;
  1. To use system default to load “blank” when there is no valid Credentials
bool LOAD_DEFAULT_CONFIG_DATA = false;
  1. Example of Default Credentials
/// Start Default Config Data //////////////////

/*
  // Defined in <BlynkSimpleEsp32_WM.h> and <BlynkSimpleEsp32_SSL_WM.h>

  #define SSID_MAX_LEN      32
  #define PASS_MAX_LEN      64
  
  typedef struct
  {
  char wifi_ssid[SSID_MAX_LEN];
  char wifi_pw  [PASS_MAX_LEN];
  }  WiFi_Credentials;

  #define BLYNK_SERVER_MAX_LEN      32
  #define BLYNK_TOKEN_MAX_LEN       36

  typedef struct
  {
  char blynk_server[BLYNK_SERVER_MAX_LEN];
  char blynk_token [BLYNK_TOKEN_MAX_LEN];
  }  Blynk_Credentials;

  #define NUM_WIFI_CREDENTIALS      2
  #define NUM_BLYNK_CREDENTIALS     2

  typedef struct Configuration
  {
  char header         [16];
  WiFi_Credentials  WiFi_Creds  [NUM_WIFI_CREDENTIALS];
  Blynk_Credentials Blynk_Creds [NUM_BLYNK_CREDENTIALS];
  int  blynk_port;
  char board_name     [24];
  int  checkSum;
  } Blynk_WM_Configuration;

*/

bool LOAD_DEFAULT_CONFIG_DATA = true;
//bool LOAD_DEFAULT_CONFIG_DATA = false;

Blynk_WM_Configuration defaultConfig =
{
  //char header[16], dummy, not used
#if USE_SSL  
  "SSL",
#else
  "NonSSL",
#endif
  //WiFi_Credentials  WiFi_Creds  [NUM_WIFI_CREDENTIALS]
  //WiFi_Creds.wifi_ssid and WiFi_Creds.wifi_pw
  "SSID1", "password1",
  "SSID2", "password2",
  // Blynk_Credentials Blynk_Creds [NUM_BLYNK_CREDENTIALS];
  // Blynk_Creds.blynk_server and Blynk_Creds.blynk_token
  "account.ddns.net",     "token",
  "account.duckdns.org",  "token1", 
  //int  blynk_port;
#if USE_SSL
  9443,
#else
  8080,
#endif
  //char board_name     [24];
  "Air-Control",
  //int  checkSum, dummy, not used
  0
};

/////////// End Default Config Data /////////////

How to add dynamic parameters from sketch

  • To add custom parameter , just modify from the example below
#define USE_DYNAMIC_PARAMETERS      true

/////////////// Start dynamic Credentials ///////////////

//Defined in <BlynkSimpleEsp32_WM.h> and <BlynkSimpleEsp32_SSL_WM.h>
/**************************************
  #define MAX_ID_LEN                5
  #define MAX_DISPLAY_NAME_LEN      16

  typedef struct
  {
  char id             [MAX_ID_LEN + 1];
  char displayName    [MAX_DISPLAY_NAME_LEN + 1];
  char *pdata;
  uint8_t maxlen;
  } MenuItem;
**************************************/

#if USE_DYNAMIC_PARAMETERS

#define MAX_MQTT_SERVER_LEN      34
char MQTT_Server  [MAX_MQTT_SERVER_LEN + 1]   = "default-mqtt-server";

#define MAX_MQTT_PORT_LEN        6
char MQTT_Port   [MAX_MQTT_PORT_LEN + 1]  = "1883";

#define MAX_MQTT_USERNAME_LEN      34
char MQTT_UserName  [MAX_MQTT_USERNAME_LEN + 1]   = "default-mqtt-username";

#define MAX_MQTT_PW_LEN        34
char MQTT_PW   [MAX_MQTT_PW_LEN + 1]  = "default-mqtt-password";

#define MAX_MQTT_SUBS_TOPIC_LEN      34
char MQTT_SubsTopic  [MAX_MQTT_SUBS_TOPIC_LEN + 1]   = "default-mqtt-SubTopic";

#define MAX_MQTT_PUB_TOPIC_LEN       34
char MQTT_PubTopic   [MAX_MQTT_PUB_TOPIC_LEN + 1]  = "default-mqtt-PubTopic";

MenuItem myMenuItems [] =
{
  { "mqtt", "MQTT Server",      MQTT_Server,      MAX_MQTT_SERVER_LEN },
  { "mqpt", "Port",             MQTT_Port,        MAX_MQTT_PORT_LEN   },
  { "user", "MQTT UserName",    MQTT_UserName,    MAX_MQTT_USERNAME_LEN },
  { "mqpw", "MQTT PWD",         MQTT_PW,          MAX_MQTT_PW_LEN },
  { "subs", "Subs Topics",      MQTT_SubsTopic,   MAX_MQTT_SUBS_TOPIC_LEN },
  { "pubs", "Pubs Topics",      MQTT_PubTopic,    MAX_MQTT_PUB_TOPIC_LEN },
};

uint16_t NUM_MENU_ITEMS = sizeof(myMenuItems) / sizeof(MenuItem);  //MenuItemSize;

#else

MenuItem myMenuItems [] = {};

uint16_t NUM_MENU_ITEMS = 0;
#endif


/////// // End dynamic Credentials ///////////

  • If you don’t need to add dynamic parameters, use the following in sketch
# is define define USE_DYNAMIC_PARAMETERS      false 

or

/////////////// Start dynamic Credentials ///////////////

MenuItem myMenuItems [] = {};

uint16_t NUM_MENU_ITEMS = 0;
/////// // End dynamic Credentials ///////////