#include #include #include #include #define D0 2 ESP8266WebServer server(80); char *APssid = "HomeDynamic"; char *APpw = "homedynamic"; //Global variables for mode int CurrentMode = 0; //0 = softAP, 1 = STA String CurrentStatus = "ON"; String deviceUuid = "3e763aed-be40-4c38-bdda-4d1324d93f06"; String identifier = "relay.std.hd.com.imuslab"; void setup() { Serial.begin(9600); delay(1000); WiFi.hostname("IMUS Relay Module"); boolean result = WiFi.softAP(APssid, APpw); if(result == true){ Serial.println("Soft AP Starting Ready"); }else{ Serial.println("Soft AP Starting Failed!"); } //Declare System Function for NodeMCU server.on("/", showForm); server.on("/submitForm", submitForm); server.on("/uuid", uuid); server.on("/info", info); server.on("/on", ON); server.on("/off", OFF); server.on("/status", Status); //Declare Output Pins pinMode(D0, OUTPUT); //Start Server server.begin(); Serial.println("Home Dynamic controller started at:"); Serial.println(WiFi.softAPIP()); } void showForm(){ int size=1000; char temp[size]; snprintf( temp, size, "
Your Wifi name:

Your Wifi password:


"); server.send(200, "text/html", temp); } void submitForm(){ WiFiClient client; // ssid and pw from user form GET String ssidStr = server.arg("ssid"); String pwStr = server.arg("wifipw"); Serial.println(ssidStr); Serial.println(pwStr); // use the ssid and pw to connect int sl1 = ssidStr.length() + 2; int sl2 = pwStr.length() + 2; char ssidbuf[sl1]; char pwbuf[sl2]; char temp[50]; snprintf( temp, 50, "Please wait while processing..."); ssidStr.toCharArray(ssidbuf,sl1); pwStr.toCharArray(pwbuf,sl2); WiFi.begin(ssidbuf, pwbuf); WiFi.mode(WIFI_STA); Serial.println("Home Dynamic controller connected to user WIFI at: "); Serial.println(WiFi.localIP()); client.print("Connected"); CurrentMode = 1; } void info(){ int size=1000; char temp[size]; snprintf( temp, size, ("Standard Relay Module_" + identifier).c_str ()); server.send(200, "text/html", temp); } void uuid(){ int size=100; char temp[size]; snprintf( temp, size, deviceUuid.c_str ()); server.send(200, "text/html", temp); } void ON(){ digitalWrite(D0,LOW); Serial.println("Turned ON"); CurrentStatus = "ON"; sendDone(); } void OFF(){ digitalWrite(D0,HIGH); Serial.println("Turned OFF"); CurrentStatus = "OFF"; sendDone(); } void Status(){ int size=1000; char temp[size]; snprintf( temp, size, ""); server.send(200, "text/html", CurrentStatus); } void sendDone(){ int size=100; char temp[size]; snprintf( temp, size, "DONE"); server.send(200, "text/html", temp); } void loop() { if (CurrentMode == 0){ Serial.printf("client count = %d\n", WiFi.softAPgetStationNum()); delay(300); } server.handleClient(); }