Სარჩევი:
- ნაბიჯი 1: მიიღეთ API გასაღები და URL Openweather.org– დან
- ნაბიჯი 2: კავშირის დიაგრამა
- ნაბიჯი 3: Arduino კოდი
- ნაბიჯი 4: დამუშავების კოდი
ვიდეო: (IOT პროექტი) მიიღეთ ამინდის მონაცემები ESP8266 და Openweather API გამოყენებით: 5 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:15
ამ ინსტრუქციურად ჩვენ ვაპირებთ ავაშენოთ მარტივი IOT პროექტი, რომელშიც მოვიყვანთ ჩვენი ქალაქის ამინდის მონაცემებს openweather.com/api– დან და ვაჩვენებთ მას დამუშავების პროგრამული უზრუნველყოფის გამოყენებით.
მასალები:
- არდუინო
- ESP8266 ან სხვა esp მოდული
- Arduino IDE
- პროგრამული უზრუნველყოფის დამუშავება
- პურის დაფა
- Jumperwires მამაკაცი კაცი და მამაკაცი ქალი
ნაბიჯი 1: მიიღეთ API გასაღები და URL Openweather.org– დან
- ანგარიშის შექმნა https://openweathermap.org (სურათი 1)
- მას შემდეგ რაც შეხვალთ გადადით API კლავიშებზე და მიიღებთ API გასაღებს როგორც ნაჩვენებია სურათზე. (სურათი 2)
- დააკოპირეთ API გასაღები და შეინახეთ იგი notepad ფაილში. (სურათი 3)
- გადადით API პარამეტრზე (სურათი 4)
- გადადით API დოკუმენტის ვარიანტზე, როგორც ნაჩვენებია სურათზე (სურათი 5)
- დააკოპირეთ url და ნაჩვენები და შეინახეთ იგი notepad ფაილში (სურათი 6)
ნაბიჯი 2: კავშირის დიაგრამა
ნაბიჯი 3: Arduino კოდი
ამ კოდის Arduino– ში კოპირებამდე დარწმუნდით, რომ გადმოწერილი გაქვთ ESP8266 დაფა arduino ide– ში დაფების მენეჯერის გამოყენებით.
#ჩართეთ
#მოიცავს #მოიცავს #მოიცავს კონსტ char* ssid = "შენი SSID"; const char* პაროლი = "თქვენი SSID PASSWORD"; // თქვენი დომენის სახელი URL ბილიკით ან IP მისამართი ბილიკით String openWeatherMapApiKey = "ჩასვით თქვენი API გასაღები აქ"; // შეცვალეთ თქვენი ქვეყნის კოდი და ქალაქი სიმებიანი ქალაქი = "მუმბაი"; სიმებიანი ქვეყნის კოდი = "IN"; სიმებიანი მონაცემები [16]; // დეფილატორული ტაიმერი დაყენებულია 10 წამის საცდელად // ტაიმერი დაყენებულია 10 წუთზე (600000) // ხელმოუწერელი გრძელი ქრონომეტრი დაგვიანებით = 600000; // დააყენეთ ქრონომეტრი 10 წამზე (10000) ხელმოუწერელ ხანგრძლივ ტაიმერამდე = 10000; სიმებიანი jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, პაროლი); //Serial.println(" დაკავშირება "); while (WiFi.status ()! = WL_CONNECTED) {დაგვიანებით (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("დაკავშირებულია WiFi ქსელთან IP მისამართით:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("ტაიმერი დაყენებულია 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 " +" & ერთეულები = მეტრული "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) შეიძლება გამოყენებულ იქნას var- ის ტიპის მისაღებად, თუ (JSON.typeof (myObject) == "განუსაზღვრელი") {//Serial.println(" შეყვანის გაშიფვრა ვერ მოხერხდა! "); დაბრუნების; } // Serial.print ("JSON ობიექტი ="); // Serial.println (myObject); // Serial.print ("ტემპერატურა:"); // Serial.println (myObject ["მთავარი"] ["temp"]); // Serial.print ("წნევა:"); // Serial.println (myObject ["მთავარი"] ["წნევა"]); // Serial.print ("ტენიანობა:"); // Serial.println (myObject ["მთავარი"] ["ტენიანობა"]); // Serial.print ("ქარის სიჩქარე:"); // Serial.println (myObject ["ქარი"] ["სიჩქარე"]); int temp = myObject ["მთავარი"] ["temp"]; long pres = myObject ["მთავარი"] ["წნევა"]; int ტენიანი = myObject ["მთავარი"] ["ტენიანობა"]; int wind = myObject ["ქარი"] ["სიჩქარე"]; სიმებიანი ქვეყანა = JSON.stringify (myObject ["sys"] ["country"]); სიმებიანი ქალაქი 1 = JSON.stringify (myObject ["სახელი"]); სიმებიანი ამინდი = JSON.stringify (myObject ["ამინდი"] [0] ["აღწერა"]); სიმებიანი ხატი = JSON.stringify (myObject ["ამინდი"] [0] ["ხატი"]); მონაცემები [0] = სიმებიანი (ტემპი); მონაცემები [1] = "/"; მონაცემები [2] = სიმებიანი (pres); მონაცემები [3] = "/"; მონაცემები [4] = სიმებიანი (ტენიანი); მონაცემები [5] = "/"; მონაცემები [6] = სიმებიანი (ქარი); მონაცემები [7] = "/"; მონაცემები [8] = ქვეყანა; მონაცემები [9] = "/"; მონაცემები [10] = ქალაქი 1; მონაცემები [11] = "/"; მონაცემები [12] = ამინდი; მონაცემები [13] = "/"; მონაცემები [14] = ხატი; მონაცემები [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP პასუხის კოდი:"); // 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 () {ფონი (72, 209, 204); ტექსტის ზომა (22); შევსება (54, 69, 79); ტექსტი ("ტემპერატურა:", 25, 100); ტექსტი (ტემპერატურა +"° C", 200, 100); ტექსტი ("წნევა:", 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 (icon == "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 (სერიული myPort) {if (myPort.available ()> 0) {სიმებიანი მონაცემები = myPort.readStringUntil ('\ n'); if (მონაცემები! = null) {data = მორთვა (მონაცემები); სიმებიანი ელემენტები = გაყოფა (მონაცემები, '/'); if (items.length> 1) {temp = int (ერთეული [0]); pres = int (პუნქტები [1]); ტენიანი = int (ერთეულები [2]); ქარი = int (პუნქტები [3]); ქალაქი = ნივთები [4].შეცვლა ("\" "," "); ქვეყანა = ერთეულები [5].შეცვლა (" / "", ""); ამინდი = ნივთები [6].შეცვლა ("\" "," "); icon = ერთეულები [7].შეცვლა (" / "", ""); }}}}
გირჩევთ:
ESP32 Xiaomi Hack - მიიღეთ მონაცემები უსადენოდ: 6 ნაბიჯი (სურათებით)
ESP32 Xiaomi Hack - მიიღეთ მონაცემები უსადენოდ: ძვირფასო მეგობრებო კეთილი იყოს თქვენი მობრძანება სხვა ინსტრუქციულ სისტემაში! დღეს ჩვენ ვისწავლით თუ როგორ უნდა მივიღოთ მონაცემები, რომელსაც ეს Xiaomi ტემპერატურისა და ტენიანობის მონიტორი გადასცემს ESP32 დაფის Bluetooth ფუნქციონირების გამოყენებით. როგორც ხედავთ, მე ვიყენებ ESP32 დაფას
მინი ამინდის ამინდის სადგური Arduino– ს და ThingSpeak– ის გამოყენებით: 4 ნაბიჯი
მინი ამინდის ამინდის სადგური Arduino– ს და ThingSpeak– ის გამოყენებით: გამარჯობა ყველას. ამ ინსტრუქციაში, მე გაგიწევთ ნაბიჯებს პერსონალური მინი ამინდის სადგურის შესაქმნელად. ასევე, ჩვენ ვიყენებთ ThingSpeak API– ს, რომ ატვირთავს ჩვენი ამინდის მონაცემებს მათ სერვერებზე, წინააღმდეგ შემთხვევაში რა არის ამინდის სტატისტიკის მიზანი
ამინდის მონაცემები Google Sheets და Google Script გამოყენებით: 7 ნაბიჯი
ამინდის მონაცემები Google Sheets და Google Script– ის გამოყენებით: ამ Blogtut– ში ჩვენ ვაპირებთ SHT25 სენსორის წაკითხვას Google ფურცლებზე Adafruit huzzah ESP8266 გამოყენებით, რაც მონაცემთა ინტერნეტში გაგზავნას უწყობს ხელს. Google– ის მონაცემების გაგზავნა ძალიან სასარგებლოა და ძირითადი გზა, რომელიც ინახავს მონაცემებს
IOT ამინდის ღრუბელი - OpenWeather რუქების გამოყენებით: 11 ნაბიჯი (სურათებით)
IOT ამინდის ღრუბელი - OpenWeatherMaps- ის გამოყენებით: ეს არის ღრუბელი, რომელიც კიდია ოთახის ჭერზე და თამაშობს გარკვეულ შაბლონებს ინტერნეტიდან დაბრუნებული შედეგის საფუძველზე. ის იღებს ამინდის მონაცემებს OpenWeatherMaps– დან. მისი კონტროლი შესაძლებელია ხელით ვებ ინტერფეისით ან ავტომატური საშუალებით
Acurite 5 in 1 ამინდის სადგური Raspberry Pi და Weewx გამოყენებით (სხვა ამინდის სადგურები თავსებადია): 5 ნაბიჯი (სურათებით)
Acurite 5 in 1 ამინდის სადგური Raspberry Pi და Weewx– ის გამოყენებით (სხვა ამინდის სადგურები თავსებადია): როდესაც მე ვიყიდე Acurite 5 in 1 ამინდის სადგური, მინდოდა შემეძლოს ამინდის შემოწმება ჩემს სახლში ყოფნისას. როდესაც სახლში მივედი და დავაყენე მივხვდი, რომ ან ეკრანი კომპიუტერთან უნდა მქონოდა ჩართული, ან მათი ჭკვიანი კერა შემეძინა