Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.75 KB | None | 0 0
  1. /*  Simple Web Server for ESP8266-12E
  2.  *  NattyFido 2015
  3.  *  www.nattyfido.co.uk  (shameless plug!)
  4.  */
  5.  
  6. #include <ESP8266WiFi.h>
  7.  
  8. const char* ssid = "ROBOT";                //  SSID of LAN/WLAN
  9. const char* password = "ROBOT";        //  password
  10. const int port = 80;                           //  port to serve pages through
  11.  
  12. const int led0 = 13;
  13. const int led1 = 12;
  14. const int led2 = 14;
  15.  
  16. int v1 = 0;
  17. int v2 = 0;
  18.  
  19. WiFiServer server(port);
  20.  
  21. void setup() {
  22.   Serial.begin(115200);                        //  start serial for debug
  23.   delay(10);
  24.   pinMode(led0, OUTPUT);                       //  all outputs for LEDs
  25.   pinMode(led1, OUTPUT);
  26.   pinMode(led2, OUTPUT);
  27.   digitalWrite(led0, 0);                       //  all LEDs off to start
  28.   digitalWrite(led1, 0);
  29.   digitalWrite(led2, 0);
  30.   Serial.println();
  31.   Serial.println();
  32.   Serial.print("Connecting to ");
  33.   Serial.println(ssid);
  34.   WiFi.begin(ssid, password);                    //  connect to WiFi network
  35.   while (WiFi.status() != WL_CONNECTED) {        //  wait until connected
  36.     delay(500);
  37.     Serial.print(".");
  38.   }
  39.   Serial.println("");
  40.   Serial.println("WiFi connected");
  41.   server.begin();                                // Start the server
  42.   Serial.println("Server started");
  43.   Serial.println(WiFi.localIP());                // Print the servers IP address
  44. }
  45.  
  46. void loop() {
  47.   WiFiClient client = server.available();        // Check if a client has connected
  48.   if (!client) {
  49.     return;
  50.   }
  51.   Serial.println("New client");                  // Wait until the client sends some data
  52.   while (!client.available()) {
  53.     delay(1);
  54.   }
  55.   String req = client.readStringUntil('\r');     // Read the first line of the request
  56.   Serial.println(req);
  57.   client.flush();
  58.   if (req.indexOf("/led1/0") != -1)             //  if req = /led1/0
  59.     v1 = 0;                                      //  set flag to turn LED1 off
  60.   else if (req.indexOf("/led1/1") != -1)         //  if req = /led1/1
  61.     v1 = 1;                                      //  set flag to turn LED1 on
  62.   else if (req.indexOf("/led2/0") != -1)         //  if req = /led2/0
  63.     v2 = 0;                                      //  set flag to turn LED2 off
  64.   else if (req.indexOf("/led2/1") != -1)         //  if req = /led2/1
  65.     v2 = 1;                                      //  set flag to turn LED2 on
  66.   else {
  67.     Serial.println("Invalid request");           //  URL not recognised
  68.     String r = HTMLHeader();                     //  display home page
  69.     r += HTMLPage();
  70.     r += HTMLFooter();
  71.     client.print(r);                              //  send page to clients browser
  72.     client.stop();                                //  disconnect client
  73.     return;
  74.   }
  75.   digitalWrite(led1, v1);                         //  set LED1 according to v1
  76.   digitalWrite(led2, v2);                         //  set LED2 according to v2
  77.   client.flush();
  78.   String s = HTMLHeader();                        //  display page
  79.   s += HTMLPage();
  80.   s += HTMLFooter();
  81.   digitalWrite(led0, 1);                          //  page is being sent
  82.   client.print(s);                                //  send the response to the client
  83.   client.stop();                                  //  disconnect client
  84.   digitalWrite(led0, 0);                          //  finished sending page
  85.   delay(1);
  86.   Serial.println("Client disonnected");
  87.   Serial.println("");
  88. }
  89.  
  90. String HTMLHeader() {                             //  standard HTML header
  91.   String h = "HTTP/1.1 200 OK\r\n";
  92.   h += "Content-Type: text/html\r\n\r\n";
  93.   h += "<!DOCTYPE HTML>\n";
  94.   h += "<html>\n";
  95.   h += "<body>\n";
  96.   return h;
  97. }
  98. String HTMLFooter() {                            //  standard HTML footer
  99.   String f = "<table width=\"100%\" bgcolor=\"black\" cellpadding=\"12\" border=\"0\">\n";
  100.   f += "<tr><td><p style = \"color: white; background: black;font-size: 0.8em;";
  101.   f += "font-weight: bold; text-align: center; margin: 0px 10px 0px 10px;\">\n";
  102.   f += "<a href = \"http://www.nattyfido.co.uk\">Dean Fowler</a> &copy; 2015</p></td></tr>";
  103.   f += "</table>";
  104.   f += "</body>\n";
  105.   f += "</html>\n";
  106.   return f;
  107. }
  108.  
  109. String HTMLPage() {                        //   main HTML for page, edit to suit your application
  110.   String p = "<h1>Simple Webserver</h1>\n";
  111.   p += "<p>Running on a <b>ESP8266-12E</b></p>\n";
  112.   p += "<p>Code written in <b>Arduino IDE</b> by <i>NattyFido</i></p>\n";
  113.   //  display links depending on current state of LEDs 1 & 2
  114.   p += (v1) ? "<p><a href = \"/led1/0\">Turn LED 1 off</a></p>\n" : "<p><a href = \"/led1/1\">Turn LED 1 on</a></p>\n";
  115.   p += (v2) ? "<p><a href = \"/led2/0\">Turn LED 2 off</a></p>\n" : "<p><a href = \"/led2/1\">Turn LED 2 on</a></p>\n";
  116.   return p;
  117. }
  118. - See more at: http://www.esp8266.com/viewtopic.php?f=29&t=6141#sthash.eAoiRVB1.dpuf
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement