Home-Dynamic-IoT-Module-Protocol-v2.5T.ino 2.9 KB

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