Turinys:
- 1 žingsnis: Gaukite API raktą ir URL iš „Openweather.org“
- 2 žingsnis: prijungimo schema
- 3 žingsnis: „Arduino“kodas
- 4 žingsnis: apdorojimo kodas
Video: (IOT projektas) Gaukite orų duomenis naudodami ESP8266 ir „Openweather“API: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Šioje pamokoje mes sukursime paprastą IOT projektą, kurio metu iš openweather.com/api paimsime mūsų miesto orų duomenis ir parodysime juos naudodami apdorojimo programinę įrangą.
Priedai:
- Arduino
- ESP8266 arba bet kuris kitas esp modulis
- „Arduino IDE“
- Apdorojimo programinė įranga
- Bandomoji Lenta
- Džemperiai iš vyro į vyrą ir iš patelės į moterį
1 žingsnis: Gaukite API raktą ir URL iš „Openweather.org“
- Sukurkite paskyrą https://openweathermap.org (1 paveikslėlis)
- Prisijungę eikite į API raktus ir gausite API raktą, kaip parodyta paveikslėlyje. (2 pav.)
- Nukopijuokite API raktą ir išsaugokite jį užrašų knygelėje. (3 pav.)
- Eikite į API parinktį (4 paveikslėlis)
- Eikite į API dokumento parinktį, kaip parodyta paveikslėlyje (5 vaizdas)
- Nukopijuokite URL iš rodomo ir išsaugokite užrašų knygelėje (6 paveikslėlis)
2 žingsnis: prijungimo schema
3 žingsnis: „Arduino“kodas
Prieš nukopijuodami šį kodą į „Arduino“, įsitikinkite, kad atsisiuntėte ESP8266 plokštę į arduino ide naudodami lentų tvarkyklę.
#įtraukti
#include #include #include const char* ssid = "Jūsų SSID"; const char* password = "Jūsų SSID PASSWORD"; // Jūsų domeno pavadinimas su URL keliu arba IP adresas su keliu String openWeatherMapApiKey = "Įklijuokite savo API raktą čia"; // Pakeiskite savo šalies kodu ir miestu String city = "Mumbai"; Eilutės countryCode = "IN"; Eilutės duomenys [16]; // Numatytasis laikmatis nustatytas 10 SEKUNDIŲ BANDYMO TIKSLAMS // Galutinei programai patikrinkite API skambučių limitus per valandą/minutę, kad išvengtumėte užblokavimo/uždraudimo be parašo ilgai lastTime = 0; // Laikmatis nustatytas į 10 minučių (600000) // unsigned long timerDelay = 600000; // Nustatyti laikmatį į 10 sekundžių (10000) unsigned long timerDelay = 10000; Styga jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, slaptažodis); //Serial.println("Connecting "); while (WiFi.status ()! = WL_CONNECTED) {delay (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Prisijungta prie WiFi tinklo su IP adresu:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Laikmatis nustatytas į 10 sekundžių (timerDelay kintamasis), prireiks 10 sekundžių, kol bus paskelbtas pirmasis skaitymas."); } void loop () {// Siųsti HTTP GET užklausą, jei ((millis () - lastTime)> timerDelay) {// Patikrinkite „WiFi“ryšio būseną, jei (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) galima naudoti norint gauti var tipą, jei (JSON.typeof (myObject) == "undefined") {//Serial.println(" Nepavyko įvesti įvesties! "); grįžti; } // Serial.print ("JSON objektas ="); // Serial.println (myObject); // Serial.print ("Temperatūra:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Slėgis:"); // Serial.println (myObject ["main"] ["pressure"]); // Serial.print ("Drėgmė:"); // Serial.println (myObject ["main"] ["drėgmė"]); // Serial.print ("Vėjo greitis:"); // Serial.println (myObject ["vėjas"] ["greitis"]); int temp = myObject ["pagrindinis"] ["temp"]; ilgas presas = myObject ["main"] ["pressure"]; int drėgnas = myObject ["main"] ["drėgmė"]; int vėjas = myObject ["vėjas"] ["greitis"]; Styginių šalis = JSON.stringify (myObject ["sys"] ["country"]); Eilutės miestas1 = JSON.stringify (myObject ["name"]); Styginis oras = JSON.stringify (myObject ["weather"] [0] ["description"]); Stygos piktograma = JSON.stringify (myObject ["weather"] [0] ["icon"]); duomenys [0] = eilutė (temp); duomenys [1] = "/"; duomenys [2] = Stygos (pirminiai); duomenys [3] = "/"; duomenys [4] = Styga (drėgna); duomenys [5] = "/"; duomenys [6] = Styga (vėjas); duomenys [7] = "/"; duomenys [8] = šalis; duomenys [9] = "/"; duomenys [10] = miestas1; duomenys [11] = "/"; duomenys [12] = oras; duomenys [13] = "/"; duomenys [14] = piktograma; duomenys [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP atsakymo kodas:"); // Serial.println (httpResponseCode); naudingoji apkrova = http.getString (); } else {Serial.print ("Klaidos kodas:"); Serial.println (httpResponseCode); } // Nemokami ištekliai http.end (); grąžinti naudingą krovinį; }
4 žingsnis: apdorojimo kodas
Prieš paleisdami šį kodą atsisiųskite nurodytus piktogramų vaizdus, kurie bus naudojami orui parodyti. Vaizdus ir kodą laikykite tame pačiame aplanke.
importo apdorojimas.serijinis.*;
Serijinis 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 drėgnas; int vėjas; Styginių miestas = ""; Styginių šalis = ""; Styginis oras = ""; Stygos piktograma = ""; void setup () {dydis (500, 500); myPort = nauja serija (tai, "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 () {fonas (72, 209, 204); textDydis (22); užpildyti (54, 69, 79); tekstas („Temperatūra:“, 25, 100); tekstas (temp +"° C", 200, 100); tekstas („Slėgis:“, 25, 150); tekstas (pres + "hpa", 200, 150); tekstas („Drėgmė:“, 25, 200); tekstas (drėgnas+" %", 200, 200); tekstas („Vėjas:“, 25, 250); tekstas (vėjas+"m/s", 200, 250); tekstas („Šalis/miestas:“, 25, 300); tekstas (šalis + "-" + miestas, 200, 300); tekstas („Oras:“, 25, 350); tekstas (oras, 200, 350); if (icon.contains ("01d")) {image (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 (duomenys! = nulis) {duomenys = apdaila (duomenys); Styginių elementai = padalintas (duomenys, '/'); if (items.length> 1) {temp = int (elementai [0]); pres = int (elementai [1]); drėgnas = int (elementai [2]); vėjas = int (elementai [3]); miestas = elementai [4].replace ("\" "," "); country = items [5].replace (" / "", ""); oras = elementai [6].replace ("\" "," "); icon = items [7].replace (" / "", ""); }}}}
Rekomenduojamas:
„ESP32 Xiaomi Hack“- gaukite duomenis belaidžiu būdu: 6 žingsniai (su nuotraukomis)
ESP32 „Xiaomi Hack“- gaukite duomenis belaidžiu būdu: Mieli draugai, sveiki atvykę į kitą „Instructable“! Šiandien mes mokysimės gauti duomenis, kuriuos šis „Xiaomi“temperatūros ir drėgmės monitorius perduoda naudodamas „ESP32“plokštės „Bluetooth“funkciją. Kaip matote, aš naudoju ESP32 plokštę
IOT - Skelbkite duomenis į „Thingspeak“naudodami ESP8266: 3 veiksmai
IOT | Skelbti duomenis į dalykų kalbą naudojant ESP8266: Šiais laikais „IoT“yra tendencija ir daugelis mašinų turi duomenų, kuriuos galima įkelti per debesį ir analizuoti duomenis. Maži jutikliai atnaujina duomenis apie debesį, o pavara veikia kitame gale. Aš paaiškinsiu vieną iš IoT pavyzdžių. Aš šį straipsnį ir
Kaip registruoti orų stoties duomenis - „Liono Maker“: 5 žingsniai
Kaip registruoti orų stoties duomenis | Liono Maker: Įvadas: Sveiki, tai #LionoMaker. Tai mano atviro kodo ir oficialus „YouTube“kanalas. Čia yra nuoroda: „Liono Maker“/ „YOUTUBE CHANNEL“tai labai įdomu
Sukurkite orų prietaisų skydelį naudodami „Dark Sky“API: 5 žingsniai (su paveikslėliais)
Sukurkite orų prietaisų skydelį naudodami „Dark Sky“API: „Dark Sky“specializuojasi orų prognozavimo ir vizualizavimo srityse. Šauniausias „Dark Sky“aspektas yra jų orų API, kurią galime naudoti norėdami gauti orų duomenis iš beveik bet kurios pasaulio vietos. Tai ne tik lietingas ar saulėtas oras, bet ir temperatūra
ESP8266 orų stotis, rodanti duomenis svetainėje: 7 žingsniai
ESP8266 orų stotis, rodanti duomenis svetainėje: Pastaba: šios pamokos dalys gali būti pasiekiamos vaizdo formatu mano „YouTube“kanale - „Tech Tribe“. Šioje instrukcijoje parodysiu, kaip sukurti orų stotį, kuri tiesiogiai siunčia duomenis į jūsų svetainę . Todėl jums reikės savo domeno (pvz .: