9
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry Piで気象情報付き時計

Posted at

気象情報付き時計

我が家のテレビの横に、時刻と気象情報を表示するRaspberry Pi製のデバイスを置いている。
weather_clock.jpg
本体は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環境を構築するのが面倒なので、今回は下記のように変更した。

前回は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 updatesudo apt-get full-upgradeでパッケージの更新
sudo apt-get install unclutterunclutterをインストール(マウスカーソルを消す)。

sudo nano /boot/config.txtでconfig.txtにlcd_rotate=2(液晶画面の上下反転)とavoid_warnings=1(低電圧警告の⚡を非表示)を追加。

下記disp_on_off.shを/home/piに置いて、chmod +x disp_on_off.shTV_IPはテレビのIPアドレス。

disp_on_off.sh
#!/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で再起動して完成。

9
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?