Tartalomjegyzék:
- 1. lépés: Szerezze be az API -kulcsot és az URL -t az Openweather.org webhelyről
- 2. lépés: Csatlakozási rajz
- 3. lépés: Arduino kód
- 4. lépés: A kód feldolgozása
Videó: (IOT projekt) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Ebben az utasításban egy egyszerű IOT projektet fogunk felépíteni, amelyben lekérjük városunk időjárási adatait az openweather.com/api webhelyről, és megjelenítjük azokat a Processing szoftver segítségével.
Kellékek:
- Arduino
- ESP8266 vagy bármely más esp modul
- Arduino IDE
- Feldolgozó szoftver
- Kenyeretábla
- Jumperwires férfi -férfi és férfi -nő
1. lépés: Szerezze be az API -kulcsot és az URL -t az Openweather.org webhelyről
- Fiók létrehozása a https://openweathermap.org oldalon (1. kép)
- A bejelentkezés után lépjen az API kulcsokhoz, és megkapja az API kulcsot, amint az a képen látható. (2. kép)
- Másolja az API -kulcsot, és mentse el egy jegyzettömb fájlba. (3. kép)
- Lépjen az API opcióra (4. kép)
- Lépjen az API doc opcióra, amint az a képen látható (5. kép)
- Másolja az URL -t a és a megjelenített és mentse el egy jegyzettömb fájlba (6. kép)
2. lépés: Csatlakozási rajz
3. lépés: Arduino kód
Mielőtt ezt a kódot az Arduino -ba másolja, győződjön meg róla, hogy az ESP8266 táblát letöltötte az arduino ide -ba a Boards manager segítségével.
#befoglalni
#include #include #include const char* ssid = "Az Ön SSID -je"; const char* password = "Az Ön SSID -JELSZÓJA"; // Az Ön domainneve URL -útvonallal vagy IP -címmel, elérési útvonallal String openWeatherMapApiKey = "Illessze be az API -kulcsot ide"; // Cserélje ki országkódjával és városával String city = "Mumbai"; String countryCode = "IN"; String adatok [16]; // Az alapértelmezett időzítő 10 másodpercre van állítva a tesztelés céljaira // Végső alkalmazás esetén ellenőrizze az API híváskorlátozásait óránként/percenként, hogy elkerülje a blokkolt/kitiltott előjel nélküli long lastTime = 0; // Az időzítő 10 percre van állítva (600000) // előjel nélküli hosszú időzítőDelay = 600000; // Az időzítő beállítása 10 másodpercre (10000) unsigned long timerDelay = 10000; String jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, jelszó); //Serial.println("Connecting "); while (WiFi.status ()! = WL_CONNECTED) {delay (500); // Sorozat.nyomtatás ("."); } // Sorozat.println (""); // Serial.print ("Csatlakoztatva WiFi hálózathoz IP -címmel:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Az időzítő 10 másodpercre van állítva (timerDelay változó), az első olvasás közzététele 10 másodpercet vesz igénybe."); } void loop () {// HTTP GET kérés küldése, ha ((millis () - lastTime)> timerDelay) {// Ellenőrizze a WiFi kapcsolat állapotát, ha (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); // A JSON.typeof (jsonVar) használható a var típusának lekérésére, ha (JSON.typeof (myObject) == "undefined") {//Serial.println("Számítatlan adatbevitel! "); Visszatérés; } // Serial.print ("JSON objektum ="); // Sorozat.println (myObject); // Serial.print ("Hőmérséklet:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Nyomás:"); // Serial.println (myObject ["main"] ["nyomás"]); // Serial.print ("Páratartalom:"); // Serial.println (myObject ["main"] ["páratartalom"]); // Serial.print ("Szélsebesség:"); // Serial.println (myObject ["szél"] ["sebesség"]); int temp = myObject ["main"] ["temp"]; hosszú pres = myObject ["main"] ["nyomás"]; int nedves = myObject ["main"] ["páratartalom"]; int szél = myObject ["szél"] ["sebesség"]; String country = JSON.stringify (myObject ["sys"] ["ország"]); String city1 = JSON.stringify (myObject ["név"]); String weather = JSON.stringify (myObject ["weather"] [0] ["description"]); String icon = JSON.stringify (myObject ["weather"] [0] ["icon"]); adatok [0] = Karakterlánc (temp); adatok [1] = "/"; adatok [2] = Karakterlánc (pres); adatok [3] = "/"; adatok [4] = Karakterlánc (párás); adatok [5] = "/"; adatok [6] = String (szél); adatok [7] = "/"; adatok [8] = ország; adatok [9] = "/"; adatok [10] = város1; adatok [11] = "/"; adatok [12] = időjárás; adatok [13] = "/"; adatok [14] = ikon; adatok [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("HTTP válaszkód:"); // Serial.println (httpResponseCode); hasznos terhelés = http.getString (); } else {Serial.print ("Hibakód:"); Serial.println (httpResponseCode); } // Ingyenes források http.end (); visszatérő hasznos teher; }
4. lépés: A kód feldolgozása
A kód futtatása előtt töltse le az adott ikonképeket, amelyek az időjárás megjelenítésére szolgálnak. És tartsa a képeket és a kódot ugyanabban a mappában.
import feldolgozás.sorozat.*;
Soros 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 nedves; int szél; Karakterlánc város = ""; String country = ""; String időjárás = ""; String icon = ""; void setup () {méret (500, 500); myPort = új sorozat (ez, "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 () {háttér (72, 209, 204); textSize (22); kitöltés (54, 69, 79); szöveg ("Hőmérséklet:", 25, 100); szöveg (hőmérséklet +"° C", 200, 100); szöveg ("Nyomás:", 25, 150); szöveg (pres + "hpa", 200, 150); szöveg ("Páratartalom:", 25, 200); szöveg (nedves+" %", 200, 200); szöveg ("Szél:", 25, 250); szöveg (szél+"m/s", 200, 250); text ("Ország/város:", 25, 300); szöveg (ország + "-" + város, 200, 300); szöveg ("Időjárás:", 25, 350); szöveg (időjárás, 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 (Soros myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); if (adatok! = null) {adatok = trim (adatok); Karakterlánc elemek = split (adatok, '/'); if (tételek.hossz> 1) {temp = int (tételek [0]); pres = int ([1]. tétel); nedves = int ([2] tétel); szél = int ([3]. tétel); city = items [4].replace ("\" "," "); country = items [5].replace (" / "", ""); időjárás = tételek [6].helyettesítés ("\" "," "); ikon = elemek [7].helyettesítés (" / "", ""); }}}}
Ajánlott:
Időjárási adatok a Google Táblázatok és a Google Script használatával: 7 lépés
Időjárási adatok a Google Táblázatok és a Google Script használatával: Ebben a Blogtutban az SHT25 szenzor leolvasásait az Adafruit huzzah ESP8266 segítségével elküldjük a Google lapjaira, ami segít az adatok internetre küldésében. Az adatok küldése a Google lap cellájába nagyon hasznos és az alapvető módszer az adatok mentésére
Építsen időjárási irányítópultot a Dark Sky API használatával: 5 lépés (képekkel)
Építsen időjárás -irányítópultot a Dark Sky API használatával: A Dark Sky az időjárás -előrejelzésre és a vizualizációra specializálódott. A Dark Sky legmenőbb aspektusa az időjárási API, amellyel szinte mindenhol a világon lekérhetjük az időjárási adatokat. Nem csak esős vagy napos idő van, hanem hőmérséklet is
Adatok lekérése a Firebase adatbázisból a NodeMCU -n: 7 lépés
Adatok lekérése a Firebase adatbázisából a NodeMCU-n: Ehhez az utasításhoz lekérjük az adatokat a Google Firebase adatbázisából, és a NodeMCU használatával lekérjük a további elemzéshez. fiókot a Firebase adatbázis létrehozásához. 3) Töltse le a
Az IoT Made Easy: Távoli időjárási adatok rögzítése: UV és a levegő hőmérséklete és páratartalma: 7 lépés
Az IoT Made Easy: Távoli időjárási adatok rögzítése: UV és a levegő hőmérséklete és páratartalma: Ezen az oktatóanyagon távoli adatokat rögzítünk UV (ultraibolya sugárzás), léghőmérséklet és páratartalom formájában. Ezek az adatok nagyon fontosak lesznek, és felhasználásra kerülnek egy jövőbeni komplett meteorológiai állomáson. A blokkdiagram megmutatja, hogy mit fogunk kapni a végén
Adatok lekérése egy halott számítógépről: 4 lépés
Adatok lekérése egy halott számítógépről: Ez magában foglalja a merevlemez -meghajtó eltávolítását a halott számítógépről, és azt, hogy egy külső számítógépen külső HDD -nek tűnjön. Szüksége lesz rá: Egy másik számítógép Külső merevlemez Megjegyzés: A külső merevlemeznek azonos típusúnak kell lennie a cél HDD