1 はじめに



 10年ほど前からデジタルサイネージが見られるようになってきた。液晶モニターや機器が高価で導入も少なかった。昨今、ネットワークやITの普及により、列車内、駅構内、ショッピングモールや地下街などでデジタルサイネージを大幅に導入するケースも増えてきている。クラウドの浸透により、ネットワークを介したデジタルサイネージも広まりつつある。コンテンツもさることながらハードウエア構成、ネットワークなどプロの仕事の範疇になるため、大規模、高額が一般的であった

デジタルカメラとともにフォトフレーム端末も低価格で提供されている。デジタルTVの導入により、液晶TVの価格が一挙に安くなり、液晶TVやフォトフレームを利用した小規模のデジタルサイネージも広がりつつある。表示側からみると誰でもデジタルサイネージができる環境が揃ったといえるが、残念なことに日本のメーカーはスマートTVへの対応が全くできていない。LGなどはandroid搭載のスマートTVを出荷しているのにもかかわらず全く対応ができていない。 一方、通信会社はすべてandroidスティックを低価格で出荷し、コンテンツ配信で利益を生み出すことを試みている。TV会社やコンテンツ配信会社はインターネットでメディアを配信する体制がすでにできている。

一方、chromecast,android USBスティック,ardrino、raspberry piなどの超小型端末も販売され、HDMIケーブル一本でコンテンツを液晶TVに表示することが可能となってきており、簡単にスマートTVを構成することができる。液晶TVは単なるモニターになってしまった。

WEBでは一時FLASHが大流行し、動的なコンテンツが標準になった。しかし、IOSでのFLASH排除の意向を受け、時代はHTML5に移りつつある。 HTML5、WEBSOCKET,WEBRTCでブラウザがOSの変わりになり、HTML5,javascriptでアプリが作成できる環境が整っている

昨年からリリースされたraspberry Piは200万台の出荷を目前としている。パソコンンや携帯の出荷台数から比べると、非常に少ないと思われるが、OSすら搭載されていない機器として考えるとこの数は看過できない。注目することは、HDMI、有線LANが標準、OSがdebianでることである。USB周辺機器もパソコン用のものが転用できる。無線アダプタも難なく認識し利用できる。OSがlinuxのため、従来の標準技術が簡単に転用できる。ケーブル一本で液晶TVに接続できる。

つまり、いとも容易にコンテンツを表示できる低価格ハードと言える。

今までは、プレイヤー専用のアプリを作成していた。このアプリは、コンテンツ管理サーバと通信(HTTP、UDP)などで、コンテンツ取得、スケジュール取得を行っていた。取得した情報に基づき、URL、イメージ、動画などを表示していた。 機能を追加するには、当然アプリの修正が必要であった。

 現在においては、機器、コンテンツ表示と通信に関して大きな変化が見られる  まず機器であるが、android端末がたかだか1万円以内で手に入る。ここでアプリを作れば簡単にプレイヤーが作成できる。もう、windowsに依存する必要はない。  次に、コンテンツ表示であるが、HTML5により多彩なマルチメディアが表示できるようになった。  最後に、通信はブラウザがWEBSOCKETをサポートしたことにより、 サーバから情報プッシュが可能となった。いつも対応が遅れているIE11ではサポートされている  まとめると、ブラウザの機能アップが顕著なため、ブラウザベースでプレイヤーを構築でき、専用のプレイヤーソフトが必要なくなったと言える。

 プレイヤー=低価格端末+液晶TV+ブラウザ

 raspberry PIにおいてフルスクリーンでブラウザが起動できれば、それでプレイヤーが構築できたということ!  あとはコンテンツ管理サーバから情報をWEBSOCKETでプッシュするだけ


2 サイネージの基本構成


サイネージはコンテンツ、コンテンツ管理、プレイヤーから構成される。 コンテンツ作成に関しては、ここでは述べない。コンテンツはFLASH,、動画、静止画、文字、HTMLなどがある。HTML5が今後メジャーになる可能性がある。 コンテンツ管理は、コンテンツ自体の管理、スケジューリング、プレイヤー管理などを行う。 プレイヤーは、コンテンツ管理サーバからの配信やローカルコンテンツの表示をスケジューリングして液晶モニターに表示する。
3 サイネージ機能比較


 

商用

screenly

今回のアプリ

 

ループ再生

 

同期再生

 

スケジュール再生

 

ネットワーク更新

 

GPIO

 

 

 

RS232C制御

 

 

 

Websocket制御

 

 

 

UDP制御

 

 

画面内同期

 

 

ライブテキスト

 

 

GPS制御

 

 

 

IPカメラストリーミング

 

 

 

ローカルコンテンツ再生

 

指定URL表示

 

イメージ再生

 

音声再生

 

ファイルアップロード

 

インタラクティブ

 

 

 

複数プレイヤー同期

 

 

 

スケジュール電源制御

 WOL

 シャットダウン

 

 

 

 

 

 

 

 


4 サイネージの利用例


駅構内などでの大規模システム 札幌駅、博多駅などが有名です

中規模

小規模

フォトフレームを利用した商品棚のサイネージ


5 素人がコンテンツを作るには


なんとWORD、EXCEL、パワーポイントで簡単に作れるのです。
WORDでIPHONEの画面を作った人がいます。
http://www.youtube.com/watch?v=RZp7BvQJnU8
なんと素晴らしい これらのソフトは作成したものを画像で保存できます。これ簡単に画像コンテンツが作れます 作成する画像のサイズにより、ページ設定を行う必要があります 例Powepoint 作成する画像サイズが1920x1080のとき   1920/96*25.4= 1080/96/25.5= このサイズでページを設定して、画像で保存します

6 screenly OSE


ブラウザKIOSK midori,chrome,uszk

6.1 screenly概要

準備
•	A Raspberry Pi (Model B).
•	An SD Card (>4GB). Class 10 is highly recommended.
•	An HDMI-cable.
•	A network connection (with DHCP). ルータがあればいい
 有線LAN
•	A keyboard (only required for the installation).
•	A monitor/TV that can view full HD (and has HDMI input)

SDイメージが提供されているのでイメージを使用する。

サポートされるコンテンツ
・ビデオ
・イメージ
・WEBページ


利用ケース
•	Display BI or server dashboards
•	Advertisements (in-store or in store-front)
•	Internal information boards
•	Fancy photo-frame


コンテンツ大きさ
 images and web-pages will be rendered in 1920x1080

WEBコンテンツ管理画面

 

制限
The limitation with Screenly OSE is that it was designed for a stand-alone setup. If all you need is to setup a single screen


カスタマイズ
 有線LANが標準なので、無線LANに対応できるようにする






ハードプラットフォーム

 無線LANで使用できるようにする

sudo nano /etc/network/interfaces

In the nano text editor, you’ll see something like this:
auto lo
iface lo inet loopback
iface eth0 inet dhcp

That’s the very basic configuration that governs your Pi’s Ethernet connect (indicated by the eth0 portion). We need to add on a very minor bit to enable the Wi-Fi dongle. Use the arrow keys to move down below the existing entry
 and add the following lines:

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Once you’ve annotated the file, press CTRL+X to save the file and exit the nano editor. At the prompt again, enter the following command:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Compare the contents of the file, if it exists, to the following code. If the file is empty, you can use this code to populate it. Take note of the commented lines (indicated by the # marks) to reference which variable you should use based on your current Wi-Fi node configuration.

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YOURSSID"
psk="YOURPASSWORD"
# Protocol type can be: RSN (for WP2) and WPA (for WPA1)
proto=WPA
# Key management type can be: WPA-PSK or WPA-EAP (Pre-Shared or Enterprise)
key_mgmt=WPA-PSK
# Pairwise can be CCMP or TKIP (for WPA2 or WPA1)
pairwise=TKIP
#Authorization option should be OPEN for both WPA1/WPA2 (in less commonly used are SHARED and LEAP)
auth_alg=OPEN
}

OS設定

デスクトップ起動
自動ログイン
スリープ停止


簡易プレイヤー

 ブラウザ midoriやchromeをフルスクリーンでURLを表示するものがある。
 固定なURLを表示するわけである。
 ローカルなスライドショーやコンテンツサーバのURLを入れればいい


 設定は
 ・
 ・ブラウザ kioskモード

7 デジタルサイネージ開発案



7.1 ケース(1)pythonアプリからブラウザをコントロール、UDPコマンドによりコンテンツを動的更新

 ブラウザをベースにコンテンツ表示を行う。
 UDPコマンドによりコンテンツを切り替える
 ファイルアップロードをサポートし、ローカルコンテンツを更新できる
 ローカルコンテンツでイメージスライドショーをサポートする
 ローカルコンテンツにオンデマンドでメッセージ表示機能を提供する
 
 pythonを利用して開発を行う。
 
・	通信
	udpコマンド受信
	HTTP制御 WEBサーバ
	コマンド処理
	コンテンツ管理
	データアップロード
	スケジュール管理
・	ブラウザコントロール
	HTMLテンプレート
	サウンド
	URL表示





	
7.2 ケース(2)
プラウザベースでwebsocketにより動的更新
機器はraspberry piを使用するが、Windowsでも問題ない。IE11ではwebsocketをサポートしている。chromeならkioskモードで起動すればフルスクリーンなる

 

配信制御にwebsocketサーバをpythonで書かれたtornadoを利用する
インストールは簡単、
・pythonインストール
・tornadoをコピー
・アプリ作成





プレイヤー

 ブラウザをフルスクリーンで表示する
 初期URLはwebsocketサーバのURLとする 


 index.html javascript アプリ
 サーバからプッシュされた情報に基づきiframeを更新する
 コンテンツロード時の空白表示を避けるため,iframeを2個用意し、ロード完了ラグを考慮して切り替える
 
kiosk on windows
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --kiosk http://websocketserver:8888
kiosk on raspberry pi 1. Install chromium, x11-xserver-utils and unclutter
sudo apt-get update && apt-get upgrade -y sudo apt-get install chromium x11-xserver-utils unclutter
2. We need to prevent screen from going blank and disable screen saver. - edit /etc/xdg/lxsession/LXDE/autostart and comment # screen saver line and add those lines:
@xset s off @xset -dpms @xset s noblank @chromium --kiosk --incognito http:// websocketserver:8888
参考URL
http://nantoak.asablo.jp/blog/2013/03/07/6740018 http://blog.takeda-soft.jp/blog/show/412 http://blogs.wcode.org/2013/09/howto-boot-your-raspberry-pi-into-a-fullscreen-browser-kiosk/ http://pikiosk.tumblr.com/ http://www.pricelessgeek.com/2013/08/ultimate-how-to-raspberry-pi-web-kiosk.html#.UoioNsS-2So
websocketサーバ  端末リストの読み取り このリストにはMACアドレスと、コンテンツIDの関連付けが記載されている この情報をもとに、端末別にプッシュが可能となる 例
# define joblist for ipaddress # # def definejob(ipjob): ipjob["192.168.11.6"]="issue,joblist" ipjob["192.168.11.22"]="joblist " ipjob["192.168.11.23"]="joblist" ipjob["00:00:00:00:00:00"]="issue,joblist"
初期処理   端末からの接続リクエストを受け付ける   端末のIPアドレス,MACアドレスを登録する   オープニング画面の送信  コンテンツプッシュAPIの受付   コンテンツ制御端末からのリクエストAPIを受け付ける APIはコンテンツID(端末リストに記載)とURLを受け付ける   プッシュリクエストを受け付け、コンテンツIDが接続中の端末に一致したら、プッシュを行う 例
http://127.0.0.1:8888/api?id=test&value=http://192.168.11.17

ページの先頭へ