eucalyのアイコン画像
eucaly 2024年10月25日作成 © MIT
セットアップや使用方法 セットアップや使用方法 閲覧数 21
eucaly 2024年10月25日作成 © MIT セットアップや使用方法 セットアップや使用方法 閲覧数 21

ラズパイのキオスク化 ~ IoT案件だと余りがちなHDMIを使って

ラズパイのキオスク化 ~ IoT案件だと余りがちなHDMIを使って

こんにちは、ゆうかりです。
今回は、ウチのラズパイさんのIoTな使い方的なものを紹介します。

なお、センサーやIR制御などは、ウチでは、ESP32ベースで組んじゃってるので、IoTハードウェア的なお話ではありません。
「データ表示とかどうしましょう」案件です。

Raspberry Piと映像

ラズパイさんは、映像出力を持っています。
特に最近のは、複数画面に対応してたり、4Kに対応してたりと、割とリッチです。
が、センサー用途などに使われる場合、往々にして映像出力は使われません。
割と勿体ない気がするので、リッチなデータモニターとして使えるキッティングを紹介したいと思います。

全画面Webブラウザ

・・・を、割と最低限な構成で。
「電源を入れたら、特定のサイトを全画面に表示する」系の自動実行が、ラズパイには合っていると思います。
なので、そんな風にキッティングしていきましょうか。

キッティング

前提条件

・Raspberry Pi OS LiteをMicroSDカードに展開してあること
・管理者ユーザーを設定、ネットワークに接続し、SSH接続を有効化、SSHで接続していること

作戦

まあ、ざっくり以下な感じです。
・自動ログイン用ユーザーを作成、設定
・X11を、全画面表示専用なウインドウマネージャで起動
・chromiumを自動起動に最適化して実行

キッティングスクリプト

コイツをsudo suした状態でSSH端末から流し込んであげれば、次回起動時に「elchika.com」が表示されるはずっ!。

kitting.sh

## install package apt update -y apt upgrade -y apt install -y xserver-xorg xinit matchbox-window-manager x11-apps x11-xserver-utils xfonts-75dpi xterm unclutter apt install -y chromium ## setup user adduser player --disabled-password << EOF Y EOF ## set monitor config cat <<EOF > /usr/share/X11/xorg.conf.d/10-monitor.conf Section "ServerFlags" Option "StandbyTime" "0" Option "SuspendTime" "0" Option "OffTime" "0" Option "BlankTime" "0" EndSection EOF ## auto login mkdir /etc/systemd/system/getty@tty1.service.d cat <<EOF > /etc/systemd/system/getty@tty1.service.d/override.conf [Service] ExecStart= ExecStart=-/sbin/agetty --autologin player --noclear %I 38400 linux EOF systemctl daemon-reload ## auto start x window cp -f /etc/skel/.profile /home/player/.profile cat <<EOF >> /home/player/.profile if [ -z "\$DISPLAY" ] && [ \$(tty) = /dev/tty1 ]; then exec startx -- -nocursor fi EOF chown player:player /home/player/.profile chmod 644 /home/player/.profile ## auto start player cat <<EOF > /home/player/.xsessionrc #!/bin/sh /usr/bin/xsetroot -solid grey10 & /bin/sleep 2 /home/player/startPlayer.sh & EOF chown player:player /home/player/.xsessionrc chmod 755 /home/player/.xsessionrc cat <<EOF > /home/player/.xinitrc #!/bin/sh sh ./.xsessionrc matchbox-window-manager EOF chown player:player /home/player/.xinitrc chmod 664 /home/player/.xinitrc ## start chromium cat <<EOF > /home/player/startPlayer.sh #!/bin/sh chromecount=`ps -ef |grep chromium |grep -v grep |wc -l ` if [ $chromecount = 0 ] ; then if [ -e /home/player/chromeuserdata/Local\ State ]; then if grep -q "\"exited_cleanly\":true" /home/player/chromeuserdata/Local\ State; then : else rm -rf /home/player/chromeuserdata fi else rm -rf /home/player/chromeuserdata fi chromium --window-size=1920,1080 --window-pos=0,0 --enable-frame-rate-limit=60 --disable-gpu-vsync --disable-dev-tools --no-first-run --no-default-browser-check --allow-running-insecure-content --disable-crash-reporter --disable-software-rasterizer --disable-extension --disable-background-mode --disable-web-security --user-data-dir="/home/player/chromeuserdata" --unlimited-quota-for-files --unlimited-storage --disable-permissions-api --noerrdialogs --allow-file-access-from-files --disable-popup-blocking --disable-features=PreloadMediaEngagementData,AutoplayIgnoreWebAudio,MediaEngagementBypassAutoplayPolicies --autoplay-policy=no-user-gesture-required --simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT' --kiosk --app=https://www.elchika.com/ --enable-logging=stderr --v=0 &>> /dev/null fi /bin/sleep 30 ./startPlayer.sh & EOF chown player:player /home/player/startPlayer.sh chmod 755 /home/player/startPlayer.sh

キッティングスクリプトの簡単な説明

install package

X11、及び「matchbox-window-manager」という全画面専用なウインドウマネージャーをインストールしてます。
あとchromium。

setup user

「player」という名前のユーザーを、自動起動用に作成しています。

set monitor config

ラズパイ標準だと、10分くらいで画面がスリープしてしまいます。
そんなスリープ設定を無効化するおまじない。

auto login

systemdでtty1をフックし、自動的にログインする感じ。

auto start x window

ユーザーがログインした際、tty1からの場合は、自動的にX11を起動せよ、て感じの仕込みです。

auto start player

ウインドウマネージャー設定、及びchromium起動用スクリプトの呼び出し回りです。

start chromium

chromiumを起動するためのスクリプトです。
なんか事故ってchromiumが落ちた場合、自動的にchromiumを再起動します。
また、chromiumのプロファイルが壊れてそうな場合は初期化します。
chromiumの起動オプションは、ぐぐって頂ければ分かるかと。
ユーザー確認系や音声設定、初期設定、開発ツールなど、要らなそうな要素を飛ばす設定を入れています。
「--app=https://www.elchika.com/」の部分を書き換えると、任意のWebサイトを表示できます。
例えば、、、同じラズパイにセットアップしたapacheのサイトを「--app=http://localhost/」で呼んだり、ね!。
また、/dev/nullに捨てている出力は、ログファイルなどに書き換えることで、chromiumのコンソール出力をロギングすることができます。
デバッグなどにどうぞ!。

作業場での使い方

例えば、、、
・ESP32+IRレシーバーでリモコンコードを受け取る
・ラズパイへJSONを送信
・ラズパイは貰ったJSONをapache経由で公開
・chromium上でajax非同期でJSON読み込み、処理実行
を実装することで、「リモコン対応Web画面」を作ったりしています。

また、HEMS画面を拡大してテレビに表示とか、やらかしたりしてたり・・・。

キャプションを入力できます
これは元々720P固定なパナソニックのaiseg画面を拡大し、Raspberry pi 5を使ってテレビに表示している、やーつです。

たのしんでくださいな

・・・まあこれ、普通にデジタルサイネージなプレイヤーとして使える設定だったりします・・・。
もし余ってるモニターがあって、それがセンサー扱いのラズパイの近くにあるなら、試してみてくださいなっ!。

以上です。

eucalyのアイコン画像
いつも、てきとうです
  • eucaly さんが 2024/10/25 に 編集 をしました。 (メッセージ: 初版)
ログインしてコメントを投稿する