ラズパイでスマート鳩時計を作る (6.時間・天気表示画面を作る①)
久しぶりの更新となってしまいました。
ブログ書き始めて1年以上経つのに、鳩時計はなかなか形になりません。
でもまだあきらめてないので、ゆっくり進めていきたいと思います。
いつもは実家に帰っている連休ですが、今年はコロナ禍で自宅に引きこもり。
長男と私は外出が生きがいみたいな性分なので、なかなかストレスが溜まります。
(旦那と次男はおうち大好きですが…)
せめて、やりたいことをやってストレス発散しよう…
ということで、子供たちにはゲームを渡し、その隙に母はモノづくりでも。
Pythonで時間・天気表示画面を作る
さて、ラズパイが復旧したので、GUIのほうの用意をしたいと思います。
まずは開発用のPC上で、タッチディスプレイに表示させる画面を作ります。
スマート鳩時計は、長男の登校準備の補助が目的です。
なので、現在の時刻のほか、投稿と下校の時間の天気や気温を表示させたいと思います。
調べたら、まさにやりたいものを作ってる方がいらっしゃいましたので、
今回は下記を参考にさせていただきます。
qiita.com
用意するもの
- OpenWeatherMapのAPI KEY
天気予報を取得できる有名なAPI。無料なので、登録してAPI KEYを取得します。
openweathermap.org
- お天気アイコン
天気に合わせて表示するアイコン。こちらからお借りしました。
magamit.com
OpenWeatherMapは、こちらの予報のほかに雪と霧の予報も出るので、
足りなかったアイコンは自作しました。
つくってみた
まずは、そのまま実行。上記サイトからいただいたコードを、KEYと郵便番号だけ変えてそのまま実行すると、以下のエラー。
>python tenki.py Traceback (most recent call last): File "tenki.py", line 4, in <module> import requests ModuleNotFoundError: No module named 'requests'
参考コードで使用している'requests'は、外部パッケージのようです。
こちらを参考にインストール実行。
https://pg-chain.com/python-requests-install
>pip install requests Collecting requests Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB) |????????????????????????????????| 61kB 975kB/s Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests) Downloading https://files.pythonhosted.org/packages/b4/40/a9837291310ee1ccc242ceb6ebfd9eb21539649f193a7c8c86ba15b98539/urllib3-1.25.7-py2.py3-none-any.whl (125kB) |????????????????????????????????| 133kB 1.7MB/s Collecting certifi>=2017.4.17 (from requests) Downloading https://files.pythonhosted.org/packages/b9/63/df50cac98ea0d5b006c55a399c3bf1db9da7b5a24de7890bc9cfd5dd9e99/certifi-2019.11.28-py2.py3-none-any.whl (156kB) |????????????????????????????????| 163kB 3.3MB/s Collecting chardet<3.1.0,>=3.0.2 (from requests) Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB) |????????????????????????????????| 143kB 3.2MB/s Collecting idna<2.9,>=2.5 (from requests) Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB) |????????????????????????????????| 61kB 1.9MB/s Installing collected packages: urllib3, certifi, chardet, idna, requests Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.8 requests-2.22.0 urllib3-1.25.7 WARNING: You are using pip version 19.2.3, however version 19.3.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command. >
インストール後実行すると、今度は次のエラーです。
>python tenki.py Traceback (most recent call last): File "tenki.py", line 7, in <module> from PIL import Image, ImageTk ModuleNotFoundError: No module named 'PIL'
PILは、現在開発が停止しており、PILからフォークされたPillowを入れるようです。
こちらを取得します。
note.nkmk.me
>pip install Pillow Collecting Pillow Downloading https://files.pythonhosted.org/packages/a0/f5/943da9f188d1abdbd83f73dfba7ed8c1935161e8f9b4ef6fc9cea0b3e14b/Pillow-7.0.0-cp38-cp38-win32.whl (1.8MB) |????????????????????????????????| 1.8MB 1.1MB/s Installing collected packages: Pillow Successfully installed Pillow-7.0.0 WARNING: You are using pip version 19.2.3, however version 19.3.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command. >
Pillowを入れたらちゃんと動きました。
課題
作ってから気が付いたのですが、OpenWetherMapではFreeアカウントでは3時間ごとの天気表示しかできないようで…
これだと、本当に欲しい時間の天気(登校と下校の時間の天気)がわかりません。
また、現在の気温も、3時間の平均が出てしまうので、実際の温度とかなり誤差があるようです。
別APIの使用も含め、再検討したいと思います。
あと、時計をアナログ表示にしないと…