2025年1月3日金曜日

デジタルサイネージ

2025/01/03 
Raspbery Pi を使ってデジタルサイネージを作成

Raspbery Pi Imager に、Anthias があり簡単に作成できるようだが、ローカルネットワーク環境ではうまく動かなかった、調査はそこそこにして作ってみることにした

欲しい機能、デジタル時計表示、画像表示、画像には時間表示ができる、曜日毎に表示制御、夜は表示しない

画像表示は、python と pygame を組み合わせて実現する
画像の入れ替えは、Apache と php を組み合わせて実現する

Raspbery Pi は、Imager を使って 32bit版を適用する
#セットアップ環境は他のWindows PCからSSH接続
#ユーザーID は、pi を使用

最新にアップデート
$ sudo apt-get -y update
$ sudo apt-get -y upgrade

pygame のセットアップ
$ sudo apt install -y python3-pygame

Apache2 のセットアップ
$ sudo apt-get install -y apache2

$ sudo systemctl restart apache2 (念の為)
 Edgeなどで開くと起動確認できる

php のセットアップ
$ sudo apt install -y php

PHPの送信ファイルのサイズ拡大
$ sudo vi /etc/php/7.4/apache2/php.ini
7.4はインストールしたバージョン

下記の項目を変更する、変更するサイズは適当です
upload_max_filesize = 50M
post_max_size = 100M
memory_limit = 256M

$ sudo systemctl restart apache2 (再起動して変更を適用)

samba のセットアップ 
#ファイル送信のためにセットアップ、USBなどで転送するなら不要かも
$ sudo apt install -y samba

$ sudo vi /etc/samba/smb.conf
下記を最終に追加
------------------------------------------------
[pi]
   comment = Welcome to pi Server
   path = /home/pi/
   browseable = yes
   wriable = yes
   guest ok = yes
   force create mode = 0666
   force directory mode = 0777
   read only = no
   create mask =0777
   directory mask = 0777
[www]
   comment = www server
   path = /var/www/html
   browseable = yes
   wriable = yes
   guest ok = yes
   force create mode = 0666
   force directory mode = 0777
   read only = no
   create mask =0777
   directory mask = 0777
------------------------------------------------
sambaパスワードを設定
$ sudo smbpasswd -a pi

$ sudo service smbd restart (再起動して変更を適用)

$ sudo mkdir /var/www/html/DigtalSignage (表示する画像データ保管フォルダ)

wwwのフォルダにアクセスできるようにする(権限は最大化、適宜合わせる)
$ sudo chmod 777 /var/www
$ sudo chmod 777 /var/www/html
$ sudo chmod 777 /var/www/html/DigtalSignage

自動更新の停止(自動更新が働くと止まってしまう)
$ sudo apt-mark hold raspberrypi-kernel
$ sudo apt-mark hold firmware*

wwwページ作成
------------------------------------------------
/var/www/html/index.php
/var/www/html/update.php
/var/www/html/upload.php
/var/www/html/apply.png
/var/www/html/shutdown.png
/var/www/html/reboot.png
/var/www/html/up.png
/var/www/html/down.png
/var/www/html/delete.png
------------------------------------------------

初期のトップページを削除
$ sudo rm /var/www/html/index.html

画像表示 pythonスクリプト作成
$ mkdir /home/pi/DigtalSignage
------------------------------------------------
/home/pi/DigtalSignage/DigtalSignage.py
------------------------------------------------

自動起動の設定
$ mkdir /home/pi/.config/autostart
ファイル作成(/home/pi/.config/autostart/.desktop)
------------------------------------------------
[Desktop Entry]
Type=Application
Name=My Python App
Exec=/home/pi/startup.sh
------------------------------------------------

スタートアップスクリプト作成(/home/pi/startup.sh)
------------------------------------------------
#!/bin/bash
sleep 30    # 少し待たないと起動できない
cd /var/www/html/DigtalSignage/
/usr/bin/python3 /home/pi/DigtalSignage/DigtalSignage.py
------------------------------------------------
起動できるように変更
$ sudo chmod 777 startup.sh

再起動で起動

画像の追加は、Edge等でラズパイに接続する

止めるには、SSHでログオンして、プロセスを KILL する
$ ps ax で、プロセス番号確認
$ kill -kill [プロセス番号]

ご自由にお使いください
一切の責任は負いません

Raspberry Pi 1:処理的に無理みたい
Raspberry Pi 2:画像ファイルサイズが大きくなければ使える
Raspberry Pi 4:そこそこ使える