v12345vtm

esp-wificodeviaAP

Jul 26th, 2017
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.53 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include <ESP8266WebServer.h>
  3. #include <EEPROM.h>
  4.  
  5. ESP8266WebServer server(80);
  6.  
  7. const char* ssid = "test12345"; //accespoint naam
  8. const char* passphrase = "test12345"; // code accespoint
  9. String st;
  10. String content;
  11. int statusCode;
  12. String versie = "inofile = esp-ap-en-client-met-ssid-in-eeprom2";
  13. String esid ="";
  14.  
  15. String epass ="";
  16.  
  17.  
  18. String qsid = "";
  19. String qpass = "";
  20. void setup() {
  21. Serial.begin(115200);
  22. EEPROM.begin(512);
  23. delay(10);
  24. Serial.println();
  25. Serial.println();
  26. Serial.println("Startup");
  27.  
  28.  
  29. // Serial.println("Reading EEPROM ");
  30. // for (int i = 0; i < 512; i++)
  31. // {
  32. // char value = EEPROM.read(i);
  33. // Serial.print(i);
  34. // Serial.print("\t");
  35. // // Serial.print(value, DEC);
  36. // Serial.println(value);
  37. // delay(40);
  38. // }
  39.  
  40.  
  41. // read eeprom for ssid and pass
  42. Serial.println("Reading EEPROM ssid");
  43. esid ="";
  44. for (int i = 0; i < 32; ++i)
  45. {
  46. esid += char(EEPROM.read(i));
  47. Serial.println(esid);
  48. Serial.println(i);
  49. }
  50. Serial.print("SSID: ");
  51. Serial.println(esid);
  52. Serial.println("Reading EEPROM pass");
  53. epass = "";
  54. for (int i = 32; i < 96; ++i)
  55. {
  56. epass += char(EEPROM.read(i));
  57. Serial.println(epass);
  58. Serial.println(i);
  59. }
  60. Serial.print("PASS: ");
  61. Serial.println(epass);
  62.  
  63. Serial.println("debug esid: ");
  64. Serial.println(esid.c_str());
  65. Serial.println(epass.c_str());
  66.  
  67. if ( esid.length() > 1 ) {
  68.  
  69. Serial.println("debug2: ");
  70. Serial.println(esid.c_str());
  71. Serial.println(epass.c_str());
  72.  
  73. WiFi.begin(esid.c_str(), epass.c_str());
  74. if (testWifi()) {
  75. launchWeb(0);
  76. return;
  77. }
  78. }
  79. setupAP();
  80. }
  81.  
  82. bool testWifi(void) {
  83. int c = 0;
  84. Serial.println("Waiting for Wifi to connect");
  85. while ( c < 20 ) {
  86. if (WiFi.status() == WL_CONNECTED) { return true; }
  87. delay(500);
  88. Serial.print(WiFi.status());
  89. c++;
  90. }
  91. Serial.println("");
  92. Serial.println("Connect timed out, opening AP");
  93. return false;
  94. }
  95.  
  96. void launchWeb(int webtype) {
  97. Serial.println("");
  98. Serial.println("WiFi connected");
  99. Serial.print("Local IP: ");
  100. Serial.println(WiFi.localIP());
  101.  
  102. Serial.print("gekoppelde ssid: ");
  103. Serial.println(WiFi.SSID());
  104. Serial.print("SoftAP IP: ");
  105. Serial.println(WiFi.softAPIP());
  106.  
  107. if (webtype == 1) {
  108. Serial.println ("geen wifi gekend in eeprom , fabrieksreset");
  109. }
  110.  
  111. if (webtype == 0) {
  112. Serial.println ("wifi gekend in wifimodule");
  113. }
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120. createWebServer(webtype);
  121. // Start the server
  122. server.begin();
  123. Serial.println("Server started");
  124. }
  125.  
  126. void setupAP(void) {
  127. WiFi.mode(WIFI_STA);
  128. WiFi.disconnect();
  129. delay(100);
  130. int n = WiFi.scanNetworks();
  131. Serial.println("scan done");
  132. if (n == 0)
  133. Serial.println("no networks found");
  134. else
  135. {
  136. Serial.print(n);
  137. Serial.println(" networks found");
  138. for (int i = 0; i < n; ++i)
  139. {
  140. // Print SSID and RSSI for each network found
  141. Serial.print(i + 1);
  142. Serial.print(": ");
  143. Serial.print(WiFi.SSID(i));
  144. Serial.print(" (");
  145. Serial.print(WiFi.RSSI(i));
  146. Serial.print(")");
  147. Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");
  148. delay(10);
  149. }
  150. }
  151. Serial.println("");
  152. st = "<ol>";
  153. for (int i = 0; i < n; ++i)
  154. {
  155. // Print SSID and RSSI for each network found
  156. st += "<li>";
  157. st += WiFi.SSID(i);
  158. st += " (";
  159. st += WiFi.RSSI(i);
  160. st += ")";
  161. st += (WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*";
  162. st += "</li>";
  163. }
  164. st += "</ol>";
  165. delay(100);
  166. WiFi.softAP(ssid, passphrase, 6);
  167. Serial.println("softap");
  168. launchWeb(1);
  169. //Serial.println("over");
  170. }
  171.  
  172. void createWebServer(int webtype)
  173. {
  174. if ( webtype == 1 ) {
  175. server.on("/", []() {
  176. IPAddress ip = WiFi.softAPIP();
  177. String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
  178. content = "<!DOCTYPE HTML>\r\n<html>Hello from ESP8266 at accespoint ";
  179. content += ipStr;
  180. content += "<p>";
  181. content += "<br>";
  182. content += versie;
  183. content += "<br>";
  184.  
  185. content += " <a href=""";
  186. content += "/cleareeprom";
  187. content += """ target=""_blank""> clear de eprom</a> " ;
  188.  
  189.  
  190. content += st;
  191. content += "</p><form method='get' action='setting'><label>SSID: </label><input name='ssid' length=32><input name='pass' length=64><input type='submit'></form>";
  192. content += "</html>";
  193. server.send(200, "text/html", content);
  194. });
  195. server.on("/setting", []() {
  196. qsid = server.arg("ssid");
  197. qpass = server.arg("pass");
  198. if (qsid.length() > 0 && qpass.length() > 0) {
  199. Serial.println("clearing eeprom");
  200. for (int i = 0; i < 96; ++i) { EEPROM.write(i, 0); }
  201. Serial.println(qsid);
  202. Serial.println("");
  203. Serial.println(qpass);
  204. Serial.println("");
  205.  
  206. Serial.println("writing eeprom ssid:");
  207. for (int i = 0; i < qsid.length(); ++i)
  208. {
  209. EEPROM.write(i, qsid[i]);
  210. Serial.print("Wrote: ");
  211. Serial.println(qsid[i]);
  212. }
  213. Serial.println("writing eeprom pass:");
  214. for (int i = 0; i < qpass.length(); ++i)
  215. {
  216. EEPROM.write(32+i, qpass[i]);
  217. Serial.print("Wrote: ");
  218. Serial.println(qpass[i]);
  219. }
  220. EEPROM.commit();
  221. content = "{\"Success\":\"saved to eeprom... reset to boot into new wifi\"}";
  222. statusCode = 200;
  223. } else {
  224. content = "{\"Error\":\"404 not found\"}";
  225. statusCode = 404;
  226. Serial.println("Sending 404");
  227. }
  228. server.send(statusCode, "application/json", content);
  229. });
  230. }
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244. else if (webtype == 0) {
  245. server.on("/", []() {
  246. IPAddress ip = WiFi.localIP();
  247. String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
  248. content = "<!DOCTYPE HTML>\r\n<html>Hello from ESP8266 at client verbonden met router";
  249. content += ipStr;
  250. content += "<p>";
  251.  
  252. content += "<br>";
  253. content += versie;
  254. content += "<br>";
  255. content += st;
  256.  
  257.  
  258. content += " <a href=""";
  259. content += "/cleareeprom";
  260. content += """ target=""_blank""> clear de eprom</a> " ;
  261.  
  262. content += "</p><form method='get' action='setting'><label>SSID: </label><input name='ssid' length=32><input name='pass' length=64><input type='submit'></form>";
  263. content += "</html>";
  264. server.send(200, "text/html", content);
  265. });
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273. server.on("/setting", []() {
  274. String qsid = server.arg("ssid");
  275. String qpass = server.arg("pass");
  276. if (qsid.length() > 0 && qpass.length() > 0) {
  277. Serial.println("clearing eeprom");
  278. for (int i = 0; i < 96; ++i) { EEPROM.write(i, 0); }
  279. Serial.println(qsid);
  280. Serial.println("");
  281. Serial.println(qpass);
  282. Serial.println("");
  283.  
  284. Serial.println("writing eeprom ssid:");
  285. for (int i = 0; i < qsid.length(); ++i)
  286. {
  287. EEPROM.write(i, qsid[i]);
  288. Serial.print("Wrote: ");
  289. Serial.println(qsid[i]);
  290. }
  291. Serial.println("writing eeprom pass:");
  292. for (int i = 0; i < qpass.length(); ++i)
  293. {
  294. EEPROM.write(32+i, qpass[i]);
  295. Serial.print("Wrote: ");
  296. Serial.println(qpass[i]);
  297. }
  298. EEPROM.commit();
  299. content = "{\"Success\":\"saved to eeprom... reset to boot into new wifi\"}";
  300. statusCode = 200;
  301. } else {
  302. content = "{\"Error\":\"404 not found\"}";
  303. statusCode = 404;
  304. Serial.println("Sending 404");
  305. }
  306. server.send(statusCode, "application/json", content);
  307. });
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317. server.on("/cleareeprom", []() {
  318. content = "<!DOCTYPE HTML>\r\n<html>";
  319. content += "<p>Clearing the EEPROM</p></html>";
  320. server.send(200, "text/html", content);
  321. Serial.println("clearing eeprom");
  322. // for (int i = 0; i < 512; ++i) {
  323. //
  324. // EEPROM.write(i, 0); //we steken 0 in als brol
  325. // Serial.print ("clear adress ");
  326. // Serial.println (i);
  327. // delay (100);
  328. // }
  329. // EEPROM.commit();
  330.  
  331. // Serial.println("clearing ssid en paswoord variabelen lokaal");
  332. //esid = "reset";
  333. // epass = esid;
  334.  
  335. qsid = "vermoost";
  336. qpass = "kapot"; // anders onthoud hij de oude string locate en kan je niet resetten
  337. Serial.println("manueel vith wiss eeprom ssid:");
  338. for (int i = 0; i < qsid.length(); ++i)
  339. {
  340. EEPROM.write(i, qsid[i]);
  341. Serial.print("Wrote: ");
  342. Serial.println(qsid[i]);
  343. }
  344. Serial.println("manueel wis vith writing eeprom pass:");
  345. for (int i = 0; i < qpass.length(); ++i)
  346. {
  347. EEPROM.write(32+i, qpass[i]);
  348. Serial.print("Wrote: ");
  349. Serial.println(qpass[i]);
  350. }
  351. EEPROM.commit();
  352.  
  353.  
  354.  
  355. });
  356. }
  357. }
  358.  
  359. void loop() {
  360. server.handleClient();
  361. }
Advertisement
Add Comment
Please, Sign In to add comment