ZCL Advanced Platform(ZAP)

ZCL Advanced Platform(ZAP)は、Node.js テンプレート エンジンで、 Matter クラスタ

ZAP では、Matter アプリおよび次の機能が提供されます。 SDK:

  • Matter のエンドポイント、クラスタ、属性、 GUI インターフェースから他のデバイス機能にアクセスできます。
  • データモデルの定義を自動生成するテンプレートを作成する。 コールバック、その他の Matter ソースコードがあります。
  • SDK に含める事前構成済みの ZAP ファイルを作成して使用します。
ZAP ツール

インストール

  1. ZAP リリースに移動します。 できます。

  2. 「最新」というタグが付いたリリースを探します。(ほとんどのアセットには「Pre-release」(プレリリース版)というタグが付けられます)。

  3. このリリースの [アセット] でパッケージを選択します。 ダウンロードしてダウンロードします。

  4. Debian または Ubuntu を実行しているマシンで、次のコマンドを実行して ZAP をインストールします。

    sudo dpkg -i path/to/zap_installation_package
    

Debian または Ubuntu Linux では、zap バイナリは /usr/bin/ にインストールされます。オン 他のオペレーティング システムを使用した場合、バイナリは別の場所にインストールされる可能性があります。いずれにせよ 実行可能なファイルの場所が PATH 環境にあることを確認する 変数です。

ZAP ファイル

ZAP では、ZAP ファイルと呼ばれるテンプレート ファイルを使用します。ZAP ファイルは JSON ファイル エンドポイント、コマンド、属性、その他のデバイスを定義する 説明します。ZAP ファイルの名前は .zap で終わります。たとえば connectedhomeip/examples/lighting-app/lighting-commonlighting-app.zap

all-clusters-app.zap ファイルは次の場所にあります。 connectedhomeip/examples/all-clusters-app/all-clusters-common、 一般的な Matter クラスタと 3 つのクラスタが エンドポイント(Matter セカンダリ ネットワークを含む) コミッショニング デバイスタイプ。これは、さまざまなクラスタを探索する良い例です。 できます。

実行

  1. Matter の例のいずれかから ZAP ファイルを選択します。
  2. Matter リポジトリのルート ディレクトリ(connectedhomeip)から、次のコマンドを実行します。 run_zaptool.sh ラッパー スクリプトを作成して、.zap ファイルのパスを渡します。

例:

./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap

設定

の [設定] で、次を設定できます。 ZAP のユーザー インターフェース(ライトモードまたはダークモードの選択を含む) デベロッパーツールの有効化と無効化

[オプション] をクリックすると、製品を選択できます ManufacturerDefault Response Policy、コマンドを有効または無効にする 見つけてもらう。

ZAP のグローバル オプション

[ 広告表示オプション] をクリックしてカスタム ZCL クラスタまたはコマンドを Zigbee Clusters Configurator に渡します。

使用

エンドポイント

lighting-app.zap ファイルは Matter で事前構成されています。 ルートノード(エンドポイント - 0)と Matter 調光可能ライト (エンドポイント - 1)。

Endpoint - 0 には、以下の一般的なクラスタが含まれます。 (ネットワーキング、コミッショニング、記述子、 運用認証情報、OTA クラスタ。

ZAP エンドポイント 0

次の手順では、エンドポイント - 1 を確認して構成します。 例 lighting-appMatter 調光可能なライト

  1. Matter リポジトリ connectedhomeip から ZAP を実行します。

    scripts/tools/zap/run_zaptool.sh \
    examples/lighting-app/lighting-common/lighting-app.zap
    
  2. [エンドポイント - 1] をクリックしてから、 編集

  3. 省略可: Matter は、さまざまなデバイスタイプをサポートしています。イン [Device] プルダウンで、「matter」と入力してデバイスを変更し、 [保存] をクリックします。

    ZAP Select Device

詳細については、 デバイスと エンドポイント Matter 入門

クラスタ

事前定義されたクラスタ、属性、およびレポートのオプションは、 デフォルトは Endpoint - 1 です。

有効なクラスタのみを表示するには、[エンドポイント - 1] をクリックして、 [Show] の [Enabled Clusters] 選択します。 個のクラスタを検索することもできます 名前で指定します(例: on)。

ZAP 対応クラスタ

任意のクラスタを [クライアント]、[サーバー]、[クライアントとサーバー、 [Enable] プルダウンを選択します。また、[Not Enabled] を選択して、 デバイスタイプに適用されない事前構成済みクラスタです。

ZAP 無効化クラスタ

詳細については、 クラスタMatter Primer)をご覧ください。

属性とコマンド

属性とコマンドを構成する手順は次のとおりです。

  1. On/Off クラスタを見つけます。
  2. 同じ行にある設定アイコンをクリックします。

    ZAP 構成

ここでは、属性を有効または無効にしたり、さまざまな属性オプションを設定したりできます。 名前で属性を検索 します。

ZAP 属性

[コマンド] をクリックして、このクラスタのアクションを構成します。対象 たとえば、照明の [オン/オフ] クラスタには [オン]、[オフ]、 切り替えコマンドを使用します。たとえば、 Temperature Measurement クラスタ。関連するコマンドがない場合があります。

ZAP コマンド

詳細については、 属性とコマンドMatter Primer)をご覧ください。

ZAP ソースファイルを生成する

Matter の例では、ZAP で生成されたソースコードを使用しています。 これは connectedhomeip/zzz_generated ディレクトリにあります。アプリ固有のファイルもありますが 他の汎用 ZAP ファイルは app-common にグループ化されます。

#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>

エンドポイントを設定したら、統合するソースファイルを生成できる 追加します。

  1. [ 生成] をクリックします。
  2. ZAP 出力を保存するフォルダを選択します。たとえば、 connectedhomeip/zzz_generated/lighting-app/zap-generated: lighting-app
  3. (省略可)お好みの IDE でファイルを開きます。

ZAP では、カスタム定義、関数、その他のソースコードを生成 ZAP 設定が含まれています。

ZAP で生成されたファイル

たとえば、callback-stub.cpp には、クラスタ コールバック メソッドが含まれており、 有効にしたクラスタのみが含まれます。

void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
{
    switch (clusterId)
    {
     ...
     case ZCL_ON_OFF_CLUSTER_ID :
        emberAfOnOffClusterInitCallback(endpoint);
        break;
     ...
    }
}

ZAP ソースファイルを使用する

一般的な ZAP ソースファイル(Attributes.h など) zzz_generated/app-common/app-common/zap-generated/ids/ は、以下の目的で使用できます。 デバイスタイプの属性の取得と設定:

Attributes.h

namespace DeviceTemperatureConfiguration {
  namespace Attributes {

  namespace CurrentTemperature {
    static constexpr AttributeId Id = 0x00000000;
    } // namespace CurrentTemperature

  ...

  } // namespace Attributes
} // namespace DeviceTemperatureConfiguration

main.cpp

#include <app-common/zap-generated/att-storage.h>
#include <app-common/zap-generated/attribute-id.h>
#include <app-common/zap-generated/attribute-type.h>
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app-common/zap-generated/callback.h>
#include <app-common/zap-generated/cluster-id.h>
#include <app-common/zap-generated/cluster-objects.h>
#include <app-common/zap-generated/command-id.h>

using namespace ::chip;
using namespace ::chip::app::Clusters;

static void InitServer(intptr_t context)
{
    ...

    // Sets temperature to 20C
    int16_t temperature = 2000;
    auto status         = DeviceTemperatureConfiguration::Attributes::CurrentTemperature::Set(1, temperature);
    if (status != EMBER_ZCL_STATUS_SUCCESS)
    {
        ChipLogError(Shell, "Temp measurement set failed");
    }
}

Matter での ZAP ファイルの使用方法を理解したら 統合するには、いくつかの方法があります。

  • 既存の zzz_generated ファイルを使用して、 選択できます。
  • プロジェクト用のカスタム .zap ファイルを作成します。

カスタマイズ

ZAP ファイルは ZAP から生成される テンプレートrun_zaptool.sh を使用して ZAP を起動する場合、このスクリプトは次のものを渡します。 テンプレート:

node src-script/zap-start.js --logToStdout \
    --gen "$CHIP_ROOT/src/app/zap-templates/app-templates.json" \
    --zcl "$CHIP_ROOT/src/app/zap-templates/zcl/zcl.json" \
    "${ZAP_ARGS[@]}"

templates.json は、Matter テンプレート名と Matter の例で使用されている対応する出力ファイル。

{
    "path": "templates/app/callback-stub-src.zapt",
    "name": "ZCL callback-stub source",
    "output": "callback-stub.cpp"
}

Matter ソリューションをカスタマイズするには、他にもいくつか ZAP を使用する際の手順は次のとおりです。

リソース

その他の ZAP リソースについては、 ZAP リポジトリ (zap) ご覧ください。