Skip to content

Instantly share code, notes, and snippets.

@zu-min

zu-min/wsa_3.md Secret

Last active November 16, 2018 05:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zu-min/7a2cb1c5b0ea06e6efbd6b8a0ffbdd66 to your computer and use it in GitHub Desktop.
Save zu-min/7a2cb1c5b0ea06e6efbd6b8a0ffbdd66 to your computer and use it in GitHub Desktop.
RESTful API による IoT機器制御の検討

RESTful API による IoT機器制御の検討

北九州市立大学 岡住 和樹(* 1), 酒匂 裕史(* 1), 山崎 進(* 2), 中武 繁寿(* 2), 藤本 悠介(* 2), 永原 正章(* 3)

  • (* 1)北九州市立大学 国際環境工学研究科 情報工学専攻
  • (* 2)北九州市立大学 国際環境工学部
  • (* 3)北九州市立大学 環境技術研究所

はじめに

IoTの発展により,組込み機器がインターネットに接続されることが当たり前の世の中となった。 そこで,機器の制御を RESTful API でおこなえないかを検証する。

RESTful API で機器の制御が行える場合,Webの規格上で機器の制御が行えるようになるため,参入障壁が下がりこれまで以上に機器のIoT化が進むのではないかと考えられる。

本発表の目的は,RESTful APIを介しIoT機器制御を行うというケースにおいて,技術的課題を明らかにするために実験計画を立てた。これについて,妥当性を議論したい。

全体の内容

  1. IoTセンサー から取得した情報を元に IoTアクチュエーター の制御を行う。
  2. IoTセンサー から取得した情報はサーバーを介し, IoTコントローラー によって解析される。
  3. IoTコントローラー によって解析された情報はサーバーへ送信される。
  4. IoTアクチュエーターIoTコントローラー によって解析された情報をサーバーを介して取得し,制御される。

以下の図は,IoTセンサー から取得された情報の流れについてのものである。 スクリーンショット 2018-11-11 23.46.22.png

今回の検証では,サーバーを介してやり取りが行われている IoTセンサーから取得される情報IoTアクチュエーターを制御するための情報 の2種類についてRESTful APIで取り扱う。 また,各情報について更新は行わずに新規作成をしていく形とし,削除も行わないこととする。そのため,UpdateとDeleteに関しては取扱わない。

具体的には,以下のような流れとなる。 IoTセンサー が取得した情報を情報A, IoTコントローラー が解析した結果の情報B としている。

  • IoTセンサー → サーバー
    • IoTセンサー はサーバーに情報AをPOST
  • サーバー → IoTコントローラー
    • IoTコントローラー はサーバーから情報AをGET
  • サーバー ← IoTコントローラー
    • IoTコントローラー はサーバーに情報BをPOST
  • サーバー → IoTアクチュエーター
    • IoTアクチュエーター は情報BをGET

制約

  • IoTアクチュエーター は制御対象に要求される動作の周波数幅(帯域幅)の五倍〜十数倍で制御される必要がある。
  • 各情報の到達確実性を保証する必要がある。

実験計画

今回の実験では,以下の計測をする必要があると考えている。

  1. IoTアクチュエーターから一定周期でリクエストを送った場合のサーバーへの到達時間の誤差を計測する。
  2. サーバーからIoTアクチュエーターへのレスポンスについても同様に,到達時間の誤差を計測する。
  3. IoTセンサーからPOSTされた情報を,IoTコントローラーがGETするまでのタイムラグを計測する。
  4. IoTコントローラーからPOSTされた情報を,IoTアクチュエーターがGETするまでのタイムラグを計測する。
  5. RESTful APIを介さないローカルでの実装についても同様に計測する。

実装

今回の実装では,IoT機器制御をRESTful APIで行うことから,耐障害性と応答性の高さが重要となるため Elixir を採用し,Webフレームワークとして Phoenix を利用し実装を進めていこうと考えている。

  1. Phoenix 1.3.4 にてRESTful APIの実装を行う
  2. 初期実装
  • JWT認証
  • POSTデータ -> DBに保存
  • GETデータ -> DBから取得
  1. DBのボトルネック解消案
  • JWT認証
  • POSTデータ -> DBに保存 & キャッシュ
  • GETデータ -> キャッシュにデータが無い場合のみDBから取得
  1. Phoenix 1.4 へのアップデート

謝辞

本研究の一部は,JST未来社会創造事業 JPMJMI17B4 の支援を受けた。 研究遂行にあたり多くの助言をいただいた北九州工業高等専門学校の滝本 隆先生に感謝する。

参考文献

  • [1] 萩原朋道,「ディジタル制御入門」,コロナ社,1999年 1.2節
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment