Home-Dynamic-IoT-Module-Protocol-v2.1T.ino 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include <ESP8266WiFi.h>
  2. #include <WiFiClient.h>
  3. #include <ESP8266WebServer.h>
  4. #include <string>
  5. ESP8266WebServer server(80);
  6. char *APssid = "Home_Dynamic";
  7. char *APpw = "homedynamic";
  8. //Global variables for mode
  9. int CurrentMode = 0; //0 = softAP, 1 = STA
  10. void setup() {
  11. Serial.begin(9600);
  12. delay(1000);
  13. WiFi.hostname("Home_Dynamic");
  14. boolean result = WiFi.softAP(APssid, APpw);
  15. if(result == true){
  16. Serial.println("Soft AP Starting Ready");
  17. }else{
  18. Serial.println("Soft AP Starting Failed!");
  19. }
  20. server.on("/", showForm);
  21. server.on("/submitForm", submitForm);
  22. server.begin();
  23. Serial.println("Home Dynamic controller started at:");
  24. Serial.println(WiFi.softAPIP());
  25. }
  26. void showForm(){
  27. int size=1000;
  28. char temp[size];
  29. snprintf( temp, size, "<form action='/submitForm' method='GET'> Your Wifi name:<br> <input type='text' name='ssid'><br>Your Wifi password:<br> <input type='text' name='wifipw'><br><br><input type='submit' value='Enter'></form>");
  30. server.send(200, "text/html", temp);
  31. }
  32. void submitForm(){
  33. WiFiClient client;
  34. // ssid and pw from user form GET
  35. String ssidStr = server.arg("ssid");
  36. String pwStr = server.arg("wifipw");
  37. Serial.println(ssidStr);
  38. Serial.println(pwStr);
  39. // use the ssid and pw to connect
  40. int sl1 = ssidStr.length();
  41. int sl2 = pwStr.length();
  42. char ssidbuf[sl1];
  43. char pwbuf[sl2];
  44. char temp[50];
  45. snprintf( temp, 50, "Please wait while processing...");
  46. ssidStr.toCharArray(ssidbuf,sl1);
  47. pwStr.toCharArray(pwbuf,sl2);
  48. WiFi.begin(ssidbuf, pwbuf);
  49. WiFi.mode(WIFI_STA);
  50. while (WiFi.status() != WL_CONNECTED) {
  51. delay(500);
  52. Serial.print(".");
  53. }
  54. Serial.println("Home Dynamic controller connected to user WIFI at: ");
  55. Serial.println(WiFi.localIP());
  56. client.print("Connected");
  57. CurrentMode = 1;
  58. }
  59. void loop() {
  60. if (CurrentMode == 0){
  61. Serial.printf("Stations connected = %d\n", WiFi.softAPgetStationNum());
  62. delay(300);
  63. }
  64. server.handleClient();
  65. }