Table des matières:

(Projet IOT) Obtenez des données météorologiques à l'aide d'ESP8266 et de l'API Openweather : 5 étapes
(Projet IOT) Obtenez des données météorologiques à l'aide d'ESP8266 et de l'API Openweather : 5 étapes

Vidéo: (Projet IOT) Obtenez des données météorologiques à l'aide d'ESP8266 et de l'API Openweather : 5 étapes

Vidéo: (Projet IOT) Obtenez des données météorologiques à l'aide d'ESP8266 et de l'API Openweather : 5 étapes
Vidéo: API MÉTÉO : COMMENT APPELER DES API EN JAVASCRIPT ? 2024, Novembre
Anonim
(Projet IOT) Obtenez des données météorologiques à l'aide d'ESP8266 et de l'API Openweather
(Projet IOT) Obtenez des données météorologiques à l'aide d'ESP8266 et de l'API Openweather

Dans cette instructable, nous allons construire un projet IOT simple dans lequel récupérer les données météorologiques de notre ville à partir d'openweather.com/api et les afficher à l'aide du logiciel de traitement.

Fournitures:

  1. Arduino
  2. ESP8266 ou tout autre module esp
  3. IDE Arduino
  4. Logiciel de traitement
  5. Planche à pain
  6. Cavaliers mâle à mâle et mâle à femelle

Étape 1: Obtenir la clé API et l'URL d'Openweather.org

Obtenir la clé API et l'URL d'Openweather.org
Obtenir la clé API et l'URL d'Openweather.org
Obtenir la clé API et l'URL d'Openweather.org
Obtenir la clé API et l'URL d'Openweather.org
Obtenir la clé API et l'URL d'Openweather.org
Obtenir la clé API et l'URL d'Openweather.org
  1. Créer un compte sur https://openweathermap.org (Image 1)
  2. Après vous être connecté, accédez aux clés API et vous obtiendrez la clé API comme indiqué dans l'image. (Image 2)
  3. Copiez la clé API et enregistrez-la dans un fichier bloc-notes. (Image 3)
  4. Accédez à l'option API (Image 4)
  5. Accédez à l'option de documentation de l'API comme indiqué dans l'image (image 5)
  6. Copiez l'url du et affiché et enregistrez-le dans un fichier bloc-notes (Image 6)

Étape 2: Schéma de connexion

Diagramme de connexion
Diagramme de connexion

Étape 3: Code Arduino

Avant de copier ce code dans Arduino, assurez-vous d'avoir téléchargé la carte ESP8266 dans arduino ide à l'aide du gestionnaire de cartes.

#comprendre

#include #include #include const char* ssid = "Votre SSID"; const char* password = "Your SSID PASSWORD";// Votre nom de domaine avec chemin URL ou adresse IP avec chemin String openWeatherMapApiKey = "Collez votre clé API ici"; // Remplacez par votre code de pays et votre ville String city = "Mumbai"; Chaîne countryCode = "IN"; Données de chaîne[16]; // LA MINUTERIE PAR DÉFAUT EST RÉGLÉE À 10 SECONDES À DES FINS DE TEST // Pour une application finale, vérifiez les limites d'appels API par heure/minute pour éviter d'être bloqué/interdit non signé longtemps lastTime = 0; // Timer réglé sur 10 minutes (600000) //long timerDelay non signé = 600000; // Régler le temporisateur à 10 secondes (10000) long timerDelay = 10000; Chaîne jsonBuffer; void setup() { Serial.begin(115200); WiFi.begin(ssid, mot de passe); //Série.println("Connexion"); while(WiFi.status() != WL_CONNECTED) { delay(500); // Serial.print("."); } // Serial.println(""); // Serial.print("Connecté au réseau WiFi avec l'adresse IP: "); // Serial.println(WiFi.localIP()); // // Serial.println("Timer réglé sur 10 secondes (variable timerDelay), il faudra 10 secondes avant de publier la première lecture."); } void loop() { // Envoyer une requête HTTP GET if ((millis() - lastTime) > timerDelay) { // Vérifier l'état de la connexion 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()); //Série.println(jsonBuffer); JSONVar myObject = JSON.parse(jsonBuffer); // JSON.typeof(jsonVar) peut être utilisé pour obtenir le type de la var if (JSON.typeof(myObject) == "undefined") { //Serial.println("L'analyse de l'entrée a échoué !"); revenir; } // Serial.print("JSON object = "); // Serial.println(monObjet); // Serial.print("Température: "); // Serial.println(monObjet["main"]["temp"]); // Serial.print("Pression: "); // Serial.println(monObjet["principal"]["pression"]); // Serial.print("Humidité: "); // Serial.println(monObjet["principal"]["humidité"]); // Serial.print("Vitesse du vent: "); // Serial.println(myObject["wind"]["speed"]); int temp = monObjet["main"]["temp"]; longue pression = monObjet["principal"]["pression"]; int humide = monObjet["principal"]["humidité"]; int vent = monObjet["vent"]["vitesse"]; String country = JSON.stringify(myObject["sys"]["country"]); String city1 = JSON.stringify(myObject["name"]); Chaîne météo = JSON.stringify(myObject["weather"][0]["description"]); Icône de chaîne = JSON.stringify(myObject["weather"][0]["icon"]); data[0]= Chaîne(temp); données[1]= "/"; data[2]= String(pres); données[3]= "/"; data[4]= String(humide); données[5]= "/"; data[6]= Chaîne(vent); données[7]= "/"; données[8]= pays; données[9]= "/"; données[10]= ville1; données[11]= "/"; données[12]= météo; données[13]= "/"; données[14]= icône; données[15]= "\n"; for(int i=0;i0) { // Serial.print("HTTP Response code: "); // Serial.println(httpResponseCode); charge utile = http.getString(); } else { Serial.print("Code d'erreur: "); Serial.println(httpResponseCode); } // Ressources gratuites http.end(); retourner la charge utile; }

Étape 4: Code de traitement

Code de traitement
Code de traitement
Code de traitement
Code de traitement
Code de traitement
Code de traitement

Avant d'exécuter ce code, téléchargez les images d'icônes données qui seront utilisées pour afficher la météo. Et gardez les images et le code dans le même dossier.

import processing.serial.*;

myPort série; Image 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; temp int; int prés; int humide; vent int; Chaîne ville = " "; Chaîne pays = " "; Chaîne météo =" "; Icône de chaîne = " "; void setup(){ size(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(){ background(72, 209, 204); tailletexte(22); remplir (54, 69, 79); text("Température: ", 25, 100); texte(temp +"°C", 200, 100); text("Pression:", 25, 150); texte(pres + " hpa", 200, 150); text("Humidité: ", 25, 200); text(humide+" %", 200, 200); text("Vent: ", 25, 250); texte(vent+" m/s", 200, 250); text("Pays/Ville: ", 25, 300); texte(pays +"-"+ ville, 200, 300); text("Météo: ", 25, 350); texte (météo, 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(Serial myPort){ if (myPort.available() > 0){ String data = myPort.readStringUntil('\n'); if(données != null){ données = trim(données); Éléments de chaîne = split(data, '/'); if (items.length > 1) { temp = int(items[0]); pres = int(éléments[1]); humide = int(éléments[2]); vent = int(éléments[3]); ville = éléments[4].replace("\"", ""); pays = éléments[5].replace("\"", ""); météo = items[6].replace("\"", ""); icon = items[7].replace("\"", ""); } } } }

Conseillé: