diff --git a/.github/stale.yml b/.github/stale.yml
index 2188a6b0b75385..4f6adeea522da6 100644
--- a/.github/stale.yml
+++ b/.github/stale.yml
@@ -9,10 +9,10 @@ staleLabel: stale
pulls:
# Number of days of inactivity before a pull request becomes stale
- daysUntilStale: 7
+ daysUntilStale: 60
# Number of days of inactivity before a stale pull request is closed
- daysUntilClose: 7
+ daysUntilClose: 30
# Comment to post when marking a pull request as stale. Set to `false` to disable
markComment: >
diff --git a/.github/workflows/examples-qpg.yaml b/.github/workflows/examples-qpg.yaml
index d43855ab74c4a2..46d84ce5a538d9 100644
--- a/.github/workflows/examples-qpg.yaml
+++ b/.github/workflows/examples-qpg.yaml
@@ -81,6 +81,17 @@ jobs:
run: |
config/qpg/chip-gn/build.sh
+ - name: Prepare some bloat report from the previous builds
+ run: |
+ .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
+ qpg qpg6105+debug lighting-app \
+ out/qpg-light/chip-qpg6105-lighting-example.out \
+ /tmp/bloat_reports/
+ .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
+ qpg qpg6105+debug lock-app \
+ out/qpg-lock/chip-qpg6105-lock-example.out \
+ /tmp/bloat_reports/
+
- name: Uploading Size Reports
uses: actions/upload-artifact@v2
if: ${{ !env.ACT }}
diff --git a/config/esp32/components/chip/CMakeLists.txt b/config/esp32/components/chip/CMakeLists.txt
index 74b79dffc93466..707d23784bc350 100644
--- a/config/esp32/components/chip/CMakeLists.txt
+++ b/config/esp32/components/chip/CMakeLists.txt
@@ -67,6 +67,18 @@ macro(chip_gn_arg_bool arg boolean)
endif()
endmacro()
+# ESP-IDF lets user set software version string by two ways:
+# 1. Project's CMakeLists.txt file and 2. Config option
+# It depends on CONFIG_APP_PROJECT_VER_FROM_CONFIG option
+# So, below makes the same provision for software version number
+if (CONFIG_APP_PROJECT_VER_FROM_CONFIG)
+ chip_gn_arg_append("chip_config_software_version_number" ${CONFIG_DEVICE_SOFTWARE_VERSION_NUMBER})
+elseif (DEFINED PROJECT_VER_NUMBER)
+ chip_gn_arg_append("chip_config_software_version_number" ${PROJECT_VER_NUMBER})
+else()
+ chip_gn_arg_append("chip_config_software_version_number" 0)
+endif()
+
chip_gn_arg_append("esp32_ar" "\"${CMAKE_AR}\"")
chip_gn_arg_append("esp32_cc" "\"${CMAKE_C_COMPILER}\"")
chip_gn_arg_append("esp32_cxx" "\"${CMAKE_CXX_COMPILER}\"")
diff --git a/config/esp32/components/chip/Kconfig b/config/esp32/components/chip/Kconfig
index 55cafa1c8a07a8..402d9ad64fe7fc 100644
--- a/config/esp32/components/chip/Kconfig
+++ b/config/esp32/components/chip/Kconfig
@@ -301,15 +301,9 @@ menu "CHIP Device Layer"
This is a default value which is used when a hardware version has not been stored in device
persistent storage (e.g. by a factory provisioning process).
- config DEVICE_SOFTWARE_VERSION
- string "Device Software Version String"
- default "v1.0"
- help
- A string identifying the software version running on the device.
-
config DEVICE_SOFTWARE_VERSION_NUMBER
int "Device Software Version Number"
- default 1
+ default 0
help
Software version number running on the device.
diff --git a/config/esp32/components/chip/component.mk b/config/esp32/components/chip/component.mk
deleted file mode 100644
index 61ab9100fa78e7..00000000000000
--- a/config/esp32/components/chip/component.mk
+++ /dev/null
@@ -1,167 +0,0 @@
-#
-# Copyright (c) 2020 Project CHIP Authors
-# Copyright (c) 2018 Nest Labs, Inc.
-# All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Description:
-# Component makefile for building CHIP within the ESP32 ESP-IDF environment.
-#
-
-# ==================================================
-# General settings
-# ==================================================
-
-SHELL = /bin/bash
-
-# CHIP source root directory
-CHIP_ROOT ?= $(realpath $(COMPONENT_PATH)/../../../..)
-
-# Directory into which the CHIP build system will place its output.
-OUTPUT_DIR := $(BUILD_DIR_BASE)/chip
-REL_OUTPUT_DIR := $(shell perl -e 'use File::Spec; use Cwd; print File::Spec->abs2rel(Cwd::realpath($$ARGV[0]), Cwd::realpath($$ARGV[1])) . "\n"' $(OUTPUT_DIR) $(COMPONENT_PATH))
-
-REL_CHIP_ROOT := $(shell perl -e 'use File::Spec; use Cwd; print File::Spec->abs2rel(Cwd::realpath($$ARGV[0]), Cwd::realpath($$ARGV[1])) . "\n"' $(CHIP_ROOT) $(COMPONENT_PATH))
-
-COMPONENT_LIBRARIES :=
-
-
-# ==================================================
-# Compilation flags specific to building CHIP
-# ==================================================
-
-# Include directories to be searched when building CHIP. Make sure
-# that anything starting with $(IDF_PATH) ends up being included with
-# -isystem, not -I, so warnings in those headers don't cause the build
-# to fail.
-INCLUDES := $(OUTPUT_DIR)/src/include \
- $(OUTPUT_DIR)/src/include/platform/ESP32 \
- $(filter-out $(IDF_PATH)/%, $(COMPONENT_INCLUDES))
-
-SYSTEM_INCLUDES := $(IDF_PATH)/components/lwip/lwip/src/include \
- $(IDF_PATH)/components/freertos/include/freertos/ \
- $(IDF_PATH)/components/mbedtls/mbedtls/include \
- $(filter $(IDF_PATH)/%, $(COMPONENT_INCLUDES))
-
-
-# Compiler flags for building CHIP
-ALL_INCLUDES := $(addprefix -I,$(INCLUDES)) $(addprefix -isystem,$(SYSTEM_INCLUDES))
-CFLAGS += $(ALL_INCLUDES)
-CPPFLAGS += $(ALL_INCLUDES)
-CXXFLAGS += $(ALL_INCLUDES)
-
-
-# ==================================================
-# Configuration for the CHIP ESF-IDF Component
-# ==================================================
-
-# Header directories to be included when building other components that use CHIP.
-# Note that these must be relative to the component source directory.
-# TODO Boot the CHIP_ROOT includedirs
-COMPONENT_ADD_INCLUDEDIRS = project-config \
- $(REL_OUTPUT_DIR)/include \
- $(REL_CHIP_ROOT)/src/include/platform/ESP32 \
- $(REL_CHIP_ROOT)/src/include/ \
- $(REL_CHIP_ROOT)/src/lib \
- $(REL_CHIP_ROOT)/src/ \
- $(REL_CHIP_ROOT)/src/system \
- $(IDF_PATH)/components/mbedtls/mbedtls/include \
- $(REL_CHIP_ROOT)/src/app
-
-# Linker flags to be included when building other components that use CHIP.
-COMPONENT_ADD_LDFLAGS = -L$(OUTPUT_DIR)/lib/ \
- -lCHIP
-
-ifdef CONFIG_ENABLE_CHIP_SHELL
-COMPONENT_ADD_LDFLAGS += -lCHIPShell
-endif
-
-ifdef CONFIG_ENABLE_PW_RPC
-COMPONENT_ADD_LDFLAGS += -lPwRpc
-endif
-
-COMPONENT_ADD_INCLUDEDIRS += $(REL_OUTPUT_DIR)/src/include \
- $(REL_CHIP_ROOT)/third_party/nlassert/repo/include \
- $(REL_OUTPUT_DIR)/gen/third_party/connectedhomeip/src/app/include \
- $(REL_OUTPUT_DIR)/gen/include \
- $(REL_CHIP_ROOT)/zzz_generated/app-common
-
-# Tell the ESP-IDF build system that the CHIP component defines its own build
-# and clean targets.
-COMPONENT_OWNBUILDTARGET := chip_build
-COMPONENT_OWNCLEANTARGET := chip_clean
-
-is_debug ?= true
-
-# ==================================================
-# Build Rules
-# ==================================================
-
-$(OUTPUT_DIR) :
- echo "MKDIR $@"
- @mkdir -p "$@"
-
-
-fix_cflags = $(filter-out -DHAVE_CONFIG_H,\
- $(filter-out -D,\
- $(filter-out IDF_VER%,\
- $(1) -D$(filter IDF_VER%,$(1))\
- )))
-CHIP_CFLAGS = $(call fix_cflags,$(CFLAGS) $(CPPFLAGS))
-CHIP_CXXFLAGS = $(call fix_cflags,$(CXXFLAGS) $(CPPFLAGS))
-
-install-chip : $(OUTPUT_DIR)
- echo "INSTALL CHIP..."
- echo > $(OUTPUT_DIR)/args.gn
- echo "import(\"//args.gni\")" >> $(OUTPUT_DIR)/args.gn
- echo target_cflags_c = [$(foreach word,$(CHIP_CFLAGS),\"$(word)\",)] | sed -e 's/=\"/=\\"/g;s/\"\"/\\"\"/g;' >> $(OUTPUT_DIR)/args.gn
- echo target_cflags_cc = [$(foreach word,$(CHIP_CXXFLAGS),\"$(word)\",)] | sed -e 's/=\"/=\\"/g;s/\"\"/\\"\"/g;' >> $(OUTPUT_DIR)/args.gn
- echo esp32_ar = \"$(AR)\" >> $(OUTPUT_DIR)/args.gn
- echo esp32_cc = \"$(CC)\" >> $(OUTPUT_DIR)/args.gn
- echo esp32_cxx = \"$(CXX)\" >> $(OUTPUT_DIR)/args.gn
- echo esp32_cpu = \"esp32\" >> $(OUTPUT_DIR)/args.gn
-ifeq ($(is_debug),false)
- @echo "is_debug = false" >> $(OUTPUT_DIR)/args.gn
-endif
- if [[ "$(CONFIG_ENABLE_PW_RPC)" = "y" ]]; then \
- echo "chip_build_pw_rpc_lib = true" >> $(OUTPUT_DIR)/args.gn ;\
- echo "chip_build_pw_trace_lib = true" >> $(OUTPUT_DIR)/args.gn ;\
- echo "remove_default_configs = [\"//third_party/connectedhomeip/third_party/pigweed/repo/pw_build:cpp17\"]" >> $(OUTPUT_DIR)/args.gn ;\
- echo "pw_log_BACKEND = \"//third_party/connectedhomeip/third_party/pigweed/repo/pw_log_basic\"" >> $(OUTPUT_DIR)/args.gn ;\
- echo "pw_assert_BACKEND = \"//third_party/connectedhomeip/third_party/pigweed/repo/pw_assert_log\"" >> $(OUTPUT_DIR)/args.gn ;\
- echo "pw_sys_io_BACKEND = \"//third_party/connectedhomeip/examples/platform/esp32/pw_sys_io:pw_sys_io_esp32\"" >> $(OUTPUT_DIR)/args.gn ;\
- echo "pw_trace_BACKEND = \"//third_party/connectedhomeip/third_party/pigweed/repo/pw_trace_tokenized\"" >> $(OUTPUT_DIR)/args.gn ;\
- echo "dir_pw_third_party_nanopb = \"//third_party/connectedhomeip/third_party/nanopb/repo\"" >>$(OUTPUT_DIR)/args.gn ;\
- fi
- if [[ "$(CONFIG_ENABLE_CHIP_SHELL)" = "y" ]]; then \
- echo "chip_build_libshell = true" >> $(OUTPUT_DIR)/args.gn ;\
- fi
- if [[ "$(CONFIG_USE_MINIMAL_MDNS)" = "n" ]]; then \
- echo "chip_mdns = platform" >> $(OUTPUT_DIR)/args.gn ;\
- fi
- if [[ "$(CONFIG_DISABLE_IPV4)" = "y" ]]; then \
- echo "chip_inet_config_enable_ipv4 = false" >> $(OUTPUT_DIR)/args.gn ;\
- fi
- echo "Written file $(OUTPUT_DIR)/args.gn"
- cd $(CHIP_ROOT) && PW_ENVSETUP_QUIET=1 . scripts/activate.sh && cd $(COMPONENT_PATH) && gn gen --check --fail-on-unused-args $(OUTPUT_DIR)
- cd $(COMPONENT_PATH); ninja $(subst 1,-v,$(filter 1,$(V))) -C $(OUTPUT_DIR) esp32
-
-
-chip_build : install-chip
- echo "CHIP built and installed..."
- cp -a ${OUTPUT_DIR}/lib/libCHIP.a ${OUTPUT_DIR}/libchip.a
-
-chip_clean:
- echo "RM $(OUTPUT_DIR)"
- rm -rf $(OUTPUT_DIR)
diff --git a/config/esp32/components/esp32_mbedtls/component.mk b/config/esp32/components/esp32_mbedtls/component.mk
deleted file mode 100644
index a6290b41f3a6c1..00000000000000
--- a/config/esp32/components/esp32_mbedtls/component.mk
+++ /dev/null
@@ -1 +0,0 @@
-COMPONENT_DEPENDS := chip
diff --git a/docs/Doxyfile b/docs/Doxyfile
index 279399498d80c2..cafa736248e40b 100644
--- a/docs/Doxyfile
+++ b/docs/Doxyfile
@@ -795,7 +795,7 @@ WARN_NO_PARAMDOC = NO
# a warning is encountered.
# The default value is: NO.
-WARN_AS_ERROR = YES
+WARN_AS_ERROR = NO
# The WARN_FORMAT tag determines the format of the warning messages that doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
@@ -919,14 +919,14 @@ RECURSIVE = YES
# Note that relative paths are relative to the directory from which doxygen is
# run.
-EXCLUDE =
+EXCLUDE = third_party
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
# The default value is: NO.
-EXCLUDE_SYMLINKS = NO
+EXCLUDE_SYMLINKS = YES
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
@@ -2172,7 +2172,7 @@ SEARCH_INCLUDES = YES
# preprocessor.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-INCLUDE_PATH = third_party/
+INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
diff --git a/docs/guides/repl/.ipynb_checkpoints/Matter - Basic Interactions-checkpoint.ipynb b/docs/guides/repl/.ipynb_checkpoints/Matter - Basic Interactions-checkpoint.ipynb
new file mode 100644
index 00000000000000..cf2046aaebc0bd
--- /dev/null
+++ b/docs/guides/repl/.ipynb_checkpoints/Matter - Basic Interactions-checkpoint.ipynb
@@ -0,0 +1,4218 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "e8b2f5eb",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "# Interaction Model Examples\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "
\n",
+ "\n",
+ "This walks through the various interactions that can be initiated from the REPL towards a target using the Matter Interaction Model (IM) and Data Model (DM)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d2ed9fe9-e4a7-4540-a434-8f4ee1362bc6",
+ "metadata": {},
+ "source": [
+ "## Clear Persisted Storage\n",
+ "\n",
+ "Let's clear out our persisted storage (if one exists) to start from a clean slate."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "06c609a5-1d5c-4ae2-85f0-39a280d1bf2c",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0"
+ ]
+ },
+ "execution_count": 1,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import os, subprocess\n",
+ "\n",
+ "if os.path.isfile('/tmp/repl-storage.json'):\n",
+ " os.remove('/tmp/repl-storage.json')\n",
+ "\n",
+ "# So that the all-clusters-app won't boot with stale prior state.\n",
+ "os.system('rm -rf /tmp/chip_*')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "99ce2877",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "## Initialization\n",
+ "\n",
+ "Let's first begin by setting up by importing some key modules that are needed to make it easier for us to interact with the Matter stack.\n",
+ "\n",
+ "`ChipReplStartup.py` is run within the global namespace. This results in all of its imports being made available here.\n",
+ "\n",
+ "> **NOTE**: _This is not needed if you launch the REPL from the command-line._"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "bad327b7-c78a-4c46-b224-077fe7539ee1",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "import chip.native\n",
+ "import pkgutil\n",
+ "module = pkgutil.get_loader('chip.ChipReplStartup')\n",
+ "%run {module.path}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "047c4785-bb5f-41bd-9fce-5e8a7442f227",
+ "metadata": {},
+ "source": [
+ "## Cluster Elements\n",
+ "\n",
+ "The Interaction Model uses data model types that refer not just to the various base types defines in the spec, but types that correspond to structs/commands/events/attributes defined in each cluster specification. The cluster-specific types are referred to as 'cluster objects'. These are represented as Python dataclasses, with each field in the respective object equivalently named as a member within the dataclass.\n",
+ "\n",
+ "### Namespaces\n",
+ "\n",
+ "Objects in clusters are organized into namespaces. All clusters can be found under the `Clusters` namespace, with the appropriate cluster in upper camel case within that. (e.g `Clusters.TestCluster`).\n",
+ "\n",
+ "Within that, `Commands`, `Structs` and `Attributes` delimit the respective types in the cluster.\n",
+ "\n",
+ "_Example Struct:_"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "043ade5d-6f01-4cbc-8d60-57d605946ada",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n", + "SimpleStruct(\n", + "│ a=20,\n", + "│ b=True,\n", + "│ c=<SimpleEnum.kValueA: 1>,\n", + "│ d=b'1234',\n", + "│ e=30,\n", + "│ f=0,\n", + "│ g=23.234,\n", + "│ h=0.0\n", + ")\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m20\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mc\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kValueA:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33md\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'1234'\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33me\u001b[0m=\u001b[1;36m30\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m23\u001b[0m\u001b[1;36m.234\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n", + "\u001b[1m)\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "v = Clusters.TestCluster.Structs.SimpleStruct()\n", + "v.a = 20\n", + "v.b = True\n", + "v.c = Clusters.TestCluster.Enums.SimpleEnum.kValueA\n", + "v.d = b'1234'\n", + "v.e = 30\n", + "v.g = 23.234\n", + "\n", + "v" + ] + }, + { + "cell_type": "markdown", + "id": "62b3ca42-c2d2-4252-8683-47b0c1a1319d", + "metadata": {}, + "source": [ + "_Example Command:_" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d52b1adc-7723-4be8-80c0-f7f262398d39", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "TestAddArguments(\n", + "│ arg1=0,\n", + "│ arg2=0\n", + ")\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1;35mTestAddArguments\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[33marg1\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33marg2\u001b[0m=\u001b[1;36m0\u001b[0m\n", + "\u001b[1m)\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Clusters.TestCluster.Commands.TestAddArguments()" + ] + }, + { + "cell_type": "markdown", + "id": "ae69ad3b-7dd5-4ef2-9ba3-5944c0c2c2bf", + "metadata": {}, + "source": [ + "To get more information about the fields in these objects and their types, run:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c55de6c7-da4e-488e-bafb-32781ee088a8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
╭──────── <class 'chip.clusters.Objects.TestCluster.Commands.TestAddArguments'> ─────────╮\n", + "│ def TestCluster.Commands.TestAddArguments(arg1: 'uint' = 0, arg2: 'uint' = 0) -> None: │\n", + "│ │\n", + "│ TestAddArguments(arg1: 'uint' = 0, arg2: 'uint' = 0) │\n", + "│ │\n", + "│ arg1 = 0 │\n", + "│ arg2 = 0 │\n", + "│ cluster_id = 1295 │\n", + "│ command_id = 4 │\n", + "│ descriptor = ClusterObjectDescriptor( │\n", + "│ Fields=[ │\n", + "│ ClusterObjectFieldDescriptor( │\n", + "│ Label='arg1', │\n", + "│ Tag=0, │\n", + "│ Type=<class 'chip.tlv.uint'> │\n", + "│ ), │\n", + "│ ClusterObjectFieldDescriptor( │\n", + "│ Label='arg2', │\n", + "│ Tag=1, │\n", + "│ Type=<class 'chip.tlv.uint'> │\n", + "│ ) │\n", + "│ ] │\n", + "│ ) │\n", + "│ is_client = True │\n", + "│ must_use_timed_invoke = False │\n", + "│ FromDict = def FromDict(data: dict): │\n", + "│ FromTLV = def FromTLV(data: bytes): │\n", + "│ ToTLV = def ToTLV(self): │\n", + "╰────────────────────────────────────────────────────────────────────────────────────────╯\n", + "\n" + ], + "text/plain": [ + "\u001b[34m╭─\u001b[0m\u001b[34m─────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Commands.TestAddArguments'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;96mdef \u001b[0m\u001b[1;31mTestCluster.Commands.TestAddArguments\u001b[0m\u001b[1m(\u001b[0marg1: \u001b[32m'uint'\u001b[0m = \u001b[1;36m0\u001b[0m, arg2: \u001b[32m'uint'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m -> \u001b[3;35mNone\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mTestAddArguments\u001b[0m\u001b[1;36m(\u001b[0m\u001b[36marg1: \u001b[0m\u001b[32m'uint'\u001b[0m\u001b[36m = \u001b[0m\u001b[1;36m0\u001b[0m\u001b[36m, arg2: \u001b[0m\u001b[32m'uint'\u001b[0m\u001b[36m = \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;36m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33marg1\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33marg2\u001b[0m = \u001b[1;36m0\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcluster_id\u001b[0m = \u001b[1;36m1295\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mcommand_id\u001b[0m = \u001b[1;36m4\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mdescriptor\u001b[0m = \u001b[1;35mClusterObjectDescriptor\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mFields\u001b[0m=\u001b[1m[\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mClusterObjectFieldDescriptor\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mLabel\u001b[0m=\u001b[32m'arg1'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mTag\u001b[0m=\u001b[1;36m0\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mType\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.tlv.uint'\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mClusterObjectFieldDescriptor\u001b[0m\u001b[1m(\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mLabel\u001b[0m=\u001b[32m'arg2'\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mTag\u001b[0m=\u001b[1;36m1\u001b[0m, \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[33mType\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.tlv.uint'\u001b[0m\u001b[1m>\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m]\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1m)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mis_client\u001b[0m = \u001b[3;92mTrue\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mmust_use_timed_invoke\u001b[0m = \u001b[3;91mFalse\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mFromDict\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mFromDict\u001b[0m\u001b[1m(\u001b[0mdata: dict\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mFromTLV\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mFromTLV\u001b[0m\u001b[1m(\u001b[0mdata: bytes\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[3;33mToTLV\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mToTLV\u001b[0m\u001b[1m(\u001b[0mself\u001b[1m)\u001b[0m: \u001b[34m│\u001b[0m\n", + "\u001b[34m╰────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "matterhelp(Clusters.TestCluster.Commands.TestAddArguments)" + ] + }, + { + "cell_type": "markdown", + "id": "c7724d12-2a35-49f1-bb9f-ee010200b1aa", + "metadata": {}, + "source": [ + "### Nullable Fields\n", + "\n", + "For fields that are nullable, they are represented as a `Typing.Union[Nullable, ...]`. This means that it can either be a `Nullable` type or the underlying type of the field.\n", + "\n", + "When nullable, a field can either take on the value of the native type, or a value of `NullValue`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eb2563ac-0315-45ed-9984-308d4376ca94", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "NullablesAndOptionalsStruct(\n", + "│ nullableInt=Null,\n", + "│ optionalInt=None,\n", + "│ nullableOptionalInt=None,\n", + "│ nullableString=Null,\n", + "│ optionalString=None,\n", + "│ nullableOptionalString=None,\n", + "│ nullableStruct=Null,\n", + "│ optionalStruct=None,\n", + "│ nullableOptionalStruct=None,\n", + "│ nullableList=Null,\n", + "│ optionalList=None,\n", + "│ nullableOptionalList=None\n", + ")\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1;35mNullablesAndOptionalsStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mnullableInt\u001b[0m=\u001b[35mNull\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33moptionalInt\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mnullableOptionalInt\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mnullableString\u001b[0m=\u001b[35mNull\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33moptionalString\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mnullableOptionalString\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mnullableStruct\u001b[0m=\u001b[35mNull\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33moptionalStruct\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mnullableOptionalStruct\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mnullableList\u001b[0m=\u001b[35mNull\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33moptionalList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mnullableOptionalList\u001b[0m=\u001b[3;35mNone\u001b[0m\n", + "\u001b[1m)\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "a = Clusters.TestCluster.Structs.NullablesAndOptionalsStruct()\n", + "a.nullableInt = Clusters.Types.NullValue\n", + "a" + ] + }, + { + "cell_type": "markdown", + "id": "0786dd6b-df15-4cf4-b0a9-0578f040bd27", + "metadata": {}, + "source": [ + "### Optional Fields\n", + "\n", + "If a field is optional, it is represented in the typing hints as a `Typing.Union[NoneType, ...]`. An optional field that isn't present has a value of `None`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75de30fc-666c-4610-9d86-25fb9d0e4f82", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
None\n",
+ "
\n"
+ ],
+ "text/plain": [
+ "\u001b[3;35mNone\u001b[0m\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "print(a.nullableOptionalInt)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ee702b80-6f93-4627-8f9e-c97ebaa41de6",
+ "metadata": {},
+ "source": [
+ "### Defaults\n",
+ "\n",
+ "Upon construction of a cluster object, the fields within that object are automatically initialized to type specific defaults as specified in the data model specification:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "677ce9b4-99f3-4c0e-8f78-d123eb3190b5",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n", + "SimpleStruct(\n", + "│ a=0,\n", + "│ b=False,\n", + "│ c=0,\n", + "│ d=b'',\n", + "│ e='',\n", + "│ f=0,\n", + "│ g=0.0,\n", + "│ h=0.0\n", + ")\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mc\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33md\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33me\u001b[0m=\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n", + "\u001b[1m)\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Clusters.TestCluster.Structs.SimpleStruct()" + ] + }, + { + "cell_type": "markdown", + "id": "322ebc15-ae5d-4e84-bb66-a5d77d1e04c6", + "metadata": { + "tags": [] + }, + "source": [ + "## IM Interactions\n", + "\n", + "This section will walk through the various types of IM Interactions that are possible in the REPL." + ] + }, + { + "cell_type": "markdown", + "id": "7a082d33-bebd-4b34-b8e3-df59ed429c54", + "metadata": { + "tags": [] + }, + "source": [ + "### Commission and Setup Server" + ] + }, + { + "cell_type": "markdown", + "id": "4f458209-bfd4-4682-acac-5faadeecd97a", + "metadata": { + "tags": [] + }, + "source": [ + "#### Launch Server\n", + "\n", + "Let's launch an instance of the `chip-all-clusters-app`.\n", + "\n", + "> NOTE: If you're interacting with real devices, this step can be skipped." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52ccd8c6", + "metadata": {}, + "outputs": [], + "source": [ + "import time, os\n", + "import subprocess\n", + "\n", + "# So that the all-clusters-app won't boot with stale prior state. \n", + "os.system('pkill -f chip-all-clusters-app')\n", + "\n", + "# The location of the all-clusters-app in the cloud playground is one level higher - adjust for this by testing for file presence.\n", + "if (os.path.isfile('../../../out/debug/chip-all-clusters-app')):\n", + " appPath = '../../../out/debug/chip-all-clusters-app'\n", + "else:\n", + " appPath = '../../../../out/debug/chip-all-clusters-app'\n", + " \n", + "process = subprocess.Popen(appPath, stdout=subprocess.DEVNULL)\n", + "time.sleep(1)" + ] + }, + { + "cell_type": "markdown", + "id": "b33dec2e", + "metadata": {}, + "source": [ + "#### Discover and commission commissionable node" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "67fa53b3", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "[\n", + "│ CommissionableNode(\n", + "│ │ (To Be Commissioned By)='caIndex(1)/fabricId(0x0000000000000001)/nodeId(0x000000000001B669)',\n", + "│ │ CommissionableNode(\n", + "│ │ │ instanceName='B2D5B11D799BB1E0',\n", + "│ │ │ hostName='DCA632A54C510000',\n", + "│ │ │ port=5540,\n", + "│ │ │ longDiscriminator=3840,\n", + "│ │ │ vendorId=65521,\n", + "│ │ │ productId=32769,\n", + "│ │ │ commissioningMode=1,\n", + "│ │ │ deviceType=0,\n", + "│ │ │ deviceName='',\n", + "│ │ │ pairingInstruction='',\n", + "│ │ │ pairingHint=33,\n", + "│ │ │ mrpRetryIntervalIdle=5000,\n", + "│ │ │ mrpRetryIntervalActive=300,\n", + "│ │ │ supportsTcp=True,\n", + "│ │ │ addresses=[\n", + "│ │ │ │ 'fd1e:1a94:d591:6914:dea6:32ff:fea5:4c51',\n", + "│ │ │ │ 'fe80::dea6:32ff:fea5:4c51',\n", + "│ │ │ │ '172.16.243.198'\n", + "│ │ │ ]\n", + "│ │ )\n", + "│ )\n", + "]\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;35mCommissionableNode\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m(\u001b[0mTo Be Commissioned By\u001b[1m)\u001b[0m=\u001b[32m'caIndex\u001b[0m\u001b[32m(\u001b[0m\u001b[32m1\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/fabricId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x0000000000000001\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/nodeId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x000000000001B669\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;35mCommissionableNode\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33minstanceName\u001b[0m=\u001b[32m'B2D5B11D799BB1E0'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mhostName\u001b[0m=\u001b[32m'DCA632A54C510000'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mport\u001b[0m=\u001b[1;36m5540\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mlongDiscriminator\u001b[0m=\u001b[1;36m3840\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m65521\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mproductId\u001b[0m=\u001b[1;36m32769\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mcommissioningMode\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mdeviceName\u001b[0m=\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mpairingInstruction\u001b[0m=\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mpairingHint\u001b[0m=\u001b[1;36m33\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mmrpRetryIntervalIdle\u001b[0m=\u001b[1;36m5000\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mmrpRetryIntervalActive\u001b[0m=\u001b[1;36m300\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33msupportsTcp\u001b[0m=\u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33maddresses\u001b[0m=\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'fd1e:1a94:d591:6914:dea6:32ff:fea5:4c51'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'fe80::dea6:32ff:fea5:4c51'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'172.16.243.198'\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[1m]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-08-19 14:57:45 songguo.sha.corp.google.com chip.DIS[3192750] ERROR Timeout waiting for mDNS resolution.\n" + ] + } + ], + "source": [ + "devices = devCtrl.DiscoverCommissionableNodes(filterType=chip.discovery.FilterType.LONG_DISCRIMINATOR, filter=3840, stopOnFirst=True, timeoutSecond=2)\n", + "devices" + ] + }, + { + "cell_type": "markdown", + "id": "ed6f08a9", + "metadata": {}, + "source": [ + "You can find a list of discovered device\n", + "\n", + "You can call `Commission(nodeId, setupPinCode)` on one of the returned object:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2a7a7c40", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "devices[0].Commission(233, 20202021)" + ] + }, + { + "cell_type": "markdown", + "id": "78ef00f9", + "metadata": {}, + "source": [ + "The device will be commissioned by the DeviceController instance that discovered it (`caIndex(1)/fabricId(0x0000000000000001)/nodeId(0x000000000001B669)` in this case)." + ] + }, + { + "cell_type": "markdown", + "id": "aa9c6906", + "metadata": {}, + "source": [ + "#### Commission Target (Locally Launched App)\n", + "\n", + "Commission the target with a NodeId of 1." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5e964fe3", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-01-29 15:34:45 johnsj-macbookpro1.roam.corp.google.com chip.SC[10607] ERROR The device does not support GetClock_RealTimeMS() API. This will eventually result in CASE session setup failures.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Node address has been updated\n", + "Commissioning complete\n" + ] + }, + { + "data": { + "text/html": [ + "
True\n",
+ "
\n"
+ ],
+ "text/plain": [
+ "\u001b[3;92mTrue\u001b[0m\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "devCtrl.CommissionIP(b'127.0.0.1', 20202021, 2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "46c82aa0-d99b-4073-ad22-0ce260ba025a",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "#### Commission Target (BLE + Thread)\n",
+ "\n",
+ "To commission a Thread-based target over BLE, ensure your BLE stack is up on your host and available as `hci0` on Linux. You can confirm this by running `hciconfig -a`. You'll also need Thread credentials to join the Thread network.\n",
+ "\n",
+ "> NOTE: MacOS Monterey is currently not supported due to issues with its BLE stack."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "a1e762ad-b272-4a9c-959c-6fc1543d9631",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "devCtrl.CommissionThread(3840, 20202021, 2, b'\\x01\\x03\\xff')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "bd93c3f0-651a-4e66-9d35-613b009e98cb",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "#### Commission Target (BLE + WiFi)\n",
+ "\n",
+ "To commission a Wifi-based target over BLE, ensure your BLE stack is up on your host and available as `hci0` on Linux. You can confirm this by running `hciconfig -a`. You'll also need Wifi credentials to join the Thread network.\n",
+ "\n",
+ "> NOTE: MacOS Monterey is currently not supported due to issues with its BLE stack."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "3b552280-8586-4b5d-acde-c7806e882f23",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "devCtrl.CommissionWiFi(3840, 20202021, 2, 'MyWifiSsid', 'MyWifiPassword')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c22ea8ee",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "### Invoke Interaction"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4c94d599-e243-43de-8abe-bb4d9b1f52d4",
+ "metadata": {},
+ "source": [
+ "#### Basic Command (Success Response)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "52e6e92e-0bc6-45f2-9b6b-74d43ba3048c",
+ "metadata": {},
+ "source": [
+ "Let's send a basic command to turn on/off the light on Endpoint 1."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "bed38512-91f8-4d4e-b6e1-b30749137bbd",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "await devCtrl.SendCommand(2, 1, Clusters.OnOff.Commands.On())"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b1c0fe3c-95da-4980-9b9b-2a5ab602af44",
+ "metadata": {},
+ "source": [
+ "The receipt of a successful status response will result in the command just returning successfully. Otherwise, an exception will be thrown."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "80c604b9-f6dc-4ec5-91e8-a6e806c821a6",
+ "metadata": {},
+ "source": [
+ "#### Basic Command (Failure Response)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "753f5a54-4a75-41ed-a7c0-99c8cca8b6de",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "If we send the same command to an invalid endpoint, an exception is thrown. If an IM status code was received from the server, a `InteractionModelError` is thrown containing the IM status code:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "2935f13b-ca16-4f9c-b320-8896c8465278",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "InteractionModelError(<Status.Failure: 1>)\n", + "\n" + ], + "text/plain": [ + "\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.Failure:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "try:\n", + " await devCtrl.SendCommand(2, 100, Clusters.OnOff.Commands.On())\n", + "except Exception as e:\n", + " pprint(e)" + ] + }, + { + "cell_type": "markdown", + "id": "5296f2bc-5e9d-4b06-a7c1-f247ebe5eac2", + "metadata": {}, + "source": [ + "#### Basic Command (Data Response)" + ] + }, + { + "cell_type": "markdown", + "id": "bb196da4-5162-4c4b-ae64-ef1d23a04eb9", + "metadata": { + "tags": [] + }, + "source": [ + "Here's an example of a command that sends back a data response, and how that is presented:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "33f34d12-79f4-4230-836b-2e66ea839440", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "TestListInt8UReverseResponse(\n", + "│ arg1=[\n", + "│ │ 7,\n", + "│ │ 5,\n", + "│ │ 3,\n", + "│ │ 1\n", + "│ ]\n", + ")\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1;35mTestListInt8UReverseResponse\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[33marg1\u001b[0m=\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m7\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m5\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m3\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m]\u001b[0m\n", + "\u001b[1m)\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.SendCommand(2, 1, Clusters.TestCluster.Commands.TestListInt8UReverseRequest([1, 3, 5, 7]))" + ] + }, + { + "cell_type": "markdown", + "id": "a513295e-c44f-4deb-aa36-8b404c91e95e", + "metadata": {}, + "source": [ + "### Read Interaction\n", + "\n", + "The `ReadAttribute` method on the `DeviceController` class can be used to read attributes from a target. The NodeId of the target is the first argument, followed by a list of paths that are expressed as cluster object namespaces to the respective slices of the data that is requested.\n", + "\n", + "By default, the data is returned as a dictionary, with the top-level item representing the endpoint, then the cluster and the attribute. The latter two keys are expressed using cluster object namespaces." + ] + }, + { + "cell_type": "markdown", + "id": "493dae62-f9fe-40b6-9c3d-0584e9c1893f", + "metadata": {}, + "source": [ + "#### Read 1 attribute:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "7167af96-43b1-4524-8712-592e3ede6114", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "{\n", + "│ 1: {\n", + "│ │ <class 'chip.clusters.Objects.TestCluster'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int16u'>: 0\n", + "│ │ }\n", + "│ }\n", + "}\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "a = await devCtrl.ReadAttribute(2, [Clusters.TestCluster.Attributes.Int16u])\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "b6c3bf1f-3247-4f8d-ac42-1b5ebc59cb44", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "{\n", + "│ <class 'chip.clusters.Objects.TestCluster.Attributes.Int16u'>: 0\n", + "}\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "a[1][Clusters.TestCluster]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a2cafa5e-6c0e-42b9-bac0-8a1770306718", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
0\n",
+ "
\n"
+ ],
+ "text/plain": [
+ "\u001b[1;36m0\u001b[0m\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "a[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.Int16u]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "49f5a4f5-9d0e-4678-a4b1-9b00cf5518c1",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "#### Read 2 attributes:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "8e2cb85c-9fa4-4f2e-bd71-aea54988274d",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n", + "{\n", + "│ 1: {\n", + "│ │ <class 'chip.clusters.Objects.TestCluster'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Boolean'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int16u'>: 0\n", + "│ │ }\n", + "│ }\n", + "}\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Boolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.ReadAttribute(2, [Clusters.TestCluster.Attributes.Int16u, Clusters.TestCluster.Attributes.Boolean])" + ] + }, + { + "cell_type": "markdown", + "id": "b276df34-e38b-4a1e-a104-7f0e71842a75", + "metadata": {}, + "source": [ + "#### Read the entirety of a cluster on an endpoint:\n", + "\n", + "The path is represented as tuple of (endpoint, cluster)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "043cb3ac-3346-45f1-bcd3-803ea33dc3c0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "{\n", + "│ 1: {\n", + "│ │ <class 'chip.clusters.Objects.OnOff'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n", + "│ │ }\n", + "│ }\n", + "}\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.ReadAttribute(2, [(1, Clusters.OnOff)])" + ] + }, + { + "cell_type": "markdown", + "id": "07a9e227-4f53-42a9-8fb0-5da32515dc9f", + "metadata": {}, + "source": [ + "#### Read the entirety of a cluster across all endpoints:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "15d7a880-9ddd-4619-9e42-3fd8895d80e1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "{\n", + "│ 1: {\n", + "│ │ <class 'chip.clusters.Objects.OnOff'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n", + "│ │ }\n", + "│ },\n", + "│ 2: {\n", + "│ │ <class 'chip.clusters.Objects.OnOff'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n", + "│ │ }\n", + "│ }\n", + "}\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m2\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.ReadAttribute(2, [Clusters.OnOff])" + ] + }, + { + "cell_type": "markdown", + "id": "8d2403ba-91f1-4b59-b5ce-68ccc175f8ea", + "metadata": {}, + "source": [ + "#### Read an endpoint:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "accb9351-c8e0-4a4e-86d9-784b35903144", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "{\n", + "│ 2: {\n", + "│ │ <class 'chip.clusters.Objects.Groups'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Groups.Attributes.NameSupport'>: 128,\n", + "│ │ │ <class 'chip.clusters.Objects.Groups.Attributes.ClusterRevision'>: 3\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.OnOff'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Descriptor'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.DeviceList'>: [\n", + "│ │ │ │ DeviceType(\n", + "│ │ │ │ │ type=256,\n", + "│ │ │ │ │ revision=1\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ServerList'>: [\n", + "│ │ │ │ 4,\n", + "│ │ │ │ 6,\n", + "│ │ │ │ 29,\n", + "│ │ │ │ 1030\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ClientList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.PartsList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.OccupancySensing'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'>: 2\n", + "│ │ }\n", + "│ }\n", + "}\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m2\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.NameSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m128\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.DeviceList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mDeviceType\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[1;36m256\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mrevision\u001b[0m=\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ServerList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m4\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m6\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m29\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1030\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClientList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.PartsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.ReadAttribute(2, [2])" + ] + }, + { + "cell_type": "markdown", + "id": "8aad8fef-66d7-4320-ba3c-47b481d66960", + "metadata": {}, + "source": [ + "#### Read the entire node:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "6fff453d-59a4-4dba-878f-1c65c7b1958b", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 0, Attribute =
\n", + "{\n", + "│ 0: {\n", + "│ │ <class 'chip.clusters.Objects.Identify'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Identify.Attributes.IdentifyTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Identify.Attributes.IdentifyType'>: 2,\n", + "│ │ │ <class 'chip.clusters.Objects.Identify.Attributes.ClusterRevision'>: 2\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Groups'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Groups.Attributes.NameSupport'>: 128,\n", + "│ │ │ <class 'chip.clusters.Objects.Groups.Attributes.ClusterRevision'>: 3\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Descriptor'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.DeviceList'>: [\n", + "│ │ │ │ DeviceType(\n", + "│ │ │ │ │ type=22,\n", + "│ │ │ │ │ revision=1\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ServerList'>: [\n", + "│ │ │ │ 3,\n", + "│ │ │ │ 4,\n", + "│ │ │ │ 29,\n", + "│ │ │ │ 30,\n", + "│ │ │ │ 31,\n", + "│ │ │ │ 40,\n", + "│ │ │ │ 42,\n", + "│ │ │ │ 43,\n", + "│ │ │ │ 44,\n", + "│ │ │ │ 46,\n", + "│ │ │ │ 48,\n", + "│ │ │ │ 49,\n", + "│ │ │ │ 50,\n", + "│ │ │ │ 51,\n", + "│ │ │ │ 52,\n", + "│ │ │ │ 53,\n", + "│ │ │ │ 54,\n", + "│ │ │ │ 55,\n", + "│ │ │ │ 60,\n", + "│ │ │ │ 62,\n", + "│ │ │ │ 63,\n", + "│ │ │ │ 64,\n", + "│ │ │ │ 65,\n", + "│ │ │ │ 1029\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ClientList'>: [\n", + "│ │ │ │ 41\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.PartsList'>: [\n", + "│ │ │ │ 1,\n", + "│ │ │ │ 2\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Binding'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Binding.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.AccessControl'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.AccessControl.Attributes.Acl'>: [\n", + "│ │ │ │ AccessControlEntry(\n", + "│ │ │ │ │ fabricIndex=1,\n", + "│ │ │ │ │ privilege=<Privilege.kAdminister: 5>,\n", + "│ │ │ │ │ authMode=<AuthMode.kCase: 2>,\n", + "│ │ │ │ │ subjects=[\n", + "│ │ │ │ │ │ 1\n", + "│ │ │ │ │ ],\n", + "│ │ │ │ │ targets=Null\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.AccessControl.Attributes.Extension'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.AccessControl.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Basic'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.InteractionModelVersion'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.VendorName'>: 'TEST_VENDOR',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.VendorID'>: 9050,\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.ProductName'>: 'TEST_PRODUCT',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.ProductID'>: 65279,\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.NodeLabel'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.Location'>: 'XX',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.HardwareVersion'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.HardwareVersionString'>: 'TEST_VERSION',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.SoftwareVersion'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.SoftwareVersionString'>: 'prerelease',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.ManufacturingDate'>: '20210614123456ZZ',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.PartNumber'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.ProductURL'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.ProductLabel'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.SerialNumber'>: 'TEST_SN',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.LocalConfigDisabled'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.Reachable'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.UniqueID'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.Basic.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.DefaultOtaProviders'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdatePossible'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdateState'>: <OTAUpdateStateEnum.kUnknown: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdateStateProgress'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.LocalizationConfiguration'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.LocalizationConfiguration.Attributes.ActiveLocale'>: 'en-US',\n", + "│ │ │ <class 'chip.clusters.Objects.LocalizationConfiguration.Attributes.SupportedLocales'>: [\n", + "│ │ │ │ 'Test',\n", + "│ │ │ │ 'en-US',\n", + "│ │ │ │ 'de-DE',\n", + "│ │ │ │ 'fr-FR',\n", + "│ │ │ │ 'en-GB',\n", + "│ │ │ │ 'es-ES',\n", + "│ │ │ │ 'zh-CN',\n", + "│ │ │ │ 'it-IT',\n", + "│ │ │ │ 'ja-JP'\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.LocalizationConfiguration.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.TimeFormatLocalization'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.TimeFormatLocalization.Attributes.HourFormat'>: <HourFormat.k12hr: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.TimeFormatLocalization.Attributes.ActiveCalendarType'>: <CalendarType.kBuddhist: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.TimeFormatLocalization.Attributes.SupportedCalendarTypes'>: [\n", + "│ │ │ │ <CalendarType.kBuddhist: 0>,\n", + "│ │ │ │ <CalendarType.kChinese: 1>,\n", + "│ │ │ │ <CalendarType.kCoptic: 2>,\n", + "│ │ │ │ <CalendarType.kEthiopian: 3>,\n", + "│ │ │ │ <CalendarType.kGregorian: 4>,\n", + "│ │ │ │ <CalendarType.kHebrew: 5>,\n", + "│ │ │ │ <CalendarType.kIndian: 6>,\n", + "│ │ │ │ <CalendarType.kIslamic: 7>,\n", + "│ │ │ │ <CalendarType.kJapanese: 8>,\n", + "│ │ │ │ <CalendarType.kKorean: 9>,\n", + "│ │ │ │ <CalendarType.kPersian: 10>,\n", + "│ │ │ │ <CalendarType.kTaiwanese: 11>\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.TimeFormatLocalization.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.PowerSourceConfiguration'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSourceConfiguration.Attributes.Sources'>: [\n", + "│ │ │ │ 1\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSourceConfiguration.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.GeneralCommissioning'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.Breadcrumb'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.BasicCommissioningInfoList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.RegulatoryConfig'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.LocationCapability'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.FeatureMap'>: 6,\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralCommissioning.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.NetworkCommissioning'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.MaxNetworks'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.Networks'>: ValueDecodeFailure(\n", + "│ │ │ │ TLVValue=None,\n", + "│ │ │ │ Reason=InteractionModelError(<Status.UnsupportedRead: 143>)\n", + "│ │ │ ),\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ScanMaxTimeSeconds'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ConnectMaxTimeSeconds'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.InterfaceEnabled'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkingStatus'>: <NetworkCommissioningStatus.kSuccess: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkID'>: b'',\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastConnectErrorValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.FeatureMap'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.GeneralDiagnostics'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.NetworkInterfaces'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.RebootCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.UpTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.TotalOperationalHours'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.BootReasons'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveHardwareFaults'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveRadioFaults'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveNetworkFaults'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.GeneralDiagnostics.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.SoftwareDiagnostics'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.ThreadMetrics'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapFree'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapUsed'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapHighWatermark'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.FeatureMap'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.SoftwareDiagnostics.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Channel'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RoutingRole'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.NetworkName'>: b'',\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PanId'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ExtendedPanId'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.MeshLocalPrefix'>: b'',\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.OverrunCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.NeighborTableList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RouteTableList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PartitionId'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Weighting'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.DataVersion'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.StableDataVersion'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.LeaderRouterId'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.DetachedRoleCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ChildRoleCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RouterRoleCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.LeaderRoleCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.AttachAttemptCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PartitionIdChangeCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.BetterPartitionAttachAttemptCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ParentChangeCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxTotalCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxUnicastCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBroadcastCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxAckRequestedCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxAckedCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxNoAckRequestedCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDataCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDataPollCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBeaconCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBeaconRequestCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxOtherCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxRetryCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDirectMaxRetryExpiryCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxIndirectMaxRetryExpiryCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrCcaCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrAbortCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrBusyChannelCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxTotalCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxUnicastCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBroadcastCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDataCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDataPollCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBeaconCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBeaconRequestCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxOtherCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxAddressFilteredCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDestAddrFilteredCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDuplicatedCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrNoFrameCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrUnknownNeighborCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrInvalidSrcAddrCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrSecCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrFcsCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrOtherCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ActiveTimestamp'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PendingTimestamp'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Delay'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.SecurityPolicy'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ChannelMask'>: b'',\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.OperationalDatasetComponents'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ActiveNetworkFaultsList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.FeatureMap'>: 15,\n", + "│ │ │ <class 'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.Bssid'>: b'',\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.SecurityType'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.WiFiVersion'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.ChannelNumber'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.Rssi'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.BeaconLostCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.BeaconRxCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketMulticastRxCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketMulticastTxCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketUnicastRxCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketUnicastTxCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.CurrentMaxRate'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.OverrunCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.FeatureMap'>: 3,\n", + "│ │ │ <class 'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PHYRate'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.FullDuplex'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PacketRxCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PacketTxCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.TxErrCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.CollisionCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.OverrunCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.CarrierDetect'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.TimeSinceReset'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.FeatureMap'>: 3,\n", + "│ │ │ <class 'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.AdministratorCommissioning'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.AdministratorCommissioning.Attributes.WindowStatus'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.AdministratorCommissioning.Attributes.AdminFabricIndex'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.AdministratorCommissioning.Attributes.AdminVendorId'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.AdministratorCommissioning.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.OperationalCredentials'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OperationalCredentials.Attributes.NOCs'>: [\n", + "│ │ │ │ NOCStruct(\n", + "│ │ │ │ │ fabricIndex=1,\n", + "│ │ │ │ │ noc=b'\\x150\\x01\\x01\\x01$\\x02\\x017\\x03$\\x13\\x01$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x11\\x02$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\xbc8\\x9d2\\xe7\\xe6\\x0f\\x12\\xcb\\x0fYb\\x8f\\xa6zc\\xa1\\xb2y\\x18\\xc3~\\x98\\xee\\xa9r\\xd3\\x18\\xe9@\\xf9\\x17B\\xa6\\xed\\x11\\x92\\xc2\\xe2k&\\x88m\\r^`\\x10\\xc3|\\xdd\\xb4)\\r\\x11\\xcc\\xd1p\\x9bwN)H)\\x187\\n5\\x01(\\x01\\x18$\\x02\\x016\\x03\\x04\\x02\\x04\\x01\\x180\\x04\\x14B8k q\\xd8Lv\\x85^A;\\xceyC\\xa4\\xe9|\\xc1\\x120\\x05\\x14\\x8d\\xe3\\xb8\\x08&j\\xd4\\xa5\\xd5\\x1c\\xb5\\x83]\\xa5-\\x97jG\\xdb\\x87\\x180\\x0b@4\\n\\xcd\\x15+\\xa9n}s\\xbb$u\\x12\\xec\"B\\x00\\x98\\x1fD\\xd4\\xb7\\xcc\\xbb\\xd3\\x17*\\xfa\\xd3\\x8atX]\\xca\\xec\\xaf:[$o|\\xc6\"z\\x15\\xb4d\\x144\\x11i\\xa4\\xaa7\\xce\\x9f\\xc5l\\x11\\xe7I\\x87L\\x88\\x18',\n", + "│ │ │ │ │ icac=b'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x13\\x01$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\xf2\\xc0\\x10\\xe9=c\\x9e\\xed.\\xaaQj\\x0ca\\xd8\\x1f\\xfb:\\xf2\\x92$\\x04hc><\\xb2\\xc9R>\\xfe\\x1f\\x121\\xf2\\xaf5 \\xc4\\r\\xd3=\\xd0\\xae\\xbe\\xb4\\x85\\x8dI\\xfa`Z\\xaeI\\xfe*>\\xb1\\x88:,Rs\\xb57\\n5\\x01)\\x01\\x18$\\x02`0\\x04\\x14\\x8d\\xe3\\xb8\\x08&j\\xd4\\xa5\\xd5\\x1c\\xb5\\x83]\\xa5-\\x97jG\\xdb\\x870\\x05\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd<\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd5\\x180\\x0b@\\x91\\x1cY!4-\\\\\\xc1hC[q\\xa8\\x85\\x00\\xa7\\xdd\\xd8\\x1fAM\\xca-6\\xf5 \\x89\\x85k\\x05;\\x15\\xd0\\x83A>D\\xe9\\x9e\\xc1]\\xbb\\xcd\\x8c\\x83\\xbbm\\xab\\xf9\\x8a\\xdb\\x9df\\x11\\x05\\x98hC\\x8f\\xcd\\xad\\n7\\x9e\\x18'\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'>: [\n", + "│ │ │ │ FabricDescriptor(\n", + "│ │ │ │ │ fabricIndex=1,\n", + "│ │ │ │ │ rootPublicKey=b'\\x04\\x1b$\\xfe8s\\x9d\\xcdJ\\xb8\\tN\\xfd\\x16\\xb2\\xbf\\xecn\\x00\\xfd\\x93\\xfa\\xc8`\\x89M\\x14\\xe8RB\\x9f\\xc0\\x9f\\x05\\\\dfX\\xd7\\xa8\\xc3\\x05\\x05#52/\\xfe\\xc3\\x1c\\xa1\\xa7\\xa8\\x0cF\\xa2S\\xa2\\xf5\\xfe\\xd8\\x9fQ\\x0b\\xfa',\n", + "│ │ │ │ │ vendorId=60064,\n", + "│ │ │ │ │ fabricId=1,\n", + "│ │ │ │ │ nodeId=2,\n", + "│ │ │ │ │ label=''\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.OperationalCredentials.Attributes.SupportedFabrics'>: 16,\n", + "│ │ │ <class 'chip.clusters.Objects.OperationalCredentials.Attributes.CommissionedFabrics'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.OperationalCredentials.Attributes.TrustedRootCertificates'>: [\n", + "│ │ │ │ b'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x14\\x00$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\x1b$\\xfe8s\\x9d\\xcdJ\\xb8\\tN\\xfd\\x16\\xb2\\xbf\\xecn\\x00\\xfd\\x93\\xfa\\xc8`\\x89M\\x14\\xe8RB\\x9f\\xc0\\x9f\\x05\\\\dfX\\xd7\\xa8\\xc3\\x05\\x05#52/\\xfe\\xc3\\x1c\\xa1\\xa7\\xa8\\x0cF\\xa2S\\xa2\\xf5\\xfe\\xd8\\x9fQ\\x0b\\xfa7\\n5\\x01)\\x01\\x18$\\x02`0\\x04\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd<\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd50\\x05\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd<\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd5\\x180\\x0b@J\\xa5\\xdb\\xec9\\xd3i\\xbf\\xa84\\xbc(r\\xfb\\xf9\\x95X\\x00\\xf1\\x1f\\xd5#\\x14x\\xbeT}\\xda\\xe1\\x15\\x94\\x92\\xdb\\xc8\\xccI0\\xc5\\xe2\\x1ev0h\\x10N\\xdd\\x8b\\xd7\\x94\\x90]\\xd4\\x8f\\x08>\\x8b\\xc8j\\x05\\xbeb\\xed\\xd5\\xe0\\x18'\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.OperationalCredentials.Attributes.CurrentFabricIndex'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.OperationalCredentials.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.GroupKeyManagement'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.GroupKeyManagement.Attributes.GroupKeyMap'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.GroupKeyManagement.Attributes.GroupTable'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.GroupKeyManagement.Attributes.MaxGroupsPerFabric'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.GroupKeyManagement.Attributes.MaxGroupKeysPerFabric'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.GroupKeyManagement.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.FixedLabel'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.FixedLabel.Attributes.LabelList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.FixedLabel.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.UserLabel'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.UserLabel.Attributes.LabelList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.UserLabel.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MinMeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MaxMeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.ClusterRevision'>: 2\n", + "│ │ }\n", + "│ },\n", + "│ 1: {\n", + "│ │ <class 'chip.clusters.Objects.Identify'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Identify.Attributes.IdentifyTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Identify.Attributes.IdentifyType'>: 2,\n", + "│ │ │ <class 'chip.clusters.Objects.Identify.Attributes.ClusterRevision'>: 2\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Groups'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Groups.Attributes.NameSupport'>: 128,\n", + "│ │ │ <class 'chip.clusters.Objects.Groups.Attributes.ClusterRevision'>: 3\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Scenes'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Scenes.Attributes.SceneCount'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Scenes.Attributes.CurrentScene'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Scenes.Attributes.CurrentGroup'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Scenes.Attributes.SceneValid'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.Scenes.Attributes.NameSupport'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Scenes.Attributes.ClusterRevision'>: 3\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.OnOff'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.OnOffSwitchConfiguration'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.SwitchType'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.SwitchActions'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.LevelControl'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.CurrentLevel'>: 254,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.RemainingTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.MinLevel'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.MaxLevel'>: 254,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.CurrentFrequency'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.MinFrequency'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.MaxFrequency'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.Options'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.OnOffTransitionTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.OnLevel'>: 254,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.OnTransitionTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.OffTransitionTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.DefaultMoveRate'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.StartUpCurrentLevel'>: Null,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.FeatureMap'>: 3,\n", + "│ │ │ <class 'chip.clusters.Objects.LevelControl.Attributes.ClusterRevision'>: 5\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.BinaryInputBasic'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.BinaryInputBasic.Attributes.OutOfService'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.BinaryInputBasic.Attributes.PresentValue'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.BinaryInputBasic.Attributes.StatusFlags'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.BinaryInputBasic.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Descriptor'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.DeviceList'>: [\n", + "│ │ │ │ DeviceType(\n", + "│ │ │ │ │ type=256,\n", + "│ │ │ │ │ revision=1\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ServerList'>: [\n", + "│ │ │ │ 3,\n", + "│ │ │ │ 4,\n", + "│ │ │ │ 5,\n", + "│ │ │ │ 6,\n", + "│ │ │ │ 7,\n", + "│ │ │ │ 8,\n", + "│ │ │ │ 15,\n", + "│ │ │ │ 29,\n", + "│ │ │ │ 30,\n", + "│ │ │ │ 37,\n", + "│ │ │ │ 47,\n", + "│ │ │ │ 49,\n", + "│ │ │ │ 57,\n", + "│ │ │ │ 59,\n", + "│ │ │ │ 64,\n", + "│ │ │ │ 65,\n", + "│ │ │ │ 69,\n", + "│ │ │ │ 80,\n", + "│ │ │ │ 257,\n", + "│ │ │ │ 258,\n", + "│ │ │ │ 259,\n", + "│ │ │ │ 512,\n", + "│ │ │ │ 513,\n", + "│ │ │ │ 516,\n", + "│ │ │ │ 768,\n", + "│ │ │ │ 1024,\n", + "│ │ │ │ 1026,\n", + "│ │ │ │ 1027,\n", + "│ │ │ │ 1028,\n", + "│ │ │ │ 1029,\n", + "│ │ │ │ 1030,\n", + "│ │ │ │ 1280,\n", + "│ │ │ │ 1283,\n", + "│ │ │ │ 1284,\n", + "│ │ │ │ 1285,\n", + "│ │ │ │ 1286,\n", + "│ │ │ │ 1287,\n", + "│ │ │ │ 1288,\n", + "│ │ │ │ 1289,\n", + "│ │ │ │ 1290,\n", + "│ │ │ │ 1291,\n", + "│ │ │ │ 1292,\n", + "│ │ │ │ 1293,\n", + "│ │ │ │ 1294,\n", + "│ │ │ │ 1295,\n", + "│ │ │ │ 2820\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ClientList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.PartsList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Binding'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Binding.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Actions'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Actions.Attributes.ActionList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.Actions.Attributes.EndpointList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.Actions.Attributes.SetupUrl'>: 'https://example.com',\n", + "│ │ │ <class 'chip.clusters.Objects.Actions.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.PowerSource'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.Status'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.Order'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.Description'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.BatteryVoltage'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.BatteryPercentRemaining'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.BatteryTimeRemaining'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.BatteryChargeLevel'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.ActiveBatteryFaults'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.BatteryChargeState'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PowerSource.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.NetworkCommissioning'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.MaxNetworks'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.Networks'>: ValueDecodeFailure(\n", + "│ │ │ │ TLVValue=None,\n", + "│ │ │ │ Reason=InteractionModelError(<Status.UnsupportedRead: 143>)\n", + "│ │ │ ),\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ScanMaxTimeSeconds'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ConnectMaxTimeSeconds'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.InterfaceEnabled'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkingStatus'>: <NetworkCommissioningStatus.kSuccess: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkID'>: b'',\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.LastConnectErrorValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.NetworkCommissioning.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.BridgedDeviceBasic'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.BridgedDeviceBasic.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Switch'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Switch.Attributes.NumberOfPositions'>: 2,\n", + "│ │ │ <class 'chip.clusters.Objects.Switch.Attributes.CurrentPosition'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Switch.Attributes.MultiPressMax'>: 2,\n", + "│ │ │ <class 'chip.clusters.Objects.Switch.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Switch.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.FixedLabel'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.FixedLabel.Attributes.LabelList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.FixedLabel.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.UserLabel'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.UserLabel.Attributes.LabelList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.UserLabel.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.BooleanState'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.BooleanState.Attributes.StateValue'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.BooleanState.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.ModeSelect'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.ModeSelect.Attributes.CurrentMode'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ModeSelect.Attributes.SupportedModes'>: [\n", + "│ │ │ │ ModeOptionStruct(\n", + "│ │ │ │ │ label='Black',\n", + "│ │ │ │ │ mode=0,\n", + "│ │ │ │ │ semanticTag=0\n", + "│ │ │ │ ),\n", + "│ │ │ │ ModeOptionStruct(\n", + "│ │ │ │ │ label='Cappuccino',\n", + "│ │ │ │ │ mode=4,\n", + "│ │ │ │ │ semanticTag=0\n", + "│ │ │ │ ),\n", + "│ │ │ │ ModeOptionStruct(\n", + "│ │ │ │ │ label='Espresso',\n", + "│ │ │ │ │ mode=7,\n", + "│ │ │ │ │ semanticTag=0\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.ModeSelect.Attributes.OnMode'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ModeSelect.Attributes.StartUpMode'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ModeSelect.Attributes.Description'>: 'Coffee',\n", + "│ │ │ <class 'chip.clusters.Objects.ModeSelect.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.DoorLock'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.LockState'>: <DlLockState.kUnlocked: 2>,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.LockType'>: <DlLockType.kDeadBolt: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.ActuatorEnabled'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.DoorState'>: <DlDoorState.kDoorOpen: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.DoorOpenEvents'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.DoorClosedEvents'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.OpenPeriod'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.NumberOfTotalUsersSupported'>: 10,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.NumberOfPINUsersSupported'>: 10,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.NumberOfWeekDaySchedulesSupportedPerUser'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.NumberOfYearDaySchedulesSupportedPerUser'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.NumberOfHolidaySchedulesSupported'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.MaxPINCodeLength'>: 6,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.MinPINCodeLength'>: 6,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.CredentialRulesSupport'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.Language'>: 'en',\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.AutoRelockTime'>: 96,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.SoundVolume'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.OperatingMode'>: <DlOperatingMode.kNormal: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.SupportedOperatingModes'>: 65526,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.DefaultConfigurationRegister'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.EnableOneTouchLocking'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.EnableInsideStatusLED'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.EnablePrivacyModeButton'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.WrongCodeEntryLimit'>: 3,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.UserCodeTemporaryDisableTime'>: 10,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.RequirePINforRemoteOperation'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.DoorLock.Attributes.ClusterRevision'>: 3\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.WindowCovering'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.Type'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLift'>: 32767,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTilt'>: 32767,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.ConfigStatus'>: 3,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLiftPercentage'>: 50,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTiltPercentage'>: 50,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.OperationalStatus'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.TargetPositionLiftPercent100ths'>: 500,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.TargetPositionTiltPercent100ths'>: 500,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.EndProductType'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLiftPercent100ths'>: 500,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTiltPercent100ths'>: 500,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.InstalledOpenLimitLift'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.InstalledClosedLimitLift'>: 65535,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.InstalledOpenLimitTilt'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.InstalledClosedLimitTilt'>: 65535,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.Mode'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.SafetyStatus'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.WindowCovering.Attributes.ClusterRevision'>: 5\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.BarrierControl'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.BarrierControl.Attributes.BarrierMovingState'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.BarrierControl.Attributes.BarrierSafetyStatus'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.BarrierControl.Attributes.BarrierCapabilities'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.BarrierControl.Attributes.BarrierPosition'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.BarrierControl.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxPressure'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxSpeed'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxFlow'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstPressure'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstPressure'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinCompPressure'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxCompPressure'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstSpeed'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstSpeed'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstFlow'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstFlow'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstTemp'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstTemp'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.PumpStatus'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.EffectiveOperationMode'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.EffectiveControlMode'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Capacity'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Speed'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.LifetimeRunningHours'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Power'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.LifetimeEnergyConsumed'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.OperationMode'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.ControlMode'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.AlarmMask'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Thermostat'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.LocalTemperature'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.AbsMinHeatSetpointLimit'>: 700,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.AbsMaxHeatSetpointLimit'>: 3000,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.AbsMinCoolSetpointLimit'>: 1600,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.AbsMaxCoolSetpointLimit'>: 3200,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.OccupiedCoolingSetpoint'>: 2600,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.OccupiedHeatingSetpoint'>: 2000,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.MinHeatSetpointLimit'>: 700,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.MaxHeatSetpointLimit'>: 3000,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.MinCoolSetpointLimit'>: 1600,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.MaxCoolSetpointLimit'>: 3200,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.MinSetpointDeadBand'>: 25,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.ControlSequenceOfOperation'>: 4,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.SystemMode'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.StartOfWeek'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.NumberOfWeeklyTransitions'>: 7,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.NumberOfDailyTransitions'>: 4,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.FeatureMap'>: 11,\n", + "│ │ │ <class 'chip.clusters.Objects.Thermostat.Attributes.ClusterRevision'>: 3\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.ThermostatUserInterfaceConfiguration'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.TemperatureDisplayMode'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.KeypadLockout'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.ScheduleProgrammingVisibility'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.ColorControl'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.CurrentHue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.CurrentSaturation'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.RemainingTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.CurrentX'>: 24939,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.CurrentY'>: 24701,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.DriftCompensation'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.CompensationText'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorTemperature'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorMode'>: 2,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorControlOptions'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.NumberOfPrimaries'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary1X'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary1Y'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary1Intensity'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary2X'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary2Y'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary2Intensity'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary3X'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary3Y'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary3Intensity'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary4X'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary4Y'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary4Intensity'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary5X'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary5Y'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary5Intensity'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary6X'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary6Y'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.Primary6Intensity'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.WhitePointX'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.WhitePointY'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointRX'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointRY'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointRIntensity'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointGX'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointGY'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointGIntensity'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointBX'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointBY'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorPointBIntensity'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.EnhancedCurrentHue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.EnhancedColorMode'>: 2,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorLoopActive'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorLoopDirection'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorLoopTime'>: 25,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorLoopStartEnhancedHue'>: 8960,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorLoopStoredEnhancedHue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorCapabilities'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorTempPhysicalMin'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ColorTempPhysicalMax'>: 65279,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.CoupleColorTempToLevelMinMireds'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.StartUpColorTemperatureMireds'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ColorControl.Attributes.ClusterRevision'>: 3\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.IlluminanceMeasurement'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MinMeasuredValue'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MaxMeasuredValue'>: 65534,\n", + "│ │ │ <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.Tolerance'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.LightSensorType'>: Null,\n", + "│ │ │ <class 'chip.clusters.Objects.IlluminanceMeasurement.Attributes.ClusterRevision'>: 2\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.TemperatureMeasurement'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.TemperatureMeasurement.Attributes.MeasuredValue'>: -32768,\n", + "│ │ │ <class 'chip.clusters.Objects.TemperatureMeasurement.Attributes.MinMeasuredValue'>: -32768,\n", + "│ │ │ <class 'chip.clusters.Objects.TemperatureMeasurement.Attributes.MaxMeasuredValue'>: -32768,\n", + "│ │ │ <class 'chip.clusters.Objects.TemperatureMeasurement.Attributes.Tolerance'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TemperatureMeasurement.Attributes.ClusterRevision'>: 3\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.PressureMeasurement'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.PressureMeasurement.Attributes.MeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PressureMeasurement.Attributes.MinMeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PressureMeasurement.Attributes.MaxMeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.PressureMeasurement.Attributes.ClusterRevision'>: 2\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.FlowMeasurement'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.FlowMeasurement.Attributes.MeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.FlowMeasurement.Attributes.MinMeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.FlowMeasurement.Attributes.MaxMeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.FlowMeasurement.Attributes.Tolerance'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.FlowMeasurement.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MinMeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MaxMeasuredValue'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.Tolerance'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.ClusterRevision'>: 2\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.OccupancySensing'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'>: 2\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.IasZone'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.IasZone.Attributes.ZoneState'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.IasZone.Attributes.ZoneType'>: 541,\n", + "│ │ │ <class 'chip.clusters.Objects.IasZone.Attributes.ZoneStatus'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.IasZone.Attributes.IasCieAddress'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.IasZone.Attributes.ZoneId'>: 255,\n", + "│ │ │ <class 'chip.clusters.Objects.IasZone.Attributes.ClusterRevision'>: 2\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.WakeOnLan'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.WakeOnLan.Attributes.WakeOnLanMacAddress'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.WakeOnLan.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Channel'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Channel.Attributes.ChannelList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.Channel.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.TargetNavigator'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.TargetNavigator.Attributes.TargetNavigatorList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.TargetNavigator.Attributes.CurrentNavigatorTarget'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TargetNavigator.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.MediaPlayback'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.MediaPlayback.Attributes.PlaybackState'>: <PlaybackStateEnum.kPlaying: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.MediaPlayback.Attributes.StartTime'>: 255,\n", + "│ │ │ <class 'chip.clusters.Objects.MediaPlayback.Attributes.Duration'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.MediaPlayback.Attributes.PlaybackSpeed'>: 0.0,\n", + "│ │ │ <class 'chip.clusters.Objects.MediaPlayback.Attributes.SeekRangeEnd'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.MediaPlayback.Attributes.SeekRangeStart'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.MediaPlayback.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.MediaInput'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.MediaInput.Attributes.MediaInputList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.MediaInput.Attributes.CurrentMediaInput'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.MediaInput.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.LowPower'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.LowPower.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.KeypadInput'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.KeypadInput.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.ContentLauncher'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.ContentLauncher.Attributes.AcceptHeaderList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.ContentLauncher.Attributes.SupportedStreamingProtocols'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ContentLauncher.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.AudioOutput'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.AudioOutput.Attributes.AudioOutputList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.AudioOutput.Attributes.CurrentAudioOutput'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.AudioOutput.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.ApplicationLauncher'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.ApplicationLauncher.Attributes.ApplicationLauncherList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.ApplicationLauncher.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.ApplicationBasic'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.ApplicationBasic.Attributes.VendorName'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.ApplicationBasic.Attributes.VendorId'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationName'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.ApplicationBasic.Attributes.ProductId'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationStatus'>: <ApplicationStatusEnum.kStopped: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationVersion'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.ApplicationBasic.Attributes.AllowedVendorList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.ApplicationBasic.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.AccountLogin'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.AccountLogin.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.TestCluster'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Boolean'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Bitmap8'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Bitmap16'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Bitmap32'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Bitmap64'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int8u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int16u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int24u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int32u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int40u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int48u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int56u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int64u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int8s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int16s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int24s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int32s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int40s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int48s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int56s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int64s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Enum8'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Enum16'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.FloatSingle'>: 0.0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.FloatDouble'>: 0.0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.OctetString'>: b'',\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.ListInt8u'>: [\n", + "│ │ │ │ 0,\n", + "│ │ │ │ 0,\n", + "│ │ │ │ 0,\n", + "│ │ │ │ 0\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.ListOctetString'>: [\n", + "│ │ │ │ b'',\n", + "│ │ │ │ b'',\n", + "│ │ │ │ b'',\n", + "│ │ │ │ b''\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.ListStructOctetString'>: [\n", + "│ │ │ │ TestListStructOctet(\n", + "│ │ │ │ │ fabricIndex=0,\n", + "│ │ │ │ │ operationalCert=b''\n", + "│ │ │ │ ),\n", + "│ │ │ │ TestListStructOctet(\n", + "│ │ │ │ │ fabricIndex=0,\n", + "│ │ │ │ │ operationalCert=b''\n", + "│ │ │ │ ),\n", + "│ │ │ │ TestListStructOctet(\n", + "│ │ │ │ │ fabricIndex=0,\n", + "│ │ │ │ │ operationalCert=b''\n", + "│ │ │ │ ),\n", + "│ │ │ │ TestListStructOctet(\n", + "│ │ │ │ │ fabricIndex=0,\n", + "│ │ │ │ │ operationalCert=b''\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.LongOctetString'>: b'',\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.CharString'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.LongCharString'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.EpochUs'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.EpochS'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.VendorId'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.ListNullablesAndOptionalsStruct'>: [\n", + "│ │ │ │ NullablesAndOptionalsStruct(\n", + "│ │ │ │ │ nullableInt=Null,\n", + "│ │ │ │ │ optionalInt=None,\n", + "│ │ │ │ │ nullableOptionalInt=None,\n", + "│ │ │ │ │ nullableString=Null,\n", + "│ │ │ │ │ optionalString=None,\n", + "│ │ │ │ │ nullableOptionalString=None,\n", + "│ │ │ │ │ nullableStruct=Null,\n", + "│ │ │ │ │ optionalStruct=None,\n", + "│ │ │ │ │ nullableOptionalStruct=None,\n", + "│ │ │ │ │ nullableList=Null,\n", + "│ │ │ │ │ optionalList=None,\n", + "│ │ │ │ │ nullableOptionalList=None\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.EnumAttr'>: <SimpleEnum.kUnspecified: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.StructAttr'>: SimpleStruct(\n", + "│ │ │ │ a=0,\n", + "│ │ │ │ b=False,\n", + "│ │ │ │ c=<SimpleEnum.kUnspecified: 0>,\n", + "│ │ │ │ d=b'',\n", + "│ │ │ │ e='',\n", + "│ │ │ │ f=0,\n", + "│ │ │ │ g=0.0,\n", + "│ │ │ │ h=0.0\n", + "│ │ │ ),\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt8u'>: 70,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt8s'>: -20,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt16u'>: 200,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt16s'>: -100,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.ListLongOctetString'>: [\n", + "│ │ │ │ b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',\n", + "│ │ │ │ b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',\n", + "│ │ │ │ b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',\n", + "│ │ │ │ b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.ListFabricScoped'>: [\n", + "│ │ │ │ TestFabricScoped(\n", + "│ │ │ │ │ fabricIndex=1\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.TimedWriteBoolean'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.GeneralErrorBoolean'>: ValueDecodeFailure(\n", + "│ │ │ │ TLVValue=None,\n", + "│ │ │ │ Reason=InteractionModelError(<Status.InvalidDataType: 141>)\n", + "│ │ │ ),\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.ClusterErrorBoolean'>: ValueDecodeFailure(\n", + "│ │ │ │ TLVValue=None,\n", + "│ │ │ │ Reason=InteractionModelError(<Status.Failure: 1>)\n", + "│ │ │ ),\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableBoolean'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap8'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap16'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap32'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap64'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt8u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt16u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt24u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt32u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt40u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt48u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt56u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt64u'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt8s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt16s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt24s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt32s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt40s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt48s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt56s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt64s'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableEnum8'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableEnum16'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableFloatSingle'>: 0.0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableFloatDouble'>: 0.0,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableOctetString'>: b'',\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableCharString'>: '',\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableEnumAttr'>: <SimpleEnum.kUnspecified: 0>,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableStruct'>: Null,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt8u'>: 70,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt8s'>: -20,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt16u'>: 200,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt16s'>: -100,\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.ElectricalMeasurement'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.MeasurementType'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.TotalActivePower'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltage'>: 65535,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltageMin'>: 32768,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltageMax'>: 32768,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrent'>: 65535,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrentMin'>: 65535,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrentMax'>: 65535,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePower'>: -1,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePowerMin'>: -1,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePowerMax'>: -1,\n", + "│ │ │ <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.ClusterRevision'>: 3\n", + "│ │ }\n", + "│ },\n", + "│ 2: {\n", + "│ │ <class 'chip.clusters.Objects.Groups'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Groups.Attributes.NameSupport'>: 128,\n", + "│ │ │ <class 'chip.clusters.Objects.Groups.Attributes.ClusterRevision'>: 3\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.OnOff'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>: False,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>: True,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.FeatureMap'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'>: 4\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.Descriptor'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.DeviceList'>: [\n", + "│ │ │ │ DeviceType(\n", + "│ │ │ │ │ type=256,\n", + "│ │ │ │ │ revision=1\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ServerList'>: [\n", + "│ │ │ │ 4,\n", + "│ │ │ │ 6,\n", + "│ │ │ │ 29,\n", + "│ │ │ │ 1030\n", + "│ │ │ ],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ClientList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.PartsList'>: [],\n", + "│ │ │ <class 'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'>: 1\n", + "│ │ },\n", + "│ │ <class 'chip.clusters.Objects.OccupancySensing'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'>: 0,\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'>: 1,\n", + "│ │ │ <class 'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'>: 2\n", + "│ │ }\n", + "│ }\n", + "}\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m0\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.IdentifyTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.IdentifyType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.NameSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m128\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.DeviceList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mDeviceType\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[1;36m22\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mrevision\u001b[0m=\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ServerList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m3\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m4\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m29\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m30\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m31\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m40\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m42\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m43\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m44\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m46\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m48\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m49\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m50\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m51\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m52\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m53\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m54\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m55\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m60\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m62\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m63\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m64\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m65\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1029\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClientList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m41\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.PartsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Binding'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Binding.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl.Attributes.Acl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mAccessControlEntry\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mprivilege\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mPrivilege.kAdminister:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mauthMode\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mAuthMode.kCase:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msubjects\u001b[0m=\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ │ \u001b[0m\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mtargets\u001b[0m=\u001b[35mNull\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl.Attributes.Extension'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccessControl.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.InteractionModelVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.VendorName'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'TEST_VENDOR'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.VendorID'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m9050\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ProductName'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'TEST_PRODUCT'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ProductID'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65279\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.NodeLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.Location'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'XX'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.HardwareVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.HardwareVersionString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'TEST_VERSION'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.SoftwareVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.SoftwareVersionString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'prerelease'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ManufacturingDate'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'20210614123456ZZ'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.PartNumber'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ProductURL'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ProductLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.SerialNumber'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'TEST_SN'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.LocalConfigDisabled'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.Reachable'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.UniqueID'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Basic.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.DefaultOtaProviders'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdatePossible'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdateState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mOTAUpdateStateEnum.kUnknown:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.UpdateStateProgress'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OtaSoftwareUpdateRequestor.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LocalizationConfiguration'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LocalizationConfiguration.Attributes.ActiveLocale'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'en-US'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LocalizationConfiguration.Attributes.SupportedLocales'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'Test'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'en-US'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'de-DE'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'fr-FR'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'en-GB'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'es-ES'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'zh-CN'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'it-IT'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'ja-JP'\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LocalizationConfiguration.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TimeFormatLocalization'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TimeFormatLocalization.Attributes.HourFormat'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mHourFormat.k12hr:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TimeFormatLocalization.Attributes.ActiveCalendarType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kBuddhist:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TimeFormatLocalization.Attributes.SupportedCalendarTypes'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kBuddhist:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kChinese:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kCoptic:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kEthiopian:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m3\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kGregorian:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m4\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kHebrew:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m5\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kIndian:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m6\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kIslamic:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m7\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kJapanese:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m8\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kKorean:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m9\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kPersian:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m10\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mCalendarType.kTaiwanese:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m11\u001b[0m\u001b[1m>\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TimeFormatLocalization.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSourceConfiguration'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSourceConfiguration.Attributes.Sources'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSourceConfiguration.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.Breadcrumb'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.BasicCommissioningInfoList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.RegulatoryConfig'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.LocationCapability'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m6\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralCommissioning.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.MaxNetworks'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.Networks'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mTLVValue\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mReason\u001b[0m=\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.UnsupportedRead:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m143\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ScanMaxTimeSeconds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ConnectMaxTimeSeconds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.InterfaceEnabled'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkingStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mNetworkCommissioningStatus.kSuccess:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkID'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastConnectErrorValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.NetworkInterfaces'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.RebootCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.UpTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.TotalOperationalHours'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.BootReasons'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveHardwareFaults'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveRadioFaults'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.ActiveNetworkFaults'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GeneralDiagnostics.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.ThreadMetrics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapFree'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapUsed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.CurrentHeapHighWatermark'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.SoftwareDiagnostics.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Channel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RoutingRole'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.NetworkName'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PanId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ExtendedPanId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.MeshLocalPrefix'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.OverrunCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.NeighborTableList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RouteTableList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PartitionId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Weighting'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.DataVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.StableDataVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.LeaderRouterId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.DetachedRoleCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ChildRoleCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RouterRoleCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.LeaderRoleCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.AttachAttemptCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PartitionIdChangeCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.BetterPartitionAttachAttemptCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ParentChangeCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxTotalCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxUnicastCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBroadcastCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxAckRequestedCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxAckedCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxNoAckRequestedCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDataCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDataPollCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBeaconCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxBeaconRequestCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxOtherCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxRetryCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxDirectMaxRetryExpiryCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxIndirectMaxRetryExpiryCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrCcaCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrAbortCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.TxErrBusyChannelCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxTotalCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxUnicastCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBroadcastCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDataCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDataPollCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBeaconCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxBeaconRequestCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxOtherCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxAddressFilteredCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDestAddrFilteredCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxDuplicatedCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrNoFrameCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrUnknownNeighborCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrInvalidSrcAddrCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrSecCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrFcsCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.RxErrOtherCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ActiveTimestamp'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.PendingTimestamp'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.Delay'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.SecurityPolicy'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ChannelMask'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.OperationalDatasetComponents'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ActiveNetworkFaultsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m15\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThreadNetworkDiagnostics.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.Bssid'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.SecurityType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.WiFiVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.ChannelNumber'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.Rssi'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.BeaconLostCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.BeaconRxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketMulticastRxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketMulticastTxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketUnicastRxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.PacketUnicastTxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.CurrentMaxRate'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.OverrunCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WiFiNetworkDiagnostics.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PHYRate'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.FullDuplex'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PacketRxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.PacketTxCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.TxErrCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.CollisionCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.OverrunCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.CarrierDetect'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.TimeSinceReset'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.EthernetNetworkDiagnostics.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AdministratorCommissioning'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AdministratorCommissioning.Attributes.WindowStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AdministratorCommissioning.Attributes.AdminFabricIndex'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AdministratorCommissioning.Attributes.AdminVendorId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AdministratorCommissioning.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.NOCs'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mNOCStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mnoc\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x150\\x01\\x01\\x01$\\x02\\x017\\x03$\\x13\\x01$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x11\\x02$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\xbc8\\x9d2\\xe7\\xe6\\x0f\\x12\\xcb\\x0fYb\\x8f\\xa6zc\\xa1\\xb2y\\x18\\xc3~\\x98\\xee\\xa9r\\xd3\\x18\\xe9@\\xf9\\x17B\\xa6\\xed\\x11\\x92\\xc2\\xe2k&\\x88m\\r^`\\x10\\xc3|\\xdd\\xb4\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\r\\x11\\xcc\\xd1p\\x9bwN\u001b[0m\u001b[32m)\u001b[0m\u001b[32mH\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x187\\n5\\x01\u001b[0m\u001b[32m(\u001b[0m\u001b[32m\\x01\\x18$\\x02\\x016\\x03\\x04\\x02\\x04\\x01\\x180\\x04\\x14B8k q\\xd8Lv\\x85^A;\\xceyC\\xa4\\xe9|\\xc1\\x120\\x05\\x14\\x8d\\xe3\\xb8\\x08&j\\xd4\\xa5\\xd5\\x1c\\xb5\\x83\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xa5-\\x97jG\\xdb\\x87\\x180\\x0b@4\\n\\xcd\\x15+\\xa9n\u001b[0m\u001b[32m}\u001b[0m\u001b[32ms\\xbb$u\\x12\\xec\"B\\x00\\x98\\x1fD\\xd4\\xb7\\xcc\\xbb\\xd3\\x17*\\xfa\\xd3\\x8atX\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xca\\xec\\xaf:\u001b[0m\u001b[32m[\u001b[0m\u001b[32m$o|\\xc6\"z\\x15\\xb4d\\x144\\x11i\\xa4\\xaa7\\xce\\x9f\\xc5l\\x11\\xe7I\\x87L\\x88\\x18'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33micac\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x13\\x01$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\xf2\\xc0\\x10\\\u001b[0m\u001b[32mxe9\u001b[0m\u001b[32m=\u001b[0m\u001b[32mc\u001b[0m\u001b[32m\\x9e\\xed.\\xaaQj\\x0ca\\xd8\\x1f\\xfb:\\xf2\\x92$\\x04hc>\u001b[0m\u001b[32m<\u001b[0m\u001b[32m\\xb2\\xc9R\u001b[0m\u001b[32m>\u001b[0m\u001b[32m\\xfe\\x1f\\x121\\xf2\\xaf5 \\xc4\\r\\\u001b[0m\u001b[32mxd3\u001b[0m\u001b[32m=\\xd0\\xae\\xbe\\xb4\\x85\\x8dI\\xfa`Z\\xaeI\\xfe*>\\xb1\\x88:,Rs\\xb57\\n5\\x01\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x01\\x18$\\x02`0\\x04\\x14\\x8d\\xe3\\xb8\\x08&j\\xd4\\xa5\\xd5\\x1c\\xb5\\x83\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xa5-\\x97jG\\xdb\\x870\\x05\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd\u001b[0m\u001b[32m<\u001b[0m\u001b[32m\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd5\\x180\\x0b@\\x91\\x1cY!4-\\\\\\xc1hC\u001b[0m\u001b[32m[\u001b[0m\u001b[32mq\\xa8\\x85\\x00\\xa7\\xdd\\xd8\\x1fAM\\xca-6\\xf5 \\x89\\x85k\\x05;\\x15\\xd0\\x83A\u001b[0m\u001b[32m>\u001b[0m\u001b[32mD\\xe9\\x9e\\xc1\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xbb\\xcd\\x8c\\x83\\xbbm\\xab\\xf9\\x8a\\xdb\\x9df\\x11\\x05\\x98hC\\x8f\\xcd\\xad\\n7\\x9e\\x18'\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.FabricsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mFabricDescriptor\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mrootPublicKey\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m'\\x04\\x1b$\\xfe8s\\x9d\\xcdJ\\xb8\\tN\\xfd\\x16\\xb2\\xbf\\xecn\\x00\\xfd\\x93\\xfa\\xc8`\\x89M\\x14\\xe8RB\\x9f\\xc0\\x9f\\x05\\\\dfX\\xd7\\xa8\\xc3\\x05\\x05#52/\\xfe\\xc3\\x1c\\xa1\\xa7\\xa8\\x0cF\\xa2S\\xa2\\xf5\\xfe\\xd8\\x9fQ\\x0b\\xfa'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m60064\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mfabricId\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mnodeId\u001b[0m=\u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m''\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.SupportedFabrics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m16\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.CommissionedFabrics'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.TrustedRootCertificates'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32mb'\\x150\\x01\\x01\\x00$\\x02\\x017\\x03$\\x14\\x00$\\x15\\x01\\x18&\\x04\\x80\"\\x81\\'&\\x05\\x80%M:7\\x06$\\x14\\x00$\\x15\\x01\\x18$\\x07\\x01$\\x08\\x010\\tA\\x04\\x1b$\\xfe8s\\x9d\\xcdJ\\xb8\\tN\\xfd\\x16\\xb2\\xbf\\xecn\\x00\\xfd\\x93\\xfa\\xc8`\\x89M\\x14\\xe8RB\\x9f\\xc0\\x9f\\x05\\\\dfX\\xd7\\xa8\\xc3\\x05\\x05#52/\\xfe\\xc3\\x1c\\xa1\\xa7\\xa8\\x0cF\\xa2S\\xa2\\xf5\\xfe\\xd8\\x9fQ\\x0b\\xfa7\\n5\\x01\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\\x01\\x18$\\x02`0\\x04\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd\u001b[0m\u001b[32m<\u001b[0m\u001b[32m\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd50\\x05\\x14\\xd0\\xb8\\x11\\xcc\\x07\\x01\\xfd<\\xb1\\xc3\\x9a\\xc3\\xc4\\xb1\\xa8\\xa1\\x9al\\xa6\\xd5\\x180\\x0b@J\\xa5\\xdb\\xec9\\xd3i\\xbf\\xa84\\xbc\u001b[0m\u001b[32m(\u001b[0m\u001b[32mr\\xfb\\xf9\\x95X\\x00\\xf1\\x1f\\xd5#\\x14x\\xbeT\u001b[0m\u001b[32m}\u001b[0m\u001b[32m\\xda\\xe1\\x15\\x94\\x92\\xdb\\xc8\\xccI0\\xc5\\xe2\\x1ev0h\\x10N\\xdd\\x8b\\xd7\\x94\\x90\u001b[0m\u001b[32m]\u001b[0m\u001b[32m\\xd4\\x8f\\x08\u001b[0m\u001b[32m>\u001b[0m\u001b[32m\\x8b\\xc8j\\x05\\xbeb\\xed\\xd5\\xe0\\x18'\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.CurrentFabricIndex'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OperationalCredentials.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement.Attributes.GroupKeyMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement.Attributes.GroupTable'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement.Attributes.MaxGroupsPerFabric'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement.Attributes.MaxGroupKeysPerFabric'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.GroupKeyManagement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel.Attributes.LabelList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel.Attributes.LabelList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.IdentifyTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.IdentifyType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Identify.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.NameSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m128\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.SceneCount'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.CurrentScene'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.CurrentGroup'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.SceneValid'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.NameSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Scenes.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOffSwitchConfiguration'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.SwitchType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.SwitchActions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOffSwitchConfiguration.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.CurrentLevel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m254\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.RemainingTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.MinLevel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.MaxLevel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m254\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.CurrentFrequency'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.MinFrequency'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.MaxFrequency'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.Options'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.OnOffTransitionTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.OnLevel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m254\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.OnTransitionTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.OffTransitionTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.DefaultMoveRate'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.StartUpCurrentLevel'\u001b[0m\u001b[1m>\u001b[0m: Null,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LevelControl.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m5\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BinaryInputBasic'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BinaryInputBasic.Attributes.OutOfService'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BinaryInputBasic.Attributes.PresentValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BinaryInputBasic.Attributes.StatusFlags'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BinaryInputBasic.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.DeviceList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mDeviceType\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[1;36m256\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mrevision\u001b[0m=\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ServerList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m3\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m4\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m5\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m6\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m7\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m8\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m15\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m29\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m30\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m37\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m47\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m49\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m57\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m59\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m64\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m65\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m69\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m80\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m257\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m258\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m259\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m512\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m513\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m516\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m768\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1024\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1026\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1027\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1028\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1029\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1030\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1280\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1283\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1284\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1285\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1286\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1287\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1288\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1289\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1290\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1291\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1292\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1293\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1294\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1295\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m2820\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClientList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.PartsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Binding'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Binding.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Actions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Actions.Attributes.ActionList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Actions.Attributes.EndpointList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Actions.Attributes.SetupUrl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'https://example.com'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Actions.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.Status'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.Order'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.Description'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.BatteryVoltage'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.BatteryPercentRemaining'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.BatteryTimeRemaining'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.BatteryChargeLevel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.ActiveBatteryFaults'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.BatteryChargeState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PowerSource.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.MaxNetworks'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.Networks'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mTLVValue\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mReason\u001b[0m=\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.UnsupportedRead:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m143\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ScanMaxTimeSeconds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ConnectMaxTimeSeconds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.InterfaceEnabled'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkingStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mNetworkCommissioningStatus.kSuccess:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastNetworkID'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.LastConnectErrorValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.NetworkCommissioning.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BridgedDeviceBasic'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BridgedDeviceBasic.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch.Attributes.NumberOfPositions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch.Attributes.CurrentPosition'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch.Attributes.MultiPressMax'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Switch.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel.Attributes.LabelList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FixedLabel.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel.Attributes.LabelList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UserLabel.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BooleanState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BooleanState.Attributes.StateValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BooleanState.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.CurrentMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.SupportedModes'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Black'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mmode\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msemanticTag\u001b[0m=\u001b[1;36m0\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Cappuccino'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mmode\u001b[0m=\u001b[1;36m4\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msemanticTag\u001b[0m=\u001b[1;36m0\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mModeOptionStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mlabel\u001b[0m=\u001b[32m'Espresso'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mmode\u001b[0m=\u001b[1;36m7\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33msemanticTag\u001b[0m=\u001b[1;36m0\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.OnMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.StartUpMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.Description'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'Coffee'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ModeSelect.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.LockState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mDlLockState.kUnlocked:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m2\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.LockType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mDlLockType.kDeadBolt:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.ActuatorEnabled'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.DoorState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mDlDoorState.kDoorOpen:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.DoorOpenEvents'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.DoorClosedEvents'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.OpenPeriod'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.NumberOfTotalUsersSupported'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m10\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.NumberOfPINUsersSupported'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m10\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.NumberOfWeekDaySchedulesSupportedPerUser'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.NumberOfYearDaySchedulesSupportedPerUser'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.NumberOfHolidaySchedulesSupported'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.MaxPINCodeLength'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m6\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.MinPINCodeLength'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m6\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.CredentialRulesSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.Language'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m'en'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.AutoRelockTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m96\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.SoundVolume'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.OperatingMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mDlOperatingMode.kNormal:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.SupportedOperatingModes'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65526\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.DefaultConfigurationRegister'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.EnableOneTouchLocking'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.EnableInsideStatusLED'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.EnablePrivacyModeButton'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.WrongCodeEntryLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.UserCodeTemporaryDisableTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m10\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.RequirePINforRemoteOperation'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.DoorLock.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.Type'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLift'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m32767\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTilt'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m32767\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.ConfigStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLiftPercentage'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m50\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTiltPercentage'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m50\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.OperationalStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.TargetPositionLiftPercent100ths'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m500\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.TargetPositionTiltPercent100ths'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m500\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.EndProductType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionLiftPercent100ths'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m500\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.CurrentPositionTiltPercent100ths'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m500\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.InstalledOpenLimitLift'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.InstalledClosedLimitLift'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.InstalledOpenLimitTilt'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.InstalledClosedLimitTilt'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.Mode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.SafetyStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WindowCovering.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m5\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl.Attributes.BarrierMovingState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl.Attributes.BarrierSafetyStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl.Attributes.BarrierCapabilities'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl.Attributes.BarrierPosition'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.BarrierControl.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxPressure'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxSpeed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxFlow'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstPressure'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstPressure'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinCompPressure'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxCompPressure'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstSpeed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstSpeed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstFlow'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstFlow'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MinConstTemp'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.MaxConstTemp'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.PumpStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.EffectiveOperationMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.EffectiveControlMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Capacity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Speed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.LifetimeRunningHours'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.Power'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.LifetimeEnergyConsumed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.OperationMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.ControlMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.AlarmMask'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PumpConfigurationAndControl.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.LocalTemperature'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.AbsMinHeatSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m700\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.AbsMaxHeatSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3000\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.AbsMinCoolSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1600\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.AbsMaxCoolSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3200\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.OccupiedCoolingSetpoint'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2600\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.OccupiedHeatingSetpoint'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2000\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.MinHeatSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m700\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.MaxHeatSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3000\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.MinCoolSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1600\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.MaxCoolSetpointLimit'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3200\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.MinSetpointDeadBand'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m25\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.ControlSequenceOfOperation'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.SystemMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.StartOfWeek'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.NumberOfWeeklyTransitions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m7\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.NumberOfDailyTransitions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m11\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Thermostat.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThermostatUserInterfaceConfiguration'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.TemperatureDisplayMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.KeypadLockout'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.ScheduleProgrammingVisibility'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ThermostatUserInterfaceConfiguration.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CurrentHue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CurrentSaturation'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.RemainingTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CurrentX'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m24939\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CurrentY'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m24701\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.DriftCompensation'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CompensationText'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorTemperature'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorControlOptions'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.NumberOfPrimaries'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary1X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary1Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary1Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary2X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary2Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary2Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary3X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary3Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary3Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary4X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary4Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary4Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary5X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary5Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary5Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary6X'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary6Y'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.Primary6Intensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.WhitePointX'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.WhitePointY'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointRX'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointRY'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointRIntensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointGX'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointGY'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointGIntensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointBX'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointBY'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorPointBIntensity'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.EnhancedCurrentHue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.EnhancedColorMode'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorLoopActive'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorLoopDirection'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorLoopTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m25\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorLoopStartEnhancedHue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m8960\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorLoopStoredEnhancedHue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorCapabilities'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorTempPhysicalMin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ColorTempPhysicalMax'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65279\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.CoupleColorTempToLevelMinMireds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.StartUpColorTemperatureMireds'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ColorControl.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65534\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.Tolerance'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.LightSensorType'\u001b[0m\u001b[1m>\u001b[0m: Null,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IlluminanceMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-32768\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-32768\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-32768\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement.Attributes.Tolerance'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TemperatureMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PressureMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PressureMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PressureMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PressureMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.PressureMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement.Attributes.Tolerance'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.FlowMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MinMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.MaxMeasuredValue'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.Tolerance'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.RelativeHumidityMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.ZoneState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.ZoneType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m541\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.ZoneStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.IasCieAddress'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.ZoneId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m255\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.IasZone.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WakeOnLan'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WakeOnLan.Attributes.WakeOnLanMacAddress'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.WakeOnLan.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Channel'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Channel.Attributes.ChannelList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Channel.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TargetNavigator'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TargetNavigator.Attributes.TargetNavigatorList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TargetNavigator.Attributes.CurrentNavigatorTarget'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TargetNavigator.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.PlaybackState'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mPlaybackStateEnum.kPlaying:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.StartTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m255\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.Duration'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.PlaybackSpeed'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.SeekRangeEnd'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.SeekRangeStart'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaPlayback.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaInput'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaInput.Attributes.MediaInputList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaInput.Attributes.CurrentMediaInput'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.MediaInput.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LowPower'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.LowPower.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.KeypadInput'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.KeypadInput.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ContentLauncher'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ContentLauncher.Attributes.AcceptHeaderList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ContentLauncher.Attributes.SupportedStreamingProtocols'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ContentLauncher.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AudioOutput'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AudioOutput.Attributes.AudioOutputList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AudioOutput.Attributes.CurrentAudioOutput'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AudioOutput.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationLauncher'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationLauncher.Attributes.ApplicationLauncherList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationLauncher.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.VendorName'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.VendorId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationName'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.ProductId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationStatus'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mApplicationStatusEnum.kStopped:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.ApplicationVersion'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.AllowedVendorList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ApplicationBasic.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccountLogin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccountLogin.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Boolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Bitmap8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Bitmap16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Bitmap32'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Bitmap64'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int24u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int32u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int40u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int48u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int56u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int64u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int24s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int32s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int40s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int48s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int56s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int64s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Enum8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Enum16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.FloatSingle'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.FloatDouble'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.OctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m0\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32mb''\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListStructOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33moperationalCert\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33moperationalCert\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33moperationalCert\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33moperationalCert\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.LongOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.CharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.LongCharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.EpochUs'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.EpochS'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.VendorId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListNullablesAndOptionalsStruct'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mNullablesAndOptionalsStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mnullableInt\u001b[0m=\u001b[35mNull\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33moptionalInt\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mnullableOptionalInt\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mnullableString\u001b[0m=\u001b[35mNull\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33moptionalString\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mnullableOptionalString\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mnullableStruct\u001b[0m=\u001b[35mNull\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33moptionalStruct\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mnullableOptionalStruct\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mnullableList\u001b[0m=\u001b[35mNull\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33moptionalList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mnullableOptionalList\u001b[0m=\u001b[3;35mNone\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.EnumAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.StructAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mc\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33md\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33me\u001b[0m=\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m70\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-20\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m200\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-100\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListLongOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListFabricScoped'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mTestFabricScoped\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.TimedWriteBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.GeneralErrorBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mTLVValue\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mReason\u001b[0m=\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.InvalidDataType:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m141\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ClusterErrorBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mTLVValue\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mReason\u001b[0m=\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.Failure:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap32'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap64'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt24u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt32u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt40u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt48u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt56u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt64u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt24s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt32s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt40s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt48s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt56s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt64s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableEnum8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableEnum16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableFloatSingle'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableFloatDouble'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableCharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableEnumAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableStruct'\u001b[0m\u001b[1m>\u001b[0m: Null,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m70\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-20\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m200\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-100\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.MeasurementType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.TotalActivePower'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltage'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltageMin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m32768\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsVoltageMax'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m32768\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrent'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrentMin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.RmsCurrentMax'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m65535\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePower'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePowerMin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.ActivePowerMax'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m2\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.NameSupport'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m128\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.StartUpOnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.FeatureMap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m4\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.DeviceList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mDeviceType\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[1;36m256\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mrevision\u001b[0m=\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ServerList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m4\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m6\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m29\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1030\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClientList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.PartsList'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.Occupancy'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.OccupancySensorTypeBitmap'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.ReadAttribute(2, [('*')])" + ] + }, + { + "cell_type": "markdown", + "id": "7209813d-81d8-4f4c-8d4a-73a69569c86d", + "metadata": {}, + "source": [ + "#### Alternative 'Cluster' View\n", + "\n", + "The above encapsulates each attribute as a 'cluster-object' key within the top-level cluster instance. Instead, an alternative view each attribute is represented as a field in the object can be retrieved by passing in `True` to the third argument:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "b46b9c2a-30c9-48e9-84ce-fe261cc10a5f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "{\n", + "│ 2: {\n", + "│ │ <class 'chip.clusters.Objects.Groups'>: Groups(\n", + "│ │ │ nameSupport=128,\n", + "│ │ │ attributeList=None,\n", + "│ │ │ featureMap=None,\n", + "│ │ │ clusterRevision=3\n", + "│ │ ),\n", + "│ │ <class 'chip.clusters.Objects.OnOff'>: OnOff(\n", + "│ │ │ onOff=False,\n", + "│ │ │ globalSceneControl=True,\n", + "│ │ │ onTime=0,\n", + "│ │ │ offWaitTime=0,\n", + "│ │ │ startUpOnOff=0,\n", + "│ │ │ attributeList=None,\n", + "│ │ │ featureMap=0,\n", + "│ │ │ clusterRevision=4\n", + "│ │ ),\n", + "│ │ <class 'chip.clusters.Objects.Descriptor'>: Descriptor(\n", + "│ │ │ deviceList=[\n", + "│ │ │ │ DeviceType(\n", + "│ │ │ │ │ type=256,\n", + "│ │ │ │ │ revision=1\n", + "│ │ │ │ )\n", + "│ │ │ ],\n", + "│ │ │ serverList=[\n", + "│ │ │ │ 4,\n", + "│ │ │ │ 6,\n", + "│ │ │ │ 29,\n", + "│ │ │ │ 1030\n", + "│ │ │ ],\n", + "│ │ │ clientList=[],\n", + "│ │ │ partsList=[],\n", + "│ │ │ attributeList=None,\n", + "│ │ │ featureMap=None,\n", + "│ │ │ clusterRevision=1\n", + "│ │ ),\n", + "│ │ <class 'chip.clusters.Objects.OccupancySensing'>: OccupancySensing(\n", + "│ │ │ occupancy=0,\n", + "│ │ │ occupancySensorType=0,\n", + "│ │ │ occupancySensorTypeBitmap=1,\n", + "│ │ │ pirOccupiedToUnoccupiedDelay=None,\n", + "│ │ │ pirUnoccupiedToOccupiedDelay=None,\n", + "│ │ │ pirUnoccupiedToOccupiedThreshold=None,\n", + "│ │ │ ultrasonicOccupiedToUnoccupiedDelay=None,\n", + "│ │ │ ultrasonicUnoccupiedToOccupiedDelay=None,\n", + "│ │ │ ultrasonicUnoccupiedToOccupiedThreshold=None,\n", + "│ │ │ physicalContactOccupiedToUnoccupiedDelay=None,\n", + "│ │ │ physicalContactUnoccupiedToOccupiedDelay=None,\n", + "│ │ │ physicalContactUnoccupiedToOccupiedThreshold=None,\n", + "│ │ │ attributeList=None,\n", + "│ │ │ featureMap=None,\n", + "│ │ │ clusterRevision=2\n", + "│ │ )\n", + "│ }\n", + "}\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m2\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Groups'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mGroups\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mnameSupport\u001b[0m=\u001b[1;36m128\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m3\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mOnOff\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33monOff\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mglobalSceneControl\u001b[0m=\u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33monTime\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33moffWaitTime\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mstartUpOnOff\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m4\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.Descriptor'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mDescriptor\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mdeviceList\u001b[0m=\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;35mDeviceType\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mtype\u001b[0m=\u001b[1;36m256\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ │ \u001b[0m\u001b[33mrevision\u001b[0m=\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mserverList\u001b[0m=\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m4\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m6\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m29\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[1;36m1030\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mclientList\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mpartsList\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m1\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OccupancySensing'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mOccupancySensing\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33moccupancy\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33moccupancySensorType\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33moccupancySensorTypeBitmap\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mpirOccupiedToUnoccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mpirUnoccupiedToOccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mpirUnoccupiedToOccupiedThreshold\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33multrasonicOccupiedToUnoccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33multrasonicUnoccupiedToOccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33multrasonicUnoccupiedToOccupiedThreshold\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mphysicalContactOccupiedToUnoccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mphysicalContactUnoccupiedToOccupiedDelay\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mphysicalContactUnoccupiedToOccupiedThreshold\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.ReadAttribute(2, [2], True)" + ] + }, + { + "cell_type": "markdown", + "id": "1e852897-ce10-4885-bd84-b1aa060b9b6c", + "metadata": {}, + "source": [ + "#### Read Events:\n", + "\n", + "A `ReadEvents` API exists that behaves similarly to the `ReadAttributes` API. It permits the same degrees of wildcard expression as its counterpart and follows the same format for expressing all wildcard permutations." + ] + }, + { + "cell_type": "markdown", + "id": "11f23767-c8a8-4ecd-8d38-023b3872eceb", + "metadata": {}, + "source": [ + "#### Read all events:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "5ef28449-1262-4b06-9984-4a2f9c409450", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "[\n", + "│ EventReadResult(\n", + "│ │ Header=EventHeader(\n", + "│ │ │ EndpointId=1,\n", + "│ │ │ Event=None,\n", + "│ │ │ EventNumber=0,\n", + "│ │ │ Priority=<EventPriority.DEBUG: 1>,\n", + "│ │ │ Timestamp=<EventTimestampType.SYSTEM: 0>,\n", + "│ │ │ TimestampType=None\n", + "│ │ ),\n", + "│ │ Status=<Status.Success: 0>,\n", + "│ │ Data=TestEvent(\n", + "│ │ │ arg1=0,\n", + "│ │ │ arg2=<SimpleEnum.kUnspecified: 0>,\n", + "│ │ │ arg3=False,\n", + "│ │ │ arg4=SimpleStruct(\n", + "│ │ │ │ a=0,\n", + "│ │ │ │ b=False,\n", + "│ │ │ │ c=<SimpleEnum.kUnspecified: 0>,\n", + "│ │ │ │ d=b'',\n", + "│ │ │ │ e='',\n", + "│ │ │ │ f=0,\n", + "│ │ │ │ g=0.0,\n", + "│ │ │ │ h=0.0\n", + "│ │ │ ),\n", + "│ │ │ arg5=[],\n", + "│ │ │ arg6=[]\n", + "│ │ )\n", + "│ )\n", + "]\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;35mEventReadResult\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mHeader\u001b[0m=\u001b[1;35mEventHeader\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mEndpointId\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mEvent\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mEventNumber\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mPriority\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventPriority.DEBUG:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mTimestamp\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventTimestampType.SYSTEM:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mTimestampType\u001b[0m=\u001b[3;35mNone\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mStatus\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mStatus.Success:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mData\u001b[0m=\u001b[1;35mTestEvent\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg1\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg2\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg3\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg4\u001b[0m=\u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mc\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33md\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33me\u001b[0m=\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg5\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg6\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[1m]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Force an event to get emitted.\n", + "await devCtrl.SendCommand(2, 1, Clusters.TestCluster.Commands.TestEmitTestEventRequest())\n", + "\n", + "await devCtrl.ReadEvent(2, [('*')])" + ] + }, + { + "cell_type": "markdown", + "id": "b93ee082-2a7f-47db-8c92-e7accc216086", + "metadata": {}, + "source": [ + "### Subscription Interaction\n", + "\n", + "To subscribe to a Node, the same `ReadAttributes` API is used to trigger a subscription, with a valid `reportInterval` tuple passed in being used as a way to indicate the request to create a subscription." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "921b58f7-cdfb-436f-813a-412cbf7a018d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
<Subscription (Id=6469889299346410316)>\n", + "\n" + ], + "text/plain": [ + "\u001b[1m<\u001b[0m\u001b[1;95mSubscription\u001b[0m\u001b[39m \u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mId\u001b[0m\u001b[39m=\u001b[0m\u001b[1;36m6469889299346410316\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1m>\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "reportingTimingParams = (0, 2) # MinInterval = 0s, MaxInterval = 2s\n", + "subscription = await devCtrl.ReadAttribute(2, [(2, Clusters.OnOff)], True, reportingTimingParams)\n", + "subscription" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "ebd8f6aa-cf7b-4396-a83a-ad2fdacad1ae", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "{\n", + "│ 2: {\n", + "│ │ <class 'chip.clusters.Objects.OnOff'>: OnOff(\n", + "│ │ │ onOff=False,\n", + "│ │ │ globalSceneControl=True,\n", + "│ │ │ onTime=0,\n", + "│ │ │ offWaitTime=0,\n", + "│ │ │ startUpOnOff=0,\n", + "│ │ │ attributeList=None,\n", + "│ │ │ featureMap=0,\n", + "│ │ │ clusterRevision=4\n", + "│ │ )\n", + "│ }\n", + "}\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m2\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mOnOff\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33monOff\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mglobalSceneControl\u001b[0m=\u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33monTime\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33moffWaitTime\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mstartUpOnOff\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mattributeList\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mfeatureMap\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mclusterRevision\u001b[0m=\u001b[1;36m4\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "subscription.GetAttributes()" + ] + }, + { + "cell_type": "markdown", + "id": "866329a7-7757-4a5d-b7b0-4d70a86b65b0", + "metadata": {}, + "source": [ + "#### Trigger Report\n", + "\n", + "To trigger a report, let's alter the state of the on/off switch on EP1. That should trigger the generation of a set of attribute reports.\n", + "\n", + "The `SubscriptionTransaction` object returned by `ReadAttribute` permits installing a callback that is invoked on any attribute report. A default callback is installed above that just dumps out the attribute data." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "b0d34116-6c9b-4aee-a8a0-f92091654b4c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attribute Changed:\n" + ] + }, + { + "data": { + "text/html": [ + "
{\n", + "│ 'Endpoint': 2,\n", + "│ 'Attribute': <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>,\n", + "│ 'Value': True\n", + "}\n", + "\n" + ], + "text/plain": [ + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Endpoint'\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Attribute'\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Value'\u001b[0m: \u001b[3;92mTrue\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attribute Changed:\n" + ] + }, + { + "data": { + "text/html": [ + "
{\n", + "│ 'Endpoint': 2,\n", + "│ 'Attribute': <class 'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'>,\n", + "│ 'Value': True\n", + "}\n", + "\n" + ], + "text/plain": [ + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Endpoint'\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Attribute'\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.GlobalSceneControl'\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Value'\u001b[0m: \u001b[3;92mTrue\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attribute Changed:\n" + ] + }, + { + "data": { + "text/html": [ + "
{\n", + "│ 'Endpoint': 2,\n", + "│ 'Attribute': <class 'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'>,\n", + "│ 'Value': 0\n", + "}\n", + "\n" + ], + "text/plain": [ + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Endpoint'\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Attribute'\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OffWaitTime'\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Value'\u001b[0m: \u001b[1;36m0\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.SendCommand(2, 2, Clusters.OnOff.Commands.On())\n", + "time.sleep(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "eb712364-4311-4bcb-91a4-2e9f26b825a1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attribute Changed:\n" + ] + }, + { + "data": { + "text/html": [ + "
{\n", + "│ 'Endpoint': 2,\n", + "│ 'Attribute': <class 'chip.clusters.Objects.OnOff.Attributes.OnOff'>,\n", + "│ 'Value': False\n", + "}\n", + "\n" + ], + "text/plain": [ + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Endpoint'\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Attribute'\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnOff'\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Value'\u001b[0m: \u001b[3;91mFalse\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Attribute Changed:\n" + ] + }, + { + "data": { + "text/html": [ + "
{\n", + "│ 'Endpoint': 2,\n", + "│ 'Attribute': <class 'chip.clusters.Objects.OnOff.Attributes.OnTime'>,\n", + "│ 'Value': 0\n", + "}\n", + "\n" + ], + "text/plain": [ + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Endpoint'\u001b[0m: \u001b[1;36m2\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Attribute'\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.OnOff.Attributes.OnTime'\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'Value'\u001b[0m: \u001b[1;36m0\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.SendCommand(2, 2, Clusters.OnOff.Commands.Off())\n", + "time.sleep(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "50aa8d53-0fe3-4489-badd-3db9f78ea210", + "metadata": {}, + "outputs": [], + "source": [ + "subscription.Shutdown()" + ] + }, + { + "cell_type": "markdown", + "id": "dad3f8bf-431e-496f-b2a7-6e675e3d3ee2", + "metadata": {}, + "source": [ + "#### Subscribe to Events" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "7db20b08-fed9-46f6-ab46-9e69c82a87fb", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "reportingTimingParams = (0, 2) # MinInterval = 0s, MaxInterval = 2s\n", + "subscription = await devCtrl.ReadEvent(2, [()], reportingTimingParams)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "d8599eec-b1e1-4936-aea2-11c2a015a7a7", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "[\n", + "│ EventReadResult(\n", + "│ │ Header=EventHeader(\n", + "│ │ │ EndpointId=1,\n", + "│ │ │ Event=None,\n", + "│ │ │ EventNumber=0,\n", + "│ │ │ Priority=<EventPriority.DEBUG: 1>,\n", + "│ │ │ Timestamp=<EventTimestampType.SYSTEM: 0>,\n", + "│ │ │ TimestampType=None\n", + "│ │ ),\n", + "│ │ Status=<Status.Success: 0>,\n", + "│ │ Data=TestEvent(\n", + "│ │ │ arg1=0,\n", + "│ │ │ arg2=<SimpleEnum.kUnspecified: 0>,\n", + "│ │ │ arg3=False,\n", + "│ │ │ arg4=SimpleStruct(\n", + "│ │ │ │ a=0,\n", + "│ │ │ │ b=False,\n", + "│ │ │ │ c=<SimpleEnum.kUnspecified: 0>,\n", + "│ │ │ │ d=b'',\n", + "│ │ │ │ e='',\n", + "│ │ │ │ f=0,\n", + "│ │ │ │ g=0.0,\n", + "│ │ │ │ h=0.0\n", + "│ │ │ ),\n", + "│ │ │ arg5=[],\n", + "│ │ │ arg6=[]\n", + "│ │ )\n", + "│ )\n", + "]\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;35mEventReadResult\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mHeader\u001b[0m=\u001b[1;35mEventHeader\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mEndpointId\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mEvent\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mEventNumber\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mPriority\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventPriority.DEBUG:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mTimestamp\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventTimestampType.SYSTEM:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mTimestampType\u001b[0m=\u001b[3;35mNone\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mStatus\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mStatus.Success:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mData\u001b[0m=\u001b[1;35mTestEvent\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg1\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg2\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg3\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg4\u001b[0m=\u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mc\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33md\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33me\u001b[0m=\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg5\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33marg6\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[1m]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "subscription.GetEvents()" + ] + }, + { + "cell_type": "markdown", + "id": "4ff2d257-ea1b-4957-97ed-fd6518740218", + "metadata": {}, + "source": [ + "### Trigger Event\n", + "\n", + "Force an event to get emitted, which after a short while, should generate a report and trigger the print out of the received event:" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "93cb4c17-b3c7-4462-b448-397171458416", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Received Event:\n" + ] + }, + { + "data": { + "text/html": [ + "
EventReadResult(\n", + "│ Header=EventHeader(\n", + "│ │ EndpointId=1,\n", + "│ │ Event=None,\n", + "│ │ EventNumber=1,\n", + "│ │ Priority=<EventPriority.DEBUG: 1>,\n", + "│ │ Timestamp=<EventTimestampType.SYSTEM: 0>,\n", + "│ │ TimestampType=None\n", + "│ ),\n", + "│ Status=<Status.Success: 0>,\n", + "│ Data=TestEvent(\n", + "│ │ arg1=0,\n", + "│ │ arg2=<SimpleEnum.kUnspecified: 0>,\n", + "│ │ arg3=False,\n", + "│ │ arg4=SimpleStruct(\n", + "│ │ │ a=0,\n", + "│ │ │ b=False,\n", + "│ │ │ c=<SimpleEnum.kUnspecified: 0>,\n", + "│ │ │ d=b'',\n", + "│ │ │ e='',\n", + "│ │ │ f=0,\n", + "│ │ │ g=0.0,\n", + "│ │ │ h=0.0\n", + "│ │ ),\n", + "│ │ arg5=[],\n", + "│ │ arg6=[]\n", + "│ )\n", + ")\n", + "\n" + ], + "text/plain": [ + "\u001b[1;35mEventReadResult\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mHeader\u001b[0m=\u001b[1;35mEventHeader\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mEndpointId\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mEvent\u001b[0m=\u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mEventNumber\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mPriority\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventPriority.DEBUG:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mTimestamp\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mEventTimestampType.SYSTEM:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mTimestampType\u001b[0m=\u001b[3;35mNone\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mStatus\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mStatus.Success:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[33mData\u001b[0m=\u001b[1;35mTestEvent\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33marg1\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33marg2\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33marg3\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33marg4\u001b[0m=\u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mc\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33md\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33me\u001b[0m=\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mf\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33marg5\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33marg6\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[1m)\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.SendCommand(2, 1, Clusters.TestCluster.Commands.TestEmitTestEventRequest())\n", + "time.sleep(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "6e294da6-1e71-444d-952b-0e1d3b8268b6", + "metadata": {}, + "outputs": [], + "source": [ + "subscription.Shutdown()" + ] + }, + { + "cell_type": "markdown", + "id": "e2b7e2ea-497f-40e7-86c5-198ad1a80950", + "metadata": {}, + "source": [ + "### Write Interaction\n", + "\n", + "To write attribute data, the `WriteAttribute` API can be used. It requires a NodeId and a list of cluster object encapsulated data for the attribute being written." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "95c78192-d895-4784-b8e6-4f8884bb1f92", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "[\n", + "│ AttributeStatus(\n", + "│ │ Path=AttributePath(\n", + "│ │ │ EndpointId=1,\n", + "│ │ │ ClusterId=1295,\n", + "│ │ │ AttributeId=6\n", + "│ │ ),\n", + "│ │ Status=<Status.Success: 0>\n", + "│ )\n", + "]\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;35mAttributeStatus\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mPath\u001b[0m=\u001b[1;35mAttributePath\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mEndpointId\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mClusterId\u001b[0m=\u001b[1;36m1295\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mAttributeId\u001b[0m=\u001b[1;36m6\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[33mStatus\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mStatus.Success:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[1m]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.WriteAttribute(2, [ (1, Clusters.TestCluster.Attributes.Int16u(2)) ])" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "69fcf8e6-a49e-471e-9169-14c4fee88f2e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "{\n", + "│ 1: {\n", + "│ │ <class 'chip.clusters.Objects.TestCluster'>: {\n", + "│ │ │ <class 'chip.clusters.Objects.TestCluster.Attributes.Int16u'>: 2\n", + "│ │ }\n", + "│ }\n", + "}\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "await devCtrl.ReadAttribute(2, [ (1, Clusters.TestCluster.Attributes.Int16u) ])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.5" + }, + "vscode": { + "interpreter": { + "hash": "f7fd7085b4be428477fa1342305f4ebb7800cfd7c4438123a54b78fc013e2c1b" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/guides/repl/Matter - Basic Interactions.ipynb b/docs/guides/repl/Matter - Basic Interactions.ipynb index 53e574047d78a0..fe2e36630e4a3c 100644 --- a/docs/guides/repl/Matter - Basic Interactions.ipynb +++ b/docs/guides/repl/Matter - Basic Interactions.ipynb @@ -74,164 +74,12 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "bad327b7-c78a-4c46-b224-077fe7539ee1", "metadata": { "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[0;34m[1643499271185] [10607:4156252] CHIP: [DL] _Init\u001b[0m\n", - "\u001b[0;32m[1643499271185] [10607:4156669] CHIP: [DL] Platform main loop started.\u001b[0m\n" - ] - }, - { - "data": { - "text/html": [ - "
──────────────────────────────────────── Matter REPL ────────────────────────────────────────\n", - "\n" - ], - "text/plain": [ - "\u001b[92m──────────────────────────────────────── \u001b[0mMatter REPL\u001b[92m ────────────────────────────────────────\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - " \n", - " \n", - " Welcome to the Matter Python REPL!\n", - " \n", - " For help, please type matterhelp()\n", - " \n", - " To get more information on a particular object/class, you can pass\n", - " that into matterhelp() as well.\n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "\n", - " \n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m Welcome to the Matter Python REPL!\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m For help, please type \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m To get more information on a particular object/class, you can pass\u001b[0m\n", - "\u001b[1;34m that into \u001b[0m\u001b[1;32mmatterhelp\u001b[0m\u001b[1;32m(\u001b[0m\u001b[1;32m)\u001b[0m\u001b[1;34m as well.\u001b[0m\n", - "\u001b[1;34m \u001b[0m\n", - "\u001b[1;34m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
─────────────────────────────────────────────────────────────────────────────────────────────\n",
- "
\n"
- ],
- "text/plain": [
- "\u001b[92m─────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "2022-01-29 15:34:31 johnsj-macbookpro1.roam.corp.google.com root[10607] ERROR [Errno 2] No such file or directory: '/tmp/repl-storage.json'\n",
- "2022-01-29 15:34:31 johnsj-macbookpro1.roam.corp.google.com root[10607] WARNING Could not load configuration from /tmp/repl-storage.json - resetting configuration...\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "\n",
- "No previous fabric admins discovered in persistent storage - creating a new one...\n",
- "
\n"
- ],
- "text/plain": [
- "\n",
- "\u001b[38;5;129mNo previous fabric admins discovered in persistent storage - creating a new one\u001b[0m\u001b[38;5;129m...\u001b[0m\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "New FabricAdmin: FabricId: 1(1)\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "\n", - "\n", - "\n" - ], - "text/plain": [ - "\n", - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
Creating default device controller on fabric 1...\n", - "\n" - ], - "text/plain": [ - "\u001b[38;5;129mCreating default device controller on fabric \u001b[0m\u001b[1;38;5;129m1\u001b[0m\u001b[38;5;129m...\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Allocating new controller with FabricId: 1(1), NodeId: 1\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "Default CHIP Device Controller has been initialized to manage fabricAdmins[0], and is \n", - "available as devCtrl\n", - "\n" - ], - "text/plain": [ - "\n", - "\n", - "\u001b[34mDefault CHIP Device Controller has been initialized to manage \u001b[0m\u001b[1;31mfabricAdmins\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;31m0\u001b[0m\u001b[1;31m]\u001b[0m\u001b[1;34m, and is \u001b[0m\n", - "\u001b[1;34mavailable as \u001b[0m\u001b[1;31mdevCtrl\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import chip.native\n", "import pkgutil\n", @@ -259,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "043ade5d-6f01-4cbc-8d60-57d605946ada", "metadata": {}, "outputs": [ @@ -319,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "d52b1adc-7723-4be8-80c0-f7f262398d39", "metadata": {}, "outputs": [ @@ -359,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "c55de6c7-da4e-488e-bafb-32781ee088a8", "metadata": {}, "outputs": [ @@ -451,7 +299,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "eb2563ac-0315-45ed-9984-308d4376ca94", "metadata": {}, "outputs": [ @@ -515,7 +363,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "75de30fc-666c-4610-9d86-25fb9d0e4f82", "metadata": {}, "outputs": [ @@ -549,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "677ce9b4-99f3-4c0e-8f78-d123eb3190b5", "metadata": {}, "outputs": [ @@ -629,7 +477,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "52ccd8c6", "metadata": {}, "outputs": [], @@ -654,6 +502,123 @@ "cell_type": "markdown", "id": "b33dec2e", "metadata": {}, + "source": [ + "#### Discover and commission commissionable node" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "67fa53b3", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "[\n", + "│ CommissionableNode(\n", + "│ │ (To Be Commissioned By)='caIndex(1)/fabricId(0x0000000000000001)/nodeId(0x000000000001B669)',\n", + "│ │ CommissionableNode(\n", + "│ │ │ instanceName='B2D5B11D799BB1E0',\n", + "│ │ │ hostName='DCA63289ABCD0000',\n", + "│ │ │ port=5540,\n", + "│ │ │ longDiscriminator=3840,\n", + "│ │ │ vendorId=65521,\n", + "│ │ │ productId=32769,\n", + "│ │ │ commissioningMode=1,\n", + "│ │ │ deviceType=0,\n", + "│ │ │ deviceName='',\n", + "│ │ │ pairingInstruction='',\n", + "│ │ │ pairingHint=33,\n", + "│ │ │ mrpRetryIntervalIdle=5000,\n", + "│ │ │ mrpRetryIntervalActive=300,\n", + "│ │ │ supportsTcp=True,\n", + "│ │ │ addresses=[\n", + "│ │ │ │ 'fd1e:1a94:d591:6914:dea6:32ff:fe89:abcd',\n", + "│ │ │ │ 'fe80::dea6:32ff:fe89:abcd',\n", + "│ │ │ │ '172.16.243.198'\n", + "│ │ │ ]\n", + "│ │ )\n", + "│ )\n", + "]\n", + "\n" + ], + "text/plain": [ + "\n", + "\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1;35mCommissionableNode\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m(\u001b[0mTo Be Commissioned By\u001b[1m)\u001b[0m=\u001b[32m'caIndex\u001b[0m\u001b[32m(\u001b[0m\u001b[32m1\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/fabricId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x0000000000000001\u001b[0m\u001b[32m)\u001b[0m\u001b[32m/nodeId\u001b[0m\u001b[32m(\u001b[0m\u001b[32m0x000000000001B669\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;35mCommissionableNode\u001b[0m\u001b[1m(\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33minstanceName\u001b[0m=\u001b[32m'B2D5B11D799BB1E0'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mhostName\u001b[0m=\u001b[32m'DCA63289ABCD0000'\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mport\u001b[0m=\u001b[1;36m5540\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mlongDiscriminator\u001b[0m=\u001b[1;36m3840\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mvendorId\u001b[0m=\u001b[1;36m65521\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mproductId\u001b[0m=\u001b[1;36m32769\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mcommissioningMode\u001b[0m=\u001b[1;36m1\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mdeviceType\u001b[0m=\u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mdeviceName\u001b[0m=\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mpairingInstruction\u001b[0m=\u001b[32m''\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mpairingHint\u001b[0m=\u001b[1;36m33\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mmrpRetryIntervalIdle\u001b[0m=\u001b[1;36m5000\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33mmrpRetryIntervalActive\u001b[0m=\u001b[1;36m300\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33msupportsTcp\u001b[0m=\u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[33maddresses\u001b[0m=\u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'fd1e:1a94:d591:6914:dea6:32ff:fe89:abcd'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'fe80::dea6:32ff:fe89:abcd'\u001b[0m,\n", + "\u001b[2;32m│ │ │ │ \u001b[0m\u001b[32m'192.168.2.1'\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[1m]\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[1m]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "devices = devCtrl.DiscoverCommissionableNodes(filterType=chip.discovery.FilterType.LONG_DISCRIMINATOR, filter=3840, stopOnFirst=True, timeoutSecond=2)\n", + "devices" + ] + }, + { + "cell_type": "markdown", + "id": "ed6f08a9", + "metadata": {}, + "source": [ + "You can find a list of discovered device\n", + "\n", + "You can call `Commission(nodeId, setupPinCode)` on one of the returned object:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2a7a7c40", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "devices[0].Commission(233, 20202021)" + ] + }, + { + "cell_type": "markdown", + "id": "78ef00f9", + "metadata": {}, + "source": [ + "The device will be commissioned by the DeviceController instance that discovered it (`caIndex(1)/fabricId(0x0000000000000001)/nodeId(0x000000000001B669)` in this case)." + ] + }, + { + "cell_type": "markdown", + "id": "aa9c6906", + "metadata": {}, "source": [ "#### Commission Target (Locally Launched App)\n", "\n", @@ -4219,9 +4184,9 @@ ], "metadata": { "kernelspec": { - "display_name": "matter-env", + "display_name": "Python 3 (ipykernel)", "language": "python", - "name": "matter-env" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -4233,7 +4198,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.2+chromium.10" + "version": "3.10.5" + }, + "vscode": { + "interpreter": { + "hash": "f7fd7085b4be428477fa1342305f4ebb7800cfd7c4438123a54b78fc013e2c1b" + } } }, "nbformat": 4, diff --git a/examples/all-clusters-app/cc13x2x7_26x2x7/BUILD.gn b/examples/all-clusters-app/cc13x2x7_26x2x7/BUILD.gn index 48f3ef5b7583f9..3194d47bb0f188 100644 --- a/examples/all-clusters-app/cc13x2x7_26x2x7/BUILD.gn +++ b/examples/all-clusters-app/cc13x2x7_26x2x7/BUILD.gn @@ -78,6 +78,7 @@ ti_simplelink_executable("all-clusters-app") { "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp", + "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp", "${project_dir}/main/AppTask.cpp", "${project_dir}/main/ClusterManager.cpp", "${project_dir}/main/Globals.cpp", @@ -102,6 +103,7 @@ ti_simplelink_executable("all-clusters-app") { "${project_dir}", "${project_dir}/main", "${chip_root}/examples/all-clusters-app/all-clusters-common/include", + "${chip_root}/examples/providers/", ] cflags = [ diff --git a/examples/all-clusters-app/cc13x2x7_26x2x7/main/AppTask.cpp b/examples/all-clusters-app/cc13x2x7_26x2x7/main/AppTask.cpp index b00e11a766a6da..09762791f4cf1a 100644 --- a/examples/all-clusters-app/cc13x2x7_26x2x7/main/AppTask.cpp +++ b/examples/all-clusters-app/cc13x2x7_26x2x7/main/AppTask.cpp @@ -28,6 +28,7 @@ #include
Specifically, this sets SkipCommissioningComplete in the CommissioningParameters passed to + * the CommissioningDelegate. + * + *
A controller will set this to true when the CASE phase of commissioning is done by a
+ * separate process, for example, by a Hub on the network.
+ *
+ * @param skipCommissioningComplete
+ * @return
+ */
+ public Builder setSkipCommissioningComplete(boolean skipCommissioningComplete) {
+ this.skipCommissioningComplete = skipCommissioningComplete;
+ return this;
+ }
+
public Builder setKeypairDelegate(KeypairDelegate keypairDelegate) {
this.keypairDelegate = keypairDelegate;
return this;
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index d20ce4a2f36cf0..260e8cd358f8e4 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -19485,118 +19485,6 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
}
break;
}
- case app::Clusters::FaultInjection::Id: {
- using namespace app::Clusters::FaultInjection;
- switch (aPath.mAttributeId)
- {
- case Attributes::GeneratedCommandList::Id: {
- using TypeInfo = Attributes::GeneratedCommandList::TypeInfo;
- TypeInfo::DecodableType cppValue;
- *aError = app::DataModel::Decode(aReader, cppValue);
- if (*aError != CHIP_NO_ERROR)
- {
- return nullptr;
- }
- jobject value;
- chip::JniReferences::GetInstance().CreateArrayList(value);
-
- auto iter_value_0 = cppValue.begin();
- while (iter_value_0.Next())
- {
- auto & entry_0 = iter_value_0.GetValue();
- jobject newElement_0;
- std::string newElement_0ClassName = "java/lang/Long";
- std::string newElement_0CtorSignature = "(J)V";
- chip::JniReferences::GetInstance().CreateBoxedObject