デジタルサイネージをラズパイで作る「Screenly」の導入方法
Page content
デジタルサイネージをRaspberry Piで実現する「Screenly」というソフトウェアを見つけました。実際にScreenlyのOpen Source Edition (OSE) を導入して試してみます。
- Screenly - Screenly Open Source Edition https://www.screenly.io/ose/
手順1: OSの導入と最小限の設定
- 次の物を用意します
- ラズパイ本体 (今回は Raspberry Pi 3 Model B+ (メモリ1GB))
- micro SDカード
- HDMI接続可能なディスプレイ
- その他、USB電源やHDMIケーブル
- ラズパイ公式の手順でmicro SDカードにRaspberry Pi OSのイメージを焼きます
- 【重要】OSは「Raspberry Pi OS Lite」の、新しい「Bullseye」ではなく古い「Buster (Legacy)」を選択します (必然的に32-bitになります)
- ラズパイへのSSHログインを可能とするため、イメージを焼いた後のmicro SDカードのbootパーティション直下に
ssh
という名前のファイルを置きます - 有線LAN接続したラズパイを上記micro SDカードで起動し、ラズパイへSSH or コンソールでログインします
- OSの環境を確認してみると次の通り
pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.10.63-v7+ #1496 SMP Wed Dec 1 15:58:11 GMT 2021 armv7l GNU/Linux
pi@raspberrypi:~ $ free -m
total used free shared buff/cache available
Mem: 923 41 654 11 227 817
Swap: 99 0 99
- 必要最小限の設定をします
sudo raspi-config nonint do_hostname 新ホスト名
sudo raspi-config nonint do_change_timezone Asia/Tokyo
sudo raspi-config nonint do_wifi_country JP
sudo raspi-config nonint do_overscan 1
sudo reboot # いったん再起動する
手順2: Screenlyの導入と追加対応
- ドキュメント https://github.com/Screenly/screenly-ose#installing-on-raspbianraspberry-pi-os に沿って、Screenly公式のインストーラを次のように実行します
bash <(curl -sL https://www.screenly.io/install-ose.sh)
# 入力を求められるのでそれぞれ次のように回答します
Do you still want to continue? (y/N) => y
Which version/branch of Screenly OSE would you like to install: => 1
You selected: Production
Do you want Screenly OSE to manage your network? This is recommended for most users because this adds features to manage your network. (Y/n) => y
Would you like to perform a full system upgrade as well? (y/N) => y
- インストーラの実行中に目立ったエラーがなく、途中で実行されるansible-playbookにもエラー (赤字) がなければたぶんOKです。再起動するかどうかの最後の質問にはいったん
n
と回答します
Installation completed.
You need to reboot the system for the installation to complete. Would you like to reboot now? (y/N) => n
- Screenlyに日本語等の文字を表示させるためにNotoフォントを導入します
sudo apt install fonts-noto
- お好みでHDMI画面を回転させる設定を行います (参考: https://www.raspberrypi.com/documentation/computers/config_txt.html#display_hdmi_rotate )
sudo vi /boot/config.txt # ファイルの最後に次の1行を追記
display_hdmi_rotate=3 # 表示を左に90度回転
- ラズパイを再起動します
Screenlyの設定
- ラズパイが起動すると上記のScreenly画面がディスプレイに表示されます
- 表示されているURL (上記の画面では https://192.168.1.171/ ) をウェブブラウザで開くとScreenlyの管理画面に入り、各種設定が行えます。次のデモURLでは管理画面の操作感を試すことができます
- 管理画面のデモURL: https://ose.demo.screenlyapp.com/
- 参考として、Screenlyを動作させるラズパイにtailscaleを導入すると、おおよその設置環境でリモート保守が可能になります
- Download Tailscale > Raspberry Pi: https://tailscale.com/download/linux/rpi
感想
Screenly OSEを用いると、URL指定でのウェブページ (自動スクロールはせず固定)、画像、動画をコンテンツとして表示するデジタルサイネージを手早く構築できるとわかりました。
各コンテンツの表示時間や有効期間も定めることができ、学校や仕事場、店頭などに置くシンプルなサイネージとしてはなかなか有用です。また、ベースにはRaspberry Pi OSが動いているので、決まった時間にシャットダウンさせるなどLinux的な仕掛けも組み込めますし、応用幅は工夫次第だと思います。
余談: 導入断念編 (Bullseye 64-bit環境では今は無理かも)
Raspberry Pi 3 Model B+のOSとして「Raspberry Pi OS Lite (64-bit) Released: 2022-01-28」 (Legacyではない) を選択した場合に、Screenlyの導入は成功するのかどうか。
私の場合は次のように途中でomxplayer
が導入できない問題にぶち当たり、解決方法がわからず導入を断念しました。
試行錯誤した手順
- 「Raspberry Pi OS Lite (64-bit)」導入後の各種情報は次の通り
pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.10.92-v8+ #1514 SMP PREEMPT Mon Jan 17 17:39:38 GMT 2022 aarch64 GNU/Linux
- Screenlyインストーラの実行前に、自分なりのトライアンドエラーで導いた、インストーラ実行に必要な次のパッケージをあらかじめ導入しておきます
sudo apt install python3-pip git python-dev-is-python3 whois
- 同様の意図で、dockerもあらかじめ導入しておきます
- Install Docker Engine on Debian | Docker Documentation > Install using the convenience script https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
- Screenlyインストーラを実行し、選択肢は次のようにします
bash <(curl -sL https://www.screenly.io/install-ose.sh)
Do you still want to continue? (y/N) => y
Which version/branch of Screenly OSE would you like to install: => 1
You selected: Production
Do you want Screenly OSE to manage your network? This is recommended for most users because this adds features to manage your network. (Y/n) => y
Would you like to perform a full system upgrade as well? (y/N) => y
- しかし、Screenlyインストーラ実行途中に次のansibleエラー (表示が赤色) が発生します。omxplayerのパッケージが無いようです
TASK [system : Install Screenly dependencies] ******************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "No package matching 'omxplayer' is available"}
- omxplayerの代用になるかもと思い、omxplayer-piをたとえばsnapで導入しようとするとそもそもarm64版は無いとわかります
- ScreenlyのBullseye 64-bit環境への導入は残念ながら断念