[TIPS] WioサーバーのLean Server構築

Seeedで開発を担当している松岡です。
今回は、Wio Nodeで使われているLean Serverをローカル環境に構築する方法をご紹介します。

Wioサーバーの設置場所

Wio Node/Wio LinkにはGroveコネクタが用意されていて、Groveシステムのセンサーやアクチュエータなどを接続することができます。かつ、Wi-Fiが内蔵されており、インターネット上に設置されたWioサーバーと連携することでインターネットからセンサー値の取得やアクチュエータの操作を可能にしています。

Seeedは、Wio Node/Wio Link、Groveセンサー/アクチュエータといったハードウェアに加えて、WioサーバーとiPhone/Androidアプリ(Wio Link App)を提供しています。

Wioサーバーは、現時点はアメリカと中国の2箇所に設置されていて、Wio Link Appで選ぶことができますが、どちらも日本から遠いので、それなりに遅延があります。

 

 

 

<Global Server>
アメリカのWioサーバー(us.wio.seeed.io)

us.wio.seeed.io の ping 統計:
パケット数: 送信 = 30、受信 = 30、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 138ms、最大 = 141ms、平均 = 139ms

<Chinese Server>
中国のWioサーバー(cn.wio.seeed.io)

cn.wio.seeed.io の ping 統計:
パケット数: 送信 = 30、受信 = 20、損失 = 10 (33% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 234ms、最大 = 240ms、平均 = 234ms

Main ServerとLean Server

実は、Wioサーバーにはフル機能が実装されたMain Serverと、デバイスとのデータ交換に特化したLean Serverの2種類があります。Lean Serverをローカル環境に設置することで、遅延を軽減したり大量なデバイス接続に対応することができます。

Lean Serverの構築

それでは、Lean Serverを構築してみましょう。

実機を用意するのが手間なので、AzureのDebian 9(サイズはStandard B1s)を使うことにします。通信に8000ポートと8080ポートを使うので、ネットワークセキュリティグループの受信セキュリティ規則にこれらの追加を忘れずに。

Linux wiolean 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) x86_64 GNU/Linux

 

Lean Serverを動かすのに必要なPythonモジュールをインストールします。

sudo apt-get update
sudo apt-get install python-pip
pip install tornado
pip install pycrypto
pip install tornado-cors
pip install requests

 

Lean Serverのプログラムをgithubからダウンロードします。

mkdir wio
cd wio
wget https://raw.githubusercontent.com/Seeed-Studio/Wio_Link/master/server_lean.py

 

Lean Serverから接続するWioサーバーとTOKENを設定します。

OTA_SERVERに”global_new”もしくは”chinese”を記入して、https://wio.seeed.io/login にアクセスして表示されたFor Wio v1のtokenをserver_lean.pyのTOKENSに記入します。複数ユーザーのWio Nodeを接続する場合は、複数ユーザーのtokenを記入してください。

“global_new”はアメリカのWioサーバー、”chinese”は中国のWioサーバーです。

vi Wio_Link/server_lean.py
OTA_SERVER='global_new'
TOKENS = ["E2kfGxxxxxxxmcX", "RHAZxxxxxxxx2kX"]

 

Lean Serverを起動します。

python ./server_lean.py &

Wio Nodeの接続先を変更

Wio Nodeが接続するサーバーを構築したLean Serverに変更します。Wio NodeのDevice Settingにある、Use Customer ServerをONして、Customized serverにURLを設定します。画面ショットのように”http://(IPアドレスもしくはホスト名):8080″と設定してください。

 

(オプション)リバースプロキシ

Lean Serverは8000ポートと8080ポートを使いますが、8080ポートの通信は暗号化されていません。そのため、Lean Serverをインターネット上に配置するときはリバースプロキシを使ってSSL接続にすることを推奨します。セルフ証明書だとiPhoneから接続できないため、信頼された証明書を使ってください。