2015年07月14日

ルーターを超えてリモートホストに接続できる Weaved を使って Raspberry Pi、Intel Edison を IoT エッジにする方法

Weaved は昨年末に TechCrunch でも紹介されたスマート・ホームを実現するための IoT ネットワーク・プラットフォーム。 スタートアップ・メンバーの Ryo Koyama さんは日本人で、今彼らが活動する北米ではオートメーション・プラットフォーム企業、その仕様に準拠したデバイスを製造するメーカー、それらを使いエンド・ユーザーにサービスを提供する事業者(又は個人)というモデルが確立しつつあります。 そして Weaved も IoT の未来を信じ、そのプラットフォームとして新たな一翼を担うべく今現在も進化を続けている企業・サービスなんです。 今日は Raspberry Pi 2 を使って Weaved の特徴と使い方をご紹介しますよ!

weaved

Weaved の特徴とセットアップ


北米では Weaved のようなサービス、役割は決して珍しいものでは無くどちらかというと遅いぐらいかもしれません。 では何が珍しいか。 僕はオープンなところだと思います。 Weaved プラットフォームは個人でも利用でき、僕らが制御するデバイス、サービスを開発することができます。 Weaved の課金モデルは以下の通りです。

weaved_service_model


Personal は無料で 5 台までデバイスを登録でき、1 日あたり 10 回の接続(1 回あたりの最大セッション時間は 5 分)が可能。 それに Weaved ユーザー同士で 2 台までデバイスを共有したり、スマートフォンに対して最大 50 件/月までプッシュ通知できる、なんて面白い特長もあります。

ただ、実際のところこれが正しいスペックかは自信が無いです。僕が見た製品リーフレットは上述の通りですが、他の資料を見ると微妙に違っていたり、サインアップしてみると一部の機能は Developer 扱いだったりとフリーミアムについては今も試行錯誤中って印象です。

さあ、セットアップを始めましょうか。 サインアップ(https://developer.weaved.com/portal/index.php)して Weaved ユーザとパスワードを手に入れて下さい。

サインアップが終わると Weaved がサポートするデバイスの一覧が表示されます(何れかを選ぶと詳しい手順が記載されたページへ遷移)。 Intel Edison も持っている僕ですが、今日は Raspberry Pi を選択。

weaved downloads


ここからは Raspberry Pi での作業。 まずはインストーラを wget して実行(より詳しい手順、バージョンはセットアップ・ページで確認すること)。

# download weaved installer.
pi@raspberrypi ~ $ wget https://github.com/weaved/installer/raw/master/binaries/weaved-nixinstaller_1.2.13.bin
# turning on execute permissions.
pi@raspberrypi ~ $ chmod +x weaved-nixinstaller_1.2.13.bin
# execute installer.
pi@raspberrypi ~ $ ./weaved-nixinstaller_1.2.13.bin


すると、インストーラーが起動するので SSH、Web サーバー、WebIOPi(Web ベースの GPIO 制御アプリケーション。 現時点で Raspberry Pi 2 は非サポート)、VNC(リモートデスクトップ)、カスタム TCP ポートの中からリモート接続のタイプ(サービス)を選択します。 ここでは SSH (1) を選択。

*********** Protocol Selection Menu ***********
*                                             *
*    1) SSH on default port 22                *
*    2) Web (HTTP) on default port 80         *
*    3) WebIOPi on default port 8000          *
*    4) VNC on default port 5901              *
*    5) Custom (TCP)                          *
*                                             *
***********************************************

Please select from the above options (1-5):
1
You have selected: 1.

The default port for SSH is 22.
Would you like to continue with the default port assignment? [y/n] y
We will install Weaved services for the following:

Protocol: ssh
Port #: 22
Service name: Weavedssh22


続いてサインアップ時に作成したメール・アドレスとパスワードを入力。

Please enter your Weaved Username (email address):
iot.weaved.userid@gmail.com

Now, please enter your password:
*************

Copied notify.sh to /usr/bin
Copied notify_Weavedssh22.sh to /usr/bin


このリモート接続にニックネーム(pi-ssh)を設定すればおしまい。

We will now register your device with the Weaved backend services.
Please provide an alias for your device:
pi2-ssh

Your device will be called pi2-ssh.

Registering Weaved services for Weavedssh22 .........


最後に表示される UID(デバイスを表す一意な ID)と認証トークンはサービス毎(SSH, WebIOPi, etc)に生成・設定されるもの。

**************************************************************************
CONGRATULATIONS! You are now registered with Weaved.
Your registration information is as follows:

Device alias:
pi2-ssh

Device UID:
80:00:00:05:46:00:XX:XX

Device secret:
4C7160F4752CD653BC6D74EBD468C508F73ABCD

The alias, Device UID and Device secret are kept in the License File:
/etc/weaved/services/Weavedssh22.conf

If you delete this License File, you will have to re-run the installer.

**************************************************************************

Starting and stopping your service can be done by typing:
"sudo /usr/bin/Weavedssh22.sh start|stop|restart"


ここで一度 Weaved の Web ダッシュボードに戻ってみて下さい。 My Devices に登録したニックネームがリストされているはずです。

weaved list of device


Settings をクリックするとニックネームの変更やサービスの削除を行うことが可能。

weaved device settings


リストに戻り Name にあるサービス名(pi2-ssh)をクリックするとサービス・トラフィックの転送が始まり、

weaved connecting to device


ほら、外部から SSH 接続する為の Weaved プロキシ・サーバーとそのポート情報が表示されました。

weaved remote ssh connection


僕のエッジ・デバイスは Raspberry Pi なので pi ユーザーで ssh 接続してみると。。。

# ssh.
netbuffalo@macbook $ ssh -l pi proxy70.yoics.net -p 33247

Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 20:07:59 BST 2015 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Jul 13 16:25:22 2015 from 127.0.0.1
pi@raspberrypi ~ $


お、無事接続に成功しましたね!

scp($ scp -P 33247 /path/to/local/file pi@proxy70.yoics.net:/home/pi)してみると転送速度は 120 KB/s ほど。 以前に紹介した ngrok に近い方式を採用しておりスピードには期待できないみたい。 


Weaved サービスの追加、モバイル・アプリケーション、プッシュ通知


Weaved は1つのサービスしかルーター超えできないのかと言えばそれはノー。 インストーラーを実行した場所に weaved_software というディレクトリが作成されており、この中にある installer.sh を実行すれば同じ手順でサービスを追加できます。
 
pi@raspberrypi ~ $ cd weaved_software/
pi@raspberrypi ~/weaved_software $ ./installer.sh

You are running installer script Version: v1.2.13
Last modified on February 26, 2015, by Mike Young.

Now launching the Weaved connectd daemon installer...


追加したサービスには新たに UID, 認証トークンが設定され、ダッシュボード上からも見えるようになります。

06 Weaved


例えば Weaved で Web サービス(80 番ポートの転送)を追加しつつ、以前に紹介した irMagician(赤外線リモコン・ボード)向け Web アプリケーションを動かせば外出先から自宅の家電を制御することだって可能。

スマートフォンを使うのであば Weaved クライアントをインストールして下さい。 今現在は iOS 版だけが公式にリリースされていて、Android はフォーラムからアルファ版 apk ファイルを入手する必要があります。



是非プッシュ通知は許可して下さい。 あとでプッシュして遊びますヨ。

iphone_weaved_allow_push


ログインすると登録したリモート・サービスがリストされているはず。

iphone_weaved_list_services


Raspberry Pi 上で動く Web アプリケーションにアクセスする場合、一度設定画面を開き URL パスを設定しておくのがよいでしょう。

iphone_weaved_service_setting


こうしておけば Weaved サービスの選択・接続と同時にリモート・アプリケーションのトップ・ページが表示されます。

iphone_weaved_remote_webapp


無料版では最大 5 分しかセッションを継続できないので長時間の作業には注意しましょうね(ダッシュボードだと最大 30 分って言われたんだけど・・・)。

iphone_weaved_connection_limit


プッシュ通知はシェル・スクリプト(/usr/bin/notify_サービス名.sh)使って発射します。

例えば SSH サービス(ポート 22)の場合はこう。

pi@raspberrypi ~ $ /usr/bin/notify_Weavedssh22.sh 1 'Hello Weaved!' 'ok'
4C7160F4752CD653BC6D74EBD468C508F73ABCD
80:00:00:05:46:00:XX:XX
200 ok


引数は3つで最初の 1 は暗号化の有無。 0 は無し、1 は ARC4 アルゴリズムでメッセージを暗号化、3 は TBD(To Be Determined)で将来 AES 128 暗号化をサポートする予定らしい。 残り2つはメッセージとステータス(適当な文字列でもOK)を意味します。

ほら、僕の iPhone にも通知が届きましたよ。

iphone_weaved_alert_received


例えば定期的に温度を測定してある温度に達したらプッシュ通知する、なんて使い方があるかもしれません。

このプッシュ用シェル・スクリプトの実体は /usr/bin/notify.sh で UID、認証トークンを知っているのであればこちらを直接叩くのもあり。

pi@raspberrypi $ egrep '^UID|^password' /etc/weaved/services/Weavedssh22.conf
UID 80:00:00:05:46:00:XX:XX
password 4C7160F4752CD653BC6D74EBD468C508F73ABCD

pi@raspberrypi $ /usr/bin/notify.sh 1 your-UID secret-token "this is msg" "ok"

ホームオートメーション、IoT プラットフォームとしては後発の Weaved ですが、是非一度試してみては如何でしょうか。

それでは、また今度。

DIAMONDハーバード・ビジネス・レビュー 2015年4/01号 [雑誌]
ダイヤモンド社 (2015-04-10)
売り上げランキング: 1,330

絵で見てわかるIoT/センサの仕組みと活用
株式会社NTTデータ 河村 雅人 大塚 紘史 小林 佑輔 小山 武士 宮崎 智也 石黒 佑樹 小島 康平
翔泳社
売り上げランキング: 2,326

Posted by netbuffalo at 22:00│Comments(0)TrackBack(0) Raspberry Pi | Intel Edison


この記事へのトラックバックURL

コメントする

名前
 
  絵文字