From 77de5a4d7106c02b81a7ee0a28b1a6089dd13799 Mon Sep 17 00:00:00 2001 From: EdgeNeko Date: Wed, 21 Jul 2021 21:26:35 +0800 Subject: [PATCH] feat: save Wifi ssid and pw in eeprom --- .../ESP8266_Network_Clock_12864SSD1306.ino | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/ESP8266_Network_Clock_12864SSD1306/ESP8266_Network_Clock_12864SSD1306.ino b/ESP8266_Network_Clock_12864SSD1306/ESP8266_Network_Clock_12864SSD1306.ino index 53d6362..b646571 100644 --- a/ESP8266_Network_Clock_12864SSD1306/ESP8266_Network_Clock_12864SSD1306.ino +++ b/ESP8266_Network_Clock_12864SSD1306/ESP8266_Network_Clock_12864SSD1306.ino @@ -35,13 +35,13 @@ #include #include +#define uint unsigned int //若屏幕使用SH1106,只需把SSD1306改为SH1106即可 //U8G2_SSD1306_128X64_NONAME_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/4, /* dc=*/5, /* reset=*/3); U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE); //U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ 4, /* data=*/ 5); //D-duino static const char ntpServerName[] = "ntp1.aliyun.com"; //NTP服务器,阿里云 -int timeZone = 8; //时区,北京时间为+8 WiFiUDP Udp; unsigned int localPort = 8888; // 用于侦听UDP数据包的本地端口 @@ -63,7 +63,9 @@ const unsigned char liu[] U8X8_PROGMEM = { typedef struct { //存储配置结构体 - int tz; //时间戳 + int tz; //时区 + char wifi_ssid[64]; + char wifi_pw[64]; } config_type; config_type config; @@ -88,11 +90,19 @@ void loadConfig() { *(p + i) = EEPROM.read(i); } - timeZone = config.tz; } -char sta_ssid[32] = {0}; //暂存WiFi名 -char sta_password[64] = {0}; //暂存WiFi密码 +void printConfig() { + Serial.println("===CONFIG==="); + Serial.print("TimeZone: "); + Serial.printf("%d\n",config.tz); + Serial.print("WIFI SSID: "); + Serial.println(config.wifi_ssid); + Serial.print("WIFI Password: "); + Serial.println(config.wifi_pw); +Serial.println("===END CONFIG==="); +} + const char *AP_NAME = "flyAkari"; //自定义8266AP热点名 //配网及目标日期设定html页面 const char *page_html = "\ @@ -136,8 +146,8 @@ void handleRootPost() if (server.hasArg("ssid")) { Serial.print("ssid:"); - strcpy(sta_ssid, server.arg("ssid").c_str()); - Serial.println(sta_ssid); + strcpy(config.wifi_ssid, server.arg("ssid").c_str()); + Serial.println(config.wifi_ssid); } else { @@ -148,8 +158,8 @@ void handleRootPost() if (server.hasArg("password")) { Serial.print("password:"); - strcpy(sta_password, server.arg("password").c_str()); - Serial.println(sta_password); + strcpy(config.wifi_pw, server.arg("password").c_str()); + Serial.println(config.wifi_pw); } else { @@ -162,7 +172,7 @@ void handleRootPost() Serial.print("timezone:"); char timeZone_s[4]; strcpy(timeZone_s, server.arg("timezone").c_str()); - timeZone = atoi(timeZone_s); + int timeZone = atoi(timeZone_s); if (timeZone > 13 || timeZone < -13) { timeZone = 8; @@ -192,7 +202,7 @@ void connectWiFi() { WiFi.mode(WIFI_STA); //切换为STA模式 WiFi.setAutoConnect(true); //设置自动连接 - WiFi.begin(sta_ssid, sta_password); + WiFi.begin(config.wifi_ssid, config.wifi_pw); Serial.println(""); Serial.print("Connect WiFi"); int count = 0; @@ -272,10 +282,10 @@ void setup() u8g2.print("192.168.4.1"); u8g2.sendBuffer(); Serial.println("OLED Ready"); - Serial.print("Connecting WiFi..."); loadConfig(); + printConfig(); Serial.print("Connecting WiFi..."); - WiFi.hostname("Smart-ESP8266"); + WiFi.hostname("8266DigitalClock"); connectWiFi(); Serial.println("Starting UDP"); Udp.begin(localPort); @@ -324,16 +334,16 @@ void oledClockDisplay() u8g2.setCursor(0, 14); if (isNTPConnected) { - if(timeZone>=0) + if(config.tz>=0) { u8g2.print("当前时间(UTC+"); - u8g2.print(timeZone); + u8g2.print(config.tz); u8g2.print(")"); } else { u8g2.print("当前时间(UTC"); - u8g2.print(timeZone); + u8g2.print(config.tz); u8g2.print(")"); } } @@ -422,8 +432,8 @@ time_t getNtpTime() secsSince1900 |= (unsigned long)packetBuffer[42] << 8; secsSince1900 |= (unsigned long)packetBuffer[43]; Serial.println(secsSince1900); - Serial.println(secsSince1900 - 2208988800UL + timeZone * SECS_PER_HOUR); - return secsSince1900 - 2208988800UL + timeZone * SECS_PER_HOUR; + Serial.println(secsSince1900 - 2208988800UL + config.tz * SECS_PER_HOUR); + return secsSince1900 - 2208988800UL + config.tz * SECS_PER_HOUR; } } Serial.println("No NTP Response :-("); //无NTP响应