Raspberry Pi Pico W × Micropythonで気象庁の天気予報の取得に挑戦しました。

Raspberry Pi PicoのMicroPythonのファームウェアをセットアップや開発環境の設定については下記をご覧ください。
【MicroPythonのファームウェアをセットアップ】
設定方法は下記のURLに記載されています。
URL: https://www.raspberrypi.org/documentation/rp2040/getting-started/#getting-started-with-micropython
また、当ブログでは下記の記事に記載しています。
今回の注意点としてはファームウェアをダウンロードする際にRaspberry Pi Pico Wのほうを選択してください。
【開発環境の設定】
当ブログでは下記の記事に記載しています。
準備が整ったらUSBケーブルをコンピューターに接続します。
BOOTSELボタンを押しながら起動するのは初期設定のときのみで、普段は普通の接続で大丈夫です。
Thonnyを起動し、インタプリタとして「MicroPython(Raspberry Pi Pico)」を選択します。
これは、右下のボックスをクリックして行うことができます。

気象庁の天気予報の取得については下記のページを参考に行いました。
なお、上記のリンク先に記載があるのですが、気象庁の方が下記のようにTwitterに投稿しており、予告なく仕様が変わる可能性があるかもしれません。
[Twitterの内容]
仕様の継続性や運用状況のお知らせを気象庁はお約束していないという意味で、APIではないと申し上げざるを得ないのですが、一方で政府標準利用規約に準拠してご利用いただけます。
ただ、気象庁の情報ということで安心感があるので今回は引き続き使用していきたいと思います。
また、実用的にとなると各都道府県別に見たいところなので、取得方法を模索していると、
download.pyのURLのところを各都道府県別に書き換えることで取得ができるとの情報を発見しました。
https://www.jma.go.jp/bosai/forecast/data/forecast/XXXXXX.json
東京都は、XXXXXXのところが130000となります。
ここから先の作業はjsonファイルを読めないと作業できないので、上記のURLのページ(Pythonを使った気象庁の天気予報APIの取得についての参考ページ)を参考にchromeの拡張機能のJSON Viewerをインストールしてjsonファイルを読めるようにしました。
JSON Viewerをインストールをしたら、拡張機能の一覧を示すページ(?)のJSON Viewerの拡張機能を管理をクリックします。

管理ページへ移動したら、ファイルのURLへのアクセスを許可するをONにします。

以上の作業を終えて下記のリンクにアクセスすると、下記のように表示ができます。

準備ができたらプログラムを書いていきます。
今回、作成したプログラムは下記になります。
その1
今日と明日の天気
今日と明日の天気の最低気温・最高気温と降水確率のデータ数が時間帯よって変わるので、条件分岐しています。
実行結果は下記の通りです。

その2
7日分の天気
今日と明日の天気の最低気温・最高気温と降水確率のデータ数が時間帯よって変わるので、条件分岐しています。
また、3日後から7日後のデータはFor文と配列を用いています。2日後からにしていないのは2日後は信頼度がないためです。
weatherCodeは参考にしたページに記載したサイトを参考に記載いたしました。
実行結果は下記の通りです。

せっかく天気予報の取得ができたので、OLEDディスプレイにも記載してみました。
なお、OLEDディスプレイを使う際はライブラリーをインストールする必要があります。
OLEDのライブラリーの取得
ツール > パッケージを管理


また、今回は日本語表示をするために美咲フォントを使用しており、こちらも準備が必要となります。(詳しい説明は参考にしたページをご確認ください。)
まず、下記のページからZipファイルをダウンロードします。

Zipファイル内のmisakifontフォルダーだけアップロードするので、ダウンロード後は解凍しておいてください。
Tonnyを使ってZipファイルをRaspberry Pi Picoへアップロードします。
表示 > ファイル (Raspberry Pi PicoとPCのZipファイルの保存先が表示できるようにしておく。)

Zipファイルを右クリック > /をアップロードを選択


準備ができたらプログラムを書いていきます。
今回、作成したプログラムは下記になります。
なお、美咲フォントで対応していない、曇、雷、霧、伴うの文字化け回避とスペース削減のため、天候はweatherCodeを使うことにしました。
実行結果は下記の通りです。
接続はGND⇔GND(青)、3V3⇔VCC(赤)、GP1⇔SCL(白)、GP0⇔SDA(黄)となっています。


参考にしたページ
・MicopythonでのJSONファイルの扱い方について
・Raspberry Pi Pico W OpenWeatherMap API Sensorless Weather Station
・MicroPython: OpenWeatherMap API with ESP32/ESP8266 – Sensorless Weather Station
・M5Stack で天気情報を表示する(OpenWeatherMap API)
・気象庁の天気予報の取得について
・気象庁の東京都の天気
・Pythonを使った気象庁の天気予報APIの取得について
・予報区の情報取得について
・weatherCodeについて
・美咲フォントについて
Comments