12194511_1085436368156331_8370069131630829258_o

IoTデバイス間ネットワークの設計について研究しています

こんにちは!お久しぶりです山下です。最近はもっぱらIoTについて考えています。

IoT (Internet of Things) ってなんなんでしょうか。ホワイトハウスの報告書によると、IoTは、センサー等を備えたデバイスの相互通信能力を指すそうです。

ですが、現状IoTと言っているものは、

・センサー,ビーコン,コントローラなど
・スマートフォン,PC
・インターネット

が層状に接続された木構造のネットワークであることが多く、リーフノード同士の接続ということが議論されることは少ないと感じています。

IoTの現状
IoTの現状

そこでラボでは、IoT機器どうしの接続が可能になる、つまり、モノとモノが対話できるとすると、どんな面白いことができるかを考えています。

ノード間の接続が確立されたIoT
ノード間の接続が確立されたIoT

今回、IoTデバイスをエージェントに見立てたマルチエージェントモデルを組み立て、デバイス間ネットワークをシミュレートするためのソフトウェアの作成を開始しました。これで、実際にマイコンやBLEモジュールやセンサーといった電子部品を購入してネットワークを構築する前に、コンピュータ上でモデルを作って実験することができるようになります。

この記事では、IoTデバイスのモデル化を行います。

最初に、全てのIoTデバイスは、

・0個以上のセンサー
・0個以上の送信機
・0行以上のコード
・0個以上の駆動部
・0byte以上のデバイス固有値

を持つと仮定します。そこで、こういった部品のコンテナとして、構造体を定義します。ここではこの構造体を仮に<arduino>と呼ぶことにします。


(define-class <arduino> (<thing>)
  ((sensors :init-keyword :sensors
            :init-value '() ;;[field-name]
            :accessor <-sensors)
   (transmitters :init-keyword :transmitters
                 :init-value '() ;;[(val -> [effect])]
                 :accessor <-transmitters)
   (code :init-keyword :code ;;self * [val] -> [val]
         :accessor <-code)
   (props :init-keyword :properties ;;[(sym, Any)]
          :accessor <-properties)))
 

駆動部については、各エージェントのコード内での副作用として表現することにして、省略します。

さて、次に、デバイス同士のコミュニケーションモデルを決定する必要が有ります。

IoT機器は、光や音など、現実世界の物理現象を相手にすることが多く、センシングと他デバイスからの信号の受信を統一的に扱えたら、利点は多いだろうと踏んでいます。そこで、よく行われる1対1のダイレクトコミュニケーションではなく、多対多のブロードキャスト通信を基礎的なコミュニケーション手段として採用します。

簡単な例は、ビーコンです。ビーコンはBLEのブロードキャストに情報を載せて不特定多数のデバイスに送信しています。この通信モデルは、物理現象の伝播(例:音の拡散)とアナロガスに捉えることができるため、センシングと信号受信を統一的に扱えることを示唆します。

このエージェントモデルでは、ブロードキャスト通信を、場に与える影響として表現します。

例えば、温度センサーを持ち、BLEでその値を送信するデバイスは、以下のように表現します。


(define (tempereture-sensor)
  (make <arduino>
    :sensors '(temperature)
    :transmitters (list (lambda (x) (list 'BLE x inverse-square 1)))
    :code
    (lambda (self vals)
      (let1 temp (car vals)
            (list temp)))))

まず、:sensorsにリストされたセンサーが、場の値(この例では温度)を読み取り、:codeに渡します。コードは:transmittersにマップされる値のリストを作ります。:transmittersは、コードが作った値を元に任意の場に与える影響のリストを作ります。

デバイス間ブロードキャスト通信のイメージ
デバイス間ブロードキャスト通信のイメージ

モデルの概要は以上です。全てのIoTデバイスに共通の項を導出して仮想デバイスを定義し、また、センシングと通信の受信を統一的に扱うコミュニケーションモデルを確立し、このコミュニケーションモデルを採用した仮想デバイスをエージェントとしました。

次回は、以上で構築したエージェントモデルを使って、IoTデバイス間ネットワークをプログラムして、実験していきます。

参考文献:
・IoTがわかる本 (工学社)
・シミュレーションの思想 (東京大学出版会)
・シミュレーション (共立出版)
場を使ったオブジェクト間コミュニケーション

Lispと宇宙と幾何学のファンです。

“IoTデバイス間ネットワークの設計について研究しています” への1件のフィードバック

コメントは受け付けていません。