Obsah:
- Krok 1: Získejte klíč API a adresu URL z Openweather.org
- Krok 2: Schéma připojení
- Krok 3: Arduino kód
- Krok 4: Zpracování kódu
Video: (Projekt IOT) Získejte data o počasí pomocí ESP8266 a Openweather API: 5 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:18
V tomto pokynu vytvoříme jednoduchý projekt IOT, ve kterém načteme data o počasí našeho města z openweather.com/api a zobrazíme je pomocí softwaru pro zpracování.
Zásoby:
- Arduino
- ESP8266 nebo jakýkoli jiný modul esp
- Arduino IDE
- Software pro zpracování
- Prkénko
- Propojovací vodiče od muže k muži a od muže k ženě
Krok 1: Získejte klíč API a adresu URL z Openweather.org
- Vytvořte si účet na https://openweathermap.org (obrázek 1)
- Poté, co se přihlásíte, přejděte na klíče API a získáte klíč API, jak je znázorněno na obrázku. (Obrázek 2)
- Zkopírujte klíč API a uložte jej do souboru poznámkového bloku. (Obrázek 3)
- Přejděte na možnost API (obrázek 4)
- Přejděte na možnost API doc, jak je znázorněno na obrázku (obrázek 5)
- Zkopírujte adresu URL z obrázku a uložte ji do souboru poznámkového bloku (obrázek 6)
Krok 2: Schéma připojení
Krok 3: Arduino kód
Před zkopírováním tohoto kódu do Arduina se ujistěte, že jste desku ESP8266 stáhli do arduino ide pomocí Správce desek.
#zahrnout
#include #include #include const char* ssid = "Vaše SSID"; const char* heslo = "Vaše SSID HESLO"; // Vaše doménové jméno s URL adresou nebo IP adresou s cestou String openWeatherMapApiKey = "Sem vložte klíč API"; // Nahraďte kódem země a městem String city = "Mumbai"; Řetězec countryCode = "IN"; Řetězcová data [16]; // VÝCHOZÍ ČASOVAČ JE NASTAVEN NA 10 SEKUND PRO TESTOVACÍ ÚČELY // Pro konečnou aplikaci zkontrolujte limity volání API za hodinu/minutu, abyste se vyhnuli blokování/blokování bez znaménka long lastTime = 0; // Časovač nastaven na 10 minut (600000) // nepodepsaný dlouhý časovačDelay = 600000; // Nastavit časovač na 10 sekund (10 000) bez znaménka dlouhý časovač Zpoždění = 10 000; Řetězec jsonBuffer; neplatné nastavení () {Serial.begin (115200); WiFi.begin (ssid, heslo); //Serial.println("Connecting "); while (WiFi.status ()! = WL_CONNECTED) {zpoždění (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Připojeno k WiFi síti s IP adresou:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Časovač nastaven na 10 sekund (proměnná timerDelay), publikování prvního čtení bude trvat 10 sekund."); } void loop () {// Odeslání požadavku HTTP GET if ((millis () - lastTime)> timerDelay) {// Kontrola stavu připojení WiFi if (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) lze použít k získání typu var if (JSON.typeof (myObject) == "undefined") {//Serial.println("Parsing input failed! "); vrátit se; } // Serial.print ("objekt JSON ="); // Serial.println (myObject); // Serial.print ("Teplota:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Tlak:"); // Serial.println (myObject ["hlavní"] ["tlak"]); // Serial.print ("Vlhkost:"); // Serial.println (myObject ["hlavní"] ["vlhkost"]); // Serial.print ("Rychlost větru:"); // Serial.println (myObject ["vítr"] ["rychlost"]); int temp = myObject ["main"] ["temp"]; long pres = myObject ["hlavní"] ["tlak"]; int humid = myObject ["main"] ["vlhkost"]; int wind = myObject ["vítr"] ["rychlost"]; Řetězec země = JSON.stringify (myObject ["sys"] ["země"]); Řetězec city1 = JSON.stringify (myObject ["name"]); Řetězec počasí = JSON.stringify (myObject ["počasí"] [0] ["popis"]); Ikona řetězce = JSON.stringify (myObject ["počasí"] [0] ["ikona"]); data [0] = řetězec (temp); data [1] = "/"; data [2] = String (pres); data [3] = "/"; data [4] = String (vlhký); data [5] = "/"; data [6] = String (vítr); data [7] = "/"; data [8] = země; data [9] = "/"; data [10] = city1; data [11] = "/"; data [12] = počasí; data [13] = "/"; data [14] = ikona; data [15] = "\ n"; for (int i = 0; i0) {// Serial.print ("Kód odpovědi HTTP:"); // Serial.println (httpResponseCode); užitečné zatížení = http.getString (); } else {Serial.print ("Kód chyby:"); Serial.println (httpResponseCode); } // Zdarma zdroje http.end (); vrátit užitečné zatížení; }
Krok 4: Zpracování kódu
Před spuštěním tohoto kódu si stáhněte dané obrázky ikon, které budou použity k zobrazení počasí. A obrázky a kód uchovávejte ve stejné složce.
zpracování importu.sériové.*;
Sériový myPort; PImage obrázek; 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 vlhký; vnitřní vítr; String city = ""; Řetězec země = ""; Řetězcové počasí = ""; Ikona řetězce = ""; neplatné nastavení () {velikost (500, 500); myPort = new Serial (this, "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 () {pozadí (72, 209, 204); textSize (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 ("Vlhkost:", 25, 200); text (vlhký+" %", 200, 200); text ("Vítr:", 25, 250); text (vítr+"m/s", 200, 250); text („Země/město:“, 25, 300); text (země + "-" + město, 200, 300); text ("Počasí:", 25, 350); text (počasí, 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") {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 (Serial myPort) {if (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); if (data! = null) {data = trim (data); Řetězcové položky = rozdělení (data, '/'); if (items.length> 1) {temp = int (items [0]); pres = int (položky [1]); humid = int (položky [2]); vítr = int (položky [3]); city = items [4].replace ("\" "," "); country = items [5].replace (" / "", ""); počasí = položky [6].replace ("\" "," "); ikona = položky [7].replace (" / "", ""); }}}}
Doporučuje:
Inteligentní distribuovaný systém sledování počasí IoT pomocí NodeMCU: 11 kroků
Inteligentní distribuovaný systém sledování počasí IoT pomocí NodeMCU: Všichni možná víte o tradiční meteorologické stanici; ale přemýšleli jste někdy nad tím, jak to vlastně funguje? Protože je tradiční meteorologická stanice nákladná a objemná, hustota těchto stanic na jednotku plochy je mnohem menší, což přispívá k
ESP8266 Monitorování teploty Nodemcu pomocí DHT11 na lokálním webovém serveru - Získejte pokojovou teplotu a vlhkost ve svém prohlížeči: 6 kroků
ESP8266 Monitorování teploty Nodemcu pomocí DHT11 na lokálním webovém serveru | Získejte pokojovou teplotu a vlhkost ve svém prohlížeči: Ahoj, dnes budeme vyrábět vlhkost a systém monitorování teploty pomocí ESP 8266 NODEMCU & Teplotní čidlo DHT11. Teplota a vlhkost budou získány z DHT11 Sensor & v prohlížeči je vidět, kterou webovou stránku bude spravovat
Počasí Web App pomocí Esp8266: 7 kroků
Weather Web App používající Esp8266: SHT 31 je snímač teploty a vlhkosti od společnosti Sensirion. SHT31 poskytuje vysokou úroveň přesnosti kolem ± 2% RH. Rozsah vlhkosti je mezi 0 až 100% a teplotní rozsah mezi -40 až 125 ° C. Je mnohem spolehlivější a rychlejší s
Vytvořte řídicí panel počasí pomocí API Dark Sky: 5 kroků (s obrázky)
Build a Weather Dashboard using Dark Sky API: Dark Sky se specializuje na předpověď počasí a vizualizaci. Nejúžasnějším aspektem Dark Sky je jejich počasí API, které můžeme použít k načtení údajů o počasí téměř odkudkoli na světě. Nejde jen o deštivé nebo slunečné počasí, ale také o temperament
Jak vytvořit zařízení IoT pro ovládání spotřebičů a monitorování počasí pomocí Esp8266: 5 kroků
Jak vytvořit zařízení IoT pro ovládání spotřebičů a sledování počasí pomocí Esp8266: Internet věcí (IoT) je vzájemné propojení fyzických zařízení (označovaných také jako „připojená zařízení“a „chytrá zařízení“), budov, a další položky zabudované do elektroniky, softwaru, senzorů, akčních členů a