ちゃっくらぼ

IT業界の片隅でひっそりと生きる兼業主婦の覚書。

ラズパイでスマート鳩時計を作る (6.時間・天気表示画面を作る①)

久しぶりの更新となってしまいました。
ブログ書き始めて1年以上経つのに、鳩時計はなかなか形になりません。
でもまだあきらめてないので、ゆっくり進めていきたいと思います。

いつもは実家に帰っている連休ですが、今年はコロナ禍で自宅に引きこもり。
長男と私は外出が生きがいみたいな性分なので、なかなかストレスが溜まります。
(旦那と次男はおうち大好きですが…)

せめて、やりたいことをやってストレス発散しよう…
ということで、子供たちにはゲームを渡し、その隙に母はモノづくりでも。

Pythonで時間・天気表示画面を作る

さて、ラズパイが復旧したので、GUIのほうの用意をしたいと思います。
まずは開発用のPC上で、タッチディスプレイに表示させる画面を作ります。

スマート鳩時計は、長男の登校準備の補助が目的です。
なので、現在の時刻のほか、投稿と下校の時間の天気や気温を表示させたいと思います。 

調べたら、まさにやりたいものを作ってる方がいらっしゃいましたので、
今回は下記を参考にさせていただきます。
qiita.com

用意するもの

  • OpenWeatherMapのAPI KEY

天気予報を取得できる有名なAPI。無料なので、登録してAPI KEYを取得します。
openweathermap.org
f:id:chack133:20200502150914p:plain

  • お天気アイコン

天気に合わせて表示するアイコン。こちらからお借りしました。
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を入れたらちゃんと動きました。
f:id:chack133:20200502154151p:plain

課題

作ってから気が付いたのですが、OpenWetherMapではFreeアカウントでは3時間ごとの天気表示しかできないようで…
これだと、本当に欲しい時間の天気(登校と下校の時間の天気)がわかりません。
また、現在の気温も、3時間の平均が出てしまうので、実際の温度とかなり誤差があるようです。

APIの使用も含め、再検討したいと思います。

あと、時計をアナログ表示にしないと…