Skip to content

Commit 31d26b3

Browse files
committed
mqtt host and port configuration when in Access Point mode
1 parent 10882bf commit 31d26b3

10 files changed

+71
-25
lines changed

CMakeListsUser.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,9 @@ add_custom_target(
2222
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
2323
)
2424

25+
add_custom_target(
26+
ERASE_ALL
27+
COMMAND platformio.exe run --target erase
28+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
29+
)
30+

library.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"type": "git",
77
"url": "https://github.com/sblantipodi/arduino_bootstrapper.git"
88
},
9-
"version": "1.5.0",
9+
"version": "1.6.0",
1010
"examples": "examples/*.cpp",
1111
"exclude": "tests",
1212
"frameworks": "arduino",

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=Bootstrapper
2-
version=1.5.0
2+
version=1.6.0
33
author=Davide Perini <[email protected]>
44
maintainer=Davide Perini <[email protected]>
55
sentence=A client library for MQTT messaging.

platformio.ini

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ build_flags =
2424
'-D WIFI_DEVICE_NAME="ArduinoBootstrapper"'
2525
'-D MICROCONTROLLER_OTA_PORT=8199'
2626
'-D WIFI_SIGNAL_STRENGTH=0'
27-
'-D GATEWAY_IP=192,168,1,1'
28-
'-D DNS_IP=192,168,1,1'
29-
'-D MICROCONTROLLER_IP=192,168,1,99'
30-
'-D MQTT_SERVER_IP="192.168.1.3"'
27+
'-D GATEWAY_IP="192.168.1.1"'
28+
'-D DNS_IP="192.168.1.1"'
29+
'-D MICROCONTROLLER_IP="192.168.1.99"'
30+
'-D MQTT_SERVER_IP="192.168.1.3"'
3131
'-D MQTT_SERVER_PORT=1883'
3232
'-D MAX_RECONNECT=500'
3333
'-D MAX_JSON_OBJECT_SIZE=50'

src/BootstrapManager.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ void BootstrapManager::getMicrocontrollerInfo() {
179179

180180
helper.smartPrint(F("Flash: ")); helper.smartPrint(ESP.getFlashChipSize()/1024); helper.smartPrintln(F(" KB"));
181181
helper.smartPrint(F("Sketch: ")); helper.smartPrint(ESP.getSketchSize()/1024); helper.smartPrintln(F(" KB"));
182-
helper.smartPrint(F("IP: ")); helper.smartPrintln(IP);
182+
helper.smartPrint(F("IP: ")); helper.smartPrintln(microcontrollerIP);
183183
helper.smartPrintln(F("MAC: ")); helper.smartPrintln(WiFi.macAddress());
184184
helper.smartPrint(F("SDK: ")); helper.smartPrintln(ESP.getSdkVersion());
185185
// helper.smartPrint(F("Arduino Core: ")); helper.smartPrintln(ESP.getCoreVersion());
@@ -246,7 +246,7 @@ void BootstrapManager::drawInfoPage(String softwareVersion, String author) {
246246
void BootstrapManager::sendState(const char *topic, JsonObject objectToSend, String version) {
247247

248248
objectToSend["Whoami"] = WIFI_DEVICE_NAME;
249-
objectToSend["IP"] = IP;
249+
objectToSend["IP"] = microcontrollerIP;
250250
objectToSend["MAC"] = MAC;
251251
objectToSend["ver"] = version;
252252
objectToSend["time"] = timedate;
@@ -412,9 +412,12 @@ DynamicJsonDocument BootstrapManager::readSPIFFS(String filename) {
412412
bool BootstrapManager::isWifiConfigured() {
413413

414414
if (wifiManager.isWifiConfigured()) {
415+
microcontrollerIP = IP_MICROCONTROLLER;
415416
qsid = SSID;
416417
qpass = PASSWORD;
417418
OTApass = OTAPASSWORD;
419+
mqttIP = MQTT_SERVER;
420+
mqttPort = MQTT_PORT;
418421
mqttuser = MQTT_USERNAME;
419422
mqttpass = MQTT_PASSWORD;
420423
return true;
@@ -426,9 +429,12 @@ bool BootstrapManager::isWifiConfigured() {
426429
#endif
427430
if (mydoc.containsKey("qsid")) {
428431
Serial.println("Storage OK, restoring WiFi and MQTT config.");
432+
microcontrollerIP = helper.getValue(mydoc["microcontrollerIP"]);
429433
qsid = helper.getValue(mydoc["qsid"]);
430434
qpass = helper.getValue(mydoc["qpass"]);
431435
OTApass = helper.getValue(mydoc["OTApass"]);
436+
mqttIP = helper.getValue(mydoc["mqttIP"]);
437+
mqttPort = helper.getValue(mydoc["mqttPort"]);
432438
mqttuser = helper.getValue(mydoc["mqttuser"]);
433439
mqttpass = helper.getValue(mydoc["mqttpass"]);
434440
return true;

src/Configuration.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,21 +75,21 @@ const double WIFI_POWER = WIFI_SIGNAL_STRENGTH;
7575

7676
// GATEWAY IP
7777
#ifndef GATEWAY_IP
78-
#define GATEWAY_IP 192,168,1,1
78+
#define GATEWAY_IP "192.168.1.1"
7979
#endif
80-
const IPAddress IP_GATEWAY = IPAddress(GATEWAY_IP);
80+
const char* const IP_GATEWAY = GATEWAY_IP;
8181

8282
// DNS IP
8383
#ifndef DNS_IP
84-
#define DNS_IP 192,168,1,1
84+
#define DNS_IP "192.168.1.1"
8585
#endif
86-
const IPAddress IP_DNS = IPAddress(DNS_IP);
86+
const char* const IP_DNS = DNS_IP;
8787

8888
// STATIC IP FOR THE MICROCONTROLLER
8989
#ifndef MICROCONTROLLER_IP
90-
#define MICROCONTROLLER_IP 192,168,1,99
90+
#define MICROCONTROLLER_IP "192.168.1.99"
9191
#endif
92-
const IPAddress IP_MICROCONTROLLER = IPAddress(MICROCONTROLLER_IP);
92+
const char* const IP_MICROCONTROLLER = MICROCONTROLLER_IP;
9393

9494
// MQTT server IP
9595
#ifndef MQTT_SERVER_IP

src/Helpers.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,12 @@ int yoffset = 150;
3131
String haVersion = "";
3232
String IP = "";
3333
String MAC = "";
34+
String microcontrollerIP = "XXX";
3435
String qsid = "XXX";
3536
String qpass = "XXX";
3637
String OTApass = "XXX";
38+
String mqttIP = "XXX";
39+
String mqttPort = "XXX";
3740
String mqttuser = "XXX";
3841
String mqttpass = "XXX";
3942

src/Helpers.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,13 @@ extern bool lastPageScrollTriggered;
3838
extern int yoffset;
3939

4040
extern String haVersion;
41-
extern String IP;
4241
extern String MAC;
42+
extern String microcontrollerIP;
4343
extern String qsid;
4444
extern String qpass;
4545
extern String OTApass;
46+
extern String mqttIP;
47+
extern String mqttPort;
4648
extern String mqttuser;
4749
extern String mqttpass;
4850

src/QueueManager.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@ PubSubClient mqttClient(espClient);
2525
/********************************** SETUP MQTT QUEUE **********************************/
2626
void QueueManager::setupMQTTQueue(void (*callback)(char*, byte*, unsigned int)) {
2727

28-
mqttClient.setServer(MQTT_SERVER, MQTT_PORT);
28+
mqttClient.setServer(IPAddress(helper.getValue(mqttIP,'.',0).toInt(),
29+
helper.getValue(mqttIP,'.',1).toInt(),
30+
helper.getValue(mqttIP,'.',2).toInt(),
31+
helper.getValue(mqttIP,'.',3).toInt()), mqttPort.toInt());
2932
mqttClient.setCallback(callback);
3033
mqttClient.setBufferSize(MQTT_MAX_PACKET_SIZE);
3134

src/WifiManager.cpp

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,19 @@ void WifiManager::setupWiFi(void (*manageDisconnections)(), void (*manageHardwar
6868

6969
WiFi.mode(WIFI_STA); // Disable AP mode
7070
//WiFi.setSleepMode(WIFI_NONE_SLEEP);
71-
WiFi.setAutoConnect(true);
72-
WiFi.config(IP_MICROCONTROLLER, IP_DNS, IP_GATEWAY);
71+
WiFi.setAutoConnect(true);
72+
WiFi.config(IPAddress(helper.getValue(microcontrollerIP,'.',0).toInt(),
73+
helper.getValue(microcontrollerIP,'.',1).toInt(),
74+
helper.getValue(microcontrollerIP,'.',2).toInt(),
75+
helper.getValue(microcontrollerIP,'.',3).toInt()),
76+
IPAddress(helper.getValue(IP_GATEWAY,'.',0).toInt(),
77+
helper.getValue(IP_GATEWAY,'.',1).toInt(),
78+
helper.getValue(IP_GATEWAY,'.',2).toInt(),
79+
helper.getValue(IP_GATEWAY,'.',3).toInt()),
80+
IPAddress(helper.getValue(IP_DNS,'.',0).toInt(),
81+
helper.getValue(IP_DNS,'.',1).toInt(),
82+
helper.getValue(IP_DNS,'.',2).toInt(),
83+
helper.getValue(IP_DNS,'.',3).toInt()));
7384
#if defined(ESP8266)
7485
WiFi.hostname(WIFI_DEVICE_NAME);
7586
// Set wifi power in dbm range 0/0.25, set to 0 to reduce PIR false positive due to wifi power, 0 low, 20.5 max.
@@ -112,9 +123,9 @@ void WifiManager::setupWiFi(void (*manageDisconnections)(), void (*manageHardwar
112123
}
113124

114125
helper.smartPrintln(F("WIFI CONNECTED"));
115-
IP = WiFi.localIP().toString();
126+
microcontrollerIP = WiFi.localIP().toString();
116127
MAC = WiFi.macAddress();
117-
helper.smartPrintln(IP);
128+
helper.smartPrintln(microcontrollerIP);
118129

119130
delay(DELAY_1500);
120131

@@ -286,9 +297,12 @@ void WifiManager::createWebServer() {
286297
content += "</h1>";
287298
content += htmlString;
288299
content += "<br><br><form method='get' action='setting' id='form1'>";
300+
content += "<label for='microcontrollerIP'>IP ADDRESS</label><input type='text' id='microcontrollerIP' name='microcontrollerIP'>";
289301
content += "<label for='ssid'>SSID</label><input type='text' id='ssid' name='ssid'>";
290302
content += "<label for='pass'>WIFI PASSWORD</label><input type='password' id='pass' name='pass'>";
291303
content += "<label for='OTApass'>OTA PASSWORD</label><input type='password' id='OTApass' name='OTApass'>";
304+
content += "<label for='mqttIP'>MQTT SERVER IP</label><input type='text' id='mqttIP' name='mqttIP'>";
305+
content += "<label for='mqttPort'>MQTT SERVER PORT</label><input type='text' id='mqttPort' name='mqttPort'>";
292306
content += "<label for='mqttuser'>MQTT USERNAME</label><input type='text' id='mqttuser' name='mqttuser'>";
293307
content += "<label for='mqttpass'>MQTT PASSWORD</label><input type='password' id='mqttpass' name='mqttpass'>";
294308
content += "</form><br><br><button type='submit' form='form1' value='Submit' class='button button3'>STORE CONFIG</button><br><br><br></div></body>";
@@ -297,30 +311,42 @@ void WifiManager::createWebServer() {
297311
});
298312

299313
server.on("/setting", []() {
314+
String microcontrollerIP = server.arg("microcontrollerIP");
300315
String qsid = server.arg("ssid");
301316
String qpass = server.arg("pass");
317+
String mqttIP = server.arg("mqttIP");
318+
String mqttPort = server.arg("mqttPort");
302319
String OTApass = server.arg("OTApass");
303320
String mqttuser = server.arg("mqttuser");
304321
String mqttpass = server.arg("mqttpass");
305322

306-
if (qsid.length() > 0 && qpass.length() > 0 && OTApass.length() > 0 && mqttuser.length() > 0 && mqttpass.length() > 0) {
307-
323+
if (microcontrollerIP.length() > 0 && qsid.length() > 0 && qpass.length() > 0 && OTApass.length() > 0 && mqttIP.length() > 0 && mqttPort.length() > 0 && mqttuser.length() > 0 && mqttpass.length() > 0) {
324+
325+
Serial.println("microcontrollerIP");
326+
Serial.println(microcontrollerIP);
308327
Serial.println("qsid");
309328
Serial.println(qsid);
310329
Serial.println("qpass");
311330
Serial.println(qpass);
312331
Serial.println("OTApass");
313332
Serial.println(OTApass);
333+
Serial.println("mqttIP");
334+
Serial.println(mqttIP);
335+
Serial.println("mqttPort");
336+
Serial.println(mqttPort);
314337
Serial.println("mqttuser");
315338
Serial.println(mqttuser);
316339
Serial.println("mqttpass");
317340
Serial.println(mqttpass);
318341

319342
DynamicJsonDocument doc(1024);
320-
doc["qsid"] = qsid;
343+
doc["microcontrollerIP"] = microcontrollerIP;
344+
doc["qsid"] = qsid;
321345
doc["qpass"] = qpass;
322-
doc["OTApass"] = OTApass;
323-
doc["mqttuser"] = mqttuser;
346+
doc["OTApass"] = OTApass;
347+
doc["mqttIP"] = mqttIP;
348+
doc["mqttPort"] = mqttPort;
349+
doc["mqttuser"] = mqttuser;
324350
doc["mqttpass"] = mqttpass;
325351

326352
#if defined(ESP8266)

0 commit comments

Comments
 (0)