Obsah:
- Krok 1: Získajte kľúč a adresu URL API z Openweather.org
- Krok 2: Schéma pripojenia
- Krok 3: Arduino kód
- Krok 4: Spracovanie kódu
Video: (Projekt IOT) Získajte údaje o počasí pomocou ESP8266 a Openweather API: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
V tomto návode postavíme jednoduchý projekt IOT, v ktorom načítame údaje o počasí nášho mesta z openweather.com/api a zobrazíme ich pomocou softvéru na spracovanie.
Zásoby:
- Arduino
- ESP8266 alebo akýkoľvek iný modul esp
- Arduino IDE
- Softvér na spracovanie
- Breadboard
- Prepojovacie vodiče medzi mužmi a ženami a medzi mužmi a ženami
Krok 1: Získajte kľúč a adresu URL API z Openweather.org
- Vytvorte si účet na https://openweathermap.org (obrázok 1)
- Po prihlásení prejdite na kľúče API a získate kľúč API, ako je znázornené na obrázku. (Obrázok 2)
- Skopírujte kľúč API a uložte ho do súboru poznámkového bloku. (Obrázok 3)
- Prejdite na možnosť API (obrázok 4)
- Prejdite na možnosť Dokument doc API, ako je znázornené na obrázku (obrázok 5)
- Skopírujte adresu URL zo zobrazeného obrázku a uložte ju do súboru poznámkového bloku (Obrázok 6)
Krok 2: Schéma pripojenia
Krok 3: Arduino kód
Pred skopírovaním tohto kódu do Arduina sa uistite, že ste pomocou správcu dosiek stiahli dosku ESP8266 do arduino ide.
#zahrnúť
#include #include #include const char* ssid = "Vaše SSID"; const char* heslo = "Vaše SSID HESLO"; // Vaše doménové meno s URL adresou alebo IP adresou s cestou String openWeatherMapApiKey = "Sem prilepte svoj kľúč API"; // Nahraďte kódom krajiny a mestom String city = "Mumbai"; Reťazec countryCode = "IN"; Reťazcové údaje [16]; // VÝCHOZÍ ČASOVAČ JE NASTAVENÝ NA 10 SEKÚndD NA TESTOVACIE ÚČELY // Pri konečnej aplikácii skontrolujte limity hovorov API za hodinu/minútu, aby ste sa vyhli blokovaniu/blokovaniu bez znamienka long lastTime = 0; // Časovač nastavený na 10 minút (600000) // nepodpísaný dlhý časovačDelay = 600000; // Nastaviť časovač na 10 sekúnd (10 000) bez znamienka dlhý časovač Oneskorenie = 10 000; Reťazec jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, heslo); //Serial.println("Connecting "); while (WiFi.status ()! = WL_CONNECTED) {oneskorenie (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Pripojené k sieti WiFi s IP adresou:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Časovač nastavený na 10 sekúnd (premenná timerDelay), publikovanie prvého čítania bude trvať 10 sekúnd."); } void loop () {// Pošlite požiadavku HTTP GET, ak ((millis () - lastTime)> timerDelay) {// Skontrolujte stav pripojenia WiFi, ak (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) je možné použiť na získanie typu var if (JSON.typeof (myObject) == "undefined") {//Serial.println("Parsing input failed! "); návrat; } // Serial.print ("objekt JSON ="); // Serial.println (myObject); // Serial.print ("Teplota:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Tlak:"); // Serial.println (myObject ["main"] ["tlak"]); // Serial.print ("Vlhkosť:"); // Serial.println (myObject ["main"] ["vlhkosť"]); // Serial.print ("Rýchlosť vetra:"); // Serial.println (myObject ["vietor"] ["rýchlosť"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["main"] ["tlak"]; int humid = myObject ["main"] ["vlhkosť"]; int wind = myObject ["vietor"] ["rýchlosť"]; Krajina reťazca = JSON.stringify (myObject ["sys"] ["krajina"]); Reťazec city1 = JSON.stringify (myObject ["name"]); Reťazcové počasie = JSON.stringify (myObject ["počasie"] [0] ["popis"]); Ikona reťazca = JSON.stringify (myObject ["počasie"] [0] ["ikona"]); údaje [0] = Reťazec (teplota); údaje [1] = "/"; data [2] = String (pres); údaje [3] = "/"; údaje [4] = Reťazec (vlhký); údaje [5] = "/"; údaje [6] = Reťazec (vietor); údaje [7] = "/"; údaje [8] = krajina; údaje [9] = "/"; údaje [10] = mesto1; údaje [11] = "/"; údaje [12] = počasie; údaje [13] = "/"; dáta [14] = ikona; údaje [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("Kód odpovede HTTP:"); // Serial.println (httpResponseCode); užitočné zaťaženie = http.getString (); } else {Serial.print ("Kód chyby:"); Serial.println (httpResponseCode); } // Voľné zdroje http.end (); vrátiť užitočné zaťaženie; }
Krok 4: Spracovanie kódu
Pred spustením tohto kódu si stiahnite dané obrázky ikon, ktoré budú použité na zobrazenie počasia. Obrázky a kód uložte do rovnakého priečinka.
spracovanie importu.sériové.*;
Sériový myPort; PImage obr. 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; veľmi vlhký; vnútorný vietor; Reťazcové mesto = ""; Reťazcová krajina = ""; Reťazcové počasie = ""; Ikona reťazca = ""; void setup () {veľkosť (500, 500); myPort = nový sériový port (tento, „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 () {pozadie (72, 209, 204); veľkosť textu (22); výplň (54, 69, 79); text ("Teplota:", 25, 100); text (teplota +"° C", 200, 100); text („Tlak:“, 25, 150); text (pres + "hpa", 200, 150); text ("Vlhkosť:", 25, 200); text (vlhký+" %", 200, 200); text ("Vietor:", 25, 250); text (vietor+"m/s", 200, 250); text („Krajina/mesto:“, 25, 300); text (krajina + "-" + mesto, 200, 300); text („Počasie:“, 25, 350); text (počasie, 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 (ikona == "13d") {obrázok (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); Reťazcové položky = rozdelenie (údaje, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (položky [1]); humid = int (položky [2]); vietor = int (položky [3]); city = items [4].replace ("\" "," "); country = items [5].replace (" / "", ""); Počasie = položky [6].replace ("\" "," "); ikona = položky [7].replace (" / "", ""); }}}}
Odporúča:
ESP32 Xiaomi Hack - získajte údaje bezdrôtovo: 6 krokov (s obrázkami)
ESP32 Xiaomi Hack - získavajte údaje bezdrôtovo: Vážení priatelia, vítajte pri ďalšom návode na obsluhu! Dnes sa naučíme získať údaje, ktoré tento monitor teploty a vlhkosti Xiaomi prenáša, pomocou funkcie Bluetooth dosky ESP32. Ako vidíte, používam dosku ESP32
IOT - Uverejňujte údaje na Thingspeak pomocou ESP8266: 3 kroky
IOT | Uverejňujte údaje na Thingspeak pomocou ESP8266: V súčasnej dobe je IoT trendová a veľa zariadení má k dispozícii údaje, ktoré je možné nahrať do cloudu a analyzovať údaje. Malé senzory aktualizujú údaje o cloude a pôsobí na nich akčný člen na inom konci. Vysvetlím ten z príkladu IoT. Mám tento článok a ja
ESP8266 Monitorovanie teploty Nodemcu pomocou DHT11 na lokálnom webovom serveri - Získajte izbovú teplotu a vlhkosť vo svojom prehliadači: 6 krokov
ESP8266 Monitorovanie teploty Nodemcu pomocou DHT11 na lokálnom webovom serveri | Získajte vo svojom prehliadači izbovú teplotu a vlhkosť: Ahojte priatelia, dnes vyrobíme vlhkomer & systém monitorovania teploty pomocou ESP 8266 NODEMCU & Snímač teploty DHT11. Teplota a vlhkosť sa získajú zo senzora DHT11 v prehliadači je možné vidieť, ktorú webovú stránku bude spravovať
Údaje o počasí pomocou Tabuliek Google a Google Script: 7 krokov
Údaje o počasí pomocou tabuliek Google a skriptu Google: V tomto Blogtute pošleme namerané hodnoty senzora SHT25 do hárkov Google pomocou servera Adafruit huzzah ESP8266, ktorý pomáha odosielať údaje na internet. Odosielanie údajov do bunky hárka Google je veľmi užitočné. a základným spôsobom, ktorý ukladá údaje v
Vytvorte informačný panel o počasí pomocou rozhrania Dark Sky API: 5 krokov (s obrázkami)
Vytvorte informačný panel o počasí pomocou rozhrania Dark Sky API: Dark Sky sa špecializuje na predpovedanie počasia a vizualizáciu. Najlepším aspektom Dark Sky je ich API pre počasie, ktoré môžeme použiť na získanie údajov o počasí takmer z akéhokoľvek miesta na svete. Nie je to len daždivé alebo slnečné počasie, ale aj teplota