Tartalomjegyzék:

(IOT projekt) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával: 5 lépés
(IOT projekt) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával: 5 lépés

Videó: (IOT projekt) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával: 5 lépés

Videó: (IOT projekt) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával: 5 lépés
Videó: 7. ESP32 webkliens IOT alkalmazások 2024, Július
Anonim
(IOT Project) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával
(IOT Project) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával

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:

  1. Arduino
  2. ESP8266 vagy bármely más esp modul
  3. Arduino IDE
  4. Feldolgozó szoftver
  5. Kenyeretábla
  6. 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

Szerezze be az API -kulcsot és az URL -t az Openweather.org webhelyről
Szerezze be az API -kulcsot és az URL -t az Openweather.org webhelyről
Szerezze be az API -kulcsot és az URL -t az Openweather.org webhelyről
Szerezze be az API -kulcsot és az URL -t az Openweather.org webhelyről
Szerezze be az API -kulcsot és az URL -t az Openweather.org webhelyről
Szerezze be az API -kulcsot és az URL -t az Openweather.org webhelyről
  1. Fiók létrehozása a https://openweathermap.org oldalon (1. kép)
  2. 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)
  3. Másolja az API -kulcsot, és mentse el egy jegyzettömb fájlba. (3. kép)
  4. Lépjen az API opcióra (4. kép)
  5. Lépjen az API doc opcióra, amint az a képen látható (5. kép)
  6. 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

Csatlakozási rajz
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

Feldolgozási kód
Feldolgozási kód
Feldolgozási kód
Feldolgozási kód
Feldolgozási kód
Feldolgozási kód

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: