Armadillo-IoT+920MHz帯マルチホップ無線通信アドオンモジュール
と 920MHz帯マルチホップ無線ユニット(MH920-Node-485(S))+データテクノロジー株式会社様の気象観測センサー(SenSu-1501)
を使って、 Armadillo-IoTから920MHz帯無線経由で、気象観測センサー(SenSu-1501)のデータを読み取って、 温度、湿度等のデータをクラウド(Heroku)経由で見てみました。
(ブラウザのURLの部分は、後述の手順でHerokuから割り当てられたURLになりますので伏字(***.herokuapp.com)にしてます。) 当方で確認した手順、サンプルプログラムを下記に説明します。
なお、下記手順内で、パラメータ、設定等を説明していますが、当方の確認手順に沿った簡易的なものです。 詳細の仕様は各メーカー様へお問い合わせください。
概要
下図のような構成になります。
手順の概要は下記のようになります。
1.機材
2.Armadillo-IoTのアドオンインタフェースの設定
3.Armadillo-IoTから920MHz無線(親機)の設定と運用開始
4.Armadillo-IoTから920MHz無線(親機)の運用開始
5.920MHz無線(子機)の設定
6.気象観測センサーからの温度、湿度等のデータ
7.クラウド(Heroku)側のアプリの準備
8.気象観測センサーのデータをクラウド(Heroku)で見る
1.機材
・Armadillo-IoT+920MHz帯マルチホップ無線通信アドオンモジュール
今回は、Armadillo-IoTのアドオンインタフェースのコネクタ"CON2"に 920MHz帯マルチホップ無線通信アドオンモジュールを接続しました。(冒頭の写真)
下記説明内のデバイスファイル"/dev/ttymxc0"の箇所は、アドオンモジュールを接続するコネクタ(CON1、CON2)に応じて、
CON1使用時:/dev/ttymxc3
CON2使用時:/dev/ttymxc0
と読み替える必要があります。
・気象観測センサー(SenSu-1501)
本センサーのインタフェースはRS485で、RJ-11プラグ用のケーブルが同梱されています。
以下、
920MHz帯マルチホップ無線通信アドオンモジュールは、「920MHz無線(親機)」
920MHz帯マルチホップ無線ユニット(MH920-Node-485(S))は、「920MHz無線(子機)」
気象観測センサー(SenSu-1501)を「気象観測センサー」
と略します。
2.機材の接続
・気象観測センサーの取扱説明書より、RJ-11プラグの仕様は下記のようになっています。
1:N.C.
2:電源入力
3:TD-
4:TD+
5:GND
6:N.C.
今回、気象観測センサーに電池を入れているので、電源入力は使用しません。
3:TD-
4:TD+
のみ使用します。
・920MHz無線(子機)とRJ-11プラグの中継ケーブル
920MHz無線(子機)のRS485入力は電線を挿入するタイプなので、RJ-11プラグと直結できません。そこで、中継ケーブルを自作しました。
(手元にRJ-11コネクタがなかったので、家電量販店で入手したモジューラーコネクタを改造しました。)
写真手前の黄線:気象センサーのTD-
写真手前の緑線:気象センサーのTD+
となるようにしています。
・920MHz無線(子機)と気象観測センサーを接続します。
気象観測センサーと上記の中継ケーブルを接続して、気象観測センサーのTD-(中継ケーブルの黄線)と920MHz無線(子機)のD-、気象観測センサーのTD+(中継ケーブルの緑線)と920MHz無線(子機)のD+ を接続します。
2.Armadillo-IoTのアドオンインタフェースの設定
今回確認した手順では、Armadillo-IoTと920MHz帯マルチホップ無線通信アドオンモジュールとは単純にシリアル通信しました。
補足) <a href=http://conexio-m2m.jp/product/armadillo.html>920MHz帯マルチホップ無線通信アドオンモジュール</a>の正式な導入手順については、 下記コネクシオ株式会社様にお問い合わせください。 〒160 -6137 東京都新宿区西8-17-1 新宿グランドタワー37 階 TEL:03-5331-3677 コネクシオ株式会社 法人事業本部 法人営業第6部 システム開発課 m2m@conexio.co.jp
Armadillo-IoT ゲートウェイスタンダードモデル製品マニュアル 8.3.3. UARTより、 今回使用するアドオンインタフェースは、CON2の/dev/ttymxc0なので、 UART1:/dev/ttymxc0 を有効にします。
アドオンインタフェース(CON2)のシリアル通信(UART1)を有効にするために カーネルコンフィギュレーションで下記のように設定します。
Kernel Configuration System Type ---> [*] Freescale i.MX family <ARCH_MXC> Freescale i.MX support ---> [*] Support Armadillo-IoTG Std Base board <MACH_ARMADILLO_IOTG_STD> [ ] Add-On Module Auto Detect <AIOTG_STD_ADDON_AUTO_DETECT> Extension I/F Options ---> [*] Enable UART1 at CON1/CON2 <AIOTG_STD_UART1> [ ] Enable UART1 HW flow control at CON1/CON2 <AIOTG_STD_UART1_HW_FLOW>
上記のコンフィギュレーション後、ビルドを行い、イメージをArmadillo-IoTに書き込みます。
3.Armadillo-IoTから920MHz無線(親機)の設定と運用開始
下記手順において、920MHz無線のコマンド、設定はAPI仕様書等のドキュメントを参考にしています。
補足) OKI製の920MHz帯無線通信モジュール(親機)および後述の920MHz帯無線ユニット(子機)に関する ドキュメント、ソフトウェアは、沖電気工業株式会社様のWebサイトから入手可能です。 <a href=http://www.oki.com/jp/920M/support/>http://www.oki.com/jp/920M/support/</a>
920MHz無線(親機)の運用開始までのシーケンスは下記のとおりです。
920MHz無線(親機)-> Armadillo-IoT:起動完了通知 Armadillo-IoT -> 920MHz無線(親機):基本設定 920MHz無線(親機)-> Armadillo-IoT:基本設定応答 Armadillo-IoT -> 920MHz無線(親機):初期コンフィギュレーション設定(暗号化鍵等) 920MHz無線(親機)-> Armadillo-IoT:初期コンフィギュレーション設定応答 Armadillo-IoT -> 920MHz無線(親機):運用開始要求 <無線起動->子機ネットワーク接続開始> 920MHz無線(親機)-> Armadillo-IoT:運用開始応答 (無線起動後、子機ネットワーク接続完了することで通信可能)
今回は、Armadillo-IoTから920MHz無線(親機)の設定、確認を行いました。
補足) 920MHz無線(親機)にはマイクロUSBコネクタが搭載されているので、PCと直接接続して設定することが可能です。 この場合は、沖電気工業株式会社様の保守コンソールのソフトウェア「MH920 Console for Module」を使用します。
920MHz無線(親機)とArmadillo-IoTとの通信のデータ構造は下記のとおりです。
・Armadillo-IoTから920MHz無線(親機)への設定、確認
・920MHz無線(親機)からArmadillo-IoTへの応答、通知
(Data内で"0x7e"を使う場合は、エスケープシーケンスで補完します。ここでは説明を割愛します。)
上記のデータ構造を参考に、Armadillo-IoTから920MHz無線(親機)の設定、確認を行うサンプルプログラムを添付します。 serial_oki920_set_rs485.tar.gz プログラム内では、各コマンドはcmd_***という名称の配列で設定しています。 また、各コマンドに対する920MHz無線(親機)の応答が標準出力されるようにしています。
各コマンドの用途を説明します。
・基本設定確認のコマンド(cmdid=0x01)
static unsigned char cmd_01[15] = {0x7e, 0x10, 0x00, 0x0a, 0x10, 0x8f, 0x8f, 0x01, 0x01, 0x12, 0x34, 0x00, 0x01, 0x02, 0x7e};
今回は、このコマンドに対する応答でPAN-ID、ネットワークID、chリストを確認しました。 PAN-ID、ネットワークID、chリストを、後述の920MHz無線(子機)に設定します。
・MACアドレスリスト確認のコマンド(cmdid=0x11)
static unsigned char cmd_11[15] = {0x7e, 0x10, 0x00, 0x0a, 0x10, 0x8f, 0x8f, 0x01, 0x11, 0x13, 0x57, 0x00, 0x01, 0x02, 0x7e};
今回は、このコマンドに対する応答で「MACアドレス認証しない」に設定になっていることを確認しました。
・暗号化鍵確認のコマンド(cmdid=0x10)
static unsigned char cmd_10[78] = {0x7e, 0x10, 0x00, 0x49, 0x10, 0x8f, 0x8f, 0x01, 0x10, 0x12, 0x34, 0x00, 0x40, /* 略 */ 0x7e};
このコマンドに対する応答で確認した暗号化鍵を後述の920MHz無線(子機)に設定します。 (暗号化鍵設定のコマンドは割愛します。)
・パケットフィルタリング確認のコマンド(cmdid=0x23)
static unsigned char cmd_23[15] = {0x7e, 0x10, 0x00, 0x0a, 0x10, 0x8f, 0x8f, 0x01, 0x23, 0x24, 0x68, 0x00, 0x01, 0x02, 0x7e};
このコマンドに対する応答で確認したパケットフィルタリングの設定を後述の920MHz無線(子機)に設定します。
・局番号解析用データ確認のコマンド(cmdid=0x06)
static unsigned char cmd_06[15] = {0x7e, 0x10, 0x00, 0x0a, 0x10, 0x8f, 0x8f, 0x01, 0x06, 0x24, 0x68, 0x00, 0x01, 0x02, 0x7e};
このコマンドに対する応答で、下記の局番号解析用データ設定コマンドが反映されたかを確認しました。
・局番号解析用データ設定のコマンド(cmdid=0x06)
static unsigned char cmd_06w[41] = {0x7e, 0x10, 0x00, 0x24, 0x10, 0x8f, 0x8f, 0x01, 0x06, 0x12, 0x34, 0x00, 0x1b, 0x01, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e};
このコマンドでプロトコルとデバイス接続数or局番解析の設定ができます。
今回は、気象観測センサーを1台接続し、プロトコルは使わないので、
デバイス接続数:1
プロトコル種別:指定なし
に設定しました。
・局番リストの確認のコマンド(cmdid=0x88)
static unsigned char cmd_88[15] = {0x7e, 0x10, 0x00, 0x0a, 0x10, 0x8f, 0x8f, 0x01, 0x88, 0x12, 0x34, 0x00, 0x01, 0x02, 0x7e};
このコマンドに対する応答で、下記の局番リスト設定コマンドが反映されたかを確認しました。
・局番リストの確認、設定のコマンド(cmdid=0x88)
static unsigned char cmd_88w1[919] = /* 略 */ static unsigned char cmd_88w2[919] = /* 略 */
このコマンドで、920MHz無線(子機)のショートアドレス(0001)と、局番(1)を登録しました。 ここで設定したショートアドレス0001は、後述の920MHz無線(子機)に設定します。 なお、今回の用法では、上記の局番号解析用データ設定のコマンド(cmdid=0x06)で 接続台数を1台に設定(局番解析を行わない)したので、局番リストは実質使われないと思われます。
<サンプルプログラムの補足>
・Armadillo-IoTと920MHz無線(親機)とはシリアル通信であることから、
Armadillo実践開発ガイド第2部6.5.1. シリアルエコーサーバー
をベースに、シリアル通信で受信したデータを、今回の920MHz無線のAPI仕様(注)に基づいて通信するように改造したものです。
注)今回使用したコマンドは、上記のように静的に設定しているので、任意のAPI仕様には対応していません。 また、受信データについては、ヘッダサーチ、CRC計算などは有していません。
<サンプルプログラムの用法>
添付のサンプルプログラムをATDE上に解凍して、serial_oki920_set_rs485ディレクトリ内でmakeすると、serial_oki920_set_rs485という実行ファイルができます。
この実行ファイルをArmadillo-IoTに置いて、シリアル通信のデバイスファイルを引数として実行します。 (下記は920MHz無線(親機)をArmadillo-IoTのアドオンインタフェースのCON2に接続した場合のため、/dev/ttymxc0を指定。)
[root@armadillo-iotg (ttymxc1) ~]# stty -F /dev/ttymxc0 115200 raw [root@armadillo-iotg (ttymxc1) ~]# /root/serial_oki920_set /dev/ttymxc0
コマンド実行後、920MHz無線(親機)からの応答がコンソールに出力されますので、 PAN-ID、ネットワークID、chリスト、暗号化鍵等を確認します。 応答待ちの状態が継続するので、Ctr+Cでプログラムを終了してください。
4.Armadillo-IoTから920MHz無線(親機)の運用開始
無線を起動するため、運用開始のコマンドを発行します。 Armadillo-IoTから920MHz無線(親機)の運用開始のコマンドを発行するサンプルプログラムを添付します。 serial_oki920_start_20151115.tar.gz 上記3と同様に運用開始のコマンドを配列に設定して、シリアル通信で920MHz無線(親機)に設定しています。
・運用開始のコマンド(cmdid=0xd3)
static unsigned char cmd_d3[14] = {0x7e, 0x10, 0x00, 0x09, 0x10, 0x8f, 0x8f, 0x01, 0xd3, 0x56, 0x78, 0x00, 0x00, 0x7e};
このコマンド実行により無線が起動します。
<サンプルプログラムの用法>
添付のサンプルプログラムをATDE上に解凍して、serial_oki920_start_20151115ディレクトリ内でmakeすると、serial_oki920_startという実行ファイルができます。
この実行ファイルをArmadillo-IoTに置いて、シリアル通信のデバイスファイルを引数として実行します。 (下記は920MHz無線(親機)をArmadillo-IoTのアドオンインタフェースのCON2に接続した場合のため、/dev/ttymxc0を指定。)
[root@armadillo-iotg (ttymxc1) ~]# /root/serial_oki920_start /dev/ttymxc0
応答待ちの状態が継続するので、Ctr+Cでプログラムを終了してください。 (単に応答待ちの状態を終了しているだけなので、プログラムは終了しても、 920MHz無線(親機)の無線は起動したままになっています。)
5.920MHz無線(子機)の設定
920MHz無線(子機)とPCをUSBで接続してください。 沖電気工業株式会社様の保守コンソールのソフトウェア「MH920 Console Lite」を使用して設定を行います。 設定方法は製品マニュアル等のドキュメントを参照してください。
下記の説明の設定項目については、各タグの「詳細表示」をチェックしないと表示されないものがありますので、「詳細表示」をチェックして設定してください。
・「基本設定」のタグでは、上記3で設定、確認したPAN-ID、ネットワーク-ID、チャネル番号、暗号鍵、ショートアドレスを設定します。
・「シリアル通信」のタグでは、気象観測センサー(の取扱説明書の記載内容)に合わせて設定します。
インタフェース種別:RS485
端末接続:あり
ビットレート:9600bps
ビット長:8bit
ストップビット:1bit
パリティ:none(なし)
・「プロトコル設定」のタグでは、終了検出方法を「無通信状態の時間」に設定しました。
パケットフィルタリングは、920MHz無線(親機)の設定に合わせます。
・「経路固定設定」のタグでは、経路固定を「無効」に設定しました。
上記を設定後、「無線機に設定」ボタンを押して、920MHz無線(子機)に設定すると、920MHz無線(親機)とネットワーク接続されます。 (接続に20秒くらいかかります。)
接続が成功すると、920MHz無線(子機)のLEDのうち、STS2の箇所が点灯し、RSSIの箇所は強さに応じて点灯(3つまで)します。
6.気象観測センサーから温度、湿度等のデータ
気象観測センサーの取扱説明書を確認すると、データ構造は、
のように、先頭が0x24で17byteで構成されていることがわかります。
例)
24 c1 b3 62 a1 2d 00 00 01 4f 00 04 00 00 00 d3 ef
補足)
取扱説明書では4bit毎のニブル単位で説明されていますが、上図はByte単位の表記に変更して説明も簡略してます。
気象観測センサーは16秒毎にデータを送信する仕様になっています。
920MHz無線(子機)は、気象観測センサーのデータを受信すると、透過データの形式で920MHz無線(親機)に送信します。 透過データの構造は下記のようになっています。
このデータ構造において、Dataの箇所に上記の気象観測センサーのデータが挿入されます。 例)気象観測センサーのデータが、上例の"24 c1 b3 62 a1 2d 00 00 01 4f 00 04 00 00 00 d3 ef"の場合
7e 11 00 11 24 c1 b3 62 a1 2d 00 00 01 4f 00 04 00 00 00 d3 ef 7e
Armadillo-IoTでは、920MHz無線(親機)から透過データを受信して、Data部分から気象観測センサーのデータを抜き出します。
Armadillo-IoTから920MHz無線経由で気象観測センサーの温度、湿度等のデータを取得するサンプルプログラムを添付します。 serial_oki920_sensu.tar.gz
<サンプルプログラムの補足>
上述の設定、運用開始のサンプルプログラムと同様にArmadillo実践開発ガイド第2部6.5.1. シリアルエコーサーバーをベースに、920MHz無線の透過データの読み込みと、気象観測センサーのデータを解析するように改造しています。
注)
本サンプルプログラムは正常なデータがくることを前提としています。
先頭バイト(0x24)サーチ、CRCチェック、エラーリカバリーなどは有していません。
serial_oki920_sensu.c
(Armadillo実践開発ガイド第2部6.5.1. シリアルエコーサーバーをベースに今回のサンプル特有の箇所を抜粋します。)
/**** sample: variable(mainly oki920): begin ****/ // 主に920MHz無線用の変数宣言 /**** sample: variable(mainly oki920): end ****/ /**** sample: variable(sensu1501): begin ****/ // 主に気象観測センサー用の変数宣言 /**** sample: variable(sensu1501): end ****/
/**** sample: initial value(oki920): begin ****/ // 920MHz無線用の変数初期化 /**** sample: initial value(oki920): end ****/ /**** sample: initial value(sensu1501): begin ****/ // 気象観測センサーからのデータ用の変数初期化 /**** sample: initial value(sensu1501): end ****/
/**** sample: receive: begin ****/ // 920MHz無線の透過データの受信 /**** sample: receive: end ****/
/**** sample: get SenSu data: begin ****/ // 気象観測センサーからのデータを解析 /**** sample: get SenSu data: begin ****/
/**** sample: read data to each sensor data: begin ****/ // 気象観測センサーのデータ構造に合わせて、温度、湿度等の各データに切り分け /**** sample: read data to each sensor data: end ****/
/**** sample: sensor data to stdout: begin ****/ // 温度、湿度等の各データを標準出力 /**** sample: sensor data to stdout: end ****/
/**** sample: sensor data to log file for post to heroku: begin ****/ // 温度、湿度等の各データをクラウド(Heroku)のアプリ(後述)の受信形式に合わせた文字列にして、log_sensu.txtファイルに出力 /**** sample: sensor data to log file for post to heroku: end ****/
<サンプルプログラムの用法>
添付のサンプルプログラムをATDE上に解凍して、serial_oki920_sensuディレクトリ内でmakeすると、serial_oki920_sensuという実行ファイルができます。
この実行ファイルをArmadillo-IoTに置いて、シリアル通信のデバイスファイルを引数として実行します。 (下記は920MHz無線(親機)をArmadillo-IoTのアドオンインタフェースのCON2に接続した場合のため、/dev/ttymxc0を指定。)
[root@armadillo-iotg (ttymxc1) ~]# ./serial_oki920_sensu /dev/ttymxc0
気象観測センサーからデータを受信すると、下記のように920MHz無線の透過データのダンプと、 機器のid、風向、温度、湿度、風速、瞬間風速、雨量、紫外線量、照度、チェックサム が標準出力に表示されます。
0x7e 0x11 0x00 0x11 0x24 0xc1 0xb3 0x62 0xa1 0x2d 0x00 0x00 0x01 0x4f 0x00 0x04 0x00 0x00 0x00 0xd3 0xef 0x7e 0xc1 0x0b3, 179[degree] 0x2a1, 27.3[degree] 0x2d, 45[%] 0x00, 0.000[m/s] 0x00, 0.000[m/s] 0x014f, 100.5[mm] 0x0004, 4[uw/cm^2] 0x000000, 0.0[lux] 0xef
また、/root/log_sensu.txtには、クラウド(Heroku)のアプリ(後述)の受信形式に合わせた文字列が書き込まれます。
[root@armadillo-iotg (ttymxc1) ~]# cat log_sensu.txt id=0xc1&w_dir=179&tmp=27.3&hum=45&w_speed=0.000&w_gust=0.000&rain=100.5&uvi=4&lux=0.0
7.クラウド(Heroku)側のアプリの準備
7.1.準備
まず、Armadillo-IoT + Heroku(Node.js)でHello World のとおり、
Armadillo側からのデータ送信と動作確認まで行ってください。
以下、この手順を実行したことをベースに説明します。
よって以下では、ATDE5の
~/temp/myapp
がクラウド(Heroku)側のアプリ用のディレクトリとします。
7.2.サンプル
クラウド(Heroku)側のアプリのサンプルソースを添付します。
myapp_sensu_20151210.tar.gz
を解凍して、myapp_sensu_20151210ディレクトリの中身を
~/temp/myapp
ディレクトリの下にコピーしてください。
<サンプルソースの説明>
今回のサンプル特有の部分のみ説明します。
app.js
・HerokuのURL(***.herokuapp.com)にアクセスした際、index.ejsを表示するようにします。 表示の際、index.ejsにid、風向、温度、湿度、風速、瞬間風速、雨量、紫外線量、照度を与えています。
app.get('/', function(req, res){ res.render('index', {id: id, w_dir: w_dir, tmp: tmp, hum: hum, w_speed: w_speed, w_gust: w_gust, rain: rain, uvi: uvi, lux: lux}); });
・HerokuのURL(***.herokuapp.com/series)にポストされたデータ(※)をパースして、上記のindex.ejsに渡す変数に代入しています。 ※)上記サンプルアプリ(serial_oki920_sensu)を実行した際に生成されるファイルlog_sensu.txtの id=0xc1&w_dir=188&tmp=25.5&hum=29&w_speed=0.000&w_gust=0.000&rain=100.5&uvi=3&lux=0.0 という形式のデータです。"&"で温度、湿度等の各データを区切っています。
app.post('/series', function(req, res) { console.log('post:/series'); id = req.body.id; // id w_dir = req.body.w_dir; // 風向 tmp = req.body.tmp; // 温度 hum = req.body.hum; // 湿度 w_speed = req.body.w_speed; // 風速 w_gust = req.body.w_gust; // 瞬間風速 rain = req.body.rain; // 雨量 uvi = req.body.uvi; // 紫外線 lux = req.body.lux; // 照度 res.send("Received\n"); });
view/index.ejs
・上記app.get('/', function(req, res)により、受け取った気象観測データを表示するhtmlです。
7.3.サンプルの実行
下記のコマンドで、クラウド(Heroku)にアップロードします。
[atde ~/temp/myapp]$ git add --all [atde ~/temp/myapp]$ git commit -m "sensu" [atde ~/temp/myapp]$ git push heroku master:master
7.4.アプリの動作確認
Webブラウザで
https://.herokuapp.com
(.herokuapp.comの部分は、手順7.1で確認したHerokuのURL)
を実行すると、冒頭のWebブラウザの写真のように表示されます。
(ここまでの手順では、気象観測データを受信してないので、各値はオール0になります。)
8.気象観測センサーのデータをクラウド(Heroku)で見る
Armadillo-IoTから気象観測センサーのデータをクラウドに送信するスクリプト send_oki920_sensu1501.sh を添付します。
このスクリプトをArmadillo-IoTの/rootディレクトリに置いて、実行権限をつけてください。
[armadillo ~]# ls /root send_oki920_sensu1501.sh [armadillo ~]# chmod +x send_oki920_sensu1501.sh
また、send_oki920_sensu1501.sh内の***.herokuapp.comの部分を、手順6.1で確認したHerokuのURLに修正してください。
サンプルプログラムserial_oki920_sensu1501とsend_oki920_sensu1501.shをArmadillo-IoTの/rootディレクトリに置いて実行します。
[armadillo ~]# ls /root send_oki920_sensu1501.sh serial_oki920_sensu1501 [armadillo ~]# ./send_oki920_sensu1501.sh
上記のスクリプトを実行すると、Armadillo-IoTは気象観測センサーから受信したデータ /root/log_sensu.txt をクラウド(Herokuのhttps://***.herokuapp.com/series)に約5秒ごとに送信します。
Webブラウザで、https://***.herokuapp.comにアクセスすると、Armadillo-IoTが送信した気象観測センサーのデータが 冒頭のWebブラウザの写真のように見ることができます。 補足) Webブラウザの表示の更新には再読み込みが必要です。 気象観測データのデータ送信間隔は16秒毎なので、Webブラウザの表示の更新間隔は約20秒毎になります。 クラウド(Heroku)側のアプリがデータを受信した場合は、"Received"という文字をArmadillo-IoTに送信するので、 クラウド(Heroku)側が受け取ったかどうかを、Armadillo-IoTの標準出力で確認することができます。