専門演習 IoTシステム実習
2019年10月2日更新
大見 嘉弘
実習1(接続と動作確認)
- ノートPCを無線LANでネットワーク接続する
(アクセスポイント名とパスワードは授業中に指示する。
※ 他のアクセスポイントにつなぐとサーバにつながらない。)
- 受け取ったIoTデバイスの名前を確認する(例: ohmi29)
- IoTデバイスに電源供給する(ノートPCのUSBポートに刺す)
- ノートPCのWebブラウザのProxyサーバを設定する。
- Firefoxの場合: 「≡」→「オプション」→一般の一番下の「接続設定」→「自動プロキシー設定スクリプト」を選ぶ→その枠に「http://192.168.20.20/proxy.pac」を指定
- Chromeの場合: ブラウザの右端のメニューボタン→「設定」→詳細設定を開く→「パソコンのプロキシ設定を開く」→「セットアップスクリプトを使う」をオン→スクリプトのアドレスに「http://192.168.20.20/proxy.pac」を指定。
- ノートPCのWebブラウザでサーバ側(ThingSpeak)に接続する
- サーバ画面の「Sign In」をクリックする。
- User IDはIoTデバイスの名前(例:ohmi29)を入力し、
Passwordは名前がohmiABなら、ohmiABAB
と入力する(例: ohmi29なら ohmi2929)。
- サインインに成功したら、「Channel AB」をクリックする(例: ohmi29ならChannel 29)。
- 3つのグラフがそれぞれ「ボリュームの値(Volume 1)」、「光センサの値(Brightness 1)」、「タッチセンサの値(Touch 1)」の(約1秒ごとの)時間変化を示す。
「ボリュームを回す」、「光センサを手で覆ってみる」、
「タッチセンサの線に触ってみる」ことで値を変化させてみる。
- グラフは自動的に更新されるが、荒いので、Webブラウザでページを再読み込みして、詳細なグラフを表示する。
このIoTデバイスはセンサ値を12ビットでアナログ-デジタル変換するので、値は0~4095の範囲となる。光センサは暗くなると値が小さくなる。タッチセンサは触ると値が下がる(大体40以下になると触っている)。
注意!:
実習で使用するアクセスポイントはインターネットへの接続が
遅いため、つないだ後は必要以上にインターネットへのアクセスをしないように注意。
実習2(Web API)の準備(予備知識)
- IoTシステムでサーバにセンサデータを送る場合、Web APIを使用できるものが多い。Web APIについては、「長岡 賢一: Web APIとは何なのか - Qiita 」などが参考になる。
- IoTシステムでは、Web APIの中でも特にRESTが主流である。RESTについては、「TakahiRyote: REST入門 基礎知識」などが参考になる。
- 本実習で使うThingSpeakはRESTによるWeb APIを用意している。
- ThingSpeakは他にMQTTにも対応している。MQTTはIoT向けの通信プロトコルで、
多数のエッジとサーバが通信するIoTを前提として設計されたものである。
対してRESTによるWeb APIは、従来のWebによるデータ通信を流用したと言え、
通信効率は悪いがWeb開発に慣れた人がとっつきやすいという利点がある。
- この実習では、RESTによるWeb APIを使ってThingSpeak
に手動でデータを送ってみる。
実習2(Web API)の実際
- IoTデバイスからデータが送信されていると、区別が難しくなるため、
IoTデバイスの電源を切る(USBケーブルを抜く)。
- データを送信する時に使うAPI Keyを確認する。
実習1のWebブラウザの画面で、「API Keys」のタブをクリックする。
Write API Keyの所に赤く表示されている文字列がキーである。
このキーを使ってサーバにデータを送信する。
- 画面の「Data Import/Export」のタブをクリックする。
サーバにデータを送信するには、
http://192.168.20.20:3000/update?key=ABABABABABABABABAB&field1=123&field2=234&field3=456
といった形式(URI)でサーバにアクセスする。ABAB...の部分は、API Keyで、123といった数値の部分は、
field1=の後がボリュームの値、
field2=の後が光センサの値、
field3=の後がタッチセンサの値である。
- 画面右の「Sending Data」にある「Please include your write API key and some data, for example: 」の下の枠の文字列(URI)を範囲選択してコピーする(Control+Cを押すか、マウスの右ボタンを押して「コピー」を選ぶ)。
- Webブラウザで新しくタブもしくはウインドウを開き、
Webブラウザのアドレス欄にペーストする(Control+Vを押すか、マウスの右ボタンをクリックして「貼り付け」を選ぶ)。
- ★ この状態では、最後が&field1=0となっているので、
これを例えば&field1=2000&field2=500&field3=80
に変える。そして、アドレス欄でエンターキーを打って、Webアクセスする。
※ 数値の部分は好きな値を入れてよい。
- 画面に数値だけが表示されればアクセス成功である。
アクセスに失敗した時は 0 だけが表示されるので、間違ったところを確認して、
再びアクセスする。
- 前の画面に戻って「Private View」タブをクリックすると、
グラフが表示されるので、グラフの右端に今打ち込んだ数値が出ていれば成功である。
- 上の★に戻って、違う数値に変えてアクセスしてみる。
- IoTデバイスには、このようなWebアクセス(HTTP GET)を行うプログラムが書き込まれている。ここにプログラムを置いてあるので、興味がある人は参考にすると良い。
実習の終わりに
WebブラウザのProxyサーバの設定を必ず元に戻すこと(Proxyサーバを使用しないようにする)。戻さないとWebページにアクセスできなくなる。
大見 嘉弘 <ohmi@rsch.tuis.ac.jp>