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 のユーザー インターフェース(ライトモードまたはダークモードの選択を含む) デベロッパーツールの有効化と無効化

[ オプション] をクリックすると、[プロダクト メーカー]、[デフォルト レスポンス ポリシー] を選択し、コマンド検出を有効または無効にできます。

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 デバイスの選択

詳細については、Matter 入門のデバイスとエンドポイントをご覧ください。

クラスタ

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

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

ZAP 対応クラスタ

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

ZAP クラスタの無効化

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

属性とコマンド

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

  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 出力を保存するフォルダを選択してください。たとえば、lighting-appconnectedhomeip/zzz_generated/lighting-app/zap-generated に移動します。
  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) ご覧ください。