5 シリアルポートコマンドのフォーマットと設定モード
5.1 シリアルポートコマンドのフォーマット#
本ZigBee®互換モジュールのシリアルポートは全二重シリアルポートです。実際の使用では大量のデータのやり取りがあるため、シリアルポート経由の通信は、入力・出力を問わずすべて表 4に示すコマンドフレーム形式で行われ、フレームの整合性を保証するためのメカニズムが備わっています。外部MCUから本モジュールに送信されるコマンドは、必ず完全なフレーム構造を持っている必要があります。また、ZigBee®ネットワーク上では、外部から本モジュールに届くメッセージはタイミングや内容が多様で予測が難しいため、本モジュールのシリアルポート(TX)からも随時データが出力される可能性があります。ただし、これらの出力もすべてフレーム構造に則った形式で出力され、ペイロードの内容が多様であっても、出力自体は整ったフレーム形式で出力されます。
表 4 コマンドフレーム構造
| 名前 | フレームヘッダ | フレーム長 | フレームロード |
| バイト数 | 1 | 1 | 可変長 |
フレームヘッダ:
コマンドの開始位置で、0x55
フレーム長:
フレームのロード長で、最大値は255
フレームロード:
シリアルポートフレームの有効データ(チェックコードを含む)
本モジュールがフレーム長と同じバイト数のフレームロードを受信すると、完全なコマンドフレームとして受信が完了
コマンドモード
本ZigBee®互換モジュールには、入力コマンド、フィードバックメッセージ、非同期メッセージの3つのコマンドモードがあります。
入力コマンド
完全なコマンドフレームとして本モジュールに入力されたコマンドフレームです。フィードバックメッセージ
本モジュールは、入力コマンドを受信すると、各コマンドに対応するフィードバックメッセージを生成します。原則として、コマンド入力後は、本モジュールからのフィードバックメッセージを待つ必要があります。なお、本モジュールは連続するコマンドフレームに対しても動作可能なフォールトトレラント設計となっており、複数のコマンドを続けて入力した場合でも、それぞれのコマンドに対するフィードバックが順次返されます。このため、フィードバックメッセージが連続して出力されることがあります。フィードバックメッセージの待ち時間は本モジュール内蔵SoCの処理時間により、最大で10秒程度かかる場合があります。非同期メッセージ
本モジュールから外部MCUに送信されるコマンドのうち、非同期メッセージは、入力コマンドと因果関係がある場合とない場合があります。これらはモジュール内部の状態やネットワーク状況などに依存して発生するため、発生タイミングは一定ではありません。
表 5 フレームロード構造とシリアルポートコマンド
| 名前 | フレームロード | |||
| コマンドタイプ | コマンドコード | コマンドデータ / メッセージデータ | チェックコード | |
| バイト数 | 1 | 1 | 0~252 | 1 |
コマンドタイプ:
コマンドモードと動作メカニズムによる分類コード。入力コマンド、フィードバックメッセージは0x00~0x7Fの範囲、非同期メッセージは0x80~0xFFの範囲。
コマンドコード:
コマンドの個別コード(1バイト)
コマンドデータ/メッセージデータ:
コマンド実行/メッセージの追加パラメータ(0~252バイト)
チェックコード:
チェックコード部分を除くフレームロードのXOR8チェックサム(1バイト)
フレームロードサイズの範囲:
各コマンドにはコマンドタイプ、コマンドコード、チェックコードが含まれるため、フレームロードは最小で3バイト、最大で255バイトです。
シリアル通信の連続処理
本ZigBee®互換モジュールのTX(出力)ポートは、フィードバックメッセージや非同期メッセージなどを、非常に短い時間内に連続して出力することがあります。外部MCUはシリアルポートからコマンドを受信した際、それらを「フレームヘッダ」「フレーム長」「フレームロード」といった一連のフォーマットに従って解析し、完全な形式のフレームロードを抽出して処理する必要があります。TXポートから出力されるコマンドは、表 4に示したコマンドフレーム形式に則っており、フレームロードの最後のチェックコードまでを途切れずに出力します。そのため、外部MCUでのコマンド処理の実装例として、次のコマンドが5ミリ秒以内に受信されない場合にタイムアウトと判断し、以後は新たなフレームヘッダからのコマンド受信およびフレームロードの抽出処理を行う、という実装が可能です。
5.2 コマンドとメッセージの種類#
本モジュールで使用するコマンド、メッセージの種類については、次のとおりです。
表 6 コマンドおよびメッセージの種類一覧
| コマンドモード | コマンドタイプ | ディスクリプタ | コマンドタイプ名 |
|---|---|---|---|
| 入力コマンド / フィードバックメッセージ | 0x00 | TYPE_CFG | ローカル構成コマンド |
| 0x01 | TYPE_ZDO_REQ | ネットワーク管理コマンド | |
| 0x02 | TYPE_ZCL_SEND | デバイスステータスと制御コマンド | |
| 非同期メッセージ | 0x80 | TYPE_NOTIFY | システム通知メッセージ |
| 0x81 | TYPE_ZDO_RSP | ネットワーク管理応答 | |
| 0x82 | TYPE_ZCL_IND | 受信デバイスのステータスと制御 | |
| 0x8F | TYPE_SEND_CNF | 送信確認メッセージ |
「入力コマンド」と「非同期メッセージ」の因果関係
非同期メッセージTYPE_NOTIFYは、入力コマンドTYPE_CFGに起因して生成されます。ただし、TYPE_CFGコマンドが必ずしもTYPE_NOTIFYを伴うとは限りません。
非同期メッセージTYPE_ZDO_RSPは、入力コマンドTYPE_ZDO_REQに起因して生成されます。ただし、TYPE_ZDO_REQコマンドが必ずしもTYPE_ZDO_RSPを伴うとは限りません。
非同期メッセージTYPE_ZCL_INDは、入力コマンドTYPE_ZCL_SENDに起因して生成されます。ただし、TYPE_ZCL_SENDコマンドが必ずしもTYPE_ZCL_INDを伴うとは限りません。TYPE_ZCL_INDに含まれるパラメータ「コマンドID」が、TYPE_ZCL_SENDのコマンドIDと一致する場合、その非同期メッセージは当該入力コマンドに起因して生成されたものであると判断できます。
非同期メッセージTYPE_SEND_CNFは、有効なTYPE_ZDO_REQまたはTYPE_ZCL_SENDコマンドが入力されるたびに生成されます。TYPE_SEND_CNFは送信状況を外部MCUに通知する役割を持っており、これにより外部MCUは送信完了を待機することなく、非ブロッキングで処理を継続できます。この非同期通知により、一時データの保持や送信待ちによる処理の停滞を回避できるため、特に複数のターゲットに連続して送信を行うケースにおいて有用です。各送信の完了を待たずに次の送信を開始できるため、効率的な送信制御が実現されます。
なお、TYPE_ZDO_REQおよびTYPE_ZCL_SENDはいずれも無線通信を伴うコマンドであるため、無線伝送における遅延や順序の乱れが発生する可能性があり、その影響が対応する非同期メッセージに現れることがあります。
図 22 シリアルポートコマンド3レイヤーの応答の概略図
シリアルコマンドを入力すると、コマンドは最初に本モジュール内蔵SoCのMCUで処理されます。このモジュールが正常に動作している場合は、1~2ms程度遅れてフィードバックメッセージを出力します。フィードバックメッセージがあることは本モジュールが正常に動作していることを示します。フィードバック結果は表 14 AFステータスのとおりです。
本モジュールが正常に動作している場合、シリアルコマンドは無線信号に変換され、ZigBee®通信を通じて送信されます。ZigBee®は通信速度が遅いため、信号がターゲットデバイスに届くまでに「遅延2」(図 22参照)の待機時間が発生します。信号がターゲットデバイスまで送信されたかどうかに関わらず、送信状況を通知するための送信確認メッセージが生成されます。この「遅延2」には、信号の送信処理、ルート経由の転送、再送信などが含まれ、時間にはばらつきがあり、最短で数ミリ秒、最長で20秒程度かかる場合があります。送信確認の結果は、表 14 AFステータスの通りです。
信号がターゲットに送信されると、ターゲットは処理結果のメッセージを返します。「遅延3」(図 22参照)には、対向デバイスの信号送信の遅延、およびFLASHの読み書きやセンサーの駆動、周辺機器のその他の動作など、対向デバイスの信号処理の遅延が含まれます。このメッセージの結果については、表 16 ZCLステータスを参照してください。
5.3 コマンドコード#
本モジュールで使用するコマンドコードについては、次の各表(表 7〜表 13)とおりです。
表 7 ローカル設定コマンド
| コマンドコード | ディスクリプタ | コマンド名 |
|---|---|---|
| 0x00 | CFG_STATUS | 現在のモジュール状態を照会 |
| 0x02 | CFG_OPEN_NET | ネットワークを開く/ ネットワーク接続を開始 |
| 0x03 | CFG_CLOSE_NET | ネットワークをオフにする/ ネットワーク接続を停止 |
| 0x04 | CFG_RESET | リセット/工場出荷時の状態に戻す |
| 0x05 | CFG_NODE_TYPE | モジュールタイプを設定 |
| 0x06 | CFG_CHANNEL | チャンネルの照会と設定 |
| 0x07 | CFG_GET_PANID | PAN IDの照会 |
| 0x08 | CFG_SET_PANID | PAN IDの設定 |
| 0x09 | CFG_VIEW_GROUP | モジュールとグループの照会 |
| 0x0A | CFG_ADD_GROUP | モジュールをグループに追加 |
| 0x0B | CFG_REMOVE_GROUP | モジュールをグループから削除 |
| 0x0D | CFG_SET_POWER | 送信出力を設定 |
| 0x0F | CFG_TEST | テストパターン |
| 0x10 | CFG_READ_ATTR | ローカルプロパティの照会 |
| 0x11 | CFG_WRITE_ATTR | ローカルプロパティの変更 |
| 0x14 | CFG_FIND_BIND | 自動的に接続を形成 |
表 8 ネットワーク管理の要求コマンド
| コマンドコード | ディスクリプタ | コマンド名 |
|---|---|---|
| 0x00 | ZDO_NWK_ADDR_REQ | デバイスのショートアドレスの照会 |
| 0x01 | ZDO_IEEE_ADDR_REQ | デバイスのIEEEアドレスの照会 |
表 9 デバイスのステータスと制御の要求コマンド
| コマンドコード | ディスクリプタ | コマンド名 |
|---|---|---|
| 0x00 | ZCL_READ_ATTR_REQ | デバイスのステータスの読み取り |
| 0x01 | ZCL_WRTIE_ATTR_REQ | デバイスのステータスを変更 |
| 0x0F | ZCL_CMD | 制御コマンドを送信 |
表 10 システム通知メッセージ
| コマンドコード | ディスクリプタ | コマンド名 |
|---|---|---|
| 0x00 | NOTIFY_BOOT | デバイスの起動 |
| 0x01 | NOTIFY_NET_STATUS | ネットワークステータスの変更 |
| 0x04 | NOTIFY_NODE_ADDR | モジュールのショートアドレス更新 |
| 0x06 | NOTIFY_LEAVE | モジュールのネットワークからの離脱通知 |
| 0x10 | NOTIFY_FIND_BIND | 自動的に接続を形成 |
表 11 ネットワーク管理の応答メッセージ
| コマンドコード | ディスクリプタ | コマンド名 |
|---|---|---|
| 0x00 | ZDO_NWK_ADDR_RSP | デバイスのショートアドレスの照会 |
| 0x01 | ZDO_IEEE_ADDR_RSP | デバイスのIEEEアドレスの照会 |
表 12 受信機器のステータスと制御の応答メッセージ
| コマンドコード | ディスクリプタ | コマンド名 |
|---|---|---|
| 0x00 | ZCL_READ_ATTR_RSP | デバイスのステータスの読み取り |
| 0x01 | ZCL_WRTIE_ATTR_RSP | デバイスのステータスを変更 |
| 0x0F | ZCL_CMD_IND | 制御コマンドの受信 |
表 13 送信確認メッセージ
| コマンドコード | ディスクリプタ | コマンド名 |
|---|---|---|
| 0x01 | ZDO_SEND_CNF | ネットワーク管理コマンドの送信確認メッセージ |
| 0x02 | ZCL_SEND_CNF | 機器ステータス制御コマンドの送信確認メッセージ |
5.4 AFステータス(Application Frameworkステータス)#
表 14 AFステータスには本ZigBee®モジュールの各種異常を検出するためのフィードバックメッセージと送信確認メッセージが含まれています。通常、ZigBee®通信アプリケーションでは、本モジュールが正常に動作することを確認する必要があります。たとえば、シリアルポートに書き込まれるデータ量がZigBee®の通信速度よりも大きい場合や、本ZigBee®モジュールがBluetooth®またはWi-Fi®の高密度な通信環境下で動作する場合、あるいはターゲットデバイスが切断される場合などでは、通信異常が発生する可能性があります。ユーザは返されたコマンドに含まれる異常ステータス値を確認することで、通信障害の原因を判断することができます。
表 14 AFステータス
Ackの返答、一般コマンドフィードバック、独自コマンドフィードバックはすべてこの表に対応します
| ステータス値 | 状態の説明 |
|---|---|
| 0x00 | Successful operation 操作が成功 |
| 0x01 | Operation failed 操作が失敗 |
| 0x02 | Parameter error パラメータエラー |
| 0x10 | Memory error メモリエラー |
| 0x11 | Memory full メモリが一杯 |
| 0x12 | The mode does not support このモードはサポートされていない |
| 0x1A | The MAC layer has insufficient resources MAC層のリソースが不足 |
| 0xC2 | The order is void この命令は無効 |
| 0xCD | The target device does not exist ターゲットデバイスが存在しない |
| 0xB7 | Target device missed message (with APS Ack on) ターゲットデバイスがメッセージを受信できなかった (APS層Ackがオンの場合のみ) |
| 0xE1 | Channel disturbance チャンネル干渉 |
| 0xE9 | Confiscated by the payment of the MAC Ack MAC層Ackが受信できなかった |
| 0xF0 | Device hibernation caused a send timeout デバイスのスリープ状態により送信タイムアウトが発生 |
| 0xF1 | The sending queue is full 送信キューが一杯 |
5.5 ZCL属性データ型#
Zigbee®デバイスの属性(Attribute)のデータサイズを表 15 ZCL属性データ型にまとめています。ZCLコマンドを使用してターゲットデバイスのステータスを管理する場合、ターゲットデバイスの属性に対して「読み取り」、「書き込み」、「確認」という基本操作を行い、その属性のデータ型に応じたサイズのデータ値を処理します。
表 15 ZCL属性データ型
| 分類 | データ型 | ID | バイト数 | 無効値 | レポートアライメント |
|---|---|---|---|---|---|
| NULL | - | 0x00 | 0 | - | 0 |
| 通常データ | data8 | 0x08 | 1 | - | 0 |
| data16 | 0x09 | 2 | - | 0 | |
| data24 | 0x0a | 3 | - | 0 | |
| data32 | 0x0b | 4 | - | 0 | |
| data40 | 0x0c | 5 | - | 0 | |
| data48 | 0x0d | 6 | - | 0 | |
| data56 | 0x0e | 7 | - | 0 | |
| data64 | 0x0f | 8 | - | 0 | |
| 論理データ | bool | 0x10 | 1 | 0xff | 0 |
| バイナリビットデータ | bit8 | 0x18 | 1 | - | 0 |
| bit16 | 0x19 | 2 | - | 0 | |
| bit24 | 0x1a | 3 | - | 0 | |
| bit32 | 0x1b | 4 | - | 0 | |
| bit40 | 0x1c | 5 | - | 0 | |
| bit48 | 0x1d | 6 | - | 0 | |
| bit56 | 0x1e | 7 | - | 0 | |
| bit64 | 0x1f | 8 | - | 0 | |
| 符号なし整数 | uint8 | 0x20 | 1 | - | 4 |
| uint16 | 0x21 | 2 | - | 4 | |
| uint24 | 0x22 | 3 | - | 4 | |
| uint32 | 0x23 | 4 | - | 4 | |
| uint40 | 0x24 | 5 | - | 8 | |
| uint48 | 0x25 | 6 | - | 8 | |
| uint56 | 0x26 | 7 | - | 8 | |
| uint64 | 0x27 | 8 | - | 8 | |
| 符号付き整数 | int8 | 0x28 | 1 | - | 4 |
| int16 | 0x29 | 2 | - | 4 | |
| int24 | 0x2a | 3 | - | 4 | |
| int32 | 0x2b | 4 | - | 4 | |
| int40 | 0x2c | 5 | - | 8 | |
| int48 | 0x2d | 6 | - | 8 | |
| int56 | 0x2e | 7 | - | 8 | |
| int64 | 0x2f | 8 | - | 8 | |
| 列挙型 | enum8 | 0x30 | 1 | 0xff | 0 |
| enum16 | 0x31 | 2 | 0xffff | 0 | |
| 浮動小数点数 | semi | 0x38 | 2 | - | 4 |
| single | 0x39 | 4 | - | 4 | |
| double | 0x3a | 8 | - | 8 | |
| 文字列 | octstr | 0x41 | 先頭1バイトの値 | 先頭が0xff | 0 |
| string | 0x42 | 先頭1バイトの値 | 先頭が0xff | 0 | |
| octstr16 | 0x43 | 先頭2バイトの値 | 先頭が0xffff | 0 | |
| string16 | 0x44 | 先頭2バイトの値 | 先頭が0xffff | 0 | |
| シリアル型 | uint8_array | 0x48 | 2 +データの合計サイズ | 先頭が0xffff | 0 |
| struct | 0x4C | 2 +データの合計サイズ | 先頭が0xffff | 0 | |
| 時刻 | ToD | 0xe0 | 4 | 0xffffffff | 4 |
| date | 0xe1 | 4 | 0xffffffff | 4 | |
| UTC | 0xe2 | 4 | 0xffffffff | 4 | |
| ID | clusterID | 0xe8 | 2 | 0xffff | 0 |
| attriID | 0xe9 | 2 | 0xffff | 0 | |
| bacOID | 0xea | 4 | 0xffffffff | 0 | |
| その他のデータ | EUI64 | 0xf0 | 8 | 0xffffffff | 0 |
| key128 | 0xf1 | 16 | - | 0 |
5.6 ZCLエラーステータスコード#
表 16に示すZCLエラーステータスコードは、受信したZCLコマンドレスポンスに含まれています。ターゲットデバイスにエラーコードを送信した場合、ターゲットデバイスは制御コマンドを受信しますが、命令の実行は無効です。
表 16 ZCLステータス
| 値 | 説明 | 発生条件 |
|---|---|---|
| 0x00 | Successful operation 操作成功 | すべてのコマンド |
| 0x01 | Operation failed 操作が失敗 | すべてのコマンド |
| 0x7E | The operation is not authorized 操作が許可されていない | 属性の読み取りおよび書き込み時 |
| 0x80 | The command is not formed correctly コマンドのフォーマットが不正 | 独自コマンドの送信時 |
| 0x81 | This ZCL proprietary command is not supported このZCL独自コマンドはサポートなし | 独自コマンドの送信時 |
| 0x82 | This ZCL generic command is not supported このZCL汎用コマンドはサポートなし | 汎用コマンドの送信時 |
| 0x83 | Vendor-defined ZCL proprietary commands are not supported 製造者定義のZCL独自コマンドはサポートなし | 製造者IDを含む独自コマンドの送信時 |
| 0x84 | Vendor-definition ZCL generic command is not supported 製造者定義の ZCL 汎用コマンドはサポートなし | 製造者IDを含む汎用コマンドの送信時 |
| 0x85 | Invalid field 無効なフィールド | 独自コマンドのパラメータがエラー時 |
| 0x86 | Unsupported Attribute's サポートされていない属性 | 汎用コマンド |
| 0x87 | Error input value 入力値のエラー | すべてのコマンド |
| 0x88 | Attribute Read-only 属性読み取り専用 | 属性の書き込み時 |
| 0x89 | Space is insufficient スペースが不足 | 独自コマンド(保存機能) |
| 0x8A | There is a repeat term 重複がある | 独自コマンド(保存機能) |
| 0x8B | Don't find 見つからない | 独自コマンド(保存機能) |
| 0x8C | The Attribute does not support active reporting 属性はアクティブレポートのサポートなし | アクティブレポートの設定または設定の読み込み時 |
| 0x8D | The data type is invalid データ型が無効 | データ型を指定した汎用コマンド |
| 0x8E | The option is invalid オプションが無効 | 独自コマンド |
| 0x8F | The Attribute writes only about it 属性は書き込み専用 | 属性の読み込み時 |
| 0x90 | Inconsistent startup status 起動ステータスが不一致 | |
| 0x91 | Out Of Band 帯域外 | |
| 0x92 | Inconsistent error 矛盾したエラー | |
| 0x93 | Refuse this operation 操作拒否 | |
| 0x94 | Overtime タイムアウト | |
| 0x95 | Abort 中断 | 無線通信での更新時 |
| 0x96 | Invalid image data 無効なイメージデータ | 無線通信での更新時 |
| 0x97 | Waiting for data データを待機 | 無線通信での更新時または他の大きなデータ転送時 |
| 0x98 | No image file is available 利用可能なイメージファイルなし | 無線通信での更新時 |
| 0x99 | More image data is needed より多くのイメージデータが必要 | 無線通信での更新時 |
| 0xc0 | Hardware error ハードウェアエラー | |
| 0xc1 | Software error ソフトウェアエラー | |
| 0xc2 | Calibration error キャリブレーションエラー |
5.7 ZigBee®プロトコルの共通アドレス形式エンディアン#
ZigBee®アプリケーションでは、通常、デバイス上の特定の周辺機器やセンサーに制御やメッセージを送信したり、デバイス上の周辺機器やセンサーからメッセージを受信したりするように指定する必要があるため、ZigBee®プロトコル仕様では、ネットワークバイトオーダ(ビッグエンディアン)にてアドレス指定して使用します。これにより、ネットワーク内のデバイスの正確な管理と制御が容易になります。
HEX形式のシリアルポートコマンドでは、すべての入力および出力アドレス指定形式のデータはリトルエンディアンで入力する必要があります。5.7.1 IEEEアドレス(8バイト)#
IEEEアドレスはMACアドレスです。ZigBee®デバイスのIEEEアドレスは工場出荷時点で割り当てられています。これは8バイトのアドレスであり、グローバルに一意です。
5.7.2 PAN ID(2バイト)#
ZigBee®コーディネータはネットワークを作成すると、2 バイトのPAN IDを生成します。デバイスはコーディネータによって生成されたネットワークに参加すると、コーディネータと同じPAN IDを取得し、コーディネータと同じチャンネルで動作します。
5.7.3 ショートアドレス(2バイト)#
ZigBee®デバイスはネットワークに参加すると、2バイトのショートアドレスが割り当てられます。ZigBee®はメッシュネットワークであるため、ネットワーク内でのデータ転送は、正しいルーティングおよび転送経路を確保するために、このショートアドレスを用いて行う必要があります。同一ネットワーク内では、各デバイスのIEEEアドレスは対応するショートアドレスと関連付けられます。
5.7.4 ポート#
ZigBee®デバイスには複数のポートが存在する可能性があり、これは仮想デバイスに相当します。たとえば、一般的なマルチホールソケット、複数のスイッチ、デバイスで使用されるZigBee®チップは1つだけですが、複数のエンドポイントをサポートすることで複数の仮想デバイスが実装されます。そのうち、デバイス制御用のポート番号は1から240まで有効です。特別なポートは、ネットワーク管理用のポート0 (ZDOポート)、Green Powerプロトコル変換用のポート242 (GPポート)、およびポート255 (ブロードキャストポート) です。マルチプレクサ上のすべてのスイッチを同時にオンにするなど、すべてのポートを同時に制御するには、ブロードキャストポートを使用します。
5.7.5 仮想デバイスSN番号#
仮想デバイスSN番号は、デバイス管理の利便性のためにZigBee®プロトコル仕様に基づくデバイス管理メカニズムです。
各ZigBee®デバイスには8バイトのIEEEアドレスがあり、各仮想デバイスのポート番号はデバイスファームウェア上で固定されているため、IEEEアドレス+ポート番号を仮想デバイスのSN番号として使用できます。リトルエンディアン表記では、仮想SN番号の形式は「ポート番号」+「IEEEアドレス (リトルエンディアン表記)」です)
SN番号は、デバイスの「バインド」設定で、送信元仮想デバイスと宛先仮想デバイスを指定するために使用できます。常時接続バインドの対象はグループにすることも可能なため、常時接続の対象がグループの場合、ポートは0xFF、IEEEアドレスの0番目と1番目はグループID、残りは0xFFFFになります。
表 17 仮想デバイスSN
| 仮想デバイスSN番号 | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| ポート番号 | IEEE[0] | IEEE[1] | IEEE[2] | IEEE[3] | IEEE[4] | IEEE[5] | IEEE[6] | IEEE[7] | |
| デバイス | 0xXX | 0xXX | 0xXX | 0xXX | 0xXX | 0xXX | 0xXX | 0xXX | 0xXX |
| グループ | 0xFF | 0xXX | 0xXX | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF | 0xFF |
- 仮想SNのポート番号は0x01~0xF0で、ターゲットが実際の仮想デバイスであることを示します
- 仮想SNポートが0xFFの場合、ターゲットがグループであることを示します
- ターゲットがグループの場合、IEEE[0]とIEEE[1]はグループIDを表します
5.8 Z240-MP4 (CT/EA)モジュールのデータ構造とデータ送信機能の設定#
本Z240-MP4 (CT/EA)モジュールにはデータ伝送機能とUART入出力ポートが1つだけあり、他の周辺制御機能がないため、ZigBee®ポートは1つだけサポートされており、その情報は次のとおりです。
表 18 ZigBee®プロトコル情報
| エンドポイントID | 1 |
| プロファイルID | 0x0104 |
| デバイスID | 0x0500 |
| 入力クラスタ | 0x0000 (Basic) 0x0003 (Identify) 0xFC08 (Data transparent transmission Manufacture Code=0x2000) |
| 出力クラスタ | 0x0003 0xFC08 (Data transparent transmission Manufacture Code=0x2000) |
表 19 透過伝送関連のプロパティ
クラスタ = 0xFC08、製造者コード = 0x2000
| 属性ID | ディスクリプタ | 名前 | データ型 | 操作 |
|---|---|---|---|---|
| 0x0000 | Baud | ボーレート | uint32 | R |
| 0x0001 | Target Addr | ターゲットアドレス | uint16 | RW |
| 0x0002 | Target EP | ターゲットポート | uint8 | RW |
| 0x0003 | Send Mode | 透過伝送モード | bool | RW |
| 0x0004 | LP Level | 低消費電力モード | enum8 | RW |
表 20 サポートされている制御コマンド
| コマンドID | コマンド方向 | ディスクリプタ | 機能 |
|---|---|---|---|
| 0x00 | C2S | Set Target | データ送信 |
| 0x01 | C2S | Set Target | ターゲットアドレスを設定 |
| 0x02 | C2S | Set Baud req | ボーレートを設定 |
| 0x03 | C2S | Set Low Power | 低電力モードを設定 |
送信モードの設定方法:
本モジュール自体は、「ローカルプロパティの設定」コマンドを使用して、ポートレート、ターゲットアドレス、ターゲットポート、送信モード、および低電力モードを設定できます。
リモートで透過伝送を設定する必要がある場合は、ZCL書き込み属性コマンドで設定できる透過伝送モードを除き、残りの属性をZCL制御コマンドで書き込む必要があります。特にボーレートは9600、19200、38400、57600、115200のみ対応しており、それ以外の値を設定した場合は無効となります。
リモートコマンドコントロールモジュールを使用する場合、コマンドの製造者コードを 0xFC08 に設定する必要があります。
設定が正しいことを確認するために、本モジュール自体は Read Local Properties コマンドを使用して設定結果と現在のシリアルポートのステータスを表示できます。リモートデバイスは、ZCLコマンドを通じてこのモジュールの送信ステータスを問い合わせることができます。
ローカル命令またはリモート命令により、送信モードに対応する属性が1(TRUE)に設定され、透過伝送モードに移行します。
本モジュールが一度透過伝送モードに入ると、シリアルポートコマンドは失敗します。透過伝送モードを終了するためには、本モジュールの外部MCUから「+」を3つ一行で送信する必要があります。ユーザは、ZCL属性書き込み命令をリモートデバイス上のモジュールに送信し、シリアルポートモードに対応する属性を0(FALSE)に変更することもできます。
コマンドモードのモジュールは、透過伝送モードのモジュールと通信できます。コマンドモードモジュールは、ZCLコマンドモードで透過伝送モードのモジュールに「Data Send」コマンドを送信し、送信モードのモジュールはコマンドモードモジュールのペイロード部のデータを出力することができます。
コマンドモードでは、透過伝送モードのオンデマンド、マルチキャスト、及びブロードキャストデータを受信し、ZCL受信コマンドフォーマットでデータを出力できます。
表 21 ターゲットアドレスとターゲットポート設定
| ターゲットアドレス | ターゲットポート | 送信範囲 |
|---|---|---|
| 0xFFFF | 0以外 | スリープ状態のエンドデバイスを含むすべてのデバイスにブロードキャスト |
| 0xFFFD | 0以外 | スリープ状態以外のすべてのデバイスにブロードキャスト |
| 0xFFFC | 0以外 | コーディネータとすべてのルータデバイスにブロードキャスト |
| 0x0000~0xFFF8 | 1 | ショートアドレスのオンデマンド透過伝送 |
| 0x0001~0xFFF8 | 0 | マルチキャスト |
| 0xFFFE | 0xFE | ターゲットを固定したMACアドレスに対しての透過伝送 (ターゲットバインディングはコーディネータによって設定が必要) |
表 22 低電力モード設定の効果
| 低電力モード | ウェイクアップ周期 |
|---|---|
| 0 | 1秒 |
| 1 | 3.3秒 |
| 2 | 5秒 |
| 3 | 60秒 |