株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

Raspberry Pi SkyWay

SkyWayの利用(その4)Raspberry Piでの利用

投稿日:2019年12月9日 更新日:

前回の続きです。NTTコミュニケーションズ株式会社提供のリアルタイムコミュニケーションのためのプラットフォームであるSkyWayを使ってみます。前回はJavaScriptでカメラとマイクのストリーミングと双方向でのテキストデータのやり取りのプログラムを作成しました。

今回はRaspberry PiでSkyWayの動作確認をしました。単純にWindowsと同様には動作しなかったですが、要点を押さえれば同じように使えると思います。その要点を中心に書きます。

主に以下のページを見ながら作業をしました。こちらも参照して下さい。
SkyWay JavaScript SDK チュートリアル

ここでの環境は以下です。
Raspberry Pi 4 Model B
USBカメラ(logicool c270)
SDカード(32G)
周辺機器(モニタ、キーボード、マウス、電源等のRaspberry Piをパソコンと同様に利用出来るようにするための周辺機器)
ブラウザはchromium(Raspberry Pi標準)です。

今現在で最新のRaspberry Pi 4です。このRaspberry Pi 4ではHDMIの仕様が変更になったので変換ケーブルも買いました。HDMIの変更(発展とか進化という表現の方がいいと思いますが。)を理解していないでRaspberry Pi だけ届いたのでモニタに接続出来ませんでした。

以下は、Amazonの【国内正規代理店版】へのリンクです。今現在ですが、販売店により価格がバラバラのようなので必要な場合は調べてみて下さい。手元にない場合はHDMIのケーブルも必要です。

Raspberry PiへのSSHの操作(TeraTerm)にはWindows10 ProのPCを利用しています。

以下の2点を対応すればRaspberry PiでもWindowsと同様にSkyWayが利用出来ました。
オーディオの優先順位
ブラウザで認識させるカメラの解像度の指定
順番に書きます。

オーディオの優先順位の変更
オーディオの優先順位の変更で何をするかというとUSBカメラのマイクを優先して認識してブラウザで使えるようにするということです。

まずターミナルから現在の状態を確認します。
$ cat /proc/asound/modules
以下のように表示されました。USBカメラのマイクは2番目です。

この順序を変更します。
/etc/modprobe.d/alsa-base.conf というファイルを作成します。もしあれば変更します。以下のように編集して作成します。

options snd slots=snd_usb_audio,snd_bcm2835
options snd_usb_audio index=0
options snd_bcm2835 index=1


再起動します。再度確認してUSBカメラのマイクが最初になっていれば設定完了です。

カメラの解像度の指定
JavaScriptでgetUserMediaというAPIを利用してWebブラウザでカメラ映像、マイク音声を取得していますが、今までは解像度を指定しないで利用していました。もちろんこれで問題なく取得出来ていましたがRaspberry Piでは動作しませんでした。

カメラの機種にもよるかもしれないですが、以下のようにカメラとマイクを取得する際に解像度を指定しました。これで問題なくカメラ映像、マイク音声が取得出来ました。
getUserMedia({video:{ width: 800, height: 600 }, audio: true},

以下のチュートリアルの「カメラ映像、マイク音声の取得」の項目にも説明があります。必要な場合はこちらも参照して下さい。
JavaScript SDK チュートリアル

動作確認
WebサーバはローカルのWindows10上のXAMPPでとりあえずHTTPSでアクセス出来るようにしています。

プログラムは前回のプログラムに上記のようにカメラの解像度を指定しました。

Raspberry PiにカメラをUSB接続して、ブラウザから画面を表示します。

カメラのセキュリティ確認も表示されました。

ローカル側の映像が表示されました。

Windows側でリモート接続してみます。問題なく表示されました。テキストデータのやり取りも出来ました。

反対にWindows側にUSBカメラを接続してRaspberry Pi側からも見えました。これで無事に動作が確認出来ました。

Raspberry PiでのSkyWayの活用
特定アプリ専用のPC
Raspberry Piならコスト的にも専用アプリ用のPCとしてSkyWayのトップページの事例のような利用が可能かと思います。長時間起動したままでの遠隔監視、双方向コミュニケーション等が出来ると思います。

GPIOでの拡張
今回はブラウザ間のみの通信でしたが、MQTT over the WebSocketを利用すればブラウザからRaspberry PiのOS間との通信が出来ます。ということは、Raspberry PiのGPIOの操作が出来るということです。

以下の記事からで遠隔操作を取り上げましたが、同様のことをP2Pのイメージで操作出来ます。P2Pなので感覚的には直接Raspberry Piを操作するようになります。(またこれについては書きたいと思います。)
Raspberry PiでIoT(MQTTで遠隔操作編 その1)MQTTでの通信

(※2020/01/21追記 このSkyWayでの遠隔操作についての記事を以下で書きました。)
SkyWayでRaspberry Piの遠隔操作(その1)MQTT over WebSocket
SkyWayでRaspberry Piの遠隔操作(その2)SkyWayからの操作

(補足)SkyWay WebRTC Gateway
今回の一連の記事ではブラウザベースでSkyWayを利用しました。SkyWay WebRTC Gatewayを利用すればブラウザを経由しないでSkyWayを利用出来るようです。まだしっかりと試していないので補足ということにします。

今回はここまでです。また書きたいと思います。

AdSense

AdSense

-Raspberry Pi, SkyWay

執筆者:

関連記事

Raspberry Piでも温度センサADT7310をつかってみる

以下の記事でArduino Unoで温度センサのADT7310を使ってみました。 Arduino UnoでSPI通信(その2)温度センサADT7310 以下の製品です。 ADT7310使用 高精度・高 …

Raspberry PiでIoT(温度・湿度・気圧データ編 その4)アラートメール送信

Raspberry PiでIoT 温度・湿度・気圧データ編の4回目です。前回までで、Raspberry Piから温度、湿度、気圧データをWebサーバへ送信してそのデータを蓄積、表示出来るようになりまし …

Raspberry Piの電源管理拡張ボード Ras p-On

Raspberry Piの電源管理の拡張ボードを使ってみました。Ras p-Onという製品です。 電源管理の必要性 製品のページを見て頂ければ詳細に書かれていますが、Raspberry Piには電源ス …

Raspberry PiでAvahi を使ってホスト名でアクセスする

Raspberry PiでAvahiを使ってホスト名でのアクセスを可能にする方法についてです。ホスト名でのアクセスとは192.168.1.10といったIPアドレスではなく、raspberrypi.lo …

Raspberry Pi 3でモニタとキーボードなしで設定する方法

Raspberry Pi 3でモニタとキーボードなしで設定する方法についてです。 以下のような条件ごとに方法を確認しました。あちらこちらで書いてしまったのでここで整理させてください。当然環境によって違 …