第 4 章 多様なセンサを考慮したミド ルウェアの提案
4.6. プラグイン型ミドルウェアの設計
本節では,センサの仕様調査から得た知見を基に,4.3節で定義したミドルウェ アに必要な機能6項目について,組込機器へ実装する機構およびプラグインに記 述するパラメータを決定する.
4.6.1 I/O インタフェースおよび通信方式の解決
ミドルウェアがセンサへのコマンド送信およびセンサからのメッセージ受信を 行うためには,センサのI/Oインタフェースと通信方式の多様性を解決せねば ならない.まずI/Oインタフェースはセンサの仕様調査の結果RS232CやUSB,
Bluetoothなどがあるが種類は有限であることが分かった.よって,組込機器へは
各I/Oインタフェースに対応した通信機能を実装する.他方プラグインへはどの I/Oインタフェースを使用するかおよび使用するI/Oインタフェースのパラメー タを記述する.ここでのパラメータとはI/Oインタフェースの設定に必要な変数 などを意味し,RS232Cであればボーレートやストップビットなどが該当する.
次に,センサの通信方式は読み取り方式と対話方式の2種類があることが分かっ た.さらに読み取り方式は4.5節で述べたように,センサがメッセージを出力する
間隔に着目すると連続,定期,不定期の3タイプに分類できる.そこで,組込機 器へは任意の時間間隔を置いてメッセージを受信可能な機能を実装し,プラグイ ンへはメッセージの受信間隔を記述することにより,読み取り方式のセンサに対 応する設計とする.一方で,対話方式のセンサはクエリ受付時にメッセージを出 力するため,メッセージの受信機能だけでなくコマンドの送信機能が必要となる.
4.6.2 コマンドの送信
対話方式のセンサにおいて,センサからメッセージを受信するためにはセンサ ゲートウェイからセンサへメッセージ要求コマンドを送信する必要がある.セン サの仕様調査より,センサへコマンドを送信するためには,コマンド体系および コマンド形式を解決する必要があるという知見を得た.センサのコマンド体系は 規則性を持っておらず各センサで独自である.また,コマンドの形式はテキスト 形式およびバイナリ形式の2種類がある.これらのことから,提案手法では図4.3 に示すように組込機器へはテキスト形式およびバイナリ形式の任意のコマンドを 送信可能なsend text()およびsend binary()を実装する.一方,プラグインへは センサへ送信するコマンドやコマンドの終端,コマンドの形式を記述することで 任意のコマンドを送信可能な設計とする.
send_command()
send_text () send_binary ()
yes no
図 4.3 コマンドの送信の解決手法
recv_text ()
recv_start()
recv_length() yes
recv_end() no
no yes
recv_message()
recv_binary()
図 4.4 メッセージ受信の解決手法
4.6.3 メッセージの受信手法
センサは温度や湿度などのデータ項目と制御情報を含むメッセージを出力する.
メッセージ形式はコマンド形式と同様にテキスト形式とバイナリ形式の2種類が ある.そこで,図4.4に示すように組込機器へはコマンドの送信機能と同じくテキ スト形式およびバイナリ形式用の関数recv text()およびrecv binary()を実装す る.センサの仕様調査より,センサが出力するメッセージは固定長あるいは可変 長であることが分かった.可変長メッセージの受信はメッセージの始端および終 端を指定することで可能であり,固定長メッセージの受信はメッセージ長を指定 することで可能である.よって,提案手法は任意の始端および終端までメッセー ジを受信可能なrecv start()およびrecv end()を実装する.また,任意のバイト 長のメッセージを受信可能なrecv length()を実装する.提案手法は図4.4に示す ように,プラグインにメッセージの形式,始端,終端,およびバイト長を記述す ることにより,センサから任意のメッセージを受信する.
4.6.4 データの抽出
センサから受信可能なメッセージは制御情報など冗長な情報を含むため,目的 のデータ項目のみを抽出する処理が必要である.本研究が対象とするセンサ群を 調査した結果,センサが出力するメッセージの形式は規則性を持っており,1bit 毎の解析などは必要ないことが分かった.そして,メッセージの形式はASCII,
2進化10進数,10進数などが存在する.そこで,提案手法では図4.5に示すよう にASCII形式のメッセージからデータを抽出するparse ascii()や2進化10進数 形式メッセージからデータを抽出するparse bcd()といった処理機構を組込機器 へ実装し,メッセージ形式の選択はプラグインにより行う.これらの処理機構は メッセージ内のデータの位置やサイズをプラグインにより指定することで任意の データ項目を抽出する.ここで,センサが出力する単一のメッセージ内に含まれ るデータ項目数に着目すると4.5節で述べたように4つのタイプが存在する.そ こで,ミドルウェアではプラグインに記述されたデータ項目数に応じて図4.5に 示すように処理を繰り返す.また,複数のメッセージに分割してデータ項目が格 納されている場合は,データの統合処理を行う.
parse_ascii() parse_bcd() parse_demical()
..….extract_data()
yes
!"
図 4.5 データ抽出の解決手法
4.6.5 データの正規化
センサが出力するデータの値は,Vantage Pro2が華氏の10倍の値を出力する など規則性がなく,各センサが独自の値を出力する.そこで,値変換機能を組込 機器へ実装する.変換前のデータをlowdata,変換後のデータをDataとすると本 機能は Data = lowdata * M + A という式で表される変換を行う.このとき,
変換するための変数であるMおよびAはプラグインに記述する.本機構により,
センサが出力する値を任意の値に変換可能となる.
4.6.6 プロファイル情報の付与
プロファイル情報とはセンサデータの生成時刻や生成位置,単位,観測対象な どである.一度センサデータが流通するとネットワーク経由で遠隔から,センサ データの生成時刻や生成位置,観測対象を知ることは不可能である.具体例を挙 げて説明すると,「20」というセンサデータは,その値が温度か湿度かといった情 報も付随していなければ「20」という値には何の価値もない.また,温度か湿度と いった情報だけでなく取得したデータが温度であれば気温か水温か体温かといっ た情報や,単位は摂氏か華氏か,といった情報も合わせて付与してはじめてデー タの適切な利用が可能となる.また,アプリケーションによるデータ検索内容と しては,地理的に特定のエリアに設置されたセンサの検索や特定の属性を持った センサの検索などがある.さらに,データマネジメント層における,既存の負荷 分散手法はデータ検索の高速化を実現するために,位置情報やデータの生成時刻 を必要とする.センサ層が提供するデータはこのようなデータの管理,検索,利 用を想定してプロファイル情報を付与する必要がある.センサデータに付与すべ きプロファイル情報の例を表4.4に示す.