Satura rādītājs:
- 1. darbība. Iegūstiet API atslēgu un URL no vietnes Openweather.org
- 2. darbība. Savienojuma shēma
- 3. darbība: Arduino kods
- 4. darbība: koda apstrāde
Video: (IOT projekts) Iegūstiet laika apstākļu datus, izmantojot ESP8266 un Openweather API: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:51
Š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:
- Arduino
- ESP8266 vai jebkuru citu esp moduli
- Arduino IDE
- Apstrādes programmatūra
- Maizes dēlis
- 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
- Izveidojiet kontu vietnē https://openweathermap.org (1. attēls)
- 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)
- Kopējiet API atslēgu un saglabājiet to piezīmju grāmatiņas failā. (3. attēls)
- Doties uz API opciju (4. attēls)
- Dodieties uz API dokumenta opciju, kā parādīts attēlā (5. attēls)
- Kopējiet URL no un un saglabājiet to piezīmju grāmatiņas failā (6. attēls)
2. darbība. 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
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:
Vieda izplatīta IoT laika apstākļu novērošanas sistēma, izmantojot NodeMCU: 11 soļi
Vieda izplatīta IoT laika apstākļu novērošanas sistēma, izmantojot NodeMCU: Jūs visi varētu zināt tradicionālo laika staciju; bet vai esat kādreiz domājuši, kā tas patiesībā darbojas? Tā kā tradicionālā meteoroloģiskā stacija ir dārga un apjomīga, šo staciju blīvums uz platības vienību ir ļoti zems, kas veicina
Laika apstākļu novērošanas sistēma, izmantojot Raspberry Pi3 un DHT11 sensoru: 4 soļi
Laika apstākļu novērošanas sistēma, izmantojot Raspberry Pi3 un DHT11 sensoru: Šajā apmācībā es parādīšu, kā savienot DHT11 ar Raspberry Pi un izvadīt mitruma un temperatūras rādījumus uz LCD. DHT11 temperatūras un mitruma sensors ir jauks mazs modulis kas nodrošina digitālo temperatūru un mitrumu
Laika apstākļu uzraudzība, izmantojot ESP32_DHT11_OLED_Thingspeak: 7 soļi
Laika apstākļu uzraudzība, izmantojot ESP32_DHT11_OLED_Thingspeak: Šajā apmācībā jūs izveidosit laika apstākļu monitoru, kas uzrauga temperatūru un mitrumu, izmantojot ESP32 un DHT11. Tas tiek parādīts OLED displejā. Un tas tiek augšupielādēts vietnē ThingSpeak. ESP32 ir spēcīgs IOT rīks. Tā ir lēta sistēma
Izveidojiet laika apstākļu informācijas paneli, izmantojot Dark Sky API: 5 soļi (ar attēliem)
Izveidojiet laika apstākļu informācijas paneli, izmantojot Dark Sky API: Dark Sky specializējas laika prognozēšanā un vizualizācijā. Stilīgākais Dark Sky aspekts ir viņu laika apstākļu API, ko mēs varam izmantot, lai izgūtu laika apstākļu datus no gandrīz jebkuras vietas pasaulē. Tas ir ne tikai lietains vai saulains laiks, bet arī temperatūra
IoT laika apstākļu monitora e-papīra displejs - Savienots ar internetu ESP8266: 7 soļi
IoT laika apstākļu monitora e-papīra displejs | Savienots ar internetu ESP8266: E-papīra displejā tiks parādīta laika informācija, kas sinhronizēta ar OpenWeatherMap API (izmantojot WiFi). Projekta sirds ir ESP8266/32. Hei, kas notiek, puiši? Akarsh šeit no CETech. Šodien mēs izveidosim projektu, kas ir laika apstākļu monitors