ZCL Advanced Platform(ZAP)は、Node.js テンプレート エンジンで、 Matter クラスタ。
ZAP では、Matter アプリおよび次の機能が提供されます。 SDK:
- Matter のエンドポイント、クラスタ、属性、 GUI インターフェースから他のデバイス機能にアクセスできます。
- データモデルの定義を自動生成するテンプレートを作成する。 コールバック、その他の Matter ソースコードがあります。
- SDK に含める事前構成済みの ZAP ファイルを作成して使用します。
インストール
ZAP リリースに移動します。 できます。
「最新」というタグが付いたリリースを探します。(ほとんどのアセットには「Pre-release」(プレリリース版)というタグが付けられます)。
このリリースの [アセット] でパッケージを選択します。 ダウンロードしてダウンロードします。
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-common
の lighting-app.zap
。
all-clusters-app.zap
ファイルは次の場所にあります。
connectedhomeip/examples/all-clusters-app/all-clusters-common
、
一般的な Matter クラスタと 3 つのクラスタが
エンドポイント(Matter セカンダリ ネットワークを含む)
コミッショニング デバイスタイプ。これは、さまざまなクラスタ構成を調べるのに適した例です。
実行
- Matter の例のいずれかから ZAP ファイルを選択します。
- Matter リポジトリのルート ディレクトリ(
connectedhomeip
)から、次のコマンドを実行します。run_zaptool.sh
ラッパー スクリプトを作成して、.zap
ファイルのパスを渡します。
例:
./scripts/tools/zap/run_zaptool.sh ./examples/lighting-app/lighting-common/lighting-app.zap
設定
の [設定] で、次を設定できます。 ZAP のユーザー インターフェース(ライトモードまたはダークモードの選択を含む) デベロッパーツールの有効化と無効化
[
オプション] をクリックすると、[プロダクト メーカー]、[デフォルト レスポンス ポリシー] を選択し、コマンド検出を有効または無効にできます。[
広告表示オプション] をクリックしてカスタム ZCL クラスタまたはコマンドを Zigbee Clusters Configurator に渡します。使用
エンドポイント
lighting-app.zap
ファイルは Matter で事前構成されています。
ルートノード(エンドポイント - 0)と Matter 調光可能ライト
(エンドポイント - 1)。
Endpoint - 0 には、以下の一般的なクラスタが含まれます。 (ネットワーキング、コミッショニング、記述子、 運用認証情報、OTA クラスタ。
次の手順では、エンドポイント - 1 を確認して構成します。
例 lighting-app
の Matter 調光可能なライト
Matter リポジトリ
connectedhomeip
から ZAP を実行します。scripts/tools/zap/run_zaptool.sh \ examples/lighting-app/lighting-common/lighting-app.zap
[エンドポイント - 1] をクリックしてから、
編集。省略可: Matter は、さまざまなデバイスタイプをサポートしています。イン [Device] プルダウンで、「
matter
」と入力してデバイスを変更し、 [保存] をクリックします。
詳細については、Matter 入門のデバイスとエンドポイントをご覧ください。
クラスタ
事前定義されたクラスタ、属性、およびレポートのオプションは、 デフォルトは Endpoint - 1 です。
有効なクラスタのみを表示するには、[エンドポイント - 1] をクリックして、
[Show] の [Enabled Clusters]
選択します。on
など)で検索することもできます。
任意のクラスタを [クライアント]、[サーバー]、[クライアントとサーバー、 [Enable] プルダウンを選択します。また、[Not Enabled] を選択して、 デバイスタイプに適用されない事前構成済みクラスタです。
詳細については、Matter の概要のクラスタをご覧ください。
属性とコマンド
属性とコマンドを構成する手順は次のとおりです。
On/Off
クラスタを見つけます。同じ行にある設定アイコンをクリックします。
。
ここでは、属性を有効または無効にしたり、さまざまな属性オプションを設定したり、名前で属性を検索
したりできます。[コマンド] をクリックして、このクラスタのアクションを構成します。対象
たとえば、照明の [オン/オフ] クラスタには [オン]、[オフ]、
切り替えコマンドを使用します。たとえば、
Temperature Measurement
クラスタ。関連するコマンドがない場合があります。
詳細については、 属性とコマンド (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>
エンドポイントを設定したら、統合するソースファイルを生成できる プロジェクトに追加します。
- [ 生成] をクリックします。
- ZAP 出力を保存するフォルダを選択してください。たとえば、
lighting-app
のconnectedhomeip/zzz_generated/lighting-app/zap-generated
に移動します。 - (省略可)お好みの IDE でファイルを開きます。
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 を SDK に統合します。
リソース
その他の ZAP リソースについては、
ZAP リポジトリ
(zap
)
ご覧ください。