以下、図面を参照しつつ、本発明の実施の形態に係るネットワークについて説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
なお、ZigBee仕様には、バージョン(スタックプロファイル)がいくつかあるが、本実施の形態では、スタックプロファイルが0x02である、ZigBeePROを前提とする。また、本実施の形態では、デバイスとノードを同等の意味で使用する。
<A.ネットワークの概要>
図1は、本発明の実施の形態に係るネットワークの概略構成を示した図である。図1を参照して、本発明の実施の形態に係るシステムにはネットワークZとネットワークEから構成される。ネットワークZは、低速無線通信ネットワーク(本例においてはZigBeeを想定)を示す。ネットワークEは、高速通信ネットワーク(本例においては、Ethernet(登録商標)、または、WiFi(登録商標:Wireless Fidelity)、またはそれらの組み合わせを想定)を示す。なお、本例においては上記の方式を用いたネットワークについて説明するが特に上記に限るものではない。例えば、ネットワークZにZ−WAVE(登録商標)、Bluetooth(登録商標)、特定小電力無線などを用いることができる。また例えば、ネットワークEにPLC(Power Line Communications:電力線通信)などを用いることも可能である。
ネットワークZには、中継器1001と、複数のタップ1004a,1004b,1004c等が存在するものとする。ネットワークEには、中継器1001と、ワイヤレスブロードバンドルータ1002と、パーソナルコンピュータ1003等が存在するものとする。タブレット端末1008が含まれていてもよい。中継器1001はネットワークZとネットワークEの両方のネットワークに含まれる。また、中継器1001はHTTP(Hyper Text Transfer Protocol)サーバ機能を有する。複数のタップ1004a,1004b,1004cには、それぞれ、複数の家電機器(一例として、エアーコンディショナ1005,冷蔵庫1006,テレビ1007など)が接続されている。
なお、本実施の形態における「中継器」という用語は、先に述べた「制御装置」と同じ装置の意味で用いている。一般的な呼び方として、制御装置の他に、ゲートウェイ(Gateway)、収集装置、コンセントレータ(Concentrator)などと言うこともある。本実施の形態における「中継器」は、ネットワークZとネットワークEの異なるネットワーク間を中継する機能(プロトコル変換しないで中継する機能(=ブリッジ)と、プロトコル変換して中継する機能(=ゲートウェイ)の両方を含む)、複数のタップから電力情報データを収集する機能、およびネットワークZ上に存在するノードを管理する機能、を持つ。どの機能をフォーカスするかによって、当該制御装置の呼び方は変わる。
エアーコンディショナ1005の電源プラグ1051は、タップ1004aのソケットに差し込まれている。同様に、冷蔵庫1006の電源プラグ1061は、タップ1004bのソケットに差し込まれている。また、テレビ1007の電源プラグ1071は、タップ1004cのソケットに差し込まれている。
タップ1004a、1004b、1004cは、それぞれ、宅内に設置されたコンセント1015,1016,1017に取り付けられている。これにより、タップ1004a,1004b、1004cは、給電される。
タップ1004a、1004b、1004cは、各々に接続される各家電の消費電力を測定する消費電力測定器である。たとえば、タップ1004aは、エアーコンディショナ1005の消費電力を測定する。タップ1004a、1004b、1004cの各々は、測定した消費電力を中継器1001に送信することができる。なお、以下では、説明の便宜上、タップ1004a,1004b,1004cを区別することなく表わす場合には、「タップ1004」と表記する。
中継器1001および複数のタップ1004の各々は、低速無線通信モジュールを備える。中継器1001と複数のタップ1004とにより、低速無線通信ネットワークZ(以下、単に「ネットワークZ」とも称する)を構成している。また、中継器1001は、Ethernetによりワイヤレスブロードバンドルータ1002に接続されている。中継器1001は、ネットワークZとネットワークEとのブリッジ(媒体変換装置)あるいはゲートウェイ(プロトコル変換装置)として機能する。中継器1001は、複数のタップ1004との間で低速度の無線通信を行なう。
ワイヤレスブロードバンドルータ1002は、インターネットに接続されていてもよい。パーソナルコンピュータ1003は、EthernetまたはWiFiにより、ワイヤレスブロードバンドルータ1002に接続される。
パーソナルコンピュータ1003は、ブラウザ(HTTPクライアント)が動作する一般的なパソコンである。パーソナルコンピュータ1003は、パーソナルコンピュータ1003のブラウザ(HTTPクライアント)を経由して中継器1001のHTTPサーバと通信する。中継器1001のHTTPサーバは、設定用CGIプログラムを呼び出すことによって、中継器自身の設定情報を取得し、また、設定できるようになっている。このようにして、パーソナルコンピュータ1003は、中継器1001のさまざま設定を行なうことができる。このHTTPサーバとブラウザ(HTTPクライアント)の働きによって、貧弱な入力装置しか持たない中継器1001でも、複雑な設定を行なうことができる。
タブレット端末1008は、ワイヤレスブロードバンドルータ1002を介して、中継器1001と通信を行なう。タブレット端末1008は、WiFiにより、ワイヤレスブロードバンドルータ1002に接続される。
タブレット端末1008は、消費電力に関する各種の表示を行なうことができる。タブレット端末1008は、たとえば、各家電の消費電力を表示できる。また、タブレット端末1008も、パーソナルコンピュータ1003と同様に、ブラウザ(HTTPクライアント)を動作させることができる。よって、タブレット端末1008は、ブラウザ(HTTPクライアント)を経由して、中継器1001のHTTPサーバと通信し、中継器1001を設定できるようになっている。
以下では、ネットワークZとして、家電向けの短距離無線通信規格の一つであるZigBeeを用いた例について説明する。
<B.中継器1001の構成>
図2は、中継器1001の外観を表した図である。図2(A)は、中継器1001の斜視図である。図2(B)は、中継器1001の側面図である。図2(C)は、中継器1001の他の側面の要部拡大図である。
図2(A)を参照して、中継器1001は、発光部1103と、アンテナ1107とを備える。発光部1103は、中継器1001の動作状態等を表示するための3つのLED(Light Emitting Diode)1103a,1103b,1103cにより構成される。
LED1103aは、中継器1001の電源がオン・オフの状態を示すための発光素子(電源LED)である。LED1103bは、タップ1004との通信状態を表示するための発光素子(タップLED)である。LED1103cは、ワイヤレスブロードバンドルータ1002との通信状態を表示するための発光素子(ルータLED)である。
アンテナ1107は、各タップ1004a,1004b,1004cと通信するために用いられる。
図2(B)を参照して、中継器1001は、発光部1103が設けられた表面とは反対側の表面に、プッシュボタン1108をさらに備える。プッシュボタン1108は、中継器1001をジョイン許可状態(ジョインモード)、または、リーブモードに遷移させるためのボタンである。
図2(C)を参照して、中継器1001は、発光部1103が設けられた表面およびプッシュボタン1108が設けられた表面とは異なる表面に、スライドスイッチ1109をさらに備える。スライドスイッチ1109は、ユーザの操作によりスライドする。スライドスイッチ1109は、JOIN位置、NOP(No Operation)位置、およびLEAVE位置のうちのいずれか1つの位置をとることができる。なお、スライドスイッチ1109は、プッシュボタン1108が押されたときに、中継器をジョイン許可状態、あるいはリーブモードのいずれかを選択するために用いられる。スライドスイッチ1109は、通常の使用時にはNOP位置に設定される。
図3は、中継器1001のブロック図である。図3を参照して、中継器1001は、制御部1101と、発光部1103と、高速通信インターフェイス部1104と、電源部1105と、無線RF(Radio Frequency)内蔵通信コントローラ部1106と、アンテナ1107と、プッシュボタン1108と、スライドスイッチ1109と、図示しないリセットスイッチとを備える。
無線RF内蔵通信コントローラ部1106は、CPU(Central Processing Unit)1161と、ROM(Read Only Memory)1162と、RAM(Random Access Memory)1163と、GPIO(General Purpose Input/Output)1164と、無線RF部1165と、制御部1101との間で通信するためのUART(Universal Asynchronous Receiver Transmitter)1166とを含む。
なお、本実施例では、無線RF内蔵通信コントローラ部1106は、ZigBeeコーディネータとして動作するものとして説明する。他の実施の形態として、無線RF内蔵通信コントローラ部1106は、ZigBeeルータとして動作させてもよい。その場合、ネットワークZ上に存在する他の通信機器から常に受信可能であるように設定しておく。
また、ROM1162と、RAM1163と、UART1166と、GPIO1164と、無線RF部1165とは、それぞれ、CPU1161に接続されている。
無線RF内蔵通信コントローラ部1106は、アンテナ1107と接続されている。無線RF内蔵通信コントローラ部1106は、ネットワークZ上に存在する通信機器との間の通信を制御する。なお、ROM1162は、NVRAM(不揮発RAM)で構成されるのが一般的である。
制御部1101は、CPU1161に比べて高性能なCPUを備えており、またメモリも豊富である。当該構成によって、中継器1001は、高度な情報処理を実現できる。
高速通信インターフェイス部1104は、ワイヤレスブロードバンドルータ1002との間でEthernetまたはWiFiを用いた通信を行なうためのインターフェイスである。電源部1105は、制御部1101と無線RF内蔵通信コントローラ部1106とに電力を供給する。
制御部1101は、発光部1103と、高速通信インターフェイス部1104と、電源部1105と、無線RF内蔵通信コントローラ部1106と、プッシュボタン1108と、スライドスイッチ1109とに接続されている。制御部1101は、中継器1001の全体的な動作を制御する。制御部1101は、プッシュボタン1108およびスライドスイッチ1109からの入力を受け付ける。また、制御部1101は、発光部1103に出力指示を出す。
次に、ユーザがペアリングを行なうときの操作の概要について説明する。まず、ユーザが、スライドスイッチ1109をNOP位置からJOIN位置にスライドさせる。その後、ユーザは、プッシュボタン1108を押す。これにより、予め定められた時間(たとえば60秒間)、中継器1001がジョイン許可状態となる。なお、この間、制御部1101は、発光部1103を予め定められた状態で発光させる。そして、中継器1001がジョイン許可状態で、ユーザがタップ1004をコンセントに差すこと等により、中継器1001とタップ1004とのペアリングが行なわれる。
<C.タップ1004の構成>
図4は、タップ1004の斜視図である。図4を参照して、タップ1004は、プラグ差込用のソケット2101と、プラグ2102と、LED2105と、設定ボタン2106とを備える。タップの使用時には、ユーザは、家電の電源プラグをソケット2101に差し込むとともに、宅内に設置されたコンセントにプラグ2102を差し込む(図1参照)。なお、ソケット2101の形状は、接続される家電の電源プラグの形状に応じて決まる。
図5は、タップ1004のハードウェア構成を表した図である。図5を参照して、タップ1004は、ソケット2101と、プラグ2102と、シャント抵抗2103と、電源部2104と、LED2105と、設定ボタン2106と、アンテナ2107と、電力センサ部2110と、無線RF内蔵通信コントローラ部2120と、配線2131と、配線2132と、配線2133とを備える。
電力センサ部2110は、電圧入力ADC部2111と、電流入力ADC部2112と、乗算器2113と、デジタル/周波数変換部2114とを含む。無線RF内蔵通信コントローラ部2120は、CPU2121と、ROM2122と、RAM2123と、GPIO2124と、無線RF部2125とを含む。
配線2132と配線2133とは、シャント抵抗2103により接続されている。シャント抵抗2103は電流を測定するために使われる微小な(数百マイクロΩ)抵抗である。
ソケット2101とプラグ2102とは、配線2131〜2133およびシャント抵抗2103で接続されている。配線2131は、プラグ2102の一方の端子およびソケット2101の一方の端子に接続されている。配線2132は、プラグ2102の他方の端子とシャント抵抗2103の一方の端部とに接続されている。配線2133は、ソケット2101の他方の端子とシャント抵抗2103の他方の端部とに接続されている。
電源部2104は、配線2132に接続されている。電源部2104は、交流を直流に変換する。電源部2104は、変換により得られた直流電力を電力センサ部2110と無線RF内蔵通信コントローラ部2120とに与える。
電圧入力ADC部2111は、配線2131と、配線2132とに接続されている。電圧入力ADC部2111は、配線2131と配線2132との間の電圧(電位差)を、デジタル信号にて乗算器2113に出力する。
電流入力ADC部2112は、配線2132と、配線2133とに接続されている。電流入力ADC部2112は、シャント抵抗2103に流れる電流の電流値を、デジタル信号にて乗算器2113に出力する。
乗算器2113は、電圧入力ADC部2111からの出力と、電流入力ADC部2112からの出力とを乗算し、当該乗算により得られたデジタル信号をデジタル/周波数変換部2114に出力する。
デジタル/周波数変換部2114は、入力されたデジタル信号を周波数信号に変換する。デジタル/周波数変換部2114は、変換により得られた周波数信号を、無線RF内蔵通信コントローラ部2120のGPIOに出力する。
CPU2121は、GPIOから取得した上記周波数信号をデータ変換する。無線RF部2125は、データ変換により得られた信号を、アンテナ2107を用いて中継器1001に送信する。
ROM2122には、CPU2121が実行するプログラム等が格納されている。なお、ROM2122は、NVRAMで構成されるのが一般的である。
LED2105は、タップ1004のデータ処理状態を、点滅および/または点灯させる色等により表す。設定ボタン2106は、ユーザによるタップ1004の初期設定等のために用いられる。
なお、本実施例では、無線RF内蔵通信コントローラ部2120は、ルータとして動作するものとして説明する。
<D.タブレット端末1008の構成>
図6は、タブレット端末1008のハードウェア構成を表した図である。図6を参照して、タブレット端末1008は、CPU4010と、タッチスクリーン4020と、時計4030と、メモリ4040と、ボタン4050と、通信インターフェイス4060と、スピーカ4070とを含む。タッチスクリーン4020は、ディスプレイ4021と、タッチパネル(タブレット)4022とで構成され、ディスプレイ4021の表面にタッチパネル4022が敷設されている。ただし、タブレット端末1008は、タッチパネル4022を有していなくともよい。
メモリ4040は、各種のRAM、ROM、フラッシュメモリ、ハードディスクなどによって実現される。メモリ4040は、CPU4010によって実行される、OS、各種の制御プログラム、並びにCPU4010によって読み出されるテーブル等の各種データテーブルを格納する。たとえば、メモリ4040における不揮発性のメモリであるフラッシュメモリに、タップ1004に対して設定(再設定)を行なうためのアプリケーションが格納されている。なお、当該アプリケーションは、ユーザからのリクエストに応じてタップ1004の設定を行なう。
CPU4010は、メモリ4040に記憶されている各種のプログラムを実行することによって、各種の情報処理などを実行する。ここでいうプログラムとは、CPUにより直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
ディスプレイ4021は、CPU4010によって制御されることによって、たとえば、各家電機器1005〜1007の消費電力を表示する。タッチパネル4022は、ユーザの指によるタッチ操作を検出して、タッチ座標などをCPU4010に入力する。CPU4010は、タッチパネル4022を介して、ユーザからの命令を受け付ける。
ボタン4050は、タブレット端末1008の表面に配置される。決定キー、方向キー、テンキーなどの複数のボタンがタブレット端末1008に配置されても良い。ボタン4050は、ユーザからの命令を受け付ける。ボタン4050は、ユーザからの命令をCPU4010に入力する。
通信インターフェイス4060は、CPU4010によって制御されることによって、ワイヤレスブロードバンドルータ1002を介して、中継器1001と通信する。通信インターフェイス4060は、上述したように、たとえばWiFiにより、ワイヤレスブロードバンドルータ1002と通信する。
スピーカ4070は、CPU4010からの命令に基づいて、音声を出力する。たとえば、CPU4010は、音声データに基づいて、スピーカ4070に音声を出力させる。時計4030は、CPU4010からの命令に基づいて、現在の日付や時刻をCPU4010に入力する。
CPU4010は、メモリ4040に記憶されている各種のプログラムを実行することによって、各種の情報処理などを実行する。換言すれば、タブレット端末1008における処理は、各ハードウェアおよびCPU4010により実行されるソフトウェアによって実現される。このようなソフトウェアは、メモリ4040に予め記憶されている場合がある。また、ソフトウェアは、記憶媒体に格納されて、プログラム製品として流通している場合もある。あるいは、ソフトウェアは、いわゆるインターネットに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。
このようなソフトウェアは、図示しない読取装置を利用することによってその記憶媒体から読み取られて、あるいは、通信インターフェイス4060を利用することによってダウンロードされて、メモリ4040に一旦格納される。CPU4010は、ソフトウェアを実行可能なプログラムの形式でメモリ4040に格納してから、当該プログラムを実行する。
なお、記憶媒体としては、CD−ROM(Compact Disc - Read Only Memory)、DVD−ROM(Digital Versatile Disk - Read Only Memory)、USB(Universal Serial Bus)メモリ、メモリカード、FD(Flexible Disk)、ハードディスク、磁気テープ、カセットテープ、MO(Magnetic Optical Disc)、MD(Mini Disc)、IC(Integrated Circuit)カード(メモリカードを除く)、光カード、マスクROM、EPROM、EEPROM(Electronically Erasable Programmable Read-Only Memory)などの、不揮発的にプログラムを格納する媒体(一時的ではない媒体)が挙げられる。
ここでいうプログラムとは、CPUにより直接実行可能なプログラムだけでなく、ソースプログラム形式のプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
<E.実装例>
図7は、タップ1004および中継器1001におけるソフトウェア構造を説明するための図である。
図7を参照して、タップ1004(リモートノード)のソフトウェア構造は、ZigBeeアプリケーション3401と、ZigBeeプロトコルスタック3402とを含む。ZigBeeアプリケーション3401は、電力測定用のマイコン(図示せず)から消費電力に関する情報を取得して、当該情報を予め定められたフォーマットに変換する。ZigBeeアプリケーション3401は、他のZigBeeノードからの属性リード要求に応じて、あるいは、設定されたレポート条件に従って自発的に消費電力に関する情報を送信する。ZigBeeプロトコルスタック3402は、ZigBee規格に従った通信プロトコルを担う。特に、タップ1004は、ZigBeeネットワークにおける論理デバイスのルータまたはエンドデバイスとして動作するものとする。また、ペアリングの結果、当該タップ1004が参加するネットワークに関する情報をNVRAMに保存する(図示しない)。
中継器1001は、無線RF内蔵通信コントローラ部1106と制御部(本体基板)1101とに物理的に分かれて存在しており、それぞれでソフトウェア構成を持つ。
無線RF内蔵通信コントローラ部1106(ローカルノード)は、ZigBeeアプリケーション3111と、ZigBeeプロトコルスタック3112と、UART1166と、アソシエートデバイスリスト3110と、ネットワーク情報ベース他3113とを含む。
ZigBeeアプリケーション3111は、上述した消費電力に関する情報をタップ1004から受信する。また、無線RF内蔵通信コントローラ部1106は、UART1166を経由して、制御部1101との送受信を行う。制御部1101からの要求に応じたコマンドを実行する。
UART1166は、上述したように、制御部1101との間で通信するための非同期送受信インターフェイスである。
ZigBeeプロトコルスタック3112は、ZigBee規格に従った通信プロトコルを担う。特に、中継器1001は、ZigBeeネットワークにおける論理デバイスのコーディネータとして動作するものとする。ZigBeeプロトコルスタック3112は、ZigBeeネットワークを形成し、その結果ネットワーク情報をネットワーク情報ベース他3113に保存する。また、当該ローカルノードにアソシエートされているデバイスの情報をアソシエートデバイスリスト3110に保存する。ネットワーク情報ベース他3113とアソシエートデバイスリスト3110は、RAMで保持されるとともに、NVRAMにも保存されているので、電源を切って入れ直しても情報が失われることはない。電源起動直後に、ネットワーク情報ベース他3113とアソシエートデバイスリスト3110は、保存されたNVRAMから読み込まれてRAMに展開される。ペアリングの結果、ネットワークに参加されたデバイスに関する情報はまずアソシエートデバイスリスト3110に保存される。
中継器1001の制御部1101(図3参照)は、ZigBeeマネージャ3121と、ZigBeeモニタライブラリ3122と、UART3123と、LED&スイッチ制御3124と、UDP/IP(User Datagram Protocol / Internet Protocol)ポート(ポート番号は固定する)と、Ethernet3125と、ZigBeeノード管理情報3126とを含む。ZigBeeマネージャ3121は、制御部1101に格納されているアプリケーションの1つである。
なお、制御部1101に格納される他のアプリケーションとして、タップ1004から電力情報を収集するための電力情報収集プログラム、また外部のHTTPクライアントから中継器を設定するためのHTTPサーバ、当該HTTPサーバから呼び出しされる設定用CGIアプリなどがある(図8に示す)。
ZigBeeマネージャ3121は、ネットワークZ上に存在しうるZigBeeのノードを管理する。具体的には、ZigBeeマネージャ3121は、ローカルノードである無線RF内蔵通信コントローラ部1106と、ローカルノードと通信可能なリモートノード(タップ1004などのZigBeeノード)を管理する。
リモートノードが、ネットワークにジョインして、ローカルノードにアソシエートされている状態であれば、当該リモートノードの生存情報を「生存」として管理する。リモートノードが、ネットワークからリーブして、ローカルノードにアソシエートされていない状態であれば、当該リモートノードの生存情報を「行方不明」として管理する。ZigBeeマネージャ3121は、定期的にアソシエートデバイスリスト3110を読み出すことによって、ZigBeeノード管理情報3126を更新する。さらに、ZigBeeマネージャ3121は、ZigBeeのノードに変化があった場合には当該変化を検知し、当該変化を他のアプリケーションに通知する。
それ以外にも、ZigBeeマネージャ3121は、ローカルノード及びリモートノードからZigBeeノードとしての一般的な情報(IEEE(Institute of Electrical and Electronics Engineers)アドレス、ショートアドレス、MAC能力、論理タイプなど)を取得して、また、ローカルノードからローカルノードにアソシエートされているデバイスの一覧や現在のネットワーク情報(PanIDや論理チャンネルなど)を取得して、ノード情報として管理する。ZigBeeマネージャ3121は、これらのZigBeeノードの管理情報をZigBeeノード管理情報3126に保存する。
図8は、中継器1001における別のアプリケーションのソフトウェア構造を説明する図である。
図8を参照して、中継器1001の制御部1101は、HTTPサーバ806と、TCP/IP807と、Ethernet(eth0)808と、設定用CGIプログラム803と、UDP/IP(User Datagram Protocol / Internet Protocol)ポート804(ポート番号は任意とする)と、Ethernet(eth0)805と、設定情報802と、電力情報収集プログラム809と、UDP/IPポート810(ポート番号は任意とする)と、Ethernet(eth0)811とを含む。
電力情報収集プログラム809は、ZigBeeマネージャ3121に問合せを行ない、ネットワークZ上に存在するノードの情報を得る。得られたノード情報のうち、ネットワークZ上にタップが存在していることが分かれば、各タップに対して電力情報を読み出すための要求パケットなどを送信する。電力情報収集プログラム809は、タップから読み出した電力情報を制御部1101内の不揮発性メモリ(図示しない)に保存する。
HTTPサーバ806は、外部のブラウザ(HTTPクライアント)から中継器1001を設定するための指示を受け付けて、設定用CGIプログラム803を呼び出す。
設定用CGIプログラム803は、中継器上の各種プログラムに影響を及ぼす設定を変更して、設定情報802に保存する。また、設定用CGIプログラム803は、設定情報802に保存されている情報を読み出して、HTTPサーバ806に応答を返す。
当該ソフトウェア構造により、貧弱な入力装置しか持たない中継器1001でも、複雑な設定を行なうことができる。
<F.アソシエートデバイスリストの構成>
図9は、ZigBeeプロトコルスタック3112が管理するアソシエートデバイスリスト3110を模式的に表す図である。図9は、アソシエートデバイスリスト3110に含まれるデータの一例である。図9を参照して、アソシエートデバイスリスト3110には、当該ローカルノードにアソシエートされている(関連付けられている)デバイスのアドレスインデックス、ショートアドレス、IEEEアドレス、ノード関係などが保存されている。
アドレスインデックスとは、アソシエートデバイスリストにおける順番を示す。アドレスインデックスは、ZigBeeプロトコルスタック3112が内部的に用いるだけである。
ショートアドレス(ネットワークアドレスとも称される)とは、一つのZigBeeネットワークにおいて、唯一性が保証される2バイトのアドレスである。ショートアドレスは、ノードがZigBeeネットワークに参加したときに、親(コーディネータまたはルータ)によって動的に割当てられる。通常、ショートアドレスがいったん割当てられれば変更されることはないが、別の新規ノードが参加したときなどにアドレス衝突することがあり、アドレス衝突を解消するためにショートアドレスが変更されることがある。
IEEEアドレス(拡張アドレスとも称される)とは、EthernetにおけるMACアドレスと同様に物理媒体の1つ1つに付与されるアドレスであって、全世界で唯一性が保証される8バイトのアドレスである。通常、意図的に変更されない限り不変である。
ノード関係とは、当該ローカルノードから見たノードの関係などを示す。例えば、0x04は、子ノードであって、FFD(Full Function Device)であり、かつ、RX_ON_IDLE(アイドル時に受信可能)であることを示す。
図9では、3つのノードがアソシエートされていることが示される。
<G.ZigBeeノード管理情報の構成>
図10は、ZigBeeマネージャ3121が管理するZigBeeノード管理情報3126におけるデータの格納の一態様を概念的に表わす図である。図10を参照して、ZigBeeノード管理情報3126は、ローカルノードの情報1110と、ノードの個数1120と、個々のノード情報1130とを含む。
ローカルノードの情報1110は、ローカルノードに固有の情報と、ローカルノードが参加するネットワークの情報のことである。たとえば、ローカルノードのIEEEアドレスと、ショートアドレスと、デバイスタイプと、デバイス状態と、アソシエートされているデバイスの個数と、アソシエートされているデバイスのショートアドレスと、ジョイン許可状態と、コーディネータ・IEEEアドレスと、コーディネータ・ショートアドレスと、PanIDと、論理チャンネルなどを含む。
・ローカルノードの情報
IEEEアドレス(拡張アドレスとも称される)とは、EthernetにおけるMACアドレスと同様に物理媒体の1つ1つに付与されるアドレスであって、全世界で唯一性が保証される8バイトのアドレスである。通常、意図的に変更されない限り不変である。ここでは、当該ローカルノードのIEEEアドレスを格納する。
ショートアドレス(ネットワークアドレスとも称される)とは、一つのZigBeeネットワークにおいて、唯一性が保証される2バイトのアドレスである。ショートアドレスは、ノードがZigBeeネットワークにジョインしたときに、親(コーディネータまたはルータ)によって動的に割り当てられる。通常、ショートアドレスがいったん割り当てられれば変更されることはないが、別の新規ノードがジョインしたときなどにアドレス衝突することがあって、その場合、アドレス衝突を防ぐためにショートアドレスが変更されることがある。また、ノードが別のZigBeeネットワークにジョインすれば、別のショートアドレスが割り当てられる。このように、ショートアドレスは変更されうる。なお、コーディネータのショートアドレスは、ZigBeeの規定によって0x0000と決まっている。ここでは、当該ローカルノードのショートアドレスを格納する。
デバイスタイプは、当該ローカルノードが担うことができる、ZigBee論理デバイスを示した1バイトの値である。ZigBee論理デバイスには、コーディネータと、ルータと、エンドデバイスと、がある。それぞれを1ビット(0x01,0x02、0x04)であらわして、当該デバイスが担うことができる論理デバイスをそれらの論理和で表現する。例えば、ルータとエンドデバイスのどちらにも成れるデバイスなら、そのデバイスタイプは「0x06」となる。なお、現在どのZigBee論理デバイスとして動作しているかは、別途後述する論理タイプで示される。
デバイス状態は、当該ローカルノードの現在の状態を表わす1バイトの値である。デバイス状態は、ZigBeeの論理デバイスとして動作するとき状態、たとえば、初期化中、PANに参加中、コーディネータとして起動した、などの状態を表す。
アソシエートされているデバイスの個数は、当該ローカルノードに関連付けられている(アソシエートされている)デバイスの個数を表す1バイトの値である。
アソシエートされているデバイスのショートアドレスは、当該ローカルノードに関連付けられている(アソシエートされている)デバイスのそれぞれのショートアドレスのことである。
ジョイン許可状態は、当該ローカルノードが新たなノードを受け付け可能な状態であるか否かを表わす1ビットの値である。
PanIDは、当該ローカルノードが現在参加しているネットワークの識別子を表す2バイトの値である。
論理チャンネルは、当該ローカルノードが参加しているネットワークの現在のチャネルを表わす1バイトの値である。
・ノードの個数
ノードの個数1120は、ローカルノードとリモートノードとの合計の個数である。たとえば、本実施の形態において上記の定義によれば、中継器1001に含まれる無線RF内蔵通信コントローラ部1106がローカルノードに相当する。一方、図1のタップ1004a,1004b,1004cがリモートノードに相当する。したがって、図1に示した例では、ノードの個数は(1+3より)「4」となる。
・個々のノード情報
個々のノード情報1130は、ローカルノードと各リモートノードの情報である。各ノ―ドから得られる情報と、ZigBeeマネージャ3121が管理のために付与する情報とがある。ノード情報1130は、たとえば、識別子と、IEEEアドレスと、ショートアドレスと、MAC(Media Access Control)能力と、論理タイプと、生存情報と、電源情報などを含む。
識別子とは、ノードを簡易的に識別できるようにするために、ZigBeeマネージャ3121が付与する2バイトの値である。ZigBeeマネージャ3121は新しいノードを見つけるごとに識別子をインクリメントして付与する。識別子はIEEEアドレスと1対1対応とする。つまり、同じIEEEアドレスのノードには同じ識別子が与えられる。逆に識別子からIEEEアドレスが一意に決定される。識別子=0のノードは、ローカルノードであることを保証する。あるノードをネットワークから離脱させても、そのノードの識別子は残ったままである。識別子は再利用されない。
MAC能力とは、当該ノードが保有する性質を示した1バイトの値である。例えば、コーディネータに成れるかどうか、物理デバイス種別(FFDかRFDか)、バッテリ電源か商用電源か、アイドル時に受信可能かどうか、などを示す。
論理タイプとは、当該ノードが現在どのZigBee論理デバイスとして機能しているかを示した1バイトの値である。コーディネータならば0x00、ルータならば0x01、エンドデバイスならば0x02となる。
生存情報とは、当該ノードがローカルノードに関連付けられている(アソシエートされている)かどうかを示す1ビットの値である。当該ノードがローカルノードに関連付けられているならば、生存情報=Trueとなり、当該ノードが「生存」しているという意味を表わす。一方、当該ノードがローカルノードに関連付けられていないならば、生存情報=Falseとなり、当該ノードが「行方不明」であることを意味する。当該ノードが電源オフになっても、当該ノードは「行方不明」にはならないことに注意する。生存情報は、あくまでも、当該ノードがローカルノードに関連付けらているかどうかを示す。
また、ZigBeeマネージャ3121は、LED&スイッチ制御3124を監視している。より詳細には、ZigBeeマネージャ3121は、プッシュボタン1108およびスライドスイッチ1109からの入力を監視し、ペアリング機能(ジョイン許可状態)およびリーブモードを制御する機能を持ち、その中継器の状態に応じて、LED1103(正確にはLED1103c)の発光を制御する。ZigBeeマネージャ3121は、サーバの形態をとっており、固定のUDPポート番号を開けて、他の機器からアクセスを受け付けて、ZigBee上位プロトコルと中継器発見プロトコルを提供する。
モニタライブラリ3122は、直接、UART3123とデータの遣り取りをすることにより、無線RF内蔵通信コントローラ部1106と通信をする。モニタライブラリ3122は、UART3123を通じてデータを無線RF内蔵通信コントローラ部1106と送受信する。なお、モニタライブラリ3122が発信するコマンドは、無線RF内蔵通信コントローラ部1106に対するものもあれば、タップ1004に対するものもある。
さらに、ZigBeeマネージャ3121は、ZigBeeノードの状態に変化があった場合には当該ノード状態変化を検出して、当該ノード状態変化を他のアプリケーションに通知する機能を持つ。
ZigBeeマネージャ3121は、ZigBeeノードの状態に変化があった場合には当該ノード状態変化を検出して、当該ノード状態変化を他のアプリケーションに通知する機能を持つ。具体的には、ZigBeeマネージャ3121は、以下のようなノード状態の変化を検出して、他のアプリケーションに通知する。
・“joined”(ノードがネットワークにジョインした)
・“removed” (ノードがネットワークからリーブした)
・“address-changed” (ノードのショートアドレスが変化した)
・“powered” (ノードの電源が投入された)
・“button-pressed”(ノードのボタンが押された)
・“unplugged”(ノードの電源が抜かれた)
<H.アドレス衝突時の説明>
図11〜図14を参照して、ZigBeePROにおいて、アドレス衝突時にどのようにアドレス衝突が検出され、解消されるかを説明する。ZigBeePROにおいては、親となるノードが新しく参加する子ノードに対して乱数でアドレスを割当てる(Stochastic Addressing)。これらは、ZigBeeプロトコルスタックにて行われる処理である。
まず、図11を参照して説明する。
(1)あるコーディネータにノードA、ノードB、ノードCがアソシエートされているものとする(そのコーディネータのアソシエートデバイスリストにノードA、ノードB、ノードCのノード情報が登録されている)。
(2)ここで、ノードXが新しく参加して、ノードBにアソシエートされたとする(ノードBはZigBeeルータとして動作している)。ノードXには、たまたまノードAと同じショートアドレス(=0x1234)が割当てられたとする。ノードXは参加したことを通知するため、"Device Annce"(以下、デバイスアンスとも呼ぶ)をブロードキャストで送信する。デバイスアンスには、当該ノードのIEEEアドレス、ショートアドレスおよびMAC能力が含まれる。
次に、図12を参照して説明する。
(3)ノードXのデバイスアンスを受信した各ノードは、アドレスが衝突したことを検出する(異なるIEEEアドレスである2ノードが同一のショートアドレスを持つ)と、各ノードはアドレス衝突検出通知をブロードキャストで送信する。具体的には、Network Status(Status.Code=0x0D, Dest.Addr=0x1234)を送信する。図12では、コーディネータ、ノードAおよびノードCがそれぞれアドレス衝突を検出して、アドレス衝突検出通知を送信する。(すべてのノードが、アドレス衝突検出通知を送信するとは限らない。)
最後に、図13を参照して説明する。
(4)ノードがルータ動作のとき、アドレス衝突検出通知を受信した各ノードは、自身のショートアドレスが衝突したと判断すると、自身のショートアドレスを変更して、再度デバイスアンスをブロードキャストで送信する。ノードがエンドデバイス動作のとき、そのノードの親が再度ショートアドレスを割当てる。コーディネータは、ノードAからのデバイスアンスを受信すると、アソシエートデバイスリストを更新する。
図13にあるように、既存のノードAと新規に参加したノードXとの両方において、ショートアドレスが変更される。ショートアドレスが変更された結果、また別のノードと衝突することもあり得るが、その場合は上記のプロトコルが繰り返される。さらなる衝突がなければ、これで終わる。
このように、ZigBeePROにおけるアドレス衝突解決の手法は、単純でありながら強力であると言える。ただ問題点があるとすれば、ブロードキャスト送信が多く発生することである。一度アドレス衝突が発生すれば、少なくとも4回のブロードキャスト送信が発生する。ここでのブロードキャスト送信は、ブロードキャスト半径が30なので、各ルータが中継して再送信される。一時的に、ネットワーク上にブロードキャストのパケットが飛び交うことになる。
また、アドレス衝突が発生すると、既存ノードと新しく参加したノードとが、それぞれ独立してショートアドレスを変更する。ショートアドレスが変更されたノードは、デバイスアンスをブロードキャストで送信するが、それは1回だけである。このとき、たまたまネットワーク環境が悪いと、コーディネータはデバイスアンスを取りこぼすことがありえる。コーディネータは、デバイスアンスを取りこぼすと、子ノードのショートアドレスが変更されたことに気づかないので、アソシエートデバイスリストをすぐに更新できないことになる。
さて、親(コーディネータまたはルータ)が、新しく参加するノードにショートアドレスを割当てるとき、その親に登録されているデバイス(アソシエートされているデバイス)のショートアドレスを避けてアドレスを割当てようとする。よって、親が唯一であれば(ジョイン許可するノードが唯一であれば)、アドレス衝突は発生しないと考えられる。ところが、あるケースでは親が唯一であってもアドレス衝突が発生しうる。
図14を参照して、親が唯一であるときでもアドレス衝突が発生することを説明する。図14は、図11からノードCが不完全にリーブされた後の状態を示す。図14において、唯一の親とはコーディネータのことである。不完全にリーブされた状態とは、親からは子ノードに関する情報が消えているが、子ノードには親のネットワーク情報が残っている状態のことである。子ノードの電源が抜かれているときに、親から当該子ノードをリーブさせるとこのような状態になる。不完全にリーブされた子ノードは、親のネットワーク情報とともに自身のショートアドレスも保持されたままとなる。
このとき、ノードXが新しく参加してコーディネータにアソシエートされたとする。コーディネータは、たまたまノードCと同じショートアドレス(=0x9abc)を割当てることがありえる。この状態でノードCの電源を再度入れると、アドレス衝突が発生する。このように、親が唯一であってもアドレス衝突は発生しうる。アドレス衝突が発生すれば、それを解消しようとして、アドレス衝突したノードのショートアドレスが変更される。
それ以外にも、子ノードの論理デバイスが変わるときに(例えばルータからエンドデバイスに切り替わったとき)、アドレスが変更されることがある。
<I.アソシエートデバイスリスト更新の説明>
さて、ある子ノードのショートアドレスが変更されたとき、親ノードはアソシエートデバイスリストをすぐに更新すべきであるが、どのタイミングでアソシエートデバイスリストを更新するかを説明する。アソシエートデバイスリストを更新するタイミングは少なくとも、以下の(1)、(2)および(3)の3つある。これらは、ZigBeeプロトコルスタック3112にて実施される処理である。
(1)デバイスアンスを受信したとき
先に述べたように、子ノードは自身のショートアドレスを変更すると、デバイスアンスを送信する。親ノードは子ノードからデバイスアンスを受信できればアソシエートデバイスリストを更新する。デバイスアンスは、ブロードキャスト送信されるが、ブロードキャスト半径が30なので、親ノードと子ノードが1ホップで届かない距離にあっても、到達しうる。ただし、先に述べたように、デバイスアンスは変化があったときの1回しか送信されない。たまたまこのタイミングでネットワーク環境が悪いと、親ノードはデバイスアンスを取りこぼすことがありえる。
(2)リンクステータスを受信したとき
ZigBeePROにおいては、各ノードは定期的に(約15秒に1回)NWK Link Status(以下、リンクステータス)を通知している。非特許文献1(A.7 Symmetric Routes and Link Status)を参照のこと。
リンクステータスとは、各ノードが隣接ノードに対して、当該ノードが受信可能なノードのリンク品質を通知するためのパケットである。隣接するノードというのは、1ホップで届くノードのことである。リンクステータスを定期的に通知するのは、ルーティング経路を決定するとき、非対称的なリンク(asymmetric link)を避けるためにある。なお、非対象的なリンクとは、片方向の通信は良好であるが、その逆方向の通信は困難であるリンク(経路)のことである。無線ではしばしばこのようなリンクが存在する。ZigBeePROにおいては、非対象的なリンクを避けるようにルーティング経路が決定される。つまり、任意の2ノード(ノードAとノードB)間の通信において、ノードAからノードBへの通信と、ノードBからノードAへの通信の両方において同じルーティング経路となるように決定される。
リンクステータスはブロードキャストで送信されるが、ブロードキャスト半径が1なので、1ホップしか届かない。親ノードは子ノードのリンクステータスを受信できれば、アソシエートデバイスリストを更新する。親ノードと子ノードが1ホップで届く位置に存在すれば、親ノードはアソシエートデバイスリストを更新できる。また、リンクステータスは各ノードから定期的に発信されるので、親ノードはリンクステータスを取りこぼしても、それ以降のリンクステータスを受信できるであろう。
しかし、親ノードと子ノードが2ホップ以上離れた位置に存在すれば、親ノードは子ノードのリンクステータスを受信できず、アソシエートデバイスリストを更新できない。
また、各ノードは、当該ノードから1ホップで届く位置にあるノードの情報をNeighbor table(以下、隣接テーブルと呼ぶ)として管理している。隣接テーブルには、当該ノードに隣接するノードのIEEEアドレス、ショートアドレス、LQI(Link Quality Index=リンク品質指数)などが含まれる。各ノードは、隣接ノードからリンクステータスなどを受信すると、隣接テーブルを最新の状態に更新する。
また、コーディネータなどの任意ノードは、各ノードに対して、当該ノードにおける隣接テーブルの内容(周辺ノードとそれに対するリンク品質指数など)を問合せることができる。問合せには、後述するLQI問合せコマンド(Mgmt_Lqi_req)を使う。
(3)ルートリプライを受信したとき
ZigBeeにおいては、各ノードは最終宛先ノードへパケットを送信するためのルーティング経路情報を「ルーティングテーブル」に保持する。ルーティングテーブルに保持されていない最終宛先ノードに対してパケットを送信しようとするときは、パケット送信に先立ち、ルート探索が行われる。詳細な説明は省くが、ルート探索では、Route Requestを送信して、Route Reply(以下、ルートリプライ)を受信する。ここで、親ノードは、子ノードからルートリプライを受信するとアソシエートデバイスリストを更新する。
<J.隣接テーブルの説明>
図15は本実施の形態に係る隣接テーブルの一部を抜粋して示す図である。図15には、あるノードのRAM2123に格納される隣接テーブル2142が例示される。
図15を参照して、隣接テーブル2142には当該ノードにおける隣接ノード(1ホップで届くノード)の一覧情報が含まれる。
ノード情報には、少なくとも、Extended PanID(拡張PanID)、Extended address(IEEEアドレス)、Network Address(ショートアドレス)、Device Type(論理デバイス)、LQI(リンク品質指数)が含まれる。
隣接テーブル2142には、この他にも、RxOnWhenIdle(アイドル時に受信可能か)、Relationship(ノード関係)などが含まれるが、図15では図示を略している。
また、Extended address(IEEEアドレス)は、当該アドレスを取得できない場合には、"ff:ff:ff:ff:ff:ff:ff:ff"を示す(未知であることを示す)。
図15によると、当該ノードには隣接ノードが3台あり、内1台はコーディネータであることが分かる。他の2台はルータであることが分かる。
すべてのノードは、図15のような隣接テーブル2142(周辺ノード情報)を保持し、管理している。また、コーディネータなどの任意ノードは、LQI問合せコマンド(Mgmt_Lqi_req)を使って、各ノードに対して、隣接テーブル2142の内容を問合せることができる。
なお、本実施の形態では、隣接テーブル2142はRAM(ただし、NVRAM(Non Volatile RAM)ではない)に格納される。また、隣接テーブル2142を保持し、管理するのはルータとコーディネータだけである。エンドデバイスは隣接テーブルを管理していない。
<K.隣接テーブルの更新>
図16は、ショートアドレスの変更隣接テーブルの更新を模式的に説明する図である。これは、ZigBeeプロトコルスタック3402などで実施される処理である。
図16を参照して、タップ1004a(ショートアドレス=0x845f)に着目すると、隣接ノードには、タップ1004b(ショートアドレス=0x3e9d)と、タップ1004c(ショートアドレス=0x1715)がある。しかしながら、中継器1001内の無線RF内蔵通信コントローラ部1106(ショートアドレス=0x0000)とは隣接ノードではない。(1ホップでは届かない距離にある。)
ここでタップ1004aのショートアドレスが0xee9bに変更されたとする。この場合、タップ1004c(ショートアドレス=0x1715)は、デバイスアンスを受信したときか、リンクステータスを受信したときに、自己の隣接テーブル2142を更新できる。
先ほど述べたように、デバイスアンスは1回だけしか発信されないので、タップ1004cは、デバイスアンスを取りこぼす可能性はある。しかしながら、リンクステータスは定期的に発信されるので、タップ1004cは、高い確率でリンクステータスを受信でき、よって、隣接テーブル2142を更新することができる。図16では、タップ1004aとタップ1004cは1ホップで届く範囲に存在するので、タップ1004cはタップ1004aから発信されるリンクステータスを受信することできる。
図15の隣接テーブル2142で説明すると、上記の更新により、ショートアドレス0x845fは0xee9bに変更される(図15の隣接テーブル2142の上から4行目を参照)。
中継器1001内の無線RF内蔵通信コントローラ部1106(ショートアドレス=0x0000)から見れば、タップ1004aは1ホップで届かない位置に存在している。このような場合、デバイスアンスを取りこぼすと、アソシエートデバイスリストを更新できなくなる。タップ1004aから定期的に発信されるリンクステータスも受信できないためである。
上記のままであれば、アソシエートデバイスリスト3110はいつまでも更新されない恐れがある。そこで、中継器1001上のZigBeeマネージャ3121(ノード情報管理プログラム)は、以下のことを行う。
・ ZigBeeマネージャ3121は、タップ1004cなどにLQI問合せを行う。
・ ZigBeeマネージャ3121は、タップ1004cなどの隣接テーブルを取得する。取得した隣接テーブルから、未知のショートアドレス(0xee9b)を見つける。(ZigBeeノード管理情報3126に載っていないショートアドレスがあれば未知であると判断する。)
・ ZigBeeマネージャ3121は、未知のショートアドレスを宛先アドレスにして、何らかのパケットをネットワークZに送信する。
・ ルーティングテーブルに保持されていない最終宛先ノードに対してパケットを送信しようとしたので、ZigBeeプロトコル3112によってルート探索が行われ、ショートアドレス(0xee9b)からルートリプライを受信する。その結果、ZigBeeプロトコル3112は、アソシエートデバイスリスト3110を更新できる。
<L.ノード管理プログラムの説明>
中継器1001上のZigBeeマネージャ3121(ノード情報管理プログラム)は、ノード情報を管理するために以下の(1)と(2)を行なう。
(1)定期的にローカルノードからアソシエートデバイスリスト3110を取得し、取得したアソシエートデバイスリスト3110を用いてZigBeeノード管理情報3126を更新する(これをアソシエートサーチと称する)。
図17を参照して、アソシエートサーチ処理について説明する。図17は、ZigBeeマネージャ3121によって実行される処理の一部を表すフローチャートである。
ステップS1810にて、ZigBeeマネージャ3121は、ローカルノードのアソシエートデバイスリストを取得する。具体的には、ZigBeeマネージャ3121は、アソシエートされているデバイスの個数と、アソシエートされているそれぞれのデバイスのデバイス情報(ショートアドレス、ノード関係、IEEEアドレス)と、を得ることができる。
ステップS1820にて、ZigBeeマネージャ3121は、アソシエートデバイスリストと、ZigBeeマネージャ3121の管理するノード情報(1420および1430)とを比較する。
アソシエートデバイスリストと、ZigBeeマネージャ3121の管理するノード情報(1420および1430)との間に齟齬があれば、ステップS1830にて、ZigBeeマネージャ3121は、ノード管理情報を更新する。
具体的には、以下のような処理がある。
(a)
アソシエートデバイスリストで得られたノードのうち、ZigBeeマネージャ3121の管理するノード情報には存在しないノードがあれば、ZigBeeマネージャ3121は、新規ノードが参加(ジョイン)されたことを検出する。
ZigBeeマネージャ3121は、ZigBeeマネージャ3121の管理するノード情報に、新規ノードを追加して、生存情報を生存にセットする。
この場合、ZigBeeマネージャ3121は、さらなる探索(リモートサーチ)を実施して、当該リモートノードからさらなる情報(MAC能力、論理タイプなど)を得る。
(b)
アソシエートデバイスリストで得られたノードのうち、ZigBeeマネージャ3121の管理するノード情報には存在するが、ショートアドレスが異なる場合、ZigBeeマネージャ3121は、既存ノードのショートアドレスが変更されたことを検出する。この場合、ZigBeeマネージャ3121は、さらなる探索(リモートサーチ)を実施して、当該リモートノードからさらなる情報(MAC能力、論理タイプなど)を得る。
(c)
ZigBeeマネージャ3121の管理するノード情報には存在するが、アソシエートデバイスリストには存在しないノードがある場合、ZigBeeマネージャ3121は、既存ノードが離脱(リーブ)されたことを検出する。ZigBeeマネージャ3121は、当該リモートノードの生存情報を「行方不明」にセットする。
なお、ZigBeeマネージャ3121は、(a)、(b)、(c)のいずれかを検出すれば、ノード情報に変化があったものとして、当該変化を他のアプリケーションに通知する。
以上により、ZigBeeマネージャ3121は、アソシエートサーチを終了する。
(2)定期的にすべての生存リモートノードに対してLQI問合せを行ない、未知のショートアドレスを見つければ、そのショートアドレスを宛先アドレスにして何らかのパケット(例えば、IEEE_addr_req)を送信する(これをLQIサーチと称する)。
未知のショートアドレスに対して、何らかのパケットを送信しようとするとき、パケット送信に先立ち、ルート探索が行われる。その結果、当該未知のショートアドレスを持つノードからルートリプライを受信することができる。ルートリプライを受信することによって、ローカルノードのアソシエートデバイスリスト3110が最新情報に更新される。
よって、アソシエートサーチとLQIサーチとを定期的に実施することで適切にノード情報を管理することができる。
<M.LQIサーチ>
図18は、LQIサーチの処理を表すフローチャートである。図18を参照してLQIサーチを説明する。
まず、ステップS3において、ZigBeeマネージャ3121は、すべての生存リモートノードに対して、LQI問合せのパケットを送信する。なお、LQI問合せパケットとは、ZigBee規格にあるMgmt_Lqi_reqのことである。
ステップS5において、ZigBeeマネージャ3121は、リモートノードからLQI問合せの応答パケットを受信する。(ステップS3のLQI問合せに対する応答パケット)なお、LQI問合せの応答パケットとは、ZigBee規格にあるMgmt_Lqi_rspのことである。LQI問合せの応答パケットには、当該パケット送信元ノードの隣接テーブル2142の情報が含まれる。
ステップS7において、ZigBeeマネージャ3121は、リモートノードからLQI問合せの応答パケットを受信すると、当該応答パケットに含まれるショートアドレスを集計する。1以上のリモートノードからLQI問合せの応答パケットを受信するので、重複するショートアドレスを削除する。
ステップS9において、ZigBeeマネージャ3121は、未知のショートアドレスがあるか否かを判定する。具体的には、ステップS7において集計されたショートアドレスの中に、ZigBeeノード管理情報3126に存在しないショートアドレスがあるかどうかを判定する。
未知のショートアドレスがないと判定されると(ステップS9でNO)、LQIサーチは終了する。
未知のショートアドレスがあると判定されると(ステップS9でYES)、ステップS11において、ZigBeeマネージャ3121は、未知のショートアドレスを宛先アドレスにして何らかのパケットを送信する。例えば、ショートアドレスをキーにしてIEEEアドレスを取得するため要求パケット(IEEE_addr_req)を送信する。なお、IEEE_addr_reqに限らず、未知のショートアドレスを宛先アドレスにするようなパケットを送信すればよい。
無線RF内蔵通信コントローラ部1106(ZigBeeプロトコルスタック3112)は、上述の要求パケットをネットワークZに送信するが、最終宛先アドレスが未知な(ルーティングテーブルに保持されていない)ので、パケット送信に先立ち、ルート探索が行われる。ルート探索では、Route Request パケットを送信して、Route Reply (ルートリプライ)を受信する。しかるのち、ルーティング経路が決定され、上述の要求パケットは最終宛先アドレスのノードに届けられることになる。なお、Route Reply (ルートリプライ)を受信することで、ローカルノードのアソシエートデバイスリスト3110が更新されうる。
以上により、LQIサーチは終了する。
上述のLQIサーチにより、アソシエートデバイスリスト3110は、ノードのショートアドレスが変更された場合に、確実に最新の情報に反映される。また、上述のアソシエートサーチにより、ZigBeeノード管理情報3126は、アソシエートデバイスリスト3110と齟齬がないように更新されるので、同様に最新の情報に反映される。
<N.中継器1001の概略処理>
図19は、本発明の実施の形態に係る中継器1001のZigBeeマネージャ3121が実行する処理を示す図である。図19を参照して、ZigBeeマネージャ3121は、ZigBeeノード管理情報3126を、最新の情報に更新するために、全体処理T1を実施する。全体処理T1はLQIサーチT11と、アソシエートサーチT12を含む。
LQIサーチT11、アソシエートサーチT12については先に説明した通りである。
本実施の形態では、中継器1001のZigBeeマネージャ3121は、LQIサーチT11を実行してからアソシエートサーチT12を実行する。これら処理は定期的に繰返し実行される。例えば、3分間隔でLQIサーチT11とアソシエートサーチT12とを実行するものとする。あるいは、LQIサーチT11とアソシエートサーチT12とを別々のタイミングで実施してもよい。例えば、10分間隔でLQIサーチT11を実行し、3分間隔でアソシエートサーチT12を実行する。
<O.各部の機能構成>
(制御部1101の機能)
図20は、制御装置(中継器)1001の機能構成を示す図である。図20を参照して、制御装置(中継器)1001は、本体制御部(制御部)1101と、通信制御部(無線RF内蔵通信コントローラ部)1106と備える。本体制御部(制御部)1101は、ノード管理情報(ZigBeeノード管理情報)3126と、LQIサーチ実行部11と、アソシエートサーチ実行部12とを備える。通信制御部(無線RF内蔵通信コントローラ部)1106は、アソシエートデバイス情報(アソシエートデバイスリスト3110)と、送信部15と、受信部16とを備える。
本体制御部(制御部)1101は、ネットワークZ上に存在するノード情報を管理する。通信制御部(無線RF内蔵通信コントローラ部)1106は、ネットワークZの通信プロトコルを制御する。通信制御部(無線RF内蔵通信コントローラ部)1106は、送信部15と受信部16を用いて、ネットワークZ上に存在する複数のノード(タップ)1004と通信する。
本体制御部(制御部)1101と、通信制御部(無線RF内蔵通信コントローラ部)1106とは、非同期通信I/F(UART)3123で接続されている(図20には図示しない)。本体制御部(制御部)1101は、通信制御部(無線RF内蔵通信コントローラ部)1106に書き込みする(送信する)ことによって、ネットワークZ上の任意のノード(タップ)1004へパケットを送信できる。また逆に、通信制御部(無線RF内蔵通信コントローラ部)1106から読み出す(受信する)ことによって、ネットワークZ上のノード(タップ)1004から応答パケットを受信できる。
ノード管理情報(ZigBeeノード管理情報)3126には、通信制御部(無線RF内蔵通信コントローラ部)1106とネットワークZ上に存在する複数のノード(タップ)1004の情報が含まれる。具体的には、ネットワークZにおけるアドレス(ショートアドレス)情報が含まれる。さらには、ネットワークZへの参加または離脱を示す生存情報が含まれる。
本体制御部(制御部)1101は、LQIサーチ実行部11(LQIサーチ)とアソシエートサーチ実行部12(アソシエートサーチ)を繰り返し実行する。
(1)LQIサーチ
本体制御部(制御部)1101は、ノード管理情報(ZigBeeノード管理情報)3126を参照して、ネットワークZに参加している複数のノード(タップ)1004の各々に対して隣接テーブルを要求する問合せパケットを送信する。
本体制御部(制御部)1101は、複数のノード(タップ)1004から隣接テーブルを受信して集計する。その集計された隣接テーブルの中に、ノード管理情報(ZigBeeノード管理情報)3126には含まれない未知のアドレスがあるかどうかを調べる。そして未知のアドレスがあれば、そのアドレスを宛先アドレスとしてパケットを送信する。
上述のLQIサーチを実施することにより、本体制御部(制御部)1101は、ネットワークZに参加している既存ノードのアドレスが変化した場合に、その変化を確実にアソシエートデバイス情報(アソシエートデバイスリスト)3110に反映させることができる。
(2)アソシエートサーチ
本体制御部(制御部)1101は、アソシエートデバイス情報(アソシエートデバイスリスト)3110を読み出し、ノード管理情報(ZigBeeノード管理情報)3126と齟齬がないかを比較する。齟齬があれば、ノード管理情報(ZigBeeノード管理情報)3126を最新の情報に更新する。
上述のLQIサーチとアソシエートサーチを繰り返し実行することにより、本体制御部(制御部)1101は、ネットワークZ上に存在するノードの変化を検出して、ノード管理情報(ZigBeeノード管理情報)3126を最新の情報に反映させることができる。より具体的には、
(a)新規ノードがネットワークZに参加したこと
(b)既存ノードのアドレス(ショートアドレス)が変化したこと
(c)既存ノードがネットワークZから離脱したこと
の変化を検出する。また、これらの変化を他のアプリケーションに通知するように構成することも可能である。
図7に示す各部の機能は、メモリに予め格納されたプログラムをCPUが読出し、実行することにより実現されると想定する。なお、これら機能は、プログラムのみならず、プログラムと高速通信インターフェイス部1104などの通信回路との組合わせにより実現することもできる。
<P.実施の形態の効果>
上述した実施の形態によって、ノードのショートアドレスが変更されたときにも、その変更を確実にノード情報に反映させることができるようなノード情報管理プログラムを備えた制御装置を提供することができる。
<Q.変形例>
(QQ1.第1の変形例)
次に、中継器1001の代替構成について説明する。図21は、ネットワークZの制御装置としてタブレット端末を用いた場合における、ネットワークの概略構成を示した図である。具体的には、図21は、中継器1001、パーソナルコンピュータ1003、およびタブレット端末1008の代わりに、タブレット端末1009を用いたネットワークZの構成を示した図である。
図21を参照して、ネットワークZは、タブレット端末1009と、ワイヤレスブロードバンドルータ1002と、複数のタップ1004a,1004b,1004cと、複数の家電機器(エアーコンディショナ1005,冷蔵庫1006,テレビ1007など)とを備える。また、タブレット端末1009と、複数のタップ1004と、複数の家電機器1005〜1007とにより、低速無線通信ネットワークZを構成する。タブレット端末1009は、ワイヤレスブロードバンドルータ1002とWiFi等の高速無線通信により接続される。
図22は、タブレット端末1009のブロック図である。タブレット端末1009は、制御部1901と、操作部1902と、表示部1903と、高速通信インターフェイス部1904と、電源部1905と、低速無線通信モジュール1906と、アンテナ1907とを備える。
操作部1902は、操作キー、タッチセンサ等の入力デバイスである。表示部1903は、液晶ディスプレイ等の出力デバイスである。高速通信インターフェイス部1904は、ワイヤレスブロードバンドルータ1002との間で無線通信を行なうためのインターフェイスである。電源部1905は、制御部1901と低速無線通信モジュール1906とに電力を供給する。
制御部1901は、操作部1902、表示部1903と、高速通信インターフェイス部1904と、電源部1905と、低速無線通信モジュール1906とに接続されている。制御部1901は、タブレット端末1009の全体的な動作を制御する。制御部1901は、操作部1902からの入力を受け付ける。また、制御部1901は、表示部1903に出力指示を出す。
より詳しくは、制御部1901は、CPUと、RAMと、ROMと、UARTと、GPIOとで構成される。RAMと、ROMと、UARTと、GPIOとは、それぞれ、CPUに接続されている。
低速無線通信モジュール1906は、アンテナ1107と接続されている。低速無線通信モジュール1906は、低速無線通信ネットワークZにおける消費電力測定器との間の通信を制御する。低速無線通信モジュール1906は、CPUと、RAMと、ROMと、UARTと、GPIOと、無線RF(Radio Frequency)部で構成される。RAMと、ROMと、UARTと、GPIOとは、それぞれ、CPUに接続されている。
タブレット端末1009は、以上のような構成を有することにより、中継器1001とパーソナルコンピュータ1003とタブレット端末1008を用いた構成の場合と同様の効果を奏する。
(RR2.第2の変形例)
上記においては、パーソナルエリアネットワークとしてZigBeeを例に挙げて説明し、プロトコルもこれに準じたものを説明したが、これに限定されるものではない。パーソナルエリアネットワークとして、マルチホップをサポートするような他の通信方式にも適用することができる。
<他の実施の形態>
本発明における中継器1001が行なう通信によるタップのショートアドレスを含む情報の収集方法は、プログラムとして提供することもできる。このようなプログラムは、コンピュータ(無線RF内蔵通信コントローラ部1106)に付属するCD−ROM、ROM、RAMおよびメモリカードなどのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵する記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークZまたはEを介したダウンロードによって、プログラムを提供することもできる。
提供されるプログラム製品は、各種記録媒体などのプログラム格納部にインストールされてCPUにより読出されて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
今回開示された実施の形態は例示であって、上記内容のみに制限されるものではない。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。