Home-Dynamic-IoT-Module-Protocol-vm1.0.ino 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #include <ESP8266WiFi.h>
  2. #include <WiFiClient.h>
  3. #include <ESP8266WebServer.h>
  4. #include <string>
  5. #define D0 2
  6. ESP8266WebServer server(80);
  7. char *APssid = "HomeDynamic";
  8. char *APpw = "homedynamic";
  9. //Global variables for mode
  10. int CurrentMode = 0; //0 = softAP, 1 = STA
  11. void setup() {
  12. Serial.begin(9600);
  13. delay(1000);
  14. WiFi.hostname("IMUS Relay Module");
  15. boolean result = WiFi.softAP(APssid, APpw);
  16. if(result == true){
  17. Serial.println("Soft AP Starting Ready");
  18. }else{
  19. Serial.println("Soft AP Starting Failed!");
  20. }
  21. //Declare System Function for NodeMCU
  22. server.on("/", showForm);
  23. server.on("/submitForm", submitForm);
  24. server.on("/uuid", uuid);
  25. server.on("/info", info);
  26. server.on("/on", ON);
  27. server.on("/off", OFF);
  28. //Declare Output Pins
  29. pinMode(D0, OUTPUT);
  30. //Start Server
  31. server.begin();
  32. Serial.println("Home Dynamic controller started at:");
  33. Serial.println(WiFi.softAPIP());
  34. }
  35. void showForm(){
  36. int size=1000;
  37. char temp[size];
  38. 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>");
  39. server.send(200, "text/html", temp);
  40. }
  41. void submitForm(){
  42. WiFiClient client;
  43. // ssid and pw from user form GET
  44. String ssidStr = server.arg("ssid");
  45. String pwStr = server.arg("wifipw");
  46. Serial.println(ssidStr);
  47. Serial.println(pwStr);
  48. // use the ssid and pw to connect
  49. int sl1 = ssidStr.length() + 2;
  50. int sl2 = pwStr.length() + 2;
  51. char ssidbuf[sl1];
  52. char pwbuf[sl2];
  53. char temp[50];
  54. snprintf( temp, 50, "Please wait while processing...");
  55. ssidStr.toCharArray(ssidbuf,sl1);
  56. pwStr.toCharArray(pwbuf,sl2);
  57. WiFi.begin(ssidbuf, pwbuf);
  58. WiFi.mode(WIFI_STA);
  59. Serial.println("Home Dynamic controller connected to user WIFI at: ");
  60. Serial.println(WiFi.localIP());
  61. client.print("Connected");
  62. CurrentMode = 1;
  63. }
  64. void info(){
  65. int size=1000;
  66. char temp[size];
  67. snprintf( temp, size, "Standard Relay Module_9ff1e168-e83f-490d-bd28-2a8b7ffbc65d_");
  68. server.send(200, "text/html", temp);
  69. }
  70. void uuid(){
  71. int size=100;
  72. char temp[size];
  73. snprintf( temp, size, "9ff1e168-e83f-490d-bd28-2a8b7ffbc65d");
  74. server.send(200, "text/html", temp);
  75. }
  76. void ON(){
  77. digitalWrite(D0,LOW);
  78. digitalWrite(D1,HIGH);
  79. Serial.println("Turned ON");
  80. sendDone();
  81. }
  82. void OFF(){
  83. digitalWrite(D0,HIGH);
  84. digitalWrite(D1,LOW);
  85. Serial.println("Turned OFF");
  86. sendDone();
  87. }
  88. void sendDone(){
  89. int size=100;
  90. char temp[size];
  91. snprintf( temp, size, "DONE");
  92. server.send(200, "text/html", temp);
  93. }
  94. void loop() {
  95. if (CurrentMode == 0){
  96. Serial.printf("client count = %d\n", WiFi.softAPgetStationNum());
  97. delay(300);
  98. }
  99. server.handleClient();
  100. }