Search icon
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
ESP8266 Internet of Things Cookbook

You're reading from  ESP8266 Internet of Things Cookbook

Product type Book
Published in Apr 2017
Publisher Packt
ISBN-13 9781787288102
Pages 268 pages
Edition 1st Edition
Languages
Concepts
Author (1):
Marco Schwartz Marco Schwartz
Profile icon Marco Schwartz

Table of Contents (15) Chapters

ESP8266 Internet of Things Cookbook
Credits
About the Author
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface
1. Configuring the ESP8266 2. Your First ESP8266 Projects 3. More ESP8266 Functions 4. Using MicroPython on the ESP8266 5. Cloud Data Monitoring 6. Interacting with Web Services 7. Machine to Machine Interactions Index

Connecting the ESP8266 to a cloud server


In this recipe, we will connect the ESP8266 to the Internet and send data to a cloud server. The cloud server we will be sending data to is dweet.io. The data we send to dweet.io will be used later in this book, so ensure that you execute this section successfully.

Getting ready

As in the previous recipe, we won't need any extra components here. All we need to do is ensure that the ESP8266 is connected to the computer.

How to do it…

To accomplish this, follow these steps:

  1. We will connect the ESP8266 to a local Wi-Fi network that has an active Internet connection.

  2. Once the connection is successful, we will send a GET request to the cloud server and then display the reply that the server sends back to the ESP8266 board:

    // Libraries
    #include <ESP8266WiFi.h>
  3. Enter the SSID and password:

    // SSID
    const char* ssid     = "your-ssid";
    const char* password = "your-password";
  4. Store the hostname of the cloud server:

    // Host
    const char* host = "dweet.io";
  5. Configure the SSID and password of the Wi-Fi network and connect the ESP8266 to the Wi-Fi network:

    void setup() {
    
      // Serial
      Serial.begin(115200);
      delay(10);
    
      // We start by connecting to a WiFi network
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
      
      WiFi.begin(ssid, password);
      
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
    
      Serial.println("");
      Serial.println("WiFi connected");  
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
    }
  6. Delay for five seconds and then print the name of the host we are connecting to on the serial monitor:

    void loop() {
      
      delay(5000);
    
      Serial.print("connecting to ");
      Serial.println(host);
  7. Connect to the host server:

      // Use WiFiClient class to create TCP connections
      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
      }
  8. Formulate the URI for the GET request we will send to the host server:

      // We now create a URI for the request
      String url = "/dweet/for/my-thing-name?value=test";
  9. Send the GET request to the server and check whether the request has been received or if it has timed out:

      // Send request
      Serial.print("Requesting URL: ");
      Serial.println(url);
      
      client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                   "Host: " + host + "\r\n" + 
                   "Connection: close\r\n\r\n");
      unsigned long timeout = millis();
      while (client.available() == 0) {
        if (millis() - timeout > 5000) {
          Serial.println(">>> Client Timeout !");
          client.stop();
          return;
        }
      }
  10. Read incoming data from the host server line by line and display the data on the serial monitor.

  11. Close the connection after all the data has been received from the server:

      // Read all the lines from the answer
      while(client.available()){
        String line = client.readStringUntil('\r');
        Serial.print(line);
      }
    
      // Close connecting
      Serial.println();
      Serial.println("closing connection");
    }
  12. Copy the sketch to your Arduino IDE and change the SSID in the code from your-ssid to the name of your Wi-Fi network and the password from your-password to the password of your Wi-Fi network.

  13. Upload the sketch to your ESP8266 board.

  14. Open the serial monitor so that you can view the incoming data.

The serial monitor should display data, as shown in the following screenshot:

As you can see from the serial monitor, when you send the GET request to dweet.io you receive a reply from the server. The reply is enclosed in curly brackets {}.

How it works…

The program connects to the Wi-Fi network using the provided password and SSID. It then proceeds to connect to the provided cloud/host server using the client.connect() function, and sends the provided URI to the host server using the client.print() function.

Once the data has been successfully sent, the sketch waits for a reply from the server. It does this with the client.available() function, which checks whether there is incoming data from the server. If there is data available, the sketch reads it and displays it on the serial monitor. The process is repeated until the ESP8266 is turned off.

There's more…

Since you have understood how to connect the ESP8266 to a cloud server, see if you can change the sketch so that it connects to the www.google.com host server and searches for the word Arduino. The results from the server should be displayed on the serial monitor.

Tip

Hint: You can check out the following link to see the format for Google GET requests:

https://www.google.com/support/enterprise/static/gsa/docs/admin/72/gsa_doc_set/xml_reference/request_format.html.

See also

You can now continue to the next recipe and look at some of the common issues that you may face when using your ESP8266 and how you can solve them.

You have been reading a chapter from
ESP8266 Internet of Things Cookbook
Published in: Apr 2017 Publisher: Packt ISBN-13: 9781787288102
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime}