情報は少ないもののMicopythonでJSONデータを扱う情報を見つけることができたので、
ひとまずたどり着いた記事そのままに、Open Weather Mapの天気予報の取得に挑戦しました。
Raspberry Pi PicoのMicroPythonのファームウェアをセットアップや開発環境の設定については下記をご覧ください。
【MicroPythonのファームウェアをセットアップ】
設定方法は下記のURLに記載されています。
URL: https://www.raspberrypi.org/documentation/rp2040/getting-started/#getting-started-with-micropython
また、当ブログでは下記の記事に記載しています。
【開発環境の設定】
当ブログでは下記の記事に記載しています。
準備が整ったらUSBケーブルをコンピューターに接続します。
BOOTSELボタンを押しながら起動するのは初期設定のときのみで、普段は普通の接続で大丈夫です。
Thonnyを起動し、インタプリタとして「MicroPython(Raspberry Pi Pico)」を選択します。
これは、右下のボックスをクリックして行うことができます。
OpenWeatherMapですが、1分間に60コール/1ヶ月に1,000,000コールまで無料で利用できる天気予報APIです。
OpenWeatherMap
APIを使用するにあたり、APIのキーを取得するためにはユーザー登録が必要なので、下記のURLへアクセスし 登録を行います。
次に、使用方法が聞かれますが、Companyは空白で使用目的を記入すれば大丈夫でした。
ユーザー登録が終わったら、API keysに移動してキーをコピーします。
なお、OpenWeatherMapの最高気温と最低気温はその地域内での最高気温と最低気温を取得しているとのことで、天気予報の最高気温と最低気温ではないとのことだったので、取得する対象からはずしました。
・現在の天気予報の取得
現在の天気予報の取得については下記のページに記載されており、
[lat]: 緯度、[lon]: 経度、[API key]: API keyを入力すればよいとのことです。
緯度と経度は "最寄り駅 緯度経度"で検索するか、Google mapなどで調べることができます。
赤枠で囲ったところが緯度・経度になります。
ここまで準備ができたらいよいよプログラムを書いていきます。
まず、下記のプログラムでJSONの情報を取得します。
得られた情報を整理すると下記の状態となります。
上記の情報から現在の天気を取得したプログラムを書いたのがこちらになります。
温度はケルビン[K]で取得されているので、T=K - 273.15[℃]と補正する必要があります。
JSONで得られた情報より取得する情報を精査して作成したプログラムが下記となります。
個人的には[ ] で囲まれているところを[0]で書くところで少しはまりました。
実行結果は下記の通りです。
・3時間ごと5日間の取得
3時間ごと5日間の取得については下記のページに記載されており、先程の同じく、
[lat]: 緯度、[lon]: 経度、[API key]: API keyを入力すればよいとのことです。
まず、下記のプログラムでJSONの情報を取得します。
※データ数が多くシェルからコピーできなかったのでwebブラウザで確認しています。
得られた情報を整理しようとしたのですが、今回は長くてシェルからうまくコピーできなかったので、webブラウザで確認しました。
JSONビューアーを用意しておけば、urlをそのまま手打ちすることで表示ができます。
非常に長いので全体の表示は控えますが、listの0 - 39が3時間ごとの天気となっており、下記は0のかたまりをキャプチャーしたものです。
データを見ると 3h×40個=120h=5daysで確かに5日分取れていることがわかります。
データの最後のには緯度経度から得られたCityやCountryの情報が記載されています。
なお、JSONビューアーはchromeの拡張機能のJSON Viewerを使用しています。
JSON Viewerをインストールをしたら、拡張機能の一覧を示すページ(?)のJSON Viewerの拡張機能を管理をクリックします。
管理ページへ移動したら、ファイルのURLへのアクセスを許可するをONにします。
上記の情報から天気予報を取得するプログラムを書いたのが下記になります。
温度はケルビン[K]で取得されているので、T=K - 273.15[℃]と補正、時間表示する場合はUTC表示の為、9時間プラスする必要があります。
その1 6時間ごと24時間分取得
プログラム
実行結果
その2 8個(24H)飛ばしで、5日分取得
プログラム
実行結果
その3 直近のデータをOLEDに表示
プログラム
なお、OLEDを使う際はモジュールが必要になりますので下記の方法で入手してください。
ツール > パッケージを管理
実行結果
接続はGND⇔GND(青)、3V3⇔VCC(赤)、GP1⇔SCL(白)、GP0⇔SDA(黄)となっています。
参考にしたサイト
・プログラムについて
・Raspberry Pi Pico W OpenWeatherMap API Sensorless Weather Station
・MicroPython: OpenWeatherMap API with ESP32/ESP8266 – Sensorless Weather Station
・M5Stack で天気情報を表示する(OpenWeatherMap API)
・OpenWeatherMapについて
・無料天気予報API【OpenWeatherMap】を使って天気予報サイトデモを作ってみた
・気象情報APIユーザー登録のしかた
Comments