Բովանդակություն:
- Քայլ 1: Ստացեք API բանալին և URL- ը Openweather.org- ից
- Քայլ 2: Միացման դիագրամ
- Քայլ 3: Arduino կոդ
- Քայլ 4: Մշակման ծածկագիր
Video: (IOT նախագիծ) Եղանակի տվյալներ ստացեք ՝ օգտագործելով ESP8266 և Openweather API ՝ 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Այս ուսանելի ծրագրում մենք պատրաստվում ենք կառուցել մի պարզ IOT նախագիծ, որի միջոցով openweather.com/api- ից կբերենք մեր քաղաքի եղանակի տվյալները և կցուցադրենք դրանք Processing ծրագրաշարի միջոցով:
Պարագաներ:
- Արդուինո
- ESP8266 կամ ցանկացած այլ esp մոդուլ
- Arduino IDE
- Մշակման ծրագրակազմ
- Breadboard
- Jumperwires Male to Male եւ Male to Female
Քայլ 1: Ստացեք API բանալին և URL- ը Openweather.org- ից
- Ստեղծեք հաշիվ https://openweathermap.org կայքում (Պատկեր 1)
- Մուտք գործելուց հետո գնացեք API ստեղներ և կստանաք API բանալին, ինչպես ցույց է տրված նկարում: (Պատկեր 2)
- Պատճենեք API ստեղնը և պահեք այն նոթատետրում: (Պատկեր 3)
- Գնալ դեպի API տարբերակ (Պատկեր 4)
- Գնացեք API փաստաթղթի տարբերակ, ինչպես ցույց է տրված նկարում (Պատկեր 5)
- Պատճենեք url- ը և ցուցադրվածից և պահեք այն նոթատետրում (Պատկեր 6)
Քայլ 2: Միացման դիագրամ
Քայլ 3: Arduino կոդ
Նախքան այս կոդը Arduino- ում պատճենելը, համոզվեք, որ ներբեռնել եք ESP8266 տախտակը arduino ide- ում ՝ օգտագործելով Տախտակների կառավարիչը:
#ներառում
#include #include #include const char* ssid = "Your SSID"; const char* password = "Your SSID PASSWORD"; // Your Domain name with URL path or IP address with path String openWeatherMapApiKey = "Տեղադրեք ձեր API բանալին այստեղ"; // Փոխարինեք ձեր երկրի ծածկագրով և քաղաքով Լարային քաղաք = "Մումբայ"; Լարային երկրի Կոդ = "IN"; Լարային տվյալներ [16]; // EFԱՄԱՆԱԿԱՎՈՐ IMԱՄԱՆԱԿԸ ՏԵՍԱԿԱԳՈՐՎՈ 10Մ Է 10 ՎԱՅՔ // Վերջնական հայտի համար ժամում/րոպեում ստուգեք API- ի զանգերի սահմանաչափերը `երկար արգելափակված/արգելված չստորագրված երկար ժամանակ = 0; // erամաչափը սահմանվել է 10 րոպե (600000) // անստորագիր երկարաժամկետՀետաձգում = 600000; // timամաչափը սահմանել 10 վայրկյան (10000) անստորագիր երկարաժամկետՀետաձգում = 10000; Լարային jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, գաղտնաբառ); //Serial.println("Connecting)); while (WiFi.status ()! = WL_CONNECTED) {ուշացում (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Միացված է WiFi ցանցին IP հասցեով"); // Serial.println (WiFi.localIP ()); // // Serial.println («erամաչափը սահմանվել է 10 վայրկյան (timerDelay փոփոխական), առաջին ընթերցումը հրապարակելուց առաջ կտևի 10 վայրկյան»); } void loop () {// Ուղարկեք HTTP GET հարցում, եթե ((millis () - lastTime)> timerDelay) {// Ստուգեք WiFi կապի կարգավիճակը, եթե (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= " + քաղաք +", " + countryCode +" & APPID = " +" d5b56fd07988143ae141503ed9d81742 " +" & units = metric "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) - ը կարող է օգտագործվել var- ի տեսակը ստանալու համար, եթե (JSON.typeof (myObject) == "undefined") {//Serial.println("Arming input sparing! "); վերադարձ; } // Serial.print ("JSON օբյեկտ ="); // Serial.println (myObject); // Serial.print ("Temերմաստիճանը."); // Serial.println (myObject ["հիմնական"] ["temp"]); // Serial.print ("ureնշում."); // Serial.println (myObject ["հիմնական"] ["ճնշում"]); // Serial.print ("Խոնավություն."); // Serial.println (myObject ["հիմնական"] ["խոնավություն"]); // Serial.print ("Քամու արագություն."); // Serial.println (myObject ["քամի"] ["արագություն"]); int temp = myObject ["հիմնական"] ["temp"]; երկար pres = myObject ["հիմնական"] ["ճնշում"]; int խոնավ = myObject ["հիմնական"] ["խոնավություն"]; int քամի = myObject ["քամի"] ["արագություն"]; Լարային երկիր = JSON.stringify (myObject ["sys"] ["country"]); Լարային քաղաք 1 = JSON.stringify (myObject ["name"]); Լարային եղանակ = JSON.stringify (myObject ["weather"] [0] ["description"]); Լարերի պատկերակ = JSON.stringify (myObject ["weather"] [0] ["icon"]); տվյալներ [0] = Լար (ջերմաստիճան); տվյալներ [1] = "/"; տվյալներ [2] = Լարային (նախնական); տվյալներ [3] = "/"; տվյալներ [4] = Լարային (խոնավ); տվյալներ [5] = "/"; տվյալներ [6] = Լար (քամի); տվյալներ [7] = "/"; տվյալներ [8] = երկիր; տվյալներ [9] = "/"; տվյալներ [10] = քաղաք 1; տվյալներ [11] = "/"; տվյալներ [12] = եղանակ; տվյալներ [13] = "/"; տվյալներ [14] = պատկերակ; տվյալներ [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP Response code:"); // Serial.println (httpResponseCode); բեռնվածություն = http.getString (); } else {Serial.print ("Սխալի կոդը."); Serial.println (httpResponseCode); } // Անվճար ռեսուրսներ http.end (); վերադարձ բեռնվածություն; }
Քայլ 4: Մշակման ծածկագիր
Այս կոդը գործարկելուց առաջ ներբեռնեք տվյալ պատկերակի պատկերները, որոնք կօգտագործվեն եղանակը ցույց տալու համար: Եվ պահեք պատկերներն ու ծածկագիրը նույն թղթապանակում:
ներմուծման մշակում. սերիա:*;
Սերիական 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 ջերմաստիճան; int pres; int խոնավ; int քամի; Լարային քաղաք = ""; Լարային երկիր = ""; Լարային եղանակ = ""; Լարի պատկերակ = ""; void setup () {չափը (500, 500); myPort = նոր Սերիա (սա, «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); textSize (22); լրացնել (54, 69, 79); տեքստ («Temերմաստիճանը.», 25, 100); տեքստ (ջերմաստիճան +"° C", 200, 100); տեքստ («ureնշում.», 25, 150); տեքստ (pres + "hpa", 200, 150); տեքստ («Խոնավություն», 25, 200); տեքստ (խոնավ+" %", 200, 200); տեքստ («Քամին:», 25, 250); տեքստ (քամի+«մ/վ», 200, 250); տեքստ («Երկիր/քաղաք.», 25, 300); տեքստ (երկիր + "-" + քաղաք, 200, 300); տեքստ («Եղանակ.», 25, 350); տեքստ (եղանակ, 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 (պատկերակ == "13d") {պատկեր (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); Լարային տարրեր = պառակտում (տվյալներ, '/'); if (items.length> 1) {temp = int (տարրեր [0]); pres = int (կետեր [1]); խոնավ = int (նյութեր [2]); քամին = int (նյութեր [3]); քաղաք = տարրեր [4].փոխարինել ("\" "," "); երկիր = իրեր [5]. փոխարինել (" / "", ""); եղանակ = տարրեր [6].փոխարինել ("\" "," "); պատկերակ = իրեր [7]. փոխարինել (" / "", ""); }}}}
Խորհուրդ ենք տալիս:
Խելացի բաշխված IoT եղանակի մոնիտորինգի համակարգ `օգտագործելով NodeMCU: 11 քայլ
Խելացի բաշխված IoT եղանակի մոնիտորինգի համակարգ NodeMCU- ի միջոցով. Դուք բոլորդ գուցե տեղյակ եք ավանդական եղանակային կայանի մասին. բայց երբևէ մտածե՞լ եք, թե ինչպես է այն իրականում աշխատում: Քանի որ ավանդական եղանակային կայանը ծախսատար և ծանրաբեռնված է, այս կայանների խտությունը մեկ միավորի մակերեսով շատ ավելի փոքր է, ինչը նպաստում է
ESP32 Xiaomi Hack - Ստացեք տվյալներ անլար ՝ 6 քայլ (նկարներով)
ESP32 Xiaomi Hack - Ստացեք տվյալներ անլար. Հարգելի ընկերներ, բարի գալուստ մեկ այլ հրահանգելի: Այսօր մենք կսովորենք, թե ինչպես ստանալ այն տվյալները, որոնք փոխանցում է այս Xiaomi ջերմաստիճանի և խոնավության մոնիտորը ՝ օգտագործելով ESP32 տախտակի Bluetooth ֆունկցիոնալությունը: Ինչպես տեսնում եք, ես օգտագործում եմ ESP32 տախտակ
IOT - Տեղադրեք տվյալներ Thingspeak- ում ՝ օգտագործելով ESP8266: 3 քայլ
IOT | ESP8266- ի միջոցով տվյալներ տեղադրեք Thingspeak- ին. Մեր օրերում IoT- ը թրենդային է, և շատ մեքենաներ ունեն տվյալներ ամպի վրա վերբեռնելու և տվյալները վերլուծելու համար: Փոքր սենսորները թարմացնում են տվյալները ամպի վրա և դրա վրա գործում է մեկ այլ ծայրում գործող գործարկիչ: Ես պատրաստվում եմ բացատրել IoT- ի օրինակներից մեկը: Ես այս հոդվածն եմ և
Կառուցեք եղանակի վահանակ ՝ օգտագործելով Dark Sky API- ն ՝ 5 քայլ (նկարներով)
Կառուցեք եղանակի վահանակ ՝ օգտագործելով Dark Sky API- ն. Dark Sky- ը մասնագիտացած է եղանակի կանխատեսման և արտացոլման մեջ: Dark Sky- ի ամենաթեժ կողմը եղանակային API- ն է, որը մենք կարող ենք օգտագործել աշխարհի գրեթե ցանկացած վայրից եղանակի տվյալները վերցնելու համար: Եղանակը ոչ միայն անձրևոտ է կամ արևոտ, այլև ջերմաստիճանը
IOT Եղանակի ամպ - OpenWeather քարտեզների օգտագործմամբ. 11 քայլ (նկարներով)
IOT Եղանակի ամպ - OpenWeatherMaps- ի օգտագործմամբ. Սա ամպ է, որը կախված է սենյակի առաստաղից և խաղում է որոշակի օրինաչափություններ `ելնելով ինտերնետից վերադարձված արդյունքից: Այն վերցնում է եղանակի տվյալները OpenWeatherMaps- ից: Այն կարող է ձեռքով վերահսկվել վեբ ինտերֆեյսի կամ ավտոմատ