気象情報付き時計
我が家のテレビの横に、時刻と気象情報を表示するRaspberry Pi製のデバイスを置いている。
本体はModel B V1.2で、画面は公式Touchscreen Displayで、ケースはRSコンポーネンツ製タッチスクリーン液晶用ケース。
Google Nest Hubを買ってからは部屋の隅に追いやられた感があるけれど、テレビを見ながら時間や天気を確認するのには便利なので、まだ現役である。
しばらくOSのアップデートをしてなかったので、さすがにセキュリティ的に良くないかなと思ってRaspbianのHPを見てみたら、Raspbian Busterが出ていたので、更新することにした。
変更点
今まではRaspberry Pi内でNode.jsを使って以下の機能を実装していた。
- テレビのOn/Offに合わせてRaspberry Piの液晶画面の電源をOn/Off。テレビ(SONY BRAVIA)の電源状況の確認はこのライブラリを使用。
- 気象庁のページから気象情報を取得して整形して返すWebサーバ。
Node.js環境を構築するのが面倒なので、今回は下記のように変更した。
- 電源をOn/OffはShellとCurlで。
- 気象情報を表示するWebサーバはglitch.meに移行。https://weather-clock.glitch.me
前回はminimalなOS imageから必要なパッケージを選んでインストールしたけど、面倒なので、デスクトップ環境のOS imageを使った。
構築方法
公式ページからRaspbian Buster with desktop (2019-09-26-raspbian-buster.zip) をダウンロードして、SHA256を確認して解凍。
$ shasum -a 256 2019-09-26-raspbian-buster.zip
2c4067d59acf891b7aa1683cb1918da78d76d2552c02749148d175fa7f766842 2019-09-26-raspbian-buster.zip
$ unzip 2019-09-26-raspbian-buster.zip
Archive: 2019-09-26-raspbian-buster.zip
inflating: 2019-09-26-raspbian-buster.img
SDカードをMacに挿す前と後でdiskutil listを比較して、増えた/dev/diskN
を確認。(私の環境では/dev/disk2
。) diskutil unmountDisk
でディスクをアンマウントし、dd
コマンドでディスクイメージをSDカードに書き込む。dd
コマンドはかなり時間がかかる。Ctrl+T
で何バイト書き込まれたか確認できる。
$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful
$ sudo dd if=2019-09-26-raspbian-buster.img of=/dev/disk2 bs=1m
Raspberry PiにSDカードを指して、起動後表示されるウィザードにそってパスワードとかWi-Fiを設定。
sudo raspi-config
でSSHをオン。
sudo apt-get update
とsudo apt-get full-upgrade
でパッケージの更新
sudo apt-get install unclutter
でunclutter
をインストール(マウスカーソルを消す)。
sudo nano /boot/config.txt
でconfig.txtにlcd_rotate=2
(液晶画面の上下反転)とavoid_warnings=1
(低電圧警告の⚡を非表示)を追加。
下記disp_on_off.shを/home/pi
に置いて、chmod +x disp_on_off.sh
。TV_IP
はテレビのIPアドレス。
#!/bin/bash
TV_IP=192.168.0.111
while :
do
RESULT=`curl -Ss -d '{"method":"getPowerStatus","params":[],"id":1111,"version":"1.0"}' http://$TV_IP:80/sony/system`
if [ "`echo $RESULT | grep 'active'`" ]; then
sudo sh -c "echo 0 > /sys/class/backlight/rpi_backlight/bl_power"
else
sudo sh -c "echo 1 > /sys/class/backlight/rpi_backlight/bl_power"
fi
sleep 1
done
autostartファイルを作って、
mkdir -p /home/pi/.config/lxsession/LXDE-pi/
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
下記を追記
@/usr/bin/chromium-browser --kiosk --start-maximized --incognito https://weather-clock.glitch.me/
@/home/pi/disp_on_off.sh
@unclutter
@xset s off
@xset s noblank
@xset -dpms
あとはsudo reboot
で再起動して完成。