Inhoudsopgave:

(IOT-project) Weergegevens ophalen met ESP8266 en Openweather API - Ajarnpa
(IOT-project) Weergegevens ophalen met ESP8266 en Openweather API - Ajarnpa

Video: (IOT-project) Weergegevens ophalen met ESP8266 en Openweather API - Ajarnpa

Video: (IOT-project) Weergegevens ophalen met ESP8266 en Openweather API - Ajarnpa
Video: Hoe maak je een 4-kanaals ESP8266 ESP01 wifi-relais | ESP01 Domotica | Op afstandXY | FLProg 2024, November
Anonim
(IOT-project) Ontvang weergegevens met ESP8266 en Openweather API
(IOT-project) Ontvang weergegevens met ESP8266 en Openweather API

In deze instructable gaan we een eenvoudig IOT-project bouwen waarin de weergegevens van onze stad van openweather.com/api worden opgehaald en weergegeven met behulp van verwerkingssoftware.

Benodigdheden:

  1. Arduino
  2. ESP8266 of een andere esp-module
  3. Arduino IDE
  4. Verwerkingssoftware
  5. Breadboard
  6. Jumperwires Man naar Man en Man naar Vrouw

Stap 1: Verkrijg API-sleutel en URL van Openweather.org

Verkrijg API-sleutel en URL van Openweather.org
Verkrijg API-sleutel en URL van Openweather.org
Verkrijg API-sleutel en URL van Openweather.org
Verkrijg API-sleutel en URL van Openweather.org
Verkrijg API-sleutel en URL van Openweather.org
Verkrijg API-sleutel en URL van Openweather.org
  1. Maak een account aan op https://openweathermap.org (Afbeelding 1)
  2. Nadat u bent ingelogd, gaat u naar API-sleutels en krijgt u de API-sleutel zoals weergegeven in afbeelding. (Afbeelding 2)
  3. Kopieer de API-sleutel en sla deze op in een kladblokbestand. (Afbeelding 3)
  4. Ga naar de API-optie (Afbeelding 4)
  5. Ga naar de API-documentoptie zoals weergegeven in afbeelding (Afbeelding 5)
  6. Kopieer de url van de en getoonde en sla deze op in een kladblokbestand (Afbeelding 6)

Stap 2: Aansluitschema

Verbindingsdiagram
Verbindingsdiagram

Stap 3: Arduino-code

Voordat u deze code naar Arduino kopieert, moet u ervoor zorgen dat u het ESP8266-bord naar Arduino ide hebt gedownload met behulp van Boards Manager.

#erbij betrekken

#include #include #include const char* ssid = "Uw SSID"; const char* wachtwoord = "Uw SSID PASSWORD";// Uw domeinnaam met URL-pad of IP-adres met pad String openWeatherMapApiKey = "Plak hier uw API-sleutel"; // Vervang door uw landcode en stad. String city = "Mumbai"; Tekenreeks countryCode = "IN"; Stringgegevens[16]; // DE STANDAARD TIMER IS INGESTELD OP 10 SECONDEN VOOR TESTDOELEINDEN // Controleer voor een laatste toepassing de API-aanroeplimieten per uur/minuut om te voorkomen dat u niet-ondertekend wordt geblokkeerd/verbannen long lastTime = 0; // Timer ingesteld op 10 minuten (600000) // unsigned long timerDelay = 600000; // Stel timer in op 10 seconden (10000) unsigned long timerDelay = 10000; String jsonBuffer; void setup() { Serial.begin(115200); WiFi.begin(ssid, wachtwoord); //Serial.println ("Verbinden"); while(WiFi.status() != WL_CONNECTED) {vertraging (500); // Serieel.print("."); } // Serieel.println(""); // Serial.print ("Verbonden met wifi-netwerk met IP-adres: "); // Serieel.println(WiFi.localIP()); // // Serial.println("Timer ingesteld op 10 seconden (variabele timerDelay), het duurt 10 seconden voordat de eerste meting wordt gepubliceerd."); } void loop() {// Stuur een HTTP GET-verzoek if ((millis() - lastTime) > timerDelay) { // Controleer de wifi-verbindingsstatus if(WiFi.status()== WL_CONNECTED){ String serverPath = "https://api.openweathermap.org/data/2.5/weather?q=" + city + ", " + countryCode + "&APPID=" + "d5b56fd07988143ae141503ed9d81742" + "&units=metric"; jsonBuffer = httpGETRequest(serverPath.c_str()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse(jsonBuffer); // JSON.typeof(jsonVar) kan worden gebruikt om het type var te krijgen if (JSON.typeof(myObject) == "undefined") { //Serial.println ("Parsing input failed!"); opbrengst; } // Serial.print ("JSON-object = "); // Serieel.println (mijnObject); // Serial.print ("Temperatuur: "); // Serial.println(myObject["hoofd"]["temp"]); // Serial.print ("Druk: "); // Serial.println(myObject["hoofd"]["druk"]); // Serial.print ("Vochtigheid: "); // Serial.println (myObject ["hoofd"]["vochtigheid"]); // Serial.print ("Windsnelheid: "); // Serial.println (myObject ["wind"]["snelheid"]); int temp = mijnObject["hoofd"]["temp"]; long pres = myObject["hoofd"]["druk"]; int vochtig = mijnObject["hoofd"]["vochtigheid"]; int wind = mijnObject["wind"]["snelheid"]; String land = JSON.stringify(myObject["sys"]["country"]); String city1 = JSON.stringify(myObject["naam"]); String weer = JSON.stringify(myObject["weer"][0]["beschrijving"]); Tekenreekspictogram = JSON.stringify(myObject["weer"][0]["pictogram"]); data[0]= String(temp); gegevens[1]= "/"; data[2]= String(pres); gegevens[3]= "/"; data[4]= String (vochtig); gegevens[5]= "/"; data[6]= String(wind); gegevens[7]= "/"; gegevens[8]= land; gegevens[9]= "/"; gegevens[10]= stad1; gegevens[11]= "/"; gegevens[12]= weer; gegevens[13]= "/"; gegevens[14]= icoon; data[15]= "\n"; for(int i=0;i0) { // Serial.print("HTTP-antwoordcode: "); // Serial.println(httpResponseCode); laadvermogen = http.getString(); } else { Serial.print("Foutcode: "); Serial.println(httpResponseCode); } // Gratis bronnen http.end(); retourlading; }

Stap 4: Verwerkingscode

Verwerkingscode
Verwerkingscode
Verwerkingscode
Verwerkingscode
Verwerkingscode
Verwerkingscode

Voordat u deze code uitvoert, downloadt u de gegeven pictogramafbeeldingen die zullen worden gebruikt om het weer te tonen. En bewaar de afbeeldingen en code in dezelfde map.

importverwerking.serienummer.*;

Seriële myPort; PImage img; PImage img2; PImage img3; PImage img4; PImage img5; PImage img6; PImage img7; PImage img8; PImage img9; PImage img10; PImage img11; PImage img12; PImage img13; PImage img14; PImage img15; PImage img16; PImage img17; PImage img18; int-temp; int.; int vochtig; int wind; String stad = " "; String land = " "; String weer =" "; Tekenreekspictogram = " "; void setup(){ size(500, 500); myPort = nieuw serieel (dit, "COM3", 115200); img = loadImage ("01d.png"); img2 = loadImage("01n.png"); img3 = loadImage("02d.png"); img4 = loadImage("02n.png"); img5 = loadImage("03d.png"); img6 = loadImage("03n.png"); img7 = loadImage("04d.png"); img8 = loadImage("04n.png"); img9 = loadImage("09d.png"); img10 = loadImage("09n.png"); img11 = loadImage("10d.png"); img12 = loadImage("10n.png"); img13 = loadImage("11d.png"); img14 = loadImage("11n.png"); img15 = loadImage("13d.png"); img16 = loadImage("13n.png"); img17 = loadImage("50d.png"); img18 = loadImage("50n.png"); } void draw(){ background(72, 209, 204); tekstgrootte(22); vullen (54, 69, 79); text("Temperatuur: ", 25, 100); tekst(temp +"°C", 200, 100); text("Druk:", 25, 150); tekst (pres + " hpa", 200, 150); text("Vochtigheid: ", 25, 200); tekst(vochtig+" %", 200, 200); text("Wind: ", 25, 250); tekst (wind+" m/s", 200, 250); text("Land/Stad: ", 25, 300); tekst (land +"-"+ stad, 200, 300); text("Weer: ", 25, 350); tekst(weer, 200, 350); if(icon.contains("01d")){ afbeelding(img, 380, 15); } else if(icon.contains("01n")){ image(img2, 380, 15); } else if(icon.contains("02d")){ image(img3, 380, 15); } else if(icon.contains("02n")){ image(img4, 380, 15); } else if(icon.contains("03d")){ image(img5, 380, 15); } else if(icon.contains("03n")){ image(img6, 380, 15); } else if(icon.contains("04d")){ image(img7, 380, 15); } else if(icon.contains("04n")){ image(img8, 380, 15); } else if(icon.contains("09d")){ image(img9, 380, 15); } else if(icon.contains("09n")){ image(img10, 380, 15); } else if(icon.contains("10d")){ image(img11, 380, 15); } else if(icon.contains("10n")){ image(img12, 380, 15); } else if(icon.contains("11d")){ image(img13, 380, 15); } else if(icon.contains("11n")){ image(img14, 380, 15); } else if(icon == "13d"){ image(img15, 380, 15); } else if(icon.contains("13n")){ image(img16, 380, 15); } else if(icon.contains("50d")){ image(img17, 380, 15); } else if(icon.contains("50n")){ image(img18, 380, 15); } } void serialEvent(Serial myPort){ if (myPort.available() > 0){ String data = myPort.readStringUntil('\n'); if(data!= null){ data = trim(data); Tekenreeksitems = split (gegevens, '/'); if (items.length > 1) { temp = int(items[0]); pres = int(items[1]); vochtig = int(items[2]); wind = int(items[3]); stad = items[4].replace("\"", ""); country = items[5].replace("\"", ""); weather = items[6].replace("\"", ""); icon = items[7].replace("\"", ""); } } } }

Aanbevolen: