Arduinoで作ろう(45) OpenWeatherMapの天気情報を取得してみる
WeMos D1 (ESP8266)をネットにつないで OpenWeatherMapの無料天気情報をAPIで取得し,現在の岐阜市の天気をLCDに表示してみました。「外出自粛中」でも,外の天気がよく分かって便利(?)
参考にしたのはこちらのサイト。とても丁寧な説明で勉強になりましたm(__)m
APIを使うためには,API Keyが必要になりますから,Sign Upページで無料アカウントを作ってキーを取得します。
あと,APIを叩いて得られるJSON形式の天気情報を成型するためのライブラリArduinoJson.h (バージョンは5.13.4がいいみたい)をインストールしておきましょう。
↓ とりあえず岐阜市の「現在の天気」,「気温」,「湿度」,「気圧」を表示させてみました。
//OpenWeatherMapから天気情報を取得する
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <ArduinoJson.h>
#include <ST7032.h>
const char* ssid = "あなたの無線LANのSSID";
const char* password = "あなたのパスワード";
const String endpoint = "http://api.openweathermap.org/data/2.5/weather?q=gifu,jp&units=metric&APPID=";
const String key = "あなたのAPIキー";
ST7032 lcd ;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
lcd.begin(16, 2) ;
lcd.setContrast(30);
}
void loop() {
if ((WiFi.status() == WL_CONNECTED)) {
HTTPClient http;
http.begin(endpoint + key);
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
Serial.println(payload);
DynamicJsonBuffer jsonBuffer;
String json = payload;
JsonObject& weatherdata = jsonBuffer.parseObject(json);
const char* weather = weatherdata["weather"][0]["main"].as<char*>();
const char* description = weatherdata["weather"][0]["description"].as<char*>();
const double temp = weatherdata["main"]["temp"].as<double>();
const double pressure = weatherdata["main"]["pressure"].as<double>();
const double humidity = weatherdata["main"]["humidity"].as<double>();
lcd.setCursor(0, 0);
lcd.print(description);lcd.print("");
lcd.setCursor(0, 1);
lcd.print((int)temp); lcd.write(0b11011111); lcd.print("C");lcd.print(" ");
lcd.print((int)humidity);lcd.print("%");lcd.print(" ");
lcd.print((int)pressure);lcd.print("hPa");
}
http.end();
}
delay(10*60*1000); //10分おきに更新
}
| 固定リンク | 0
「Arduino」カテゴリの記事
- 大型7セグLEDを4個使った表示装置(2022.01.23)
- Arduinoで作ろう(61) Digisparkで7セグLED温度計(2022.01.16)
- Arduinoで作ろう(60) Digisparkでデジタル時計(2022.01.10)
- Arduinoで作ろう(59) DigisparkのP5を使えるようにした(2022.01.08)
- Arduinoで作ろう(58) DigisparkとLM35で温度計(2022.01.02)
「ESP8266 , ESP32」カテゴリの記事
- Arduinoで作ろう(51) パルスオキシメータ(2020.05.01)
- Arduinoで作ろう(50) 温度・湿度・気圧データをBlynkで見てみる(2020.04.27)
- Arduinoで作ろう(49) BLEでリモートLチカ(2020.04.25)
- Arduinoで作ろう(48) GPSのデータをAmbientに投げる(2020.04.22)
- Arduinoで作ろう(47) GPSモジュールで現在地の緯度・経度を取得(2020.04.18)