(注) Gravio 4.6でChromecastコンポーネントが搭載され、CATTのインストールなくGravioからChromecastデバイスへのキャストが可能になりました。この記事はそれ以前のバージョンで試した古い記事です
背景
前回、CATTを使ってChromecastデバイスに動画を流すところまでやりました。CATTの使い方はこちらをどうぞ。→ https://qiita.com/zrock/items/522a629262222645aefe
今度はこれをGravioで制御してみます。Gravioで制御できれば、いろいろ妄想が広がります。
- 人が来たらウェルカムメッセージを流す
- 温度によって、暑いときは涼しい映像、寒いときは温かい映像を流す
- ボタンを押して好きな映像を流す
- タイマーを使って目覚まし代わり
使用環境
前回と同じです。Gravioが増えてます。
- Raspberry Pi 4
- Ubuntu 20.04.01 LTS
- Python 3.8.2
- CATT v0.11.3
- Gravio HubKit v3.8.0-4681
- Gravio Studio v3.8.3606.0
概要
GravioにはRunScriptというシェルスクリプトを実行するコンポーネントがあります。CATT自体には対応してませんが、シェルスクリプトを作ってこれを実行することで実現できます。
手順
まずはシェルスクリプトを作ります。動画をキャストするだけなのでデバイス名など埋め込んでしまいます。動画自体はパラメータで渡したいので $1
を使っておきます。非常に単純です。
catt -d "Chromecast 4K" cast "$1"
これを配置します。配置する場所は、Linuxの場合、/var/opt/gravio/action/scripts
の下です。あとで出てきますが、Gravio Studioからもアップロード可能です。SSHなどで繋げる場合は、直接置いたりvimなどで作っちゃってもかまいません。
ファイルができたら、オーナーをrootにし、実行権を与えておきます。こうしないと、RunScriptコンポーネントで実行することはできません。
$ cd /var/opt/gravio/action/scripts
$ sudo chown root play-video.sh
$ sudo chmod +x play-video.sh
あとはGravioでの設定です。
Gravio Studioにログインし、アクションを作成します。
アクションの中に、RunScriptコンポーネントを配置します。
プロパティで、ファイルに先程作成したplay-video.shを指定します。すでに配置している場合は、ブラウズボタンをクリックして、play-video.shを選択してください。配置していない場合は、アップロードボタンを使ってローカル環境で作成したファイルを配置してください。ただ、配置しただけでは実行権が付きませんので、必ずSSHなどでアップロード先のフォルダにあるスクリプトファイルに上記のコマンドで実行権を与えてください。
Argumentsには動画のURLを指定してください。
これで終わりです。あとは再生ボタンをポチッとクリックすると、指定したデバイスで動画が再生されます。
あとはこんな感じでボタンのクリックイベントのトリガーでアクションを割り当てたり、センサーの値によって実行されるトリガーを作ればIoTとChromecastのあわせ技が完成です。
ちなみに、サイトを表示させるにはコマンドがcast_site
となるので、別のシェルスクリプトを作っておきましょう。コマンドもパラメータで埋め込んでもいいのですが、スクリプトを変えた方がわかりやすいですね。
catt -d "Chromecast 4K" cast_site "$1"
最後に
最初に書いたように、Gravioは色々なセンサーに対応していて、センサーの状態を見ながらいろいろなアクションを実行できるのでとても妄想が広がります。エンタープライズ版のAI Editionになると、顔認識も可能になるので、訪問した人によって好みの映像を流すなんてことも可能になりますね。
ちなみに、今回はLinux/Raspberry Piで実現しましたが、WindowsでもPythonをインストールすれば実現可能です。ちょっとしたコツがあるのでそれはまた後日。