{"id":815,"date":"2026-04-06T20:58:21","date_gmt":"2026-04-06T18:58:21","guid":{"rendered":"https:\/\/avlos.gr\/wpress\/?p=815"},"modified":"2026-04-06T20:58:22","modified_gmt":"2026-04-06T18:58:22","slug":"esp32-webserver-%ce%bc%ce%b5-%ce%b1%cf%85%cf%84%cf%8c%ce%bc%ce%b1%cf%84%ce%bf-wi-fi-setup","status":"publish","type":"post","link":"https:\/\/avlos.gr\/wpress\/esp32-webserver-%ce%bc%ce%b5-%ce%b1%cf%85%cf%84%cf%8c%ce%bc%ce%b1%cf%84%ce%bf-wi-fi-setup\/","title":{"rendered":"ESP32 WebServer \u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03bf Wi-Fi Setup"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u039f \u03bc\u03b9\u03ba\u03c1\u03bf\u03b5\u03bb\u03b5\u03ba\u03c4\u03ae\u03c2 ESP32 \u03ad\u03c7\u03b5\u03b9 \u03c4\u03b7 \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03bd\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03c3\u03b5\u03b9 wifi \u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03bc\u03b5 \u03b4\u03cd\u03bf \u03c4\u03c1\u03cc\u03c0\u03bf\u03c5\u03c2, \u03b5\u03af\u03c4\u03b5 \u03c6\u03c4\u03b9\u03ac\u03c7\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03ad\u03bd\u03b1 Access Point (AP) \u03cc\u03c0\u03bf\u03c5 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd <strong>Wi-Fi hotspot (router)<\/strong> \u03b5\u03af\u03c4\u03b5 \u03c6\u03c4\u03b9\u03ac\u03c7\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03ad\u03bd\u03b1 Station (STA) \u03cc\u03c0\u03bf\u03c5 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd <strong>\u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 (client)<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0397 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf\u03c5 Access Point \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03c3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03bc\u03c0\u03bf\u03c1\u03ad\u03c3\u03b5\u03b9 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af \u03ad\u03bd\u03b1 \u03ba\u03b9\u03bd\u03b7\u03c4\u03cc \u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03ae \u03bf browser \u03b5\u03bd\u03cc\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae \u03bc\u03b5 \u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03c0\u03bf\u03c5 \u03ad\u03c7\u03b5\u03b9 \u03c4\u03bf\u03bd ESP32. \u03a3\u03c4\u03bf \u03ba\u03b9\u03bd\u03b7\u03c4\u03cc \u03ae \u03c3\u03c4\u03bf\u03bd \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c8\u03ac\u03be\u03bf\u03c5\u03bc\u03b5 \u03c4\u03b1 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b1 wifi \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03bf\u03cd\u03bc\u03b5 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 ESP32. \u03a3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03cc\u03c4\u03b1\u03bd \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd Access Point \u03c0\u03b1\u03af\u03c1\u03bd\u03b5\u03b9 by default ip address 192.168.4.1 \u039c\u03ad\u03c3\u03b1 \u03b1\u03c0\u03cc \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c0\u03b1\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c3\u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03c4\u03bf\u03c5 ESP32 \u03b4\u03b9\u03ac\u03c6\u03bf\u03c1\u03bf\u03b9 \u03c0\u03b1\u03c1\u03ac\u03bc\u03b5\u03c4\u03c1\u03bf\u03b9 \u03cc\u03c0\u03c9\u03c2 ssid, password, \u03ae \u03cc\u03c4\u03b9 \u03ac\u03bb\u03bb\u03bf \u03b8\u03b5\u03c9\u03c1\u03b5\u03af\u03c4\u03b1\u03b9 \u03ba\u03c1\u03af\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03b9 \u03bd\u03b1 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03b1\u03c5\u03c4\u03cc\u03bd\u03bf\u03bc\u03b1. \u038c\u03c4\u03b1\u03bd \u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b5 Access Point Mode \u03b4\u03b5\u03bd \u03c3\u03c5\u03bd\u03b4\u03ad\u03b5\u03c4\u03b1\u03b9 \u03bc\u03b5 \u03c4\u03bf internet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u03a3\u03c4\u03b7\u03bd \u03c0\u03b5\u03c1\u03af\u03c0\u03c4\u03c9\u03c3\u03b7 \u03c0\u03bf\u03c5 \u03bf ESP32 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b5 Station Mode (STA) \u03b4\u03b7\u03bb\u03b1\u03b4\u03ae \u03c3\u03b1\u03bd \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 client, \u03c4\u03cc\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03ad\u03bd\u03b1 \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03bd wi-fi, \u03c0\u03b1\u03af\u03c1\u03bd\u03b5\u03b9 ip address \u03b1\u03c0\u03cc \u03c4\u03bf router \u03ba\u03b1\u03b9 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf internet \u03ae \u03c3\u03b5 \u03ac\u03bb\u03bb\u03b5\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u03a5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ba\u03b1\u03b9 \u03bf \u03c3\u03cd\u03bd\u03b8\u03b5\u03c4\u03bf\u03c2 \u03c4\u03c1\u03cc\u03c0\u03bf\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 STA + AP \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03c3\u03c0\u03ac\u03bd\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03c0\u03c4\u03ce\u03c3\u03b5\u03b9\u03c2 debugging .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u039c\u03b9\u03ba\u03c1\u03bf\u03b5\u03bb\u03b5\u03b3\u03ba\u03c4\u03ad\u03c2 \u03cc\u03c0\u03c9\u03c2 \u03c4\u03bf ESP32 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03bf\u03cd\u03bd NVS (Non-Volatile Storage), \u03cc\u03c0\u03bf\u03c5 \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03bd\u03b1 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03c4\u03bf\u03cd\u03bd \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03cc\u03c0\u03c9\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2, \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03af \u03ae strings \u03c0\u03bf\u03c5 \u03b4\u03b5\u03bd \u03c7\u03ac\u03bd\u03bf\u03bd\u03c4\u03b1\u03b9 \u03cc\u03c4\u03b1\u03bd \u03ba\u03bb\u03b5\u03af\u03bd\u03b5\u03b9 \u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae. \u03a3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u201cPreferences.h\u201d \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c5\u03bb\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03b1\u03c5\u03c4\u03ae \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u039c\u03b9\u03b1 \u03ad\u03ba\u03c6\u03c1\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03bc\u03bf\u03c1\u03c6\u03ae\u03c2 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7 \u03c4\u03c9\u03bd \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03c9\u03bd \u03c4\u03b9\u03bc\u03ce\u03bd ssid \u03ba\u03b1\u03b9 passs \u03c0\u03bf\u03c5 \u03b2\u03c1\u03af\u03c3\u03ba\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c3\u03c4\u03b7\u03bd \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u03c0\u03bf\u03c5 \u03ad\u03c7\u03bf\u03c5\u03bc\u03b5 \u03bf\u03bd\u03bf\u03bc\u03b1\u03c4\u03af\u03c3\u03b5\u03b9 wifi. \u03a4\u03bf true \u03c3\u03b7\u03bc\u03b1\u03af\u03bd\u03b5\u03b9 \u03cc\u03c4\u03b9 \u03b7 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u03ad\u03c7\u03b5\u03b9 \u03b1\u03bd\u03bf\u03af\u03be\u03b5\u03b9 \u03bc\u03cc\u03bd\u03bf \u03b3\u03b9\u03b1 \u03b4\u03b9\u03ac\u03b2\u03b1\u03c3\u03bc\u03b1.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; prefs.begin(\"wifi\", true);\n&nbsp; savedSSID = prefs.getString(\"ssid\", \"\");\n&nbsp; savedPASS = prefs.getString(\"pass\", \"\");\n&nbsp; prefs.end();\n\n\u0391\u03bd\u03c4\u03af\u03c3\u03c4\u03bf\u03b9\u03c7\u03b1 \u03bc\u03b9\u03b1 \u03ad\u03ba\u03c6\u03c1\u03b1\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03bc\u03bf\u03c1\u03c6\u03ae\u03c2 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c4\u03c9\u03bd \u03c4\u03b9\u03bc\u03ce\u03bd ssid \u03ba\u03b1\u03b9 passs \u03c3\u03c4\u03b7\u03bd \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u03c0\u03bf\u03c5 \u03bf\u03c1\u03af\u03b6\u03bf\u03c5\u03bc\u03b5 \u03bc\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 wifi. \u03a4\u03bf false \u03c3\u03c4\u03b7\u03bd begin \u03c3\u03b7\u03bc\u03b1\u03af\u03bd\u03b5\u03b9 \u03cc\u03c4\u03b9 \u03b7 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u03ad\u03c7\u03b5\u03b9 \u03b1\u03bd\u03bf\u03af\u03be\u03b5\u03b9 \u03b3\u03b9\u03b1 \u03b3\u03c1\u03ac\u03c8\u03b9\u03bc\u03bf \u03ba\u03b1\u03b9 \u03b4\u03b9\u03ac\u03b2\u03b1\u03c3\u03bc\u03b1.\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>prefs.begin(\"wifi\", false);\nprefs.putString(\"ssid\", ssid);\nprefs.putString(\"pass\", pass);\nprefs.end();\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u03a3\u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1 \u03b5\u03c0\u03ad\u03bb\u03b5\u03be\u03b1 \u03c4\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b5\u03bd\u03cc\u03c2 WebServer \u03bc\u03b5 \u03c4\u03bf\u03bd ESP32 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b4\u03b5\u03af\u03be\u03c9 \u03c0\u03c9\u03c2 \u03bc\u03b5 \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03b1\u03bd\u03ad\u03c0\u03c4\u03c5\u03be\u03b1 \u03c0\u03b1\u03c1\u03b1\u03c0\u03ac\u03bd\u03c9 \u03bc\u03c0\u03bf\u03c1\u03ce \u03bd\u03b1 \u03b5\u03be\u03b1\u03c3\u03c6\u03b1\u03bb\u03af\u03c3\u03c9 \u03ad\u03bd\u03b1 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03bf wifi setup. \u0388\u03c4\u03c3\u03b9 \u03ba\u03ac\u03b8\u03b5 \u03c6\u03bf\u03c1\u03ac \u03c0\u03bf\u03c5 \u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03bc\u03bf\u03c5 \u03b1\u03bb\u03bb\u03ac\u03b6\u03b5\u03b9 \u03c4\u03cc\u03c0\u03bf \u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03bc\u03c0\u03bf\u03c1\u03ce \u03b1\u03c0\u03bb\u03ac \u03bd\u03b1 \u03c4\u03b7 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c9 \u03c3\u03c4\u03bf \u03bd\u03ad\u03bf wifi \u03b4\u03af\u03ba\u03c4\u03c5\u03bf. \u0395\u03be\u03ac\u03bb\u03bb\u03bf\u03c5 \u03b1\u03c5\u03c4\u03cc \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03bd\u03b1 \u03c4\u03bc\u03ae\u03bc\u03b1 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03b1\u03bd\u03b1\u03b2\u03ac\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u201cESP32 WebServer\u201d \u03b4\u03b7\u03bb\u03b1\u03b4\u03ae \u03c4\u03bf\u03c5 \u03bc\u03b5\u03c4\u03b5\u03c9\u03c1\u03bf\u03bb\u03bf\u03b3\u03b9\u03ba\u03bf\u03cd \u03c3\u03c4\u03b1\u03b8\u03bc\u03bf\u03cd, \u03c0\u03bf\u03c5 \u03c3\u03b1\u03c2 \u03c0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03b6\u03c9 \u03c3\u03c4\u03bf \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03cc \u03ac\u03c1\u03b8\u03c1\u03bf.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u03a3\u03c4\u03bf\u03bd \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1 \u03c0\u03bf\u03c5 \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03b5\u03af \u03b2\u03bb\u03ad\u03c0\u03bf\u03c5\u03bc\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03bf setup \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03b5\u03af \u03bd\u03b1 \u03b1\u03bd\u03b1\u03ba\u03c4\u03ae\u03c3\u03b5\u03b9 ssid \u03ba\u03b1\u03b9 pass \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u03c4\u03b7\u03c2 Non-Volatile \u03bc\u03bd\u03ae\u03bc\u03b7\u03c2 \u03bc\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 wifi. \u0391\u03bd \u03b1\u03c5\u03c4\u03ac \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03c4\u03cc\u03c4\u03b5 \u03ba\u03b1\u03bb\u03b5\u03af connectToWiFi() \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03ac \u03c3\u03c4\u03b7\u03bd \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bc\u03b5 \u03c4\u03bf wifi. \u0391\u03bd \u03b1\u03c5\u03c4\u03ac \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd (\u03ae \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c9\u03c3\u03c4\u03ac, \u03b1\u03c5\u03c4\u03cc \u03b8\u03b1 \u03c4\u03bf \u03b4\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd connectToWiFi) \u03c4\u03cc\u03c4\u03b5 \u03ba\u03b1\u03bb\u03b5\u03af \u03c4\u03b7\u03bd startAP() \u03b7 \u03bf\u03c0\u03bf\u03af\u03b1 \u03b2\u03ac\u03b6\u03b5\u03b9 \u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03c3\u03b5 Access Point Mode (AP) \u03c0\u03c1\u03bf\u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03bd\u03b1 \u03b1\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03b5\u03b9 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c3\u03b5\u03b9 \u03c4\u03b1 \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u039f\u03b9 \u03c0\u03c1\u03ce\u03c4\u03b5\u03c2 \u03b5\u03bd\u03c4\u03bf\u03bb\u03ad\u03c2 \u03c4\u03b7\u03c2 startAP() \u03b5\u03af\u03bd\u03b1\u03b9 \u03b7 WiFi.mode(WIFI_AP) \u03c0\u03bf\u03c5 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af \u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2 \u03c3\u03b5 AP \u03ba\u03b1\u03b9 \u03b7 WiFi.softAP(&#8220;ESP32_Setup&#8221;, &#8220;12345678&#8221;); \u03c0\u03bf\u03c5 \u03b4\u03af\u03bd\u03b5\u03b9 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 &#8220;ESP32_Setup&#8221; \u03c3\u03c4\u03bf wifi \u03ba\u03b1\u03b9 \u03bf\u03c1\u03af\u03b6\u03b5\u03b9 password \u03c4\u03bf &#8220;12345678&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0397 startAP() \u03b1\u03c6\u03bf\u03cd \u03bf\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03c3\u03b5\u03b9 \u03c4\u03bf \u03ad\u03c1\u03b3\u03bf \u03c4\u03b7\u03c2 \u03ba\u03b1\u03bb\u03b5\u03af \u03c4\u03b7\u03bd ESP.restart() \u03b7 \u03bf\u03c0\u03bf\u03af\u03b1 \u03ba\u03ac\u03bd\u03b5\u03b9 restart \u03c4\u03bf\u03bd ESP32. \u0391\u03c5\u03c4\u03ae \u03c4\u03b7 \u03c6\u03bf\u03c1\u03ac, \u03ba\u03b1\u03b9 \u03b5\u03c6\u03cc\u03c3\u03bf\u03bd \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03c0\u03bf\u03c5 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c3\u03b1\u03bc\u03b5 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c9\u03c3\u03c4\u03ac, \u03b8\u03b1 \u03ba\u03bb\u03b7\u03b8\u03b5\u03af \u03b7 connectToWiFi() \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03b9 \u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03bc\u03b5 \u03c4\u03bf wifi \u03c4\u03bf\u03c5 router \u03c0\u03bf\u03c5 \u03b5\u03c0\u03b9\u03b8\u03c5\u03bc\u03bf\u03cd\u03bc\u03b5. \u03a0\u03b1\u03c1\u03b1\u03c4\u03b7\u03c1\u03bf\u03cd\u03bc\u03b5 \u03cc\u03c4\u03b9 \u03b7 connectToWiFi() \u03b1\u03c6\u03bf\u03cd \u03b4\u03ce\u03c3\u03b5\u03b9 ip address \u03c3\u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03c4\u03b5\u03bb\u03b5\u03b9\u03ce\u03bd\u03b5\u03b9 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03ba\u03bb\u03ae\u03c3\u03b7 \u03c4\u03b7\u03c2 startServer(). \u0397 startServer() \u03b2\u03ac\u03b6\u03b5\u03b9 \u03c3\u03b5 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf web server, \u03c3\u03c4\u03b7\u03bd \u03c0\u03b5\u03c1\u03af\u03c0\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03b1\u03b4\u03b5\u03af\u03b3\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b7 \u03ba\u03bb\u03ae\u03c3\u03b7 \u03c3\u03c4\u03bf server \u03b3\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 <a href=\"http:\/\/ip\/\">http:\/\/ip<\/a>address\/hello \u03ba\u03b1\u03b9 \u03b7 \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf server \u03b5\u03af\u03bd\u03b1\u03b9 \u201cHello from ESP32 .-\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u03a4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03bf\u03c5 \u03b4\u03b9\u03b1\u03b2\u03ac\u03b6\u03b5\u03c4\u03b5 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03bf \u03ba\u03b1\u03c4\u03b5\u03b2\u03ac\u03c3\u03b5\u03c4\u03b5 \u03b1\u03c0\u03cc  <a href=\"https:\/\/avlos.gr\/wpress\/download\/esp32-webserver-with-automatic-wi-fi-setup\/\">\u03b5\u03b4\u03ce<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>#include &lt;WiFi.h>\n#include &lt;WebServer.h>\n#include &lt;Preferences.h>\n\nWebServer server(80);\nPreferences prefs;\n\nString savedSSID;\nString savedPASS;\n\nbool wifiConnected = false;\n\n\n\/\/ ================== SETUP ==================\nvoid setup() {\n  Serial.begin(115200);\n  delay(1000);\n\n  prefs.begin(\"wifi\", true);\n  savedSSID = prefs.getString(\"ssid\", \"\");\n  savedPASS = prefs.getString(\"pass\", \"\");\n  prefs.end();\n\n  if (savedSSID != \"\") {\n    connectToWiFi();\n  } else {\n    startAP();\n  }\n}\n\n\/\/ ================== LOOP ==================\nvoid loop() {\n  server.handleClient();\n}\n\n\/\/ ================== CONNECT TO WIFI ==================\nvoid connectToWiFi() {\n  Serial.println(\"Connecting to saved WiFi...\");\n\n  WiFi.mode(WIFI_STA);       \n  WiFi.begin(savedSSID.c_str(), savedPASS.c_str());\n\n  int timeout = 20;\n  while (WiFi.status() != WL_CONNECTED &amp;&amp; timeout-- > 0) {\n    delay(500);\n    Serial.print(\".\");\n  }\n\n  if (WiFi.status() == WL_CONNECTED) {\n    Serial.println(\"\\nConnected!\");\n    Serial.print(\"IP: \");\n    Serial.println(WiFi.localIP());\n\n    wifiConnected = true;\n    startServer();\n\n  } else {\n    Serial.println(\"\\nFailed. Starting AP...\");\n    startAP();\n  }\n}\n\n\/\/ ================== START AP ==================\nvoid startAP() {\n  WiFi.mode(WIFI_AP);            \n  WiFi.softAP(\"ESP32_Setup\", \"12345678\");\n\n  Serial.print(\"AP IP: \");\n  Serial.println(WiFi.softAPIP());\n\n  \/\/ ROOT\n  server.on(\"\/\", &#91;]() {\n    String page = \"&lt;h2>WiFi Setup&lt;\/h2>\";\n    page += \"&lt;a href='\/scan'>Scan WiFi&lt;\/a>\";\n    server.send(200, \"text\/html\", page);\n  });\n\n  \/\/ SCAN\n  server.on(\"\/scan\", &#91;]() {\n    int n = WiFi.scanNetworks();\n\n    String page = \"&lt;h3>Select WiFi&lt;\/h3>\";\n\n    for (int i = 0; i &lt; n; i++) {\n      String ssid = WiFi.SSID(i);\n      page += \"&lt;a href='\/set?ssid=\" + ssid + \"'>\" + ssid + \"&lt;\/a>&lt;br>\";\n    }\n\n    server.send(200, \"text\/html\", page);\n  });\n\n  \/\/ SET PASSWORD\n  server.on(\"\/set\", &#91;]() {\n    String ssid = server.arg(\"ssid\");\n\n    String page = \"&lt;h3>\" + ssid + \"&lt;\/h3>\";\n    page += \"&lt;form action='\/save'>\";\n    page += \"&lt;input type='hidden' name='ssid' value='\" + ssid + \"'>\";\n    page += \"Password:&lt;br>\";\n    page += \"&lt;input type='password' name='pass'>&lt;br>&lt;br>\";\n    page += \"&lt;input type='submit' value='Connect'>\";\n    page += \"&lt;\/form>\";\n\n    server.send(200, \"text\/html\", page);\n  });\n\n  \/\/ SAVE + CONNECT\n  server.on(\"\/save\", &#91;]() {\n    String ssid = server.arg(\"ssid\");\n    String pass = server.arg(\"pass\");\n\n    prefs.begin(\"wifi\", false);\n    prefs.putString(\"ssid\", ssid);\n    prefs.putString(\"pass\", pass);\n    prefs.end();\n\n    server.send(200, \"text\/html\", \"&lt;h3>Saved. Rebooting...&lt;\/h3>\");\n    delay(1000);\n    ESP.restart();\n  });\n\n  server.begin();\n}\n\n\/\/ ================== NORMAL SERVER ==================\nvoid startServer() {\n\n  \/\/ Test endpoint\n  server.on(\"\/\", &#91;]() {\n    server.send(200, \"text\/plain\", \"ESP32 is running\");\n  });\n\n  server.on(\"\/hello\", &#91;]() {\n    server.send(200, \"text\/plain\", \"Hello from ESP32 .-\" );\n  });\n\n  server.begin();\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u039f \u03bc\u03b9\u03ba\u03c1\u03bf\u03b5\u03bb\u03b5\u03ba\u03c4\u03ae\u03c2 ESP32 \u03ad\u03c7\u03b5\u03b9 \u03c4\u03b7 \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03bd\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03c3\u03b5\u03b9 wifi \u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03bc\u03b5 \u03b4\u03cd\u03bf \u03c4\u03c1\u03cc\u03c0\u03bf\u03c5\u03c2, \u03b5\u03af\u03c4\u03b5 \u03c6\u03c4\u03b9\u03ac\u03c7\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03ad\u03bd\u03b1 Access Point (AP) \u03cc\u03c0\u03bf\u03c5 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd Wi-Fi hotspot (router) \u03b5\u03af\u03c4\u03b5 \u03c6\u03c4\u03b9\u03ac\u03c7\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03ad\u03bd\u03b1 Station (STA) \u03cc\u03c0\u03bf\u03c5 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 (client). \u0397 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf\u03c5 Access Point&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,197],"tags":[],"class_list":["post-815","post","type-post","status-publish","format-standard","hentry","category-10","category-diadiktio"],"_links":{"self":[{"href":"https:\/\/avlos.gr\/wpress\/wp-json\/wp\/v2\/posts\/815","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/avlos.gr\/wpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/avlos.gr\/wpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/avlos.gr\/wpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/avlos.gr\/wpress\/wp-json\/wp\/v2\/comments?post=815"}],"version-history":[{"count":4,"href":"https:\/\/avlos.gr\/wpress\/wp-json\/wp\/v2\/posts\/815\/revisions"}],"predecessor-version":[{"id":822,"href":"https:\/\/avlos.gr\/wpress\/wp-json\/wp\/v2\/posts\/815\/revisions\/822"}],"wp:attachment":[{"href":"https:\/\/avlos.gr\/wpress\/wp-json\/wp\/v2\/media?parent=815"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/avlos.gr\/wpress\/wp-json\/wp\/v2\/categories?post=815"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/avlos.gr\/wpress\/wp-json\/wp\/v2\/tags?post=815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}