Satura rādītājs:

(IOT projekts) Iegūstiet laika apstākļu datus, izmantojot ESP8266 un Openweather API: 5 soļi
(IOT projekts) Iegūstiet laika apstākļu datus, izmantojot ESP8266 un Openweather API: 5 soļi

Video: (IOT projekts) Iegūstiet laika apstākļu datus, izmantojot ESP8266 un Openweather API: 5 soļi

Video: (IOT projekts) Iegūstiet laika apstākļu datus, izmantojot ESP8266 un Openweather API: 5 soļi
Video: Пилотируйте Cessna вокруг света! 🛩🌥🌎 - Geographical Adventures GamePlay 🎮📱 🇷🇺 2024, Jūlijs
Anonim
(IOT projekts) Iegūstiet laika apstākļu datus, izmantojot ESP8266 un Openweather API
(IOT projekts) Iegūstiet laika apstākļu datus, izmantojot ESP8266 un Openweather API

Šajā pamācībā mēs izveidosim vienkāršu IOT projektu, kurā no vietnes openweather.com/api iegūstam mūsu pilsētas laika apstākļu datus un parādām tos, izmantojot apstrādes programmatūru.

Piegādes:

  1. Arduino
  2. ESP8266 vai jebkuru citu esp moduli
  3. Arduino IDE
  4. Apstrādes programmatūra
  5. Maizes dēlis
  6. Jumperwires no vīrieša uz vīrieti un no vīrieša uz sievieti

1. darbība. Iegūstiet API atslēgu un URL no vietnes Openweather.org

Iegūstiet API atslēgu un URL no vietnes Openweather.org
Iegūstiet API atslēgu un URL no vietnes Openweather.org
Iegūstiet API atslēgu un URL no vietnes Openweather.org
Iegūstiet API atslēgu un URL no vietnes Openweather.org
Iegūstiet API atslēgu un URL no vietnes Openweather.org
Iegūstiet API atslēgu un URL no vietnes Openweather.org
  1. Izveidojiet kontu vietnē https://openweathermap.org (1. attēls)
  2. Pēc pieteikšanās dodieties uz API atslēgām un jūs saņemsiet API atslēgu, kā parādīts attēlā. (2. attēls)
  3. Kopējiet API atslēgu un saglabājiet to piezīmju grāmatiņas failā. (3. attēls)
  4. Doties uz API opciju (4. attēls)
  5. Dodieties uz API dokumenta opciju, kā parādīts attēlā (5. attēls)
  6. Kopējiet URL no un un saglabājiet to piezīmju grāmatiņas failā (6. attēls)

2. darbība. Savienojuma shēma

Savienojuma shēma
Savienojuma shēma

3. darbība: Arduino kods

Pirms šī koda kopēšanas Arduino, pārliecinieties, vai esat lejupielādējis ESP8266 plāksni arduino ide, izmantojot Boards manager.

#iekļaut

#include #include #include const char* ssid = "Tavs SSID"; const char* password = "Jūsu SSID PASSWORD"; // Jūsu domēna nosaukums ar URL ceļu vai IP adrese ar ceļu String openWeatherMapApiKey = "Ielīmējiet savu API atslēgu šeit"; // Aizstāt ar savu valsts kodu un pilsētu String city = "Mumbai"; String countryCode = "IN"; Stīgu dati [16]; // Noklusējuma taimeris ir iestatīts uz 10 sekundēm, lai pārbaudītu mērķus // Pēdējai lietojumprogrammai pārbaudiet API zvanu ierobežojumus stundā/minūtē, lai izvairītos no bloķēšanas/aizliegšanas neparakstīts long lastTime = 0; // Taimeris iestatīts uz 10 minūtēm (600000) // neparakstīts garš taimerisDelay = 600000; // Iestatīt taimeri uz 10 sekundēm (10000) unsigned long timerDelay = 10000; String jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, parole); //Serial.println("Savienojums "); while (WiFi.status ()! = WL_CONNECTED) {kavēšanās (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Savienots ar WiFi tīklu ar IP adresi:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Taimeris iestatīts uz 10 sekundēm (timerDelay mainīgais), paies 10 sekundes, pirms tiks publicēts pirmais lasījums."); } void loop () {// Sūtīt HTTP GET pieprasījumu, ja ((millis () - lastTime)> timerDelay) {// Pārbaudiet WiFi savienojuma statusu, ja (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) var izmantot, lai iegūtu var tipa tipu, ja (JSON.typeof (myObject) == "undefined") {//Serial.println(" Ievades kļūda neizdevās! "); atgriešanās; } // Serial.print ("JSON objekts ="); // Serial.println (myObject); // Serial.print ("Temperatūra:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Spiediens:"); // Serial.println (myObject ["main"] ["spiediens"]); // Serial.print ("Mitrums:"); // Serial.println (myObject ["main"] ["mitrums"]); // Serial.print ("Vēja ātrums:"); // Serial.println (myObject ["vējš"] ["ātrums"]); int temp = myObject ["galvenais"] ["temp"]; garš pres = myObject ["galvenais"] ["spiediens"]; int mitrs = myObject ["galvenais"] ["mitrums"]; int vējš = myObject ["vējš"] ["ātrums"]; String valsts = JSON.stringify (myObject ["sys"] ["valsts"]); String city1 = JSON.stringify (myObject ["name"]); Stīgu laika apstākļi = JSON.stringify (myObject ["weather"] [0] ["description"]); String icon = JSON.stringify (myObject ["laika apstākļi"] [0] ["ikona"]); dati [0] = Virkne (temp); dati [1] = "/"; dati [2] = String (pres); dati [3] = "/"; dati [4] = Stīgas (mitras); dati [5] = "/"; dati [6] = Stīga (vējš); dati [7] = "/"; dati [8] = valsts; dati [9] = "/"; dati [10] = pilsēta1; dati [11] = "/"; dati [12] = laika apstākļi; dati [13] = "/"; dati [14] = ikona; dati [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP atbildes kods:"); // Serial.println (httpResponseCode); kravnesība = http.getString (); } else {Serial.print ("Kļūdas kods:"); Serial.println (httpResponseCode); } // Bezmaksas resursi http.end (); atgriezt lietderīgo kravu; }

4. darbība: koda apstrāde

Apstrādes kods
Apstrādes kods
Apstrādes kods
Apstrādes kods
Apstrādes kods
Apstrādes kods

Pirms šī koda palaišanas lejupielādējiet dotos ikonas attēlus, kas tiks izmantoti laika apstākļu parādīšanai. Un saglabājiet attēlus un kodu vienā mapē.

importa apstrāde.sērija.*;

Sērijas 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 pres; int mitrs; int vējš; Stīgu pilsēta = ""; Stīgu valsts = ""; Stīgu laika apstākļi = ""; String icon = ""; void setup () {izmērs (500, 500); myPort = jauns seriāls (šis, "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 () {fons (72, 209, 204); textSize (22); aizpildīt (54, 69, 79); teksts ("Temperatūra:", 25, 100); teksts (temp +"° C", 200, 100); teksts ("Spiediens:", 25, 150); teksts (pres + "hpa", 200, 150); teksts ("Mitrums:", 25, 200); teksts (mitrs+" %", 200, 200); teksts ("Vējš:", 25, 250); teksts (vējš+"m/s", 200, 250); teksts ("Valsts/pilsēta:", 25, 300); teksts (valsts + "-" + pilsēta, 200, 300); teksts ("Laiks:", 25, 350); teksts (laika apstākļi, 200, 350); if (icon.contains ("01d")) {image (img, 380, 15); } cits if (icon.contains ("01n")) {image (img2, 380, 15); } cits if (icon.contains ("02d")) {image (img3, 380, 15); } cits if (icon.contains ("02n")) {image (img4, 380, 15); } cits if (icon.contains ("03d")) {image (img5, 380, 15); } cits if (icon.contains ("03n")) {image (img6, 380, 15); } cits if (icon.contains ("04d")) {image (img7, 380, 15); } cits if (icon.contains ("04n")) {image (img8, 380, 15); } cits if (icon.contains ("09d")) {image (img9, 380, 15); } cits if (icon.contains ("09n")) {image (img10, 380, 15); } cits if (icon.contains ("10d")) {image (img11, 380, 15); } cits if (icon.contains ("10n")) {image (img12, 380, 15); } cits if (icon.contains ("11d")) {image (img13, 380, 15); } cits if (icon.contains ("11n")) {image (img14, 380, 15); } cits if (ikona == "13d") {attēls (img15, 380, 15); } cits if (icon.contains ("13n")) {image (img16, 380, 15); } cits if (icon.contains ("50d")) {image (img17, 380, 15); } cits if (icon.contains ("50n")) {image (img18, 380, 15); }} void serialEvent (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); ja (dati! = nulle) {dati = apdare (dati); Stīgu vienumi = sadalīts (dati, '/'); ja (preces.garums> 1) {temp = int (preces [0]); pres = int (vienumi [1]); mitrs = int (priekšmeti [2]); vējš = int (priekšmeti [3]); pilsēta = preces [4].aizstāt ("\" "," "); valsts = preces [5]. aizstāt (" / "", ""); laika apstākļi = preces [6].aizstāt ("\" "," "); ikona = preces [7]. aizstāt (" / "", ""); }}}}

Ieteicams: