mirror of
https://github.com/tzapu/WiFiManager.git
synced 2026-04-27 00:55:52 +03:00
[GH-ISSUE #831] AutoConnectWithFSParametersAndCustomIP #698
Labels
No labels
📶 WiFi
🕸️ HTTP
Branch
DEV Help Wanted
Discussion
Documentation
ESP32
Example
Good First Issue
Hotfix
In Progress
Incomplete
Needs Feeback
Priority
QA
Question
Task
Upstream/Dependancy
bug
duplicate
enhancement
invalid
pull-request
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/WiFiManager#698
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @eXadra on GitHub (Feb 21, 2019).
Original GitHub issue: https://github.com/tzapu/WiFiManager/issues/831
Dear all,
Im trying to use this example of the WifiManager for my ESp8266 applications but I cannot use it with fixed ip. This example given does not work.
The code is just the code as is in the example.
"
#include <FS.h> //this needs to be first, or it all crashes and burns...
#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino
//needed for library
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include "WiFiManager.h" //https://github.com/tzapu/WiFiManager
#include "ArduinoJson.h" //https://github.com/bblanchon/ArduinoJson
//define your default values here, if there are different values in config.json, they are overwritten.
//length should be max size + 1
char mqtt_server[40];
char mqtt_port[6] = "8080";
char blynk_token[33] = "YOUR_BLYNK_TOKEN";
//default custom static IP
char static_ip[16] = "192.168.1.180";
char static_gw[16] = "192.168.1.254";
char static_sn[16] = "255.255.255.0";
//flag for saving data
bool shouldSaveConfig = false;
//callback notifying us of the need to save config
void saveConfigCallback () {
Serial.println("Should save config");
shouldSaveConfig = true;
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println();
//read configuration from FS json
Serial.println("mounting FS...");
if (SPIFFS.begin()) {
Serial.println("mounted file system");
if (SPIFFS.exists("/config.json")) {
//file exists, reading and loading
Serial.println("reading config file");
File configFile = SPIFFS.open("/config.json", "r");
if (configFile) {
Serial.println("opened config file");
size_t size = configFile.size();
// Allocate a buffer to store contents of the file.
std::unique_ptr<char[]> buf(new char[size]);
} else {
Serial.println("failed to mount FS");
}
//end read
Serial.println(static_ip);
Serial.println(blynk_token);
Serial.println(mqtt_server);
WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40);
WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 5);
WiFiManagerParameter custom_blynk_token("blynk", "blynk token", blynk_token, 34);
WiFiManager wifiManager;
wifiManager.setSaveConfigCallback(saveConfigCallback);
//set static ip
IPAddress _ip,_gw,_sn;
_ip.fromString(static_ip);
_gw.fromString(static_gw);
_sn.fromString(static_sn);
wifiManager.setSTAStaticIPConfig(_ip, _gw, _sn);
//add all your parameters here
wifiManager.addParameter(&custom_mqtt_server);
wifiManager.addParameter(&custom_mqtt_port);
wifiManager.addParameter(&custom_blynk_token);
wifiManager.setMinimumSignalQuality();
if (!wifiManager.autoConnect("AutoConnectAP", "password")) {
Serial.println("failed to connect and hit timeout");
delay(3000);
//reset and try again, or maybe put it to deep sleep
ESP.reset();
delay(5000);
}
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
//read updated parameters
strcpy(mqtt_server, custom_mqtt_server.getValue());
strcpy(mqtt_port, custom_mqtt_port.getValue());
strcpy(blynk_token, custom_blynk_token.getValue());
//save the custom parameters to FS
if (shouldSaveConfig) {
Serial.println("saving config");
DynamicJsonBuffer jsonBuffer;
JsonObject& json = jsonBuffer.createObject();
json["mqtt_server"] = mqtt_server;
json["mqtt_port"] = mqtt_port;
json["blynk_token"] = blynk_token;
}
Serial.println("local ip");
Serial.println(WiFi.localIP());
Serial.println(WiFi.gatewayIP());
Serial.println(WiFi.subnetMask());
}
void loop() {
// put your main code here, to run repeatedly:
}
"
Debug when putting the setting:
*WM: Handle root
*WM: Sent config page
*WM: WiFi save
*WM: Parameter
*WM: server
*WM: 192.168.1.246
*WM: Parameter
*WM: port
*WM: 1883
*WM: Parameter
*WM: blynk
*WM: olamundo
*WM: static ip
*WM: 192.168.1.181
*WM: static gateway
*WM: 192.168.1.254
*WM: static netmask
*WM: 255.255.255.0
*WM: Sent wifi save page
*WM: Connecting to new AP
*WM: Connecting as wifi client...
*WM: Custom STA IP/GW/Subnet
*WM: 192.168.1.181
*WM: Already connected. Bailing out.
Should save config
connected...yeey :)
saving config
{
"mqtt_server": "192.168.1.246",
"mqtt_port": "1883",
"blynk_token": "olamundo",
"ip": "192.168.1.181",
"gateway": "192.168.1.254",
"subnet": "255.255.255.0"
}local ip
192.168.1.181
192.168.1.254
255.255.255.0
*WM: freeing allocated params!
but when I do a reset this is the debug:
mounting FS...
mounted file system
reading config file
opened config file
{"mqtt_server":"192.168.1.246","mqtt_port":"1883","blynk_token":"olamundo","ip":"192.168.1.181","gateway":"192.168.1.254","subnet":"255.255.255.0"}
parsed json
setting custom ip from config
192.168.1.181
192.168.1.181
olamundo
192.168.1.246
*WM: Adding parameter
*WM: server
*WM: Adding parameter
*WM: port
*WM: Adding parameter
*WM: blynk
*WM:
*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: Custom STA IP/GW/Subnet
*WM: 192.168.1.181
*WM: Using last saved values, should be faster
*WM: Connection result:
*WM: 0
*WM:
*WM: Configuring access point...
*WM: AutoConnectAP
*WM: password
*WM: AP IP address:
*WM: 192.168.4.1
*WM: HTTP server started
......
If I comment _wifiManager.setSTAStaticIPConfig(_ip, _gw, sn); the module sets dhcp and everithing works fine.
Thanks in advance.
@sischi commented on GitHub (May 12, 2019):
I'm facing the same issue. After first boot, the device will boot its config portal, as expected. After setting up wifi it will give me a
*WM: Already connected. Bailing out.but I can't reach the device (with a ping). After a reboot the device will boot its config portal again (and again, and again, ...).
If I use DHCP (by commenting the static configuration) all works as expected.
@tablatronix commented on GitHub (May 12, 2019):
try hotfixes branch