☀️
現在地の明日の天気を取得して通知するシステムの構築
現在地の明日の天気を取得して通知するシステムの構築
背景と目的
毎回アレクサで天気を確認するのが面倒だったので、以下のような仕組みを作ることを考えました:
- 部屋に入ると顔認識で自動的に天気を通知
- 夜なら「明日の天気」、朝なら「今日の天気」を通知
そこで、まずは天気を取得する部分から始めます。
天気取得の方法を調査
天気情報を取得するには、Weather APIを利用するのが一般的です。参考にした記事はこちらです:
しかし、ここで紹介されている「Free Weather API」は登録ページが502 Bad Gateway
の状態でした。そのため、以下のOpenWeatherMap APIを使用することにしました。
参考にした記事
OpenWeatherMap APIのセットアップ
APIキーの取得
以下のURLからAPIキーを取得できます:
OpenWeatherMap サインアップページ
規約の一部日本語訳:
- 提供された情報は、管理およびお知らせに使用されます。
- プライバシーポリシーに従い、データの削除リクエストも可能です。
過去に登録済みだったため、Gmailで受信したAPIキーを利用しました。
Pythonで天気情報を取得する
以下は、郵便番号を使って天気を取得するPythonコードです。
import requests
from pprint import pprint
# OpenWeatherMap API URL
url = "https://api.openweathermap.org/data/2.5/weather?zip={zip_place}&units=metric&appid={API_key}"
# APIキーと郵便番号を指定
url = url.format(zip_place="任意の郵便番号,JP", API_key="取得したAPIキー")
# APIからデータを取得
jsondata = requests.get(url).json()
pprint(jsondata)
# データの表示
print("天気:", jsondata["weather"][0]["main"])
print("天気詳細:", jsondata["weather"][0]["description"])
print("都市名:", jsondata["name"])
print("気温:", jsondata["main"]["temp"])
print("体感気温:", jsondata["main"]["feels_like"])
print("最低気温:", jsondata["main"]["temp_min"])
print("最高気温:", jsondata["main"]["temp_max"])
print("気圧:", jsondata["main"]["pressure"])
print("湿度:", jsondata["main"]["humidity"])
print("風速:", jsondata["wind"]["speed"])
print("風の方角:", jsondata["wind"]["deg"])
実行結果
以下は、郵便番号を指定して取得した天気情報の実行結果です。
天気: Clear
天気詳細: clear sky
都市名: Kawai
気温: 6.65
体感気温: 4.12
最低気温: 6.65
最高気温: 6.65
気圧: 1021
湿度: 60
風速: 3.58
風の方角: 288
今後の展望
- 三時間ごとの天気予報や移動予定地の天気通知の追加
- スマホのGPS情報を利用した自動的な天気通知の構築
参考リンク
次のステップ
現在地の天気取得については必要性が低いため省略し、次はOpenCVを使った顔認識の実装に進みます。
人工知能を活用したアプリケーションやサービスを活用し、内発的動機付けで行動するエンジニア、起業家、社会起業家をサポートするコミュニティーです。 singularitysociety.org
Discussion