これは卓上スマートカレンダーを自作しよう!と勢いで作ったものです。
実はpwnagotchi用に買ったRaspberry Pi Zero WとWaveshare E-ink Display(電子ペーパー)が余ってたのでいい感じに使ってやろうということで作りました。
(モバイルバッテリーを持ってないのと3Dプリンタがないのでケースが作れなくて常用を諦めました。)
一度作ろうとこのレポジトリを作ってからしばらく放置してましたが、テスト期間でやる気が出てきちゃったので一晩で作りました。(何してんだろ)
(自分用に作ったので公開するつもりはなかったのですが、せっかくなので公開しときました。)
ご自由にお使いください。....と言いたいところですが、気象庁さんの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 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フォント: