ラズパイ4でスライドショーを自動起動させる!
Raspberry PiにかまけてPython学習が進んでいませんが、今回もハマったことの忘備録として残しておきます。
やりたいこと
流行りのデジタルサイネージをやってみる。壁掛けモニターにラズパイを指すだけの簡単な構成で実現したい。
実現方法はおおまかに、表示する内容を予めPDF形式で用意しておき、ラズパイに移す。そして、PDFをスライドショーとして流すためにOkular
を使う。あとラズパイが起動したのと同時にスライドショーが流れるように自動起動の設定をする。
以下でそれぞれ詳細に説明していく。
※パーミッション関係はまだよく分かっていないので記載を割愛する。とりあえず『すべて許可』にしておけば動く。
環境
デバイスバージョン : Raspberry Pi 4 Model B Rev
Raspbianのバージョン : 10.7
PDFファイルをラズパイに送る
詳細は↓↓の記事を参考に。
greenhornprofessional.hatenablog.com
スライドショー表示できるようにする
Okularのインストール
Okularは数あるPDFビューワーソフトの内の一つ。
以下のコマンドでインストールする。
sudo apt-get update sudo apt-get install okular
Okularの設定
PDFの1ページ目から5秒おきにページ進めていき、最終ページの次はまた1ページ目に戻るというようにループさせる。
- >設定 >Okularを設定 >全般 >外観 >"ヒントと情報メッセージを表示する" ⇒ OFF
- >設定 >Okularを設定 >全般 >外観 >"Display document title in titlebar if available" ⇒ OFF
- >設定 >Okularを設定 >プレゼンテーション >ナビゲーション >"一定時間ごとに進む" ⇒ 5秒
- >設定 >Okularを設定 >プレゼンテーション >ナビゲーション >"最後まで行ったら最初のページに戻る" ⇒ ON
- >設定 >Okularを設定 >プレゼンテーション >外観 >"進捗インジケータを表示する" ⇒ OFF
XScreenSaverのインストール
XScreenSaverはディスプレイをコントロールするソフト。ディスプレイが省エネモードに入って消えないようにする。
以下のコマンドでインストールする。
sudo apt-get update sudo apt-get install xscreensaver
XScreenSaverの設定
ラズパイのスタートメニュー >設定 >スクリーンセイバー >表示モード >モード >"セーバーを無効にする" を選択
スライドショーが自動起動するようにする
ラズパイが起動するのと同時にスライドショーも自動で起動されるようにする。
シェルスクリプトの作成
Okularの起動からスライドショー実行までをスクリプトで記述する。スクリプトファイルの保存場所は /opt が良い、らしい。
以下のコマンドでスクリプトファイルを新規作成する。
sudo touch /opt/slideshow.sh
テキストエディタで開く。
sudo mousepad /opt/slideshow.sh
スクリプトを以下の通り記述して保存する。
※/home/pi/share に対象となるPDFファイル(ここではslide.pdf)が置かれているものとする。
#!/bin/bash export DISPLAY=:0.0 export XAUTHORITY="/home/pi/.Xauthority" okular --presentation /home/pi/share/slide.pdf
サービス設定ファイルの作成
上記のスクリプトファイルを自動実行させるための設定ファイルを作成する。同じく、これの保存場所は /opt が良い、らしい。
以下のコマンドで設定ファイルを新規作成する。
sudo touch /opt/autoslideshow.service
テキストエディタで開く。
sudo mousepad /opt/autoslideshow.service
設定ファイルを以下の通り記述して保存する。
[Unit] Description=run slideshow.sh [Service] ExecStart=/opt/slideshow.sh Type=simple [Install] WantedBy=multi-user.target
自動実行サービスとして登録
以下のコマンドで登録する。
sudo systemctl enable /opt/autoslideshow.service
登録を解除したい時は以下のコマンドで。
sudo systemctl disable /opt/autoslideshow.service
動作確認
ラズパイを再起動して、スライドショーが自動実行されれば成功!
上手く行かないときは以下のサイトを参考のこと。
Raspberry PiでプログラムをOS起動時に実行させる [Systemd] - チカラの技術
Python - raspiでsystemdを使っての自動実行ができない|teratail
QXcbConnection: Could not connect to display | Qt Forum