これは卓上スマートカレンダーを自作しよう!と勢いで作ったものです。
Raspberry Pi Zero WとWaveshare E-ink Display(電子ペーパー)が余ってたのでいい感じに使ってやろうということで作りました。
(自分用に作ったので公開するつもりはなかったのですが、せっかくなので公開しときました。)
ご自由にお使いください。....と言いたいところですが、気象庁さんのJSONファイルを取得してきてるので必ず負荷の少ない頻度で実行してください。
(一応ライセンスはApache-2.0に設定しています。)
作りも悪いので、見た目もあまりよくないしで実用性があるかはわかりません。特にニュースなんかは文字数が少なすぎて実用性皆無です。
というか、一日に何度も更新する必要はないと思うので一日に一回か二回でいいと思います。(私は0時と5時に実行しています。)
このプログラムはRaspberry Pi Zeroで実行されることを想定しています。
また、RaspberryPi OSのLegacy(32bit)でのみ動作します。(waveshareさんのライブラリが新しいOSでは動かないです。)
(蛇足ですが、軽量化のためにLiteをお勧めします。)
電子ペーパーはこちら(V4)を想定しています。
インターネットにつながっていないと動作しません。
はじめに、いくつかのパッケージをインストールします。
$ sudo apt-get update
$ sudo apt-get install python3-pip python3-pil python3-numpy python3-gpiozero次に、必要なライブラリをインストールします。
$ sudo pip3 install spidev Pillow requests requests-cache feedparser次に、SPIを有効化します。
$ sudo raspi-config上記のコマンドで設定を開き、3 Interface OptionsからI4 SPIを選択し、Yesで有効化します。
時間が正しいかを確認します。
dateコマンドで日本標準時に設定されているかどうか、日付・時刻が正しいかを確認しておきます。
gitでクローンしてきます。(zipファイルでダウンロードしてきてもかまいません。)
(gitがインストールされていない場合は、aptなどでインストールしてください。)
$ git clone https://github.com/mendoitarou/Desk_Smart_Calendar.git.envは実は機能していません。(後々対応するかもです。めんどくさくなっちゃった。)
image_generate.pyの上の方に# ===== CONFIG =====で囲まれている箇所がコンフィグです。
area_codeに表示させたい天気予報のエリアコードを指定します。(都道府県です。)
デフォルトは高知県(390000)になっています。
エリアコードはこちらが参考になりそうです。
is_news_showではニュースを表示するかを設定できます。(TrueかFalse)
news_source_nameでは表示するニュースの取得元を変更できます。(nhk, itmedia, virtual_life_magazine, piyologから選べます。)
お天気アイコンの用意を手動でする必要があります。
権利関連が大丈夫なのか心配ではありますが、気象庁さんのお天気アイコンを使わせていただきます。
download_Image.pyでsvgをダウンロードしてきて、手動でpngに変換してください。(png変換の自動化がうまくいかなかったので手動でお願いします。)
デフォルトではweatherCodes_Imageに保存されています。ここに置かないとメインのコードが動かないので注意。
cronを使って、定期的に実行させます。
はじめにpython3のパスを調べます。
$ which python3表示されたパスをメモしておきます。
crontab -eでエディタを開きます。
次のように設定します。
0 0,5 * * * cd {クローンしたgitのパス}; {python3のパス} {クローンしたgitのパス}/main.py
これはあくまで例です。
ちなみにこの例では、0時0分と5時0分に実行されます。(これは日付が変更される時間と気象庁さんが天気予報を公表?する時間に合わせています。)
リセットだけするプログラムを用意しておきました。
display_reset.pyを実行で表示がリセットされます。
電子ペーパーのライブラリ:
IPAフォント: