デジタルサイネージをラズパイで作る「Screenly」の導入方法

デジタルサイネージをラズパイで作る「Screenly」の導入方法
Page content

デジタルサイネージをRaspberry Piで実現する「Screenly」というソフトウェアを見つけました。実際にScreenlyのOpen Source Edition (OSE) を導入して試してみます。

手順1: OSの導入と最小限の設定

  1. 次の物を用意します
    • ラズパイ本体 (今回は Raspberry Pi 3 Model B+ (メモリ1GB))
    • micro SDカード
    • HDMI接続可能なディスプレイ
    • その他、USB電源やHDMIケーブル
  2. ラズパイ公式の手順でmicro SDカードにRaspberry Pi OSのイメージを焼きます
    • 【重要】OSは「Raspberry Pi OS Lite」の、新しい「Bullseye」ではなく古い「Buster (Legacy)」を選択します (必然的に32-bitになります)
  3. ラズパイへのSSHログインを可能とするため、イメージを焼いた後のmicro SDカードのbootパーティション直下にsshという名前のファイルを置きます
  4. 有線LAN接続したラズパイを上記micro SDカードで起動し、ラズパイへSSH or コンソールでログインします
  5. 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
  1. 必要最小限の設定をします
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の導入と追加対応

  1. ドキュメント 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
  1. インストーラの実行中に目立ったエラーがなく、途中で実行される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
  1. Screenlyに日本語等の文字を表示させるためにNotoフォントを導入します
sudo apt install fonts-noto
  1. お好みでHDMI画面を回転させる設定を行います (参考: https://www.raspberrypi.com/documentation/computers/config_txt.html#display_hdmi_rotate )
sudo vi /boot/config.txt # ファイルの最後に次の1行を追記
display_hdmi_rotate=3 # 表示を左に90度回転
  1. ラズパイを再起動します

Screenlyの設定

  1. ラズパイが起動すると上記のScreenly画面がディスプレイに表示されます
  2. 表示されているURL (上記の画面では https://192.168.1.171/ ) をウェブブラウザで開くとScreenlyの管理画面に入り、各種設定が行えます。次のデモURLでは管理画面の操作感を試すことができます
  3. 参考として、Screenlyを動作させるラズパイにtailscaleを導入すると、おおよその設置環境でリモート保守が可能になります

感想

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が導入できない問題にぶち当たり、解決方法がわからず導入を断念しました。

試行錯誤した手順

  1. 「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
  1. Screenlyインストーラの実行前に、自分なりのトライアンドエラーで導いた、インストーラ実行に必要な次のパッケージをあらかじめ導入しておきます
sudo apt install python3-pip git python-dev-is-python3 whois
  1. 同様の意図で、dockerもあらかじめ導入しておきます
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
  1. 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
  1. しかし、Screenlyインストーラ実行途中に次のansibleエラー (表示が赤色) が発生します。omxplayerのパッケージが無いようです
TASK [system : Install Screenly dependencies] ******************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "No package matching 'omxplayer' is available"}
  1. omxplayerの代用になるかもと思い、omxplayer-piをたとえばsnapで導入しようとするとそもそもarm64版は無いとわかります
  2. ScreenlyのBullseye 64-bit環境への導入は残念ながら断念

参考リンク