ลองเอาไปใช้ดูนะครับ ผมแชร์เผื่อคนอื่นๆ ที่สนใจด้วย
Node MCU ESP8266
ความต้องการของ Project (เพื่อป้องกันความผิดพลาดเรื่องของ Version และตรวจสอบย้อนหลังได้)
Arduino IDE Version 1.8.7
WiFiManager Version 0.14.0 (โหลด link ที่ให้ไป ผมปรับแต่งไว้แล้ว ด้านล่าง)
ArduinoJson Version 5.13.3
//-------------------------------------------------------------------------------------------------------------------------//
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
#include <FS.h>
#include <DNSServer.h>
#include <ArduinoJson.h>
#include <ESP8266HTTPClient.h>
//------------------------------------------------------------------------------------------------------------------------//
#include <TridentTD_LineNotify.h>
char line_token[45] = "";
String LineText;
String string1 = "https://www.google.com/maps/place/";
String string2 = ",+";
String string3 = "/@";
String string4 = "@";
String string5 = ",18z";
//------------------------------------------------------------------------------------------------------------------------//
#define D0 16 // ใช้ไฟ LED สีฟ้า ของบอร์ด MCU ESP8266 ให้มีสัญญาณไฟกระพริบ ตาม Code ที่เขียน
#define D3 0 // ใช้เป็นปุ่มกด เพื่อเข้า AP Config ได้ตามความต้องการของผู้ใช้
//------------------------------------------------------------------------------------------------------------------------//
bool shouldSaveConfig1 = false;
void saveConfigCallback1 () {
shouldSaveConfig1 = true;
Serial.println("Should save All Data config");
}
//-----------------------------------------------------------------------------------------------------------------------//
char latitude[15] = "7.795888";
char longitude[15] = "99.629156";
//------------------------------------------------------------------------------------------------------------------------//
//********************************************* void setup **************************************************//
//------------------------------------------------------------------------------------------------------------------------//
void setup() {
//-------IO NODE MCU Esp8266-------//
pinMode(D0, OUTPUT); //กำหนดโหมดใช้งานให้กับขา D0 เป็นขา สัญญาณไฟ ในสภาวะต่างๆ
pinMode(D3, INPUT_PULLUP);//กำหนดโหมดใช้งานให้กับขา D3 เป็นขา กดปุ่ม ค้าง เพื่อตั้งค่า AP config
// ให้ LED ทั้งหมดดับก่อน
digitalWrite(D0, LOW);//ให้หลอด LED สีฟ้าดับก่อน
Serial.begin(115200);
//-----------------------------------------------------------------------------------------------------------------------//
//read configuration from FS json
Serial.println("mounting FS...");
if (SPIFFS.begin()) {
//---------------------------------------------------------------------------------//
Serial.println("mounted Data file system");
if (SPIFFS.exists("/config1.json")) {
//file exists, reading and loading
Serial.println("reading Data config file");
File configFile1 = SPIFFS.open("/config1.json", "r");
if (configFile1) {
Serial.println("opened Data config file");
size_t size = configFile1.size();
// Allocate a buffer to store contents of the file.
std::unique_ptr<char[]> buf1(new char[size]);
configFile1.readBytes(buf1.get(), size);
DynamicJsonBuffer jsonBuffer;
JsonObject& json = jsonBuffer.parseObject(buf1.get());
json.printTo(Serial);
if (json.success()) {
Serial.println("\nparsed json");
strcpy(line_token, json["line_token"]);
strcpy(latitude, json["latitude"]);
strcpy(longitude, json["longitude"]);
} else {
Serial.println("failed to load Data file json config");
}
}
}
//---------------------------------------------------------------------------------//
} else {
Serial.println("failed to mount FS");
}
//end read
delay(1000);
//-----------------------------------------------------------------------------------------------------------------------//
WiFiManagerParameter custom_text0("<p> </p>");
WiFiManagerParameter custom_text1("<label>1: ID Line กลุ่ม</label>");
WiFiManagerParameter custom_text2("<label>2: latitude</label>");
WiFiManagerParameter custom_text3("<label>3: longitude</label>");
WiFiManagerParameter custom_line_token("LINE", "line_token", line_token, 45);
WiFiManagerParameter custom_latitude("latitude", "latitude", latitude, 15);
WiFiManagerParameter custom_longitude("longitude", "longitude", longitude, 15);
//WiFiManager
//Local intialization. Once its business is done, there is no need to keep it around
WiFiManager wifiManager;
//set config save notify callback
wifiManager.setSaveConfigCallback(saveConfigCallback1);
wifiManager.addParameter(&custom_text0);
wifiManager.addParameter(&custom_text1);
wifiManager.addParameter(&custom_line_token);
wifiManager.addParameter(&custom_text2);
wifiManager.addParameter(&custom_latitude);
wifiManager.addParameter(&custom_text3);
wifiManager.addParameter(&custom_longitude);
delay(1000);
for (int i = 5; i > -1; i--) { // นับเวลาถอยหลัง 5 วินาทีก่อนกดปุ่ม AP Config
digitalWrite(D0, LOW);
delay(500);
digitalWrite(D0, HIGH);
delay(500);
Serial.print (String(i) + " ");
}
if (digitalRead(D3) == LOW) {
digitalWrite(D0, LOW);
Serial.println("Button Pressed");
wifiManager.resetSettings();//ให้ล้างค่า SSID และ Password ที่เคยบันทึกไว้
// wifiManager.autoConnect(); ใช้สร้างชื่อแอคเซสพอยต์อันโนมัติจาก ESP + ChipID
if (!wifiManager.autoConnect("PUY IOT")) {
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);
}
}
Serial.println(": Connected.......OK!)");
strcpy(line_token, custom_line_token.getValue());
strcpy(latitude, custom_latitude.getValue());
strcpy(longitude, custom_longitude.getValue());
delay(1000);
//save the custom parameters to FS
if (shouldSaveConfig1) {
DynamicJsonBuffer jsonBuffer;
JsonObject& json = jsonBuffer.createObject();
//------------------------------------------------------------------
Serial.println("saving line config");
json["line_token"] = line_token;
File configFile1 = SPIFFS.open("/config1.json", "w");
//------------------------------------------------------------------
Serial.println("saving latitude config");
json["latitude"] = latitude;
File configFile2 = SPIFFS.open("/config1.json", "w");
//------------------------------------------------------------------
Serial.println("saving longitude config");
json["longitude"] = longitude;
File configFile3 = SPIFFS.open("/config1.json", "w");
//------------------------------------------------------------------
if (!configFile1) {
Serial.println("failed to open config file for writing");
}
json.printTo(configFile1);
configFile1.close();
json.printTo(configFile2);
configFile2.close();
json.printTo(configFile3);
configFile3.close();
}
delay(1000);
//-----------------------------------------------------------------------------------------------------------------------//
Serial.println();
Serial.print("local ip : ");
delay(100);
Serial.println(WiFi.localIP());
delay(100);
//-----------------------------------------------------------------------------------------------------------------------//
//Print เพื่อเชคว่าค่าที่บันทึกไว้ยังอยู่หรือไม่
Serial.println("เชคว่าค่าที่บันทึกไว้ยังอยู่หรือไม่");
Serial.print("line_token =");
Serial.println(line_token);
Serial.print("latitude = ");
Serial.println(latitude);
Serial.print("longitude = ");
Serial.println(longitude);
LINE.setToken(line_token);
LineText = string1 + latitude + string2 + longitude + string3 + latitude + string4 + longitude + string5;
void loop() {
}
//-----------------------------------------------------------------------------------------------------------------------//
Wifi Manager ใช้คู่กัน Download
ผมปรับหน้า Interface ไว้แล้ว เอาไปศึกษาดูนะครับ


