What can i do now?


#include <Adafruit_GFX.h>
#include <Adafruit_GrayOLED.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>

#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiServer.h>
#include <WiFiUdp.h>

#include <ESP8266HTTPClient.h>

#include <ArduinoJson.h>


#include <SerialESP8266wifi.h>

#include <Arduino_JSON.h>
#include <JSON.h>
#include <JSONVar.h>

#include <ArduinoJson.h>


#include <Wire.h>

#include <SerialESP8266wifi.h>


#include <Adafruit_SSD1306.h>
#include <splash.h>

#include <Adafruit_GFX.h>
#include <Adafruit_GrayOLED.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h> // http web access library
#include <ArduinoJson.h> // JSON decoding library
// Libraries for SSD1306 OLED display
#include <Wire.h> // include wire library (for I2C devices such as the SSD1306 display)
#include <Adafruit_GFX.h> // include Adafruit graphics library
#include <Adafruit_SSD1306.h> // include Adafruit SSD1306 OLED display driver
 
#define OLED_RESET 5 // define SSD1306 OLED reset at ESP8266 GPIO5 (NodeMCU D1)
Adafruit_SSD1306 display(OLED_RESET);
 
// set Wi-Fi SSID and password
const char *ssid = "TP-Link_6742";
const char *password = "26051973";
 
// set location and API key
String Location = "Amravati, IN";
String API_Key = "eb9274010b722f75502bbf8fa15f4872";
 
void setup()
{
Serial.begin(9600);
delay(1000);
 
Wire.begin(4, 0); // set I2C pins [SDA = GPIO4 (D2), SCL = GPIO0 (D3)], default clock is 100kHz
 
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
// init done
 
Wire.setClock(400000L); // set I2C clock to 400kHz
 
display.clearDisplay(); // clear the display buffer
display.setTextColor(WHITE, BLACK);
display.setTextSize(1);
display.setCursor(0, 0);
display.println("Weather News By Anupam");
display.print(" Station - Amravati");
display.display();
 
WiFi.begin ("ssid, password");

Serial.print("Connecting.");
display.setCursor(0, 24);
display.println("Connecting...");


display.println("Made By Anupam");
display.display();
while ( WiFi.status() != WL_CONNECTED )

{
delay(500);
Serial.print(".");
}
Serial.println("connected");
display.print("connected");
display.display();
delay(1000);
 
}
 
void loop()
{
if (WiFi.status() == WL_CONNECTED) //Check WiFi connection status
{
HTTPClient http; //Declare an object of class HTTPClient
 
// specify request destination
http.begin("http://api.openweathermap.org/data/2.5/weather?q=" + Location + "&APPID=" + API_Key); // !!
 
int httpCode = http.GET(); // send the request
 
if (httpCode > 0) // check the returning code
{
String payload = http.getString(); //Get the request response payload
 
 DynamicJsonBuffer jsonBuffer(512);
// Parse JSON object
JsonObject& root = jsonBuffer.parseObject(payload);
if (!root.success()) {
Serial.println(F("Parsing failed!"));
return;
}
 
float temp = (float)(root["main"]["temp"]) - 273.15; // get temperature in °C
int humidity = root["main"]["humidity"]; // get humidity in %
float pressure = (float)(root["main"]["pressure"]) / 1000; // get pressure in bar
float wind_speed = root["wind"]["speed"]; // get wind speed in m/s
int wind_degree = root["wind"]["deg"]; // get wind degree in °
 
// print data
Serial.printf("Temperature = %.2f°C\r\n", temp);
Serial.printf("Humidity = %d %%\r\n", humidity);
Serial.printf("Pressure = %.3f bar\r\n", pressure);
Serial.printf("Wind speed = %.1f m/s\r\n", wind_speed);
Serial.printf("Wind degree = %d°\r\n\r\n", wind_degree);
 
display.setCursor(0, 24);
display.printf("Temperature: %5.2f C\r\n", temp);
display.printf("Humidity : %d %%\r\n", humidity);
display.printf("Pressure : %.3fbar\r\n", pressure);
display.printf("Wind speed : %.1f m/s\r\n", wind_speed);
display.printf("Wind degree: %d", wind_degree);
display.drawRect(109, 24, 3, 3, WHITE); // put degree symbol ( ° )
display.drawRect(97, 56, 3, 3, WHITE);
display.display();
 
}
 
http.end(); //Close connection
 
}
 
delay(60000); // wait 1 minute
 
}
// End of code.

In file included from C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/WiFiClientSecure.h:41:0,

             from C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/WiFiServerSecure.h:20,

             from C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/ESP8266WiFi.h:41,

             from C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266HTTPClient\src\ESP8266HTTPClient.cpp:29:

C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/WiFiClientSecureBearSSL.h:38:5: error: 'BearSSL::WiFiClientSecure::~WiFiClientSecure()' marked override, but does not override

 ~WiFiClientSecure() override;

 ^

C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/WiFiClientSecureBearSSL.h:43:9: error: 'int BearSSL::WiFiClientSecure::connect(const String&, uint16_t)' marked override, but does not override

 int connect(const String& host, uint16_t port) override;

     ^

C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/WiFiClientSecureBearSSL.h:48:12: error: 'size_t BearSSL::WiFiClientSecure::write_P(const char*, size_t)' marked override, but does not override

 size_t write_P(PGM_P buf, size_t size) override;

        ^

C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/WiFiClientSecureBearSSL.h:60:12: error: 'size_t BearSSL::WiFiClientSecure::peekBytes(uint8_t*, size_t)' marked override, but does not override

 size_t peekBytes(uint8_t *buffer, size_t length) override;

        ^

In file included from C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266HTTPClient\src\ESP8266HTTPClient.cpp:30:0:

C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/WiFiClientSecureAxTLS.h:36:3: error: 'axTLS::WiFiClientSecure::~WiFiClientSecure()' marked override, but does not override

~WiFiClientSecure() override;

^

C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/WiFiClientSecureAxTLS.h:39:7: error: 'int axTLS::WiFiClientSecure::connect(const String&, uint16_t)' marked override, but does not override

int connect(const String& host, uint16_t port) override;

   ^

C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/WiFiClientSecureAxTLS.h:47:10: error: 'size_t axTLS::WiFiClientSecure::write_P(const char*, size_t)' marked override, but does not override

size_t write_P(PGM_P buf, size_t size) override;

      ^

C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266WiFi\src/WiFiClientSecureAxTLS.h:53:10: error: 'size_t axTLS::WiFiClientSecure::peekBytes(uint8_t*, size_t)' marked override, but does not override

size_t peekBytes(uint8_t *buffer, size_t length) override;

      ^

C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266HTTPClient\src\ESP8266HTTPClient.cpp: In member function 'bool HTTPClient::connect()':

C:\Users\Admin\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266HTTPClient\src\ESP8266HTTPClient.cpp:1248:14: error: 'class WiFiClient' has no member named 'setNoDelay'

 _client->setNoDelay(true);

          ^

exit status 1
Error compiling for board Generic ESP8266 Module.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

This Is The Error

You can re-write the sketch using the current libraries. Here I have done it for you. It compiles for an ESP8266 but I don't have one to test on so I can't be sure it works. Give it a try.

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>

ESP8266WiFiMulti WiFiMulti;

#include <ArduinoJson.h>

#include <Adafruit_SSD1306.h>

#define OLED_RESET 5 // define SSD1306 OLED reset at ESP8266 GPIO5 (NodeMCU D1)
Adafruit_SSD1306 display(OLED_RESET);

// set Wi-Fi SSID and password
const char *ssid = "TP-Link_6742";
const char *password = "26051973";

// set location and API key
String Location = "Amravati, IN";
String API_Key = "eb9274010b722f75502bbf8fa15f4872";

void setup()
{
  Serial.begin(9600);
  delay(1000);

  Wire.begin(4, 0); // set I2C pins [SDA = GPIO4 (D2), SCL = GPIO0 (D3)], default clock is 100kHz

  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
  // init done

  Wire.setClock(400000L); // set I2C clock to 400kHz

  display.clearDisplay(); // clear the display buffer
  display.setTextColor(WHITE, BLACK);
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.println("Weather News By Anupam");
  display.print(" Station - Amravati");
  display.display();

  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP(ssid, password);

  Serial.print("Connecting.");
  display.setCursor(0, 24);
  display.println("Connecting...");


  display.println("Made By Anupam");
  display.display();
  while ( WiFi.status() != WL_CONNECTED )

  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("connected");
  display.print("connected");
  display.display();
  delay(1000);

}

void loop()
{
  // wait for WiFi connection
  if ((WiFiMulti.run() == WL_CONNECTED))
  {
    WiFiClient client;
    HTTPClient http;
    String payload;


    // specify request destination
    Serial.print("[HTTP] begin...\n");
    if (http.begin(client, "http://api.openweathermap.org/data/2.5/weather?q=" + Location + "&APPID=" + API_Key))    // HTTP
    {

      Serial.print("[HTTP] GET...\n");
      // start connection and send HTTP header
      int httpCode = http.GET();

      // httpCode will be negative on error
      if (httpCode > 0) // check the returning code
      {
        // HTTP header has been send and Server response header has been handled
        Serial.printf("[HTTP] GET... code: %d\n", httpCode);

        // file found at server
        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY)
        {
          payload = http.getString();
          // Serial.println(payload);
        }
      }
      else
      {
        Serial.printf("[HTTP] GET... failed, error: %s\n",
                      http.errorToString(httpCode).c_str());
        return;
      }

      /*
         {"coord":{"lon":77.75,"lat":20.9333},
         "weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],
         "base":"stations","main":{"temp":301.45,"feels_like":303.3,"temp_min":301.45,
         "temp_max":301.45,"pressure":1004,"humidity":62,"sea_level":1004,"grnd_level":966},
         "visibility":10000,"wind":{"speed":3.14,"deg":293,"gust":7.39},"clouds":{"all":94},
         "dt":1628958953,"sys":{"country":"IN","sunrise":1628900858,"sunset":1628947200},
         "timezone":19800,"id":1278718,"name":"Amrāvati","cod":200}
      */

      StaticJsonDocument<1024> doc;

      DeserializationError error = deserializeJson(doc, payload);

      if (error)
      {
        Serial.print(F("deserializeJson() failed: "));
        Serial.println(error.f_str());
        return;
      }

      //      float coord_lon = doc["coord"]["lon"]; // 77.75
      //      float coord_lat = doc["coord"]["lat"]; // 20.9333
      //
      //      JsonObject weather_0 = doc["weather"][0];
      //      int weather_0_id = weather_0["id"]; // 804
      //      const char* weather_0_main = weather_0["main"]; // "Clouds"
      //      const char* weather_0_description = weather_0["description"]; // "overcast clouds"
      //      const char* weather_0_icon = weather_0["icon"]; // "04n"
      //
      //      const char* base = doc["base"]; // "stations"
      //
      JsonObject main = doc["main"];
      float main_temp = main["temp"]; // 301.45
      //      float main_feels_like = main["feels_like"]; // 303.3
      //      float main_temp_min = main["temp_min"]; // 301.45
      //      float main_temp_max = main["temp_max"]; // 301.45
      float main_pressure = main["pressure"]; // 1004
      int main_humidity = main["humidity"]; // 62
      //      int main_sea_level = main["sea_level"]; // 1004
      //      int main_grnd_level = main["grnd_level"]; // 966
      //
      //      int visibility = doc["visibility"]; // 10000
      //
      JsonObject wind = doc["wind"];
      float wind_speed = wind["speed"]; // 3.14
      int wind_deg = wind["deg"]; // 293
      //      float wind_gust = wind["gust"]; // 7.39
      //
      //      int clouds_all = doc["clouds"]["all"]; // 94
      //
      //      long dt = doc["dt"]; // 1628958953
      //
      //      JsonObject sys = doc["sys"];
      //      const char* sys_country = sys["country"]; // "IN"
      //      long sys_sunrise = sys["sunrise"]; // 1628900858
      //      long sys_sunset = sys["sunset"]; // 1628947200
      //
      //      int timezone = doc["timezone"]; // 19800
      //      long id = doc["id"]; // 1278718
      //      const char* name = doc["name"]; // "Amrāvati"
      //      int cod = doc["cod"]; // 200


      // print data
      Serial.printf("Temperature = %.2f°C\r\n", main_temp);
      Serial.printf("Humidity = %d %%\r\n", main_humidity);
      Serial.printf("Pressure = %.3f bar\r\n", main_pressure);
      Serial.printf("Wind speed = %.1f m/s\r\n", wind_speed);
      Serial.printf("Wind degree = %d°\r\n\r\n", wind_deg);

      display.setCursor(0, 24);
      display.printf("Temperature: %5.2f C\r\n", main_temp);
      display.printf("Humidity : %d %%\r\n", main_humidity);
      display.printf("Pressure : %.3fbar\r\n", main_pressure);
      display.printf("Wind speed : %.1f m/s\r\n", wind_speed);
      display.printf("Wind degree: %d", wind_deg);
      display.drawRect(109, 24, 3, 3, WHITE); // put degree symbol ( ° )
      display.drawRect(97, 56, 3, 3, WHITE);
      display.display();
    }

    http.end(); //Close connection

  }

  delay(60000); // wait 1 minute

}
// End of code.
1 Like

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.