KW3.0ZでのZigbee41デバイスの構成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Zigbee アプリケーションの開発では、アプリケーションをビルドする前に特定の静的構成が必要です。ネットワークサイズの計算、新しいクラスタの追加、デバイスの検出可能化、および新しいエンドポイントの追加は、次のファイルのパラメータを変更することで実行できます。 app_zps_cfg.h app_zcl_cfg.h app_zcl_global.c これらのファイルは、主にZigBee PROスタックのAPSおよびNWKレイヤーに関連する、デバイスタイプや関連パラメータなどのネットワークパラメータの設定を担当します。 ネットワーク構成 ZigBee デバイスは、コーディネーター、ルーター、およびエンド デバイスとして構成できます。次のセクションでは、ユーザーが各デバイスの種類を構成する方法について詳しく説明します。 app_zps_cfgヘッダーファイルを使用すると、ユーザーはノードのZPS ZDOパラメーターを構成できます。次のマクロは、対応するデバイスタイプに必要です。 ZigBeeネットワークのコーディネーター向け #define ZPS_COORDINATOR #define ZPS_ZDO_DEVICE_TYPE ZPS_ZDO_DEVICE_COORD ZigBeeネットワーク内のルーターの場合 #define ZPS_ROUTER #define ZPS_ZDO_DEVICE_TYPE ZPS_ZDO_DEVICE_ROUTER ZigBeeネットワークのエンドデバイス用 #define ZPS_ENDDEVICE #define ZPS_ZDO_DEVICE_TYPE ZPS_ZDO_DEVICE_ENDDEVICE マクロを使用して定義されるその他の ZPS ZDO 構成については、ヘッダー ファイル (app_zps_cfg.h) 内のコメントで説明されています。これらのマクロにより、ユーザーはネットワークのニーズに応じてデバイスを構成できます。 ZigBee ネットワークのセキュリティの種類は、マクロ ZPS_ZDO_NWK_KEY_STATEによって構成することもできます。ユーザーは、セキュリティの種類をネットワークセキュリティなし(ZPS_ZDO_NO_NETWORK_KEY)、事前構成リンクキーセキュリティ(ZPS_ZDO_PRECONFIGURED_LINK_KEY)、分散リンクキーセキュリティ(ZPS_ZDO_DISTRIBUTED_LINK_KEY)、または事前構成インストールコードセキュリティ(ZPS_ZDO_PRCONFIGURED_INSTALLATION_CODE)に変更できます。 /* ネットワークセキュリティを指定しない */
#define ZPS_ZDO_NWK_KEY_STATE ZPS_ZDO_NO_NETWORK_KEY このアプリケーションでは、このヘッダー ファイルを使用して、拡張 PANID (ZPS_APS_AIB_INIT_USE_EXTENDED_PANID) やチャネル マスク (ZPS_APS_AIB_INIT_CHANNEL_MASK) などの ZPS APS AIB パラメーターを構成できます。 /* デバイスが使用する NWK EXTENDED PANID (EPID)*/#define ZPS_APS_AIB_INIT_USE_EXTENDED_PANID 0x0000000000000000ULL /*!チャンネルマスク:11から26までのすべてのチャンネルを定義*/
#define ZPS_APS_AIB_INIT_CHANNEL_MASK 0x07fff800UL ユーザーは、ZPS AFレイヤー構成パラメーターの一部として、単純な記述子テーブルサイズ(AF_SIMPLE_DESCRIPTOR_TABLE_SIZE)を構成することもできます。この値は、アプリケーションで定義されているエンドポイントの数によって異なり、1 つのエンドポイントが常に ZDO 用に予約されています。したがって、エンドポイントが 1 つのデバイスの場合、値は 2 (1 ZDO + 1 アプリケーション エンドポイント) になります #define AF_SIMPLE_DESCRIPTOR_TABLE_SIZE 2 ユーザーが変更できる他のZPSネットワーク設定パラメータには、スキャン時間(ZPS_SCAN_DURATION)、デフォルトの許可参加時間(ZPS_DEFAULT_PERMIT_JOINING_TIME)、および同時キーリクエストの最大数(ZPS_MAX_NUM_SIMULTANEOUS_REQUEST_KEY_REQS)があります。 また、ネットワーク内のルーターの最大数 (ZPS_NWK_NIB_INIT_MAX_ROUTERS)、ノードの子の最大数 (ZPS_NWK_NIB_INIT_MAX_CHILDREN)、ネットワークの最大深度 (ZPS_NWK_NIB_INIT_MAX_DEPTH)、ネットワーク セキュリティ レベル (ZPS_NWK_NIB_INIT_SECURITY_LEVEL) など、NIB 値も変更できます。 このヘッダーファイルから、ユーザーがさまざまなZigBeeネットワークテーブルサイズを調整できます。重要な表を以下に示します。 アクティブな隣接テーブルのサイズ (ZPS_NEIGHBOUR_TABLE_SIZE)。 ノードに関連付けられたネイバー デバイスのリストを保持するために使用されるネイバー探索テーブル サイズ (ZPS_NEIGHBOUR_DISCOVERY_TABLE_SIZE)。 ネットワーク アドレス マップ テーブルのサイズ。64 ビット IEEE アドレスを 16 ビット ネットワーク (ショート) アドレス (ZPS_ADDRESS_MAP_TABLE_SIZE) にマップするアドレス マップのサイズを表します。 ネットワークセキュリティマテリアルセットのサイズ(ZPS_SECURITY_MATERIAL_SETS)。 ブロードキャスト・トランザクション・テーブル・サイズ。ノード (ZPS_BROADCAST_TRANSACTION_TABLE_SIZE) が受信したブロードキャスト・メッセージのレコードを格納します。 各ルートを記録するテーブルのルート レコード テーブル サイズ (ZPS_ROUTE_RECORD_TABLE_SIZE) で、宛先ネットワーク アドレス、宛先に到達するリレー ノードの数、およびリレー ノードのネットワーク アドレスの一覧が格納されます。 ルート探索テーブルのサイズ (ZPS_ROUTE_DISCOVERY_TABLE_SIZE) は、ルート探索中に使用される一時的な情報をノードが格納するために使用します。 MAC アドレス テーブルのサイズ (ZPS_MAC_ADDRESS_TABLE_SIZE)。 バインディング テーブルのサイズ (ZPS_BINDING_TABLE_SIZE)。 グループ・テーブル・サイズ (ZPS_GROUP_TABLE_SIZE)。 サポートされているネットワークキーの数 (セキュリティマテリアルセット (ZPS_KEY_TABLE_SIZE) とも呼ばれます)。 子テーブルのサイズ (ZPS_CHILD_TABLE_SIZE) は、アクティブなネイバーテーブルの永続化されたサブテーブルのサイズを示します。格納されるエントリは、ノードの親と直接の子のエントリです。 トラスト・センター・デバイス・テーブル・サイズ(ZPS_TRUST_CENTER_DEVICE_TABLE_SIZE)。 ZCLの設定 app_zcl_cfgヘッダーファイルは、ZigBee クラスター ライブラリを構成するためにアプリケーションによって使用されます。このファイルには、アプリケーション・プロファイルとクラスター ID の定義が含まれています。デフォルトのアプリケーションプロファイルは、ZDP、HA、ZLO、GP です。 ZDP(ZigBeeデバイスプロファイル)IDは、次の行で識別されます。 #define ZDP_PROFILE_ID (0x0000) ZDP は、クラスタ ID として次のカテゴリのサービスを提供します。 デバイス検出サービス (ZDP_DISCOVERY_CACHE_REQ_CLUSTER_ID など) サービス検出サービス (ZDP_IEEE_ADDR_REQ_CLUSTER_ID など) バインディング サービス (ZDP_BIND_RSP_CLUSTER_ID など) 管理サービス (ZDP_MGMT_NWK_DISC_REQ_CLUSTER_ID など) HA (Home Automation) プロファイル ID は、次の行で識別されます。 #define HA_PROFILE_ID (0x0104) HA は、クラスタ ID として次のカテゴリのサービスを提供します。 汎用デバイス (HA_BASIC_CLUSTER_ID など) 照明器具(HA_LEVELCONTROL_CLUSTER_IDなど) 侵入者警報システム(IAS)デバイス(HA_IASZONE_CLUSTER_IDなど) ZLO (ZigBee Lighting and Occupancy) プロファイルはアプリケーション プロファイルではありませんが、このコレクションのデバイスは、ホーム オートメーション アプリケーション プロファイルと同じアプリケーション プロファイル ID を使用します。これにより、Home Automation 1.2 プロファイルに基づくデバイスのアプリケーションとの下位互換性が確保されます。 ZigBee Green Power(GP)は、以下をサポートするためにネットワークノードへの電力需要を最小限に抑えることを目的としたオプションのクラスタです。 エネルギーハーベスティングによる完全な自己発電のノード 超長寿命のバッテリー寿命を必要とするバッテリー駆動ノード GP プロファイル ID は、次の行で識別されます。 #define GP_PROFILE_ID (0xa1e0) Zigbee GP クラスター ID は次のように定義されます。 #define GP_GREENPOWER_CLUSTER_ID (0x0021) アプリケーションによっては、app_zcl_cfg ヘッダー・ファイルにはノード・エンドポイントの定義も含まれています。たとえば、occupancy_sensor アプリケーションには次のエンドポイントが含まれています。 /* ノード 'コーディネーター' */ /*エンドポイント*/ #define COORDINATOR_ZDO_ENDPOINT (0) #define COORDINATOR_COORD_ENDPOINT (1) /* Node 'OccupancySensor' */ /*エンドポイント*/ #define OCCUPANCYSENSOR_ZDO_ENDPOINT (0) #define OCCUPANCYSENSOR_SENSOR_ENDPOINT (1) /* Node 'LightSensor' */ /*エンドポイント*/ #define LIGHTSENSOR_ZDO_ENDPOINT (0) #define LIGHTSENSOR_SENSOR_ENDPOINT (1) /* ノード 'LightTemperatureOccupancySensor' */ /*エンドポイント*/ #define LIGHTTEMPERATUREOCCUPANCYSENSOR_ZDO_ENDPOINT (0) #define LIGHTTEMPERATUREOCCUPANCYSENSOR_SENSOR_ENDPOINT (1) ソース ファイル app_zcl_globals.c は、各エンドポイントのクラスター リストを宣言するために使用されます。これらは、ノードの単純な記述子として機能します。 各エンドポイントには、uint16_tデータを含む 2 つのクラスター リストがあります。1 つは入力用で、もう 1 つは出力用です。これら 2 つのリストのサイズは等しくなければなりません。たとえば、エンドポイント 0 の場合、宣言されたリストは次のようになります。 PRIVATE const uint16 s_au16Endpoint0InputClusterList[16] = { 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006 , 0x0007, \ 0x0008, 0x0010, 0x0011, 0x0012, 0x0012, 0x0013, 0x0014 , 0x0015}; PRIVATE const uint16 s_au16Endpoint0OutputClusterList[16] = { 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, \ 0x0008, 0x0010, 0x0011, 0x0012, 0x0012, 0x0013, 0x0014 , 0x0015}; 入力リストには、サイズが一致する対応するクラスター APDU リストも必要です。エンドポイント 0 の例では、次のようになります。 PRIVATE const PDUM_thAPdu s_ahEndpoint0InputClusterAPdus[16] = { apduZDP, apduZDP, apduZDP, apduZDP, apduZDP, apduZDP, apduZDP, apduZDP,\ apduZDP, apduZDP, apduZDP, apduZDP, apduZDP, apduZDP, apduZDP, apduZDP}; 各出力クラスター リストと入力クラスター リストには、対応するクラスター検出有効フラグ リストがあります。クラスター ディスク フラグ内の各ビットはクラスターに対応しているため、入力クラスター リストと出力クラスター リストで宣言された 16 個のクラスターの場合、検出可能フラグには 2 バイトが必要です。この例では、宣言は次のとおりです。 PRIVATE uint8 s_au8Endpoint0InputClusterDiscFlags[2] = {0x1F, 0x08}; PRIVATE uint8 s_au8Endpoint0OutputClusterDiscFlags[2] = {0x08, 0x1B}; これらのパラメータは、ノードのエンドポイントの単純な記述子構造に登録されます。構造体の宣言された変数は s_asSimpleDescConts で、そのサイズはノードで使用可能なエンドポイントの数によって異なります。たとえば、エンドポイントが 2 つある場合、宣言は次のようになります。 PUBLIC zps_tsAplAfSimpleDescCont s_asSimpleDescConts[2] = { { { 0x0000、 0, 0, 0, 84, 84, s_au16Endpoint0InputClusterList、 s_au16Endpoint0OutputClusterList、 s_au8Endpoint0InputClusterDiscFlags, s_au8Endpoint0OutputClusterDiscFlags、 }, s_ahEndpoint0InputClusterAPdus、 1 }, { { 0x0104、 0, 0, 1, 6, 4, s_au16Endpoint1InputClusterList、 s_au16Endpoint1OutputClusterList、 s_au8Endpoint1InputClusterDiscFlags, s_au8Endpoint1OutputClusterDiscFlags、 }, s_ahEndpoint1InputClusterAPdus、 1 }, }; AFコンテキストの定義は次のとおりです。 typedef 構造体 _zps_tsAplAfSimpleDescCont { ZPS_tsAplAfSimpleDescriptor sSimpleDesc; const PDUM_thAPdu *phAPduInClusters; bool_t bEnabled です。 } zps_tsAplAfSimpleDescCont; また、エンドポイントの単純な記述子には、次の構造定義があります。 typedef構造体{ uint16 u16ApplicationProfileId; uint16 u16DeviceId; uint8 u8デバイスバージョン; uint8 u8エンドポイント; uint8 u8InClusterCount; uint8 u8OutClusterCount; const uint16 *pu16InClusterList; const uint16 *pu16OutClusterList; uint8 *au8InDiscoveryEnabledFlags; uint8 *au8OutDiscoveryEnabledFlags; } ZPS_tsAplAfSimpleDescriptor; KW41Z31Z21Z
查看全文