[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から接続できないため、信頼された証明書を使ってください。