Go Down

Topic: Reading data From ThingSpeak via arduino uno+Esp8266 (Read 2775 times) previous topic - next topic

mtg

I am integrating thingspeak and arduino plus Esp8266 mean making a simple project which contain my android app to update the thingspeak channel and then want to read the data of that channel via arduino uno. the android parts works fine but at the arduino side i got stuck and unable to read the channel data via esp8266(attached to my arduino uno).
Here is my code.any help would be appreciated.
it shows in serial monitor connecting to thingspeak.com and show nothing next.

   
Code: [Select]
#include "WiFiEsp.h"
   
    // Emulate Serial1 on pins 6/7 if not present
    #ifndef HAVE_HWSERIAL1
    #include "SoftwareSerial.h"
    SoftwareSerial Serial1(2,3); // RX, TX
    #endif
   
    char ssid[] = "M T G";            // your network SSID (name)
    char pass[] = "androidGUII";        // your network password
    int status = WL_IDLE_STATUS;     // the Wifi radio's status
   
    char server[] = "arduino.cc";
   
    // Initialize the Ethernet client object
    WiFiEspClient client;
    static const char* host = "api.thingspeak.com";
    static const char* apiKey = "H359MYV0P0KFG2VS";
    void setup()
    {
      // initialize serial for debugging
      Serial.begin(115200);
      // initialize serial for ESP module
      Serial1.begin(9600);
      // initialize ESP module
      WiFi.init(&Serial1);
   
      // check for the presence of the shield
      if (WiFi.status() == WL_NO_SHIELD) {
        Serial.println("WiFi shield not present");
        // don't continue
        while (true);
      }
   
      // attempt to connect to WiFi network
      while ( status != WL_CONNECTED) {
        Serial.print("Attempting to connect to WPA SSID: ");
        Serial.println(ssid);
        // Connect to WPA/WPA2 network
        status = WiFi.begin(ssid, pass);
      }
      // you're connected now, so print out the data
      Serial.println("You're connected to the network");
      printWifiStatus();
      Serial.println();
    }
   
    void loop()
    {
          const int httpPort = 80;
        if (!client.connect(host, httpPort)) {
            Serial.println("connection failed");
            return;
        }
      client.println("GET /channels/421932/feeds.json?api_key=H359MYV0P0KFG2VS&results=2 HTTP/1.1");
      while (client.available() == 0);  // wait till something comes in; you may want to add a timeout here
      Serial.println(client.read());
      client.stop();  // close socket
      delay(10000);
    }
    void printWifiStatus()
    {
      // print the SSID of the network you're attached to
      Serial.print("SSID: ");
      Serial.println(WiFi.SSID());
   
      // print your WiFi shield's IP address
      IPAddress ip = WiFi.localIP();
      Serial.print("IP Address: ");
      Serial.println(ip);
   
      // print the received signal strength
      long rssi = WiFi.RSSI();
      Serial.print("Signal strength (RSSI):");
      Serial.print(rssi);
      Serial.println(" dBm");
    }

Juraj

your HTTP request is incomplete. you need to send some HTTP headers. look at WebClient example of the WiFiEsp library
You can't write an Arduino sketch if you didn't learn programming. Not the language, but the concepts of programming - algorithms and data types.

mtg

thank you for your time...i have no special knowledge of HTTP request thats why i am stuck on it.

Go Up