blob: c56280b2b72f089367c88f67b402346b69a76952 [file] [log] [blame]
// This IDL was generated automatically by ZAP.
// It is for view/code review purposes only.
/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */
cluster Identify = 3 {
revision 4;
enum EffectIdentifierEnum : enum8 {
kBlink = 0;
kBreathe = 1;
kOkay = 2;
kChannelChange = 11;
kFinishEffect = 254;
kStopEffect = 255;
}
enum EffectVariantEnum : enum8 {
kDefault = 0;
}
enum IdentifyTypeEnum : enum8 {
kNone = 0;
kLightOutput = 1;
kVisibleIndicator = 2;
kAudibleBeep = 3;
kDisplay = 4;
kActuator = 5;
}
attribute int16u identifyTime = 0;
readonly attribute IdentifyTypeEnum identifyType = 1;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
request struct IdentifyRequest {
int16u identifyTime = 0;
}
request struct TriggerEffectRequest {
EffectIdentifierEnum effectIdentifier = 0;
EffectVariantEnum effectVariant = 1;
}
/** Command description for Identify */
command access(invoke: manage) Identify(IdentifyRequest): DefaultSuccess = 0;
/** Command description for TriggerEffect */
command access(invoke: manage) TriggerEffect(TriggerEffectRequest): DefaultSuccess = 64;
}
/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */
cluster Descriptor = 29 {
revision 2;
bitmap Feature : bitmap32 {
kTagList = 0x1;
}
struct DeviceTypeStruct {
devtype_id deviceType = 0;
int16u revision = 1;
}
struct SemanticTagStruct {
nullable vendor_id mfgCode = 0;
enum8 namespaceID = 1;
enum8 tag = 2;
optional nullable char_string label = 3;
}
readonly attribute DeviceTypeStruct deviceTypeList[] = 0;
readonly attribute cluster_id serverList[] = 1;
readonly attribute cluster_id clientList[] = 2;
readonly attribute endpoint_no partsList[] = 3;
readonly attribute optional SemanticTagStruct tagList[] = 4;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
}
/** The Access Control Cluster exposes a data model view of a
Node's Access Control List (ACL), which codifies the rules used to manage
and enforce Access Control for the Node's endpoints and their associated
cluster instances. */
cluster AccessControl = 31 {
revision 1; // NOTE: Default/not specifically set
enum AccessControlEntryAuthModeEnum : enum8 {
kPASE = 1;
kCASE = 2;
kGroup = 3;
}
enum AccessControlEntryPrivilegeEnum : enum8 {
kView = 1;
kProxyView = 2;
kOperate = 3;
kManage = 4;
kAdminister = 5;
}
enum ChangeTypeEnum : enum8 {
kChanged = 0;
kAdded = 1;
kRemoved = 2;
}
struct AccessControlTargetStruct {
nullable cluster_id cluster = 0;
nullable endpoint_no endpoint = 1;
nullable devtype_id deviceType = 2;
}
fabric_scoped struct AccessControlEntryStruct {
fabric_sensitive AccessControlEntryPrivilegeEnum privilege = 1;
fabric_sensitive AccessControlEntryAuthModeEnum authMode = 2;
nullable fabric_sensitive int64u subjects[] = 3;
nullable fabric_sensitive AccessControlTargetStruct targets[] = 4;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct AccessControlExtensionStruct {
fabric_sensitive octet_string<128> data = 1;
fabric_idx fabricIndex = 254;
}
fabric_sensitive info event access(read: administer) AccessControlEntryChanged = 0 {
nullable node_id adminNodeID = 1;
nullable int16u adminPasscodeID = 2;
ChangeTypeEnum changeType = 3;
nullable AccessControlEntryStruct latestValue = 4;
fabric_idx fabricIndex = 254;
}
fabric_sensitive info event access(read: administer) AccessControlExtensionChanged = 1 {
nullable node_id adminNodeID = 1;
nullable int16u adminPasscodeID = 2;
ChangeTypeEnum changeType = 3;
nullable AccessControlExtensionStruct latestValue = 4;
fabric_idx fabricIndex = 254;
}
attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0;
attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1;
readonly attribute int16u subjectsPerAccessControlEntry = 2;
readonly attribute int16u targetsPerAccessControlEntry = 3;
readonly attribute int16u accessControlEntriesPerFabric = 4;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
}
/** This cluster provides attributes and events for determining basic information about Nodes, which supports both
Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number,
which apply to the whole Node. Also allows setting user device information such as location. */
cluster BasicInformation = 40 {
revision 3;
enum ColorEnum : enum8 {
kBlack = 0;
kNavy = 1;
kGreen = 2;
kTeal = 3;
kMaroon = 4;
kPurple = 5;
kOlive = 6;
kGray = 7;
kBlue = 8;
kLime = 9;
kAqua = 10;
kRed = 11;
kFuchsia = 12;
kYellow = 13;
kWhite = 14;
kNickel = 15;
kChrome = 16;
kBrass = 17;
kCopper = 18;
kSilver = 19;
kGold = 20;
}
enum ProductFinishEnum : enum8 {
kOther = 0;
kMatte = 1;
kSatin = 2;
kPolished = 3;
kRugged = 4;
kFabric = 5;
}
struct CapabilityMinimaStruct {
int16u caseSessionsPerFabric = 0;
int16u subscriptionsPerFabric = 1;
}
struct ProductAppearanceStruct {
ProductFinishEnum finish = 0;
nullable ColorEnum primaryColor = 1;
}
critical event StartUp = 0 {
int32u softwareVersion = 0;
}
critical event ShutDown = 1 {
}
info event Leave = 2 {
fabric_idx fabricIndex = 0;
}
info event ReachableChanged = 3 {
boolean reachableNewValue = 0;
}
readonly attribute int16u dataModelRevision = 0;
readonly attribute char_string<32> vendorName = 1;
readonly attribute vendor_id vendorID = 2;
readonly attribute char_string<32> productName = 3;
readonly attribute int16u productID = 4;
attribute access(write: manage) char_string<32> nodeLabel = 5;
attribute access(write: administer) char_string<2> location = 6;
readonly attribute int16u hardwareVersion = 7;
readonly attribute char_string<64> hardwareVersionString = 8;
readonly attribute int32u softwareVersion = 9;
readonly attribute char_string<64> softwareVersionString = 10;
readonly attribute optional char_string<16> manufacturingDate = 11;
readonly attribute optional char_string<32> partNumber = 12;
readonly attribute optional long_char_string<256> productURL = 13;
readonly attribute optional char_string<64> productLabel = 14;
readonly attribute optional char_string<32> serialNumber = 15;
attribute access(write: manage) optional boolean localConfigDisabled = 16;
readonly attribute optional boolean reachable = 17;
readonly attribute optional char_string<32> uniqueID = 18;
readonly attribute CapabilityMinimaStruct capabilityMinima = 19;
readonly attribute optional ProductAppearanceStruct productAppearance = 20;
readonly attribute int32u specificationVersion = 21;
readonly attribute int16u maxPathsPerInvoke = 22;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
command MfgSpecificPing(): DefaultSuccess = 0;
}
/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
may have differing common languages, units of measurements, and numerical formatting
standards. As such, Nodes that visually or audibly convey information need a mechanism by which
they can be configured to use a user’s preferred language, units, etc */
cluster LocalizationConfiguration = 43 {
revision 1; // NOTE: Default/not specifically set
attribute access(write: manage) char_string<35> activeLocale = 0;
readonly attribute char_string supportedLocales[] = 1;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
}
/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
may have differing preferences for how dates and times are conveyed. As such, Nodes that visually
or audibly convey time information need a mechanism by which they can be configured to use a
user’s preferred format. */
cluster TimeFormatLocalization = 44 {
revision 1; // NOTE: Default/not specifically set
enum CalendarTypeEnum : enum8 {
kBuddhist = 0;
kChinese = 1;
kCoptic = 2;
kEthiopian = 3;
kGregorian = 4;
kHebrew = 5;
kIndian = 6;
kIslamic = 7;
kJapanese = 8;
kKorean = 9;
kPersian = 10;
kTaiwanese = 11;
kUseActiveLocale = 255;
}
enum HourFormatEnum : enum8 {
k12hr = 0;
k24hr = 1;
kUseActiveLocale = 255;
}
bitmap Feature : bitmap32 {
kCalendarFormat = 0x1;
}
attribute access(write: manage) HourFormatEnum hourFormat = 0;
attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1;
readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
}
/** Nodes should be expected to be deployed to any and all regions of the world. These global regions
may have differing preferences for the units in which values are conveyed in communication to a
user. As such, Nodes that visually or audibly convey measurable values to the user need a
mechanism by which they can be configured to use a user’s preferred unit. */
cluster UnitLocalization = 45 {
revision 1;
enum TempUnitEnum : enum8 {
kFahrenheit = 0;
kCelsius = 1;
kKelvin = 2;
}
bitmap Feature : bitmap32 {
kTemperatureUnit = 0x1;
}
attribute access(write: manage) optional TempUnitEnum temperatureUnit = 0;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
}
/** This cluster is used to manage global aspects of the Commissioning flow. */
cluster GeneralCommissioning = 48 {
revision 1; // NOTE: Default/not specifically set
enum CommissioningErrorEnum : enum8 {
kOK = 0;
kValueOutsideRange = 1;
kInvalidAuthentication = 2;
kNoFailSafe = 3;
kBusyWithOtherAdmin = 4;
}
enum RegulatoryLocationTypeEnum : enum8 {
kIndoor = 0;
kOutdoor = 1;
kIndoorOutdoor = 2;
}
struct BasicCommissioningInfo {
int16u failSafeExpiryLengthSeconds = 0;
int16u maxCumulativeFailsafeSeconds = 1;
}
attribute access(write: administer) int64u breadcrumb = 0;
readonly attribute BasicCommissioningInfo basicCommissioningInfo = 1;
readonly attribute RegulatoryLocationTypeEnum regulatoryConfig = 2;
readonly attribute RegulatoryLocationTypeEnum locationCapability = 3;
readonly attribute boolean supportsConcurrentConnection = 4;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
request struct ArmFailSafeRequest {
int16u expiryLengthSeconds = 0;
int64u breadcrumb = 1;
}
response struct ArmFailSafeResponse = 1 {
CommissioningErrorEnum errorCode = 0;
char_string<128> debugText = 1;
}
request struct SetRegulatoryConfigRequest {
RegulatoryLocationTypeEnum newRegulatoryConfig = 0;
char_string<2> countryCode = 1;
int64u breadcrumb = 2;
}
response struct SetRegulatoryConfigResponse = 3 {
CommissioningErrorEnum errorCode = 0;
char_string debugText = 1;
}
response struct CommissioningCompleteResponse = 5 {
CommissioningErrorEnum errorCode = 0;
char_string debugText = 1;
}
/** Arm the persistent fail-safe timer with an expiry time of now + ExpiryLengthSeconds using device clock */
command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0;
/** Set the regulatory configuration to be used during commissioning */
command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2;
/** Signals the Server that the Client has successfully completed all steps of Commissioning/Recofiguration needed during fail-safe period. */
fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4;
}
/** Functionality to configure, enable, disable network credentials and access on a Matter device. */
cluster NetworkCommissioning = 49 {
revision 1; // NOTE: Default/not specifically set
enum NetworkCommissioningStatusEnum : enum8 {
kSuccess = 0;
kOutOfRange = 1;
kBoundsExceeded = 2;
kNetworkIDNotFound = 3;
kDuplicateNetworkID = 4;
kNetworkNotFound = 5;
kRegulatoryError = 6;
kAuthFailure = 7;
kUnsupportedSecurity = 8;
kOtherConnectionFailure = 9;
kIPV6Failed = 10;
kIPBindFailed = 11;
kUnknownError = 12;
}
enum WiFiBandEnum : enum8 {
k2G4 = 0;
k3G65 = 1;
k5G = 2;
k6G = 3;
k60G = 4;
k1G = 5;
}
bitmap Feature : bitmap32 {
kWiFiNetworkInterface = 0x1;
kThreadNetworkInterface = 0x2;
kEthernetNetworkInterface = 0x4;
kPerDeviceCredentials = 0x8;
}
bitmap ThreadCapabilitiesBitmap : bitmap16 {
kIsBorderRouterCapable = 0x1;
kIsRouterCapable = 0x2;
kIsSleepyEndDeviceCapable = 0x4;
kIsFullThreadDevice = 0x8;
kIsSynchronizedSleepyEndDeviceCapable = 0x10;
}
bitmap WiFiSecurityBitmap : bitmap8 {
kUnencrypted = 0x1;
kWEP = 0x2;
kWPAPersonal = 0x4;
kWPA2Personal = 0x8;
kWPA3Personal = 0x10;
kWPA3MatterPDC = 0x20;
}
struct NetworkInfoStruct {
octet_string<32> networkID = 0;
boolean connected = 1;
optional nullable octet_string<20> networkIdentifier = 2;
optional nullable octet_string<20> clientIdentifier = 3;
}
struct ThreadInterfaceScanResultStruct {
int16u panId = 0;
int64u extendedPanId = 1;
char_string<16> networkName = 2;
int16u channel = 3;
int8u version = 4;
octet_string<8> extendedAddress = 5;
int8s rssi = 6;
int8u lqi = 7;
}
struct WiFiInterfaceScanResultStruct {
WiFiSecurityBitmap security = 0;
octet_string<32> ssid = 1;
octet_string<6> bssid = 2;
int16u channel = 3;
WiFiBandEnum wiFiBand = 4;
int8s rssi = 5;
}
readonly attribute access(read: administer) int8u maxNetworks = 0;
readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1;
readonly attribute optional int8u scanMaxTimeSeconds = 2;
readonly attribute optional int8u connectMaxTimeSeconds = 3;
attribute access(write: administer) boolean interfaceEnabled = 4;
readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5;
readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6;
readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7;
readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8;
readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9;
readonly attribute optional int16u threadVersion = 10;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
request struct ScanNetworksRequest {
optional nullable octet_string<32> ssid = 0;
optional int64u breadcrumb = 1;
}
response struct ScanNetworksResponse = 1 {
NetworkCommissioningStatusEnum networkingStatus = 0;
optional char_string debugText = 1;
optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2;
optional ThreadInterfaceScanResultStruct threadScanResults[] = 3;
}
request struct AddOrUpdateWiFiNetworkRequest {
octet_string<32> ssid = 0;
octet_string<64> credentials = 1;
optional int64u breadcrumb = 2;
optional octet_string<140> networkIdentity = 3;
optional octet_string<20> clientIdentifier = 4;
optional octet_string<32> possessionNonce = 5;
}
request struct AddOrUpdateThreadNetworkRequest {
octet_string<254> operationalDataset = 0;
optional int64u breadcrumb = 1;
}
request struct RemoveNetworkRequest {
octet_string<32> networkID = 0;
optional int64u breadcrumb = 1;
}
response struct NetworkConfigResponse = 5 {
NetworkCommissioningStatusEnum networkingStatus = 0;
optional char_string<512> debugText = 1;
optional int8u networkIndex = 2;
optional octet_string<140> clientIdentity = 3;
optional octet_string<64> possessionSignature = 4;
}
request struct ConnectNetworkRequest {
octet_string<32> networkID = 0;
optional int64u breadcrumb = 1;
}
response struct ConnectNetworkResponse = 7 {
NetworkCommissioningStatusEnum networkingStatus = 0;
optional char_string debugText = 1;
nullable int32s errorValue = 2;
}
request struct ReorderNetworkRequest {
octet_string<32> networkID = 0;
int8u networkIndex = 1;
optional int64u breadcrumb = 2;
}
request struct QueryIdentityRequest {
octet_string<20> keyIdentifier = 0;
optional octet_string<32> possessionNonce = 1;
}
response struct QueryIdentityResponse = 10 {
octet_string<140> identity = 0;
optional octet_string<64> possessionSignature = 1;
}
/** Detemine the set of networks the device sees as available. */
command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0;
/** Add or update the credentials for a given Wi-Fi network. */
command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2;
/** Add or update the credentials for a given Thread network. */
command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3;
/** Remove the definition of a given network (including its credentials). */
command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4;
/** Connect to the specified network, using previously-defined credentials. */
command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6;
/** Modify the order in which networks will be presented in the Networks attribute. */
command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8;
/** Retrieve details about and optionally proof of possession of a network client identity. */
command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9;
}
/** The General Diagnostics Cluster, along with other diagnostics clusters, provide a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems. */
cluster GeneralDiagnostics = 51 {
revision 2;
enum BootReasonEnum : enum8 {
kUnspecified = 0;
kPowerOnReboot = 1;
kBrownOutReset = 2;
kSoftwareWatchdogReset = 3;
kHardwareWatchdogReset = 4;
kSoftwareUpdateCompleted = 5;
kSoftwareReset = 6;
}
enum HardwareFaultEnum : enum8 {
kUnspecified = 0;
kRadio = 1;
kSensor = 2;
kResettableOverTemp = 3;
kNonResettableOverTemp = 4;
kPowerSource = 5;
kVisualDisplayFault = 6;
kAudioOutputFault = 7;
kUserInterfaceFault = 8;
kNonVolatileMemoryError = 9;
kTamperDetected = 10;
}
enum InterfaceTypeEnum : enum8 {
kUnspecified = 0;
kWiFi = 1;
kEthernet = 2;
kCellular = 3;
kThread = 4;
}
enum NetworkFaultEnum : enum8 {
kUnspecified = 0;
kHardwareFailure = 1;
kNetworkJammed = 2;
kConnectionFailed = 3;
}
enum RadioFaultEnum : enum8 {
kUnspecified = 0;
kWiFiFault = 1;
kCellularFault = 2;
kThreadFault = 3;
kNFCFault = 4;
kBLEFault = 5;
kEthernetFault = 6;
}
bitmap Feature : bitmap32 {
kDataModelTest = 0x1;
}
struct NetworkInterface {
char_string<32> name = 0;
boolean isOperational = 1;
nullable boolean offPremiseServicesReachableIPv4 = 2;
nullable boolean offPremiseServicesReachableIPv6 = 3;
octet_string<8> hardwareAddress = 4;
octet_string IPv4Addresses[] = 5;
octet_string IPv6Addresses[] = 6;
InterfaceTypeEnum type = 7;
}
critical event HardwareFaultChange = 0 {
HardwareFaultEnum current[] = 0;
HardwareFaultEnum previous[] = 1;
}
critical event RadioFaultChange = 1 {
RadioFaultEnum current[] = 0;
RadioFaultEnum previous[] = 1;
}
critical event NetworkFaultChange = 2 {
NetworkFaultEnum current[] = 0;
NetworkFaultEnum previous[] = 1;
}
critical event BootReason = 3 {
BootReasonEnum bootReason = 0;
}
readonly attribute NetworkInterface networkInterfaces[] = 0;
readonly attribute int16u rebootCount = 1;
readonly attribute optional int64u upTime = 2;
readonly attribute optional int32u totalOperationalHours = 3;
readonly attribute optional BootReasonEnum bootReason = 4;
readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5;
readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6;
readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7;
readonly attribute boolean testEventTriggersEnabled = 8;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
request struct TestEventTriggerRequest {
octet_string<16> enableKey = 0;
int64u eventTrigger = 1;
}
response struct TimeSnapshotResponse = 2 {
systime_ms systemTimeMs = 0;
nullable posix_ms posixTimeMs = 1;
}
request struct PayloadTestRequestRequest {
octet_string<16> enableKey = 0;
int8u value = 1;
int16u count = 2;
}
response struct PayloadTestResponse = 4 {
octet_string payload = 0;
}
/** Provide a means for certification tests to trigger some test-plan-specific events */
command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0;
/** Take a snapshot of system time and epoch time. */
command TimeSnapshot(): TimeSnapshotResponse = 1;
/** Request a variable length payload response. */
command PayloadTestRequest(PayloadTestRequestRequest): PayloadTestResponse = 3;
}
/** Commands to trigger a Node to allow a new Administrator to commission it. */
cluster AdministratorCommissioning = 60 {
revision 1; // NOTE: Default/not specifically set
enum CommissioningWindowStatusEnum : enum8 {
kWindowNotOpen = 0;
kEnhancedWindowOpen = 1;
kBasicWindowOpen = 2;
}
enum StatusCode : enum8 {
kBusy = 2;
kPAKEParameterError = 3;
kWindowNotOpen = 4;
}
bitmap Feature : bitmap32 {
kBasic = 0x1;
}
readonly attribute CommissioningWindowStatusEnum windowStatus = 0;
readonly attribute nullable fabric_idx adminFabricIndex = 1;
readonly attribute nullable vendor_id adminVendorId = 2;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
request struct OpenCommissioningWindowRequest {
int16u commissioningTimeout = 0;
octet_string PAKEPasscodeVerifier = 1;
int16u discriminator = 2;
int32u iterations = 3;
octet_string<32> salt = 4;
}
request struct OpenBasicCommissioningWindowRequest {
int16u commissioningTimeout = 0;
}
/** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */
timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0;
/** This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it. */
timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1;
/** This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command. */
timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2;
}
/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */
cluster OperationalCredentials = 62 {
revision 1; // NOTE: Default/not specifically set
enum CertificateChainTypeEnum : enum8 {
kDACCertificate = 1;
kPAICertificate = 2;
}
enum NodeOperationalCertStatusEnum : enum8 {
kOK = 0;
kInvalidPublicKey = 1;
kInvalidNodeOpId = 2;
kInvalidNOC = 3;
kMissingCsr = 4;
kTableFull = 5;
kInvalidAdminSubject = 6;
kFabricConflict = 9;
kLabelConflict = 10;
kInvalidFabricIndex = 11;
}
fabric_scoped struct FabricDescriptorStruct {
octet_string<65> rootPublicKey = 1;
vendor_id vendorID = 2;
fabric_id fabricID = 3;
node_id nodeID = 4;
char_string<32> label = 5;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct NOCStruct {
fabric_sensitive octet_string noc = 1;
nullable fabric_sensitive octet_string icac = 2;
fabric_idx fabricIndex = 254;
}
readonly attribute access(read: administer) NOCStruct NOCs[] = 0;
readonly attribute FabricDescriptorStruct fabrics[] = 1;
readonly attribute int8u supportedFabrics = 2;
readonly attribute int8u commissionedFabrics = 3;
readonly attribute octet_string trustedRootCertificates[] = 4;
readonly attribute int8u currentFabricIndex = 5;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
request struct AttestationRequestRequest {
octet_string<32> attestationNonce = 0;
}
response struct AttestationResponse = 1 {
octet_string<900> attestationElements = 0;
octet_string<64> attestationSignature = 1;
}
request struct CertificateChainRequestRequest {
CertificateChainTypeEnum certificateType = 0;
}
response struct CertificateChainResponse = 3 {
octet_string<600> certificate = 0;
}
request struct CSRRequestRequest {
octet_string<32> CSRNonce = 0;
optional boolean isForUpdateNOC = 1;
}
response struct CSRResponse = 5 {
octet_string NOCSRElements = 0;
octet_string attestationSignature = 1;
}
request struct AddNOCRequest {
octet_string<400> NOCValue = 0;
optional octet_string<400> ICACValue = 1;
octet_string<16> IPKValue = 2;
int64u caseAdminSubject = 3;
vendor_id adminVendorId = 4;
}
request struct UpdateNOCRequest {
octet_string NOCValue = 0;
optional octet_string ICACValue = 1;
}
response struct NOCResponse = 8 {
NodeOperationalCertStatusEnum statusCode = 0;
optional fabric_idx fabricIndex = 1;
optional char_string<128> debugText = 2;
}
request struct UpdateFabricLabelRequest {
char_string<32> label = 0;
}
request struct RemoveFabricRequest {
fabric_idx fabricIndex = 0;
}
request struct AddTrustedRootCertificateRequest {
octet_string rootCACertificate = 0;
}
/** Sender is requesting attestation information from the receiver. */
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
/** Sender is requesting a device attestation certificate from the receiver. */
command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2;
/** Sender is requesting a certificate signing request (CSR) from the receiver. */
command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4;
/** Sender is requesting to add the new node operational certificates. */
command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6;
/** Sender is requesting to update the node operational certificates. */
fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7;
/** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */
fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9;
/** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
}
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
cluster GroupKeyManagement = 63 {
revision 1; // NOTE: Default/not specifically set
enum GroupKeySecurityPolicyEnum : enum8 {
kTrustFirst = 0;
kCacheAndSync = 1;
}
bitmap Feature : bitmap32 {
kCacheAndSync = 0x1;
}
fabric_scoped struct GroupInfoMapStruct {
group_id groupId = 1;
endpoint_no endpoints[] = 2;
optional char_string<16> groupName = 3;
fabric_idx fabricIndex = 254;
}
fabric_scoped struct GroupKeyMapStruct {
group_id groupId = 1;
int16u groupKeySetID = 2;
fabric_idx fabricIndex = 254;
}
struct GroupKeySetStruct {
int16u groupKeySetID = 0;
GroupKeySecurityPolicyEnum groupKeySecurityPolicy = 1;
nullable octet_string<16> epochKey0 = 2;
nullable epoch_us epochStartTime0 = 3;
nullable octet_string<16> epochKey1 = 4;
nullable epoch_us epochStartTime1 = 5;
nullable octet_string<16> epochKey2 = 6;
nullable epoch_us epochStartTime2 = 7;
}
attribute access(write: manage) GroupKeyMapStruct groupKeyMap[] = 0;
readonly attribute GroupInfoMapStruct groupTable[] = 1;
readonly attribute int16u maxGroupsPerFabric = 2;
readonly attribute int16u maxGroupKeysPerFabric = 3;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
request struct KeySetWriteRequest {
GroupKeySetStruct groupKeySet = 0;
}
request struct KeySetReadRequest {
int16u groupKeySetID = 0;
}
response struct KeySetReadResponse = 2 {
GroupKeySetStruct groupKeySet = 0;
}
request struct KeySetRemoveRequest {
int16u groupKeySetID = 0;
}
response struct KeySetReadAllIndicesResponse = 5 {
int16u groupKeySetIDs[] = 0;
}
/** Write a new set of keys for the given key set id. */
fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0;
/** Read the keys for a given key set id. */
fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1;
/** Revoke a Root Key from a Group */
fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3;
/** Return the list of Group Key Sets associated with the accessing fabric */
fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4;
}
/** This cluster provides a mechanism for querying data about electrical power as measured by the server. */
provisional cluster ElectricalPowerMeasurement = 144 {
revision 1;
enum MeasurementTypeEnum : enum16 {
kUnspecified = 0;
kVoltage = 1;
kActiveCurrent = 2;
kReactiveCurrent = 3;
kApparentCurrent = 4;
kActivePower = 5;
kReactivePower = 6;
kApparentPower = 7;
kRMSVoltage = 8;
kRMSCurrent = 9;
kRMSPower = 10;
kFrequency = 11;
kPowerFactor = 12;
kNeutralCurrent = 13;
kElectricalEnergy = 14;
}
enum PowerModeEnum : enum8 {
kUnknown = 0;
kDC = 1;
kAC = 2;
}
bitmap Feature : bitmap32 {
kDirectCurrent = 0x1;
kAlternatingCurrent = 0x2;
kPolyphasePower = 0x4;
kHarmonics = 0x8;
kPowerQuality = 0x10;
}
struct MeasurementAccuracyRangeStruct {
int64s rangeMin = 0;
int64s rangeMax = 1;
optional percent100ths percentMax = 2;
optional percent100ths percentMin = 3;
optional percent100ths percentTypical = 4;
optional int64u fixedMax = 5;
optional int64u fixedMin = 6;
optional int64u fixedTypical = 7;
}
struct MeasurementAccuracyStruct {
MeasurementTypeEnum measurementType = 0;
boolean measured = 1;
int64s minMeasuredValue = 2;
int64s maxMeasuredValue = 3;
MeasurementAccuracyRangeStruct accuracyRanges[] = 4;
}
struct HarmonicMeasurementStruct {
int8u order = 0;
nullable int64s measurement = 1;
}
struct MeasurementRangeStruct {
MeasurementTypeEnum measurementType = 0;
int64s min = 1;
int64s max = 2;
optional epoch_s startTimestamp = 3;
optional epoch_s endTimestamp = 4;
optional epoch_s minTimestamp = 5;
optional epoch_s maxTimestamp = 6;
optional systime_ms startSystime = 7;
optional systime_ms endSystime = 8;
optional systime_ms minSystime = 9;
optional systime_ms maxSystime = 10;
}
info event MeasurementPeriodRanges = 0 {
MeasurementRangeStruct ranges[] = 0;
}
readonly attribute PowerModeEnum powerMode = 0;
readonly attribute int8u numberOfMeasurementTypes = 1;
readonly attribute MeasurementAccuracyStruct accuracy[] = 2;
readonly attribute optional MeasurementRangeStruct ranges[] = 3;
readonly attribute optional nullable voltage_mv voltage = 4;
readonly attribute optional nullable amperage_ma activeCurrent = 5;
readonly attribute optional nullable amperage_ma reactiveCurrent = 6;
readonly attribute optional nullable amperage_ma apparentCurrent = 7;
readonly attribute nullable power_mw activePower = 8;
readonly attribute optional nullable power_mw reactivePower = 9;
readonly attribute optional nullable power_mw apparentPower = 10;
readonly attribute optional nullable voltage_mv RMSVoltage = 11;
readonly attribute optional nullable amperage_ma RMSCurrent = 12;
readonly attribute optional nullable power_mw RMSPower = 13;
readonly attribute optional nullable int64s frequency = 14;
readonly attribute optional nullable HarmonicMeasurementStruct harmonicCurrents[] = 15;
readonly attribute optional nullable HarmonicMeasurementStruct harmonicPhases[] = 16;
readonly attribute optional nullable int64s powerFactor = 17;
readonly attribute optional nullable amperage_ma neutralCurrent = 18;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
}
/** This cluster provides a mechanism for querying data about the electrical energy imported or provided by the server. */
provisional cluster ElectricalEnergyMeasurement = 145 {
revision 1;
enum MeasurementTypeEnum : enum16 {
kUnspecified = 0;
kVoltage = 1;
kActiveCurrent = 2;
kReactiveCurrent = 3;
kApparentCurrent = 4;
kActivePower = 5;
kReactivePower = 6;
kApparentPower = 7;
kRMSVoltage = 8;
kRMSCurrent = 9;
kRMSPower = 10;
kFrequency = 11;
kPowerFactor = 12;
kNeutralCurrent = 13;
kElectricalEnergy = 14;
}
bitmap Feature : bitmap32 {
kImportedEnergy = 0x1;
kExportedEnergy = 0x2;
kCumulativeEnergy = 0x4;
kPeriodicEnergy = 0x8;
}
struct MeasurementAccuracyRangeStruct {
int64s rangeMin = 0;
int64s rangeMax = 1;
optional percent100ths percentMax = 2;
optional percent100ths percentMin = 3;
optional percent100ths percentTypical = 4;
optional int64u fixedMax = 5;
optional int64u fixedMin = 6;
optional int64u fixedTypical = 7;
}
struct MeasurementAccuracyStruct {
MeasurementTypeEnum measurementType = 0;
boolean measured = 1;
int64s minMeasuredValue = 2;
int64s maxMeasuredValue = 3;
MeasurementAccuracyRangeStruct accuracyRanges[] = 4;
}
struct CumulativeEnergyResetStruct {
optional nullable epoch_s importedResetTimestamp = 0;
optional nullable epoch_s exportedResetTimestamp = 1;
optional nullable systime_ms importedResetSystime = 2;
optional nullable systime_ms exportedResetSystime = 3;
}
struct EnergyMeasurementStruct {
energy_mwh energy = 0;
optional epoch_s startTimestamp = 1;
optional epoch_s endTimestamp = 2;
optional systime_ms startSystime = 3;
optional systime_ms endSystime = 4;
}
info event CumulativeEnergyMeasured = 0 {
optional EnergyMeasurementStruct energyImported = 0;
optional EnergyMeasurementStruct energyExported = 1;
}
info event PeriodicEnergyMeasured = 1 {
optional EnergyMeasurementStruct energyImported = 0;
optional EnergyMeasurementStruct energyExported = 1;
}
readonly attribute MeasurementAccuracyStruct accuracy = 0;
readonly attribute optional nullable EnergyMeasurementStruct cumulativeEnergyImported = 1;
readonly attribute optional nullable EnergyMeasurementStruct cumulativeEnergyExported = 2;
readonly attribute optional nullable EnergyMeasurementStruct periodicEnergyImported = 3;
readonly attribute optional nullable EnergyMeasurementStruct periodicEnergyExported = 4;
readonly attribute optional nullable CumulativeEnergyResetStruct cumulativeEnergyReset = 5;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
}
/** This cluster allows a client to manage the power draw of a device. An example of such a client could be an Energy Management System (EMS) which controls an Energy Smart Appliance (ESA). */
provisional cluster DeviceEnergyManagement = 152 {
revision 3;
enum AdjustmentCauseEnum : enum8 {
kLocalOptimization = 0;
kGridOptimization = 1;
}
enum CauseEnum : enum8 {
kNormalCompletion = 0;
kOffline = 1;
kFault = 2;
kUserOptOut = 3;
kCancelled = 4;
}
enum CostTypeEnum : enum8 {
kFinancial = 0;
kGHGEmissions = 1;
kComfort = 2;
kTemperature = 3;
}
enum ESAStateEnum : enum8 {
kOffline = 0;
kOnline = 1;
kFault = 2;
kPowerAdjustActive = 3;
kPaused = 4;
}
enum ESATypeEnum : enum8 {
kEVSE = 0;
kSpaceHeating = 1;
kWaterHeating = 2;
kSpaceCooling = 3;
kSpaceHeatingCooling = 4;
kBatteryStorage = 5;
kSolarPV = 6;
kFridgeFreezer = 7;
kWashingMachine = 8;
kDishwasher = 9;
kCooking = 10;
kHomeWaterPump = 11;
kIrrigationWaterPump = 12;
kPoolPump = 13;
kOther = 255;
}
enum ForecastUpdateReasonEnum : enum8 {
kInternalOptimization = 0;
kLocalOptimization = 1;
kGridOptimization = 2;
}
enum OptOutStateEnum : enum8 {
kNoOptOut = 0;
kLocalOptOut = 1;
kGridOptOut = 2;
kOptOut = 3;
}
bitmap Feature : bitmap32 {
kPowerAdjustment = 0x1;
kPowerForecastReporting = 0x2;
kStateForecastReporting = 0x4;
kStartTimeAdjustment = 0x8;
kPausable = 0x10;
kForecastAdjustment = 0x20;
kConstraintBasedAdjustment = 0x40;
}
struct CostStruct {
CostTypeEnum costType = 0;
int32s value = 1;
int8u decimalPoints = 2;
optional int16u currency = 3;
}
struct SlotStruct {
elapsed_s minDuration = 0;
elapsed_s maxDuration = 1;
elapsed_s defaultDuration = 2;
elapsed_s elapsedSlotTime = 3;
elapsed_s remainingSlotTime = 4;
optional boolean slotIsPauseable = 5;
optional elapsed_s minPauseDuration = 6;
optional elapsed_s maxPauseDuration = 7;
optional int16u manufacturerESAState = 8;
optional power_mw nominalPower = 9;
optional power_mw minPower = 10;
optional power_mw maxPower = 11;
optional energy_mwh nominalEnergy = 12;
optional CostStruct costs[] = 13;
optional power_mw minPowerAdjustment = 14;
optional power_mw maxPowerAdjustment = 15;
optional elapsed_s minDurationAdjustment = 16;
optional elapsed_s maxDurationAdjustment = 17;
}
struct ForecastStruct {
int16u forecastId = 0;
nullable int16u activeSlotNumber = 1;
epoch_s startTime = 2;
epoch_s endTime = 3;
optional nullable epoch_s earliestStartTime = 4;
optional epoch_s latestEndTime = 5;
boolean isPauseable = 6;
SlotStruct slots[] = 7;
ForecastUpdateReasonEnum forecastUpdateReason = 8;
}
struct ConstraintsStruct {
epoch_s startTime = 0;
elapsed_s duration = 1;
optional power_mw nominalPower = 2;
optional energy_mwh maximumEnergy = 3;
optional int8s loadControl = 4;
}
struct PowerAdjustStruct {
power_mw minPower = 0;
power_mw maxPower = 1;
elapsed_s minDuration = 2;
elapsed_s maxDuration = 3;
}
struct SlotAdjustmentStruct {
int8u slotIndex = 0;
power_mw nominalPower = 1;
elapsed_s duration = 2;
}
info event PowerAdjustStart = 0 {
}
info event PowerAdjustEnd = 1 {
CauseEnum cause = 0;
elapsed_s duration = 1;
energy_mwh energyUse = 2;
}
info event Paused = 2 {
}
info event Resumed = 3 {
CauseEnum cause = 0;
}
readonly attribute ESATypeEnum ESAType = 0;
readonly attribute boolean ESACanGenerate = 1;
readonly attribute ESAStateEnum ESAState = 2;
readonly attribute power_mw absMinPower = 3;
readonly attribute power_mw absMaxPower = 4;
readonly attribute optional nullable PowerAdjustStruct powerAdjustmentCapability[] = 5;
readonly attribute optional nullable ForecastStruct forecast = 6;
readonly attribute optional OptOutStateEnum optOutState = 7;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
request struct PowerAdjustRequestRequest {
power_mw power = 0;
elapsed_s duration = 1;
AdjustmentCauseEnum cause = 2;
}
request struct StartTimeAdjustRequestRequest {
epoch_s requestedStartTime = 0;
AdjustmentCauseEnum cause = 1;
}
request struct PauseRequestRequest {
elapsed_s duration = 0;
AdjustmentCauseEnum cause = 1;
}
request struct ModifyForecastRequestRequest {
int32u forecastId = 0;
SlotAdjustmentStruct slotAdjustments[] = 1;
AdjustmentCauseEnum cause = 2;
}
request struct RequestConstraintBasedForecastRequest {
ConstraintsStruct constraints[] = 0;
AdjustmentCauseEnum cause = 1;
}
/** Allows a client to request an adjustment in the power consumption of an ESA for a specified duration. */
command PowerAdjustRequest(PowerAdjustRequestRequest): DefaultSuccess = 0;
/** Allows a client to cancel an ongoing PowerAdjustmentRequest operation. */
command CancelPowerAdjustRequest(): DefaultSuccess = 1;
/** Allows a client to adjust the start time of a Forecast sequence that has not yet started operation (i.e. where the current Forecast StartTime is in the future). */
command StartTimeAdjustRequest(StartTimeAdjustRequestRequest): DefaultSuccess = 2;
/** Allows a client to temporarily pause an operation and reduce the ESAs energy demand. */
command PauseRequest(PauseRequestRequest): DefaultSuccess = 3;
/** Allows a client to cancel the PauseRequest command and enable earlier resumption of operation. */
command ResumeRequest(): DefaultSuccess = 4;
/** Allows a client to modify a Forecast within the limits allowed by the ESA. */
command ModifyForecastRequest(ModifyForecastRequestRequest): DefaultSuccess = 5;
/** Allows a client to ask the ESA to recompute its Forecast based on power and time constraints. */
command RequestConstraintBasedForecast(RequestConstraintBasedForecastRequest): DefaultSuccess = 6;
/** Allows a client to request cancellation of a previous adjustment request in a StartTimeAdjustRequest, ModifyForecastRequest or RequestConstraintBasedForecast command */
command CancelRequest(): DefaultSuccess = 7;
}
/** Electric Vehicle Supply Equipment (EVSE) is equipment used to charge an Electric Vehicle (EV) or Plug-In Hybrid Electric Vehicle. This cluster provides an interface to the functionality of Electric Vehicle Supply Equipment (EVSE) management. */
provisional cluster EnergyEvse = 153 {
revision 2;
enum EnergyTransferStoppedReasonEnum : enum8 {
kEVStopped = 0;
kEVSEStopped = 1;
kOther = 2;
}
enum FaultStateEnum : enum8 {
kNoError = 0;
kMeterFailure = 1;
kOverVoltage = 2;
kUnderVoltage = 3;
kOverCurrent = 4;
kContactWetFailure = 5;
kContactDryFailure = 6;
kGroundFault = 7;
kPowerLoss = 8;
kPowerQuality = 9;
kPilotShortCircuit = 10;
kEmergencyStop = 11;
kEVDisconnected = 12;
kWrongPowerSupply = 13;
kLiveNeutralSwap = 14;
kOverTemperature = 15;
kOther = 255;
}
enum StateEnum : enum8 {
kNotPluggedIn = 0;
kPluggedInNoDemand = 1;
kPluggedInDemand = 2;
kPluggedInCharging = 3;
kPluggedInDischarging = 4;
kSessionEnding = 5;
kFault = 6;
}
enum SupplyStateEnum : enum8 {
kDisabled = 0;
kChargingEnabled = 1;
kDischargingEnabled = 2;
kDisabledError = 3;
kDisabledDiagnostics = 4;
}
bitmap Feature : bitmap32 {
kChargingPreferences = 0x1;
kSoCReporting = 0x2;
kPlugAndCharge = 0x4;
kRFID = 0x8;
kV2X = 0x10;
}
bitmap TargetDayOfWeekBitmap : bitmap8 {
kSunday = 0x1;
kMonday = 0x2;
kTuesday = 0x4;
kWednesday = 0x8;
kThursday = 0x10;
kFriday = 0x20;
kSaturday = 0x40;
}
struct ChargingTargetStruct {
int16u targetTimeMinutesPastMidnight = 0;
optional percent targetSoC = 1;
optional energy_mwh addedEnergy = 2;
}
struct ChargingTargetScheduleStruct {
TargetDayOfWeekBitmap dayOfWeekForSequence = 0;
ChargingTargetStruct chargingTargets[] = 1;
}
info event EVConnected = 0 {
int32u sessionID = 0;
}
info event EVNotDetected = 1 {
int32u sessionID = 0;
StateEnum state = 1;
elapsed_s sessionDuration = 2;
energy_mwh sessionEnergyCharged = 3;
optional energy_mwh sessionEnergyDischarged = 4;
}
info event EnergyTransferStarted = 2 {
int32u sessionID = 0;
StateEnum state = 1;
amperage_ma maximumCurrent = 2;
}
info event EnergyTransferStopped = 3 {
int32u sessionID = 0;
StateEnum state = 1;
EnergyTransferStoppedReasonEnum reason = 2;
energy_mwh energyTransferred = 4;
}
critical event Fault = 4 {
nullable int32u sessionID = 0;
StateEnum state = 1;
FaultStateEnum faultStatePreviousState = 2;
FaultStateEnum faultStateCurrentState = 4;
}
info event RFID = 5 {
octet_string uid = 0;
}
readonly attribute nullable StateEnum state = 0;
readonly attribute SupplyStateEnum supplyState = 1;
readonly attribute FaultStateEnum faultState = 2;
readonly attribute nullable epoch_s chargingEnabledUntil = 3;
readonly attribute optional nullable epoch_s dischargingEnabledUntil = 4;
readonly attribute amperage_ma circuitCapacity = 5;
readonly attribute amperage_ma minimumChargeCurrent = 6;
readonly attribute amperage_ma maximumChargeCurrent = 7;
readonly attribute optional amperage_ma maximumDischargeCurrent = 8;
attribute access(write: manage) optional amperage_ma userMaximumChargeCurrent = 9;
attribute access(write: manage) optional elapsed_s randomizationDelayWindow = 10;
readonly attribute optional nullable epoch_s nextChargeStartTime = 35;
readonly attribute optional nullable epoch_s nextChargeTargetTime = 36;
readonly attribute optional nullable energy_mwh nextChargeRequiredEnergy = 37;
readonly attribute optional nullable percent nextChargeTargetSoC = 38;
attribute access(write: manage) optional nullable int16u approximateEVEfficiency = 39;
readonly attribute optional nullable percent stateOfCharge = 48;
readonly attribute optional nullable energy_mwh batteryCapacity = 49;
readonly attribute optional nullable char_string<32> vehicleID = 50;
readonly attribute nullable int32u sessionID = 64;
readonly attribute nullable elapsed_s sessionDuration = 65;
readonly attribute nullable energy_mwh sessionEnergyCharged = 66;
readonly attribute optional nullable energy_mwh sessionEnergyDischarged = 67;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
response struct GetTargetsResponse = 0 {
ChargingTargetScheduleStruct chargingTargetSchedules[] = 0;
}
request struct EnableChargingRequest {
nullable epoch_s chargingEnabledUntil = 0;
amperage_ma minimumChargeCurrent = 1;
amperage_ma maximumChargeCurrent = 2;
}
request struct EnableDischargingRequest {
nullable epoch_s dischargingEnabledUntil = 0;
amperage_ma maximumDischargeCurrent = 1;
}
request struct SetTargetsRequest {
ChargingTargetScheduleStruct chargingTargetSchedules[] = 0;
}
/** Allows a client to disable the EVSE from charging and discharging. */
timed command Disable(): DefaultSuccess = 1;
/** Allows a client to enable the EVSE to charge an EV. */
timed command EnableCharging(EnableChargingRequest): DefaultSuccess = 2;
/** Allows a client to enable the EVSE to discharge an EV. */
timed command EnableDischarging(EnableDischargingRequest): DefaultSuccess = 3;
/** Allows a client to put the EVSE into a self-diagnostics mode. */
timed command StartDiagnostics(): DefaultSuccess = 4;
/** Allows a client to set the user specified charging targets. */
timed command SetTargets(SetTargetsRequest): DefaultSuccess = 5;
/** Allows a client to retrieve the user specified charging targets. */
timed command GetTargets(): GetTargetsResponse = 6;
/** Allows a client to clear all stored charging targets. */
timed command ClearTargets(): DefaultSuccess = 7;
}
/** Attributes and commands for selecting a mode from a list of supported options. */
provisional cluster EnergyEvseMode = 157 {
revision 1;
enum ModeTag : enum16 {
kManual = 16384;
kTimeOfUse = 16385;
kSolarCharging = 16386;
}
bitmap Feature : bitmap32 {
kOnOff = 0x1;
}
struct ModeTagStruct {
optional vendor_id mfgCode = 0;
enum16 value = 1;
}
struct ModeOptionStruct {
char_string<64> label = 0;
int8u mode = 1;
ModeTagStruct modeTags[] = 2;
}
readonly attribute ModeOptionStruct supportedModes[] = 0;
readonly attribute int8u currentMode = 1;
attribute optional nullable int8u startUpMode = 2;
attribute optional nullable int8u onMode = 3;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
request struct ChangeToModeRequest {
int8u newMode = 0;
}
response struct ChangeToModeResponse = 1 {
enum8 status = 0;
optional char_string<64> statusText = 1;
}
/** This command is used to change device modes.
On receipt of this command the device SHALL respond with a ChangeToModeResponse command. */
command ChangeToMode(ChangeToModeRequest): ChangeToModeResponse = 0;
}
/** Attributes and commands for selecting a mode from a list of supported options. */
provisional cluster DeviceEnergyManagementMode = 159 {
revision 1;
enum ModeTag : enum16 {
kNoOptimization = 16384;
kDeviceOptimization = 16385;
kLocalOptimization = 16386;
kGridOptimization = 16387;
}
bitmap Feature : bitmap32 {
kOnOff = 0x1;
}
struct ModeTagStruct {
optional vendor_id mfgCode = 0;
enum16 value = 1;
}
struct ModeOptionStruct {
char_string<64> label = 0;
int8u mode = 1;
ModeTagStruct modeTags[] = 2;
}
readonly attribute ModeOptionStruct supportedModes[] = 0;
readonly attribute int8u currentMode = 1;
attribute optional nullable int8u startUpMode = 2;
attribute optional nullable int8u onMode = 3;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;
request struct ChangeToModeRequest {
int8u newMode = 0;
}
response struct ChangeToModeResponse = 1 {
enum8 status = 0;
optional char_string<64> statusText = 1;
}
/** This command is used to change device modes.
On receipt of this command the device SHALL respond with a ChangeToModeResponse command. */
command ChangeToMode(ChangeToModeRequest): ChangeToModeResponse = 0;
}
endpoint 0 {
device type ma_rootdevice = 22, version 1;
server cluster Descriptor {
callback attribute deviceTypeList;
callback attribute serverList;
callback attribute clientList;
callback attribute partsList;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
callback attribute featureMap;
callback attribute clusterRevision;
}
server cluster AccessControl {
callback attribute acl;
callback attribute extension;
callback attribute subjectsPerAccessControlEntry;
callback attribute targetsPerAccessControlEntry;
callback attribute accessControlEntriesPerFabric;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
callback attribute clusterRevision;
}
server cluster BasicInformation {
callback attribute dataModelRevision;
callback attribute vendorName;
callback attribute vendorID;
callback attribute productName;
callback attribute productID;
ram attribute nodeLabel;
callback attribute location;
callback attribute hardwareVersion;
callback attribute hardwareVersionString;
callback attribute softwareVersion;
callback attribute softwareVersionString;
callback attribute capabilityMinima;
callback attribute specificationVersion;
callback attribute maxPathsPerInvoke;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
ram attribute clusterRevision default = 3;
}
server cluster LocalizationConfiguration {
ram attribute activeLocale;
callback attribute supportedLocales;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
ram attribute clusterRevision default = 1;
}
server cluster TimeFormatLocalization {
ram attribute hourFormat;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
ram attribute clusterRevision default = 1;
}
server cluster UnitLocalization {
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
ram attribute clusterRevision default = 1;
}
server cluster GeneralCommissioning {
ram attribute breadcrumb default = 0x0000000000000000;
callback attribute basicCommissioningInfo;
callback attribute regulatoryConfig;
callback attribute locationCapability;
callback attribute supportsConcurrentConnection;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
ram attribute clusterRevision default = 1;
handle command ArmFailSafe;
handle command ArmFailSafeResponse;
handle command SetRegulatoryConfig;
handle command SetRegulatoryConfigResponse;
handle command CommissioningComplete;
handle command CommissioningCompleteResponse;
}
server cluster NetworkCommissioning {
ram attribute maxNetworks;
callback attribute networks;
ram attribute interfaceEnabled;
ram attribute lastNetworkingStatus;
ram attribute lastNetworkID;
ram attribute lastConnectErrorValue;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
ram attribute clusterRevision default = 1;
}
server cluster GeneralDiagnostics {
callback attribute networkInterfaces;
callback attribute rebootCount;
callback attribute upTime;
ram attribute testEventTriggersEnabled;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
callback attribute featureMap;
callback attribute clusterRevision;
handle command TestEventTrigger;
handle command TimeSnapshot;
handle command TimeSnapshotResponse;
}
server cluster AdministratorCommissioning {
callback attribute windowStatus;
callback attribute adminFabricIndex;
callback attribute adminVendorId;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
ram attribute clusterRevision default = 1;
handle command OpenCommissioningWindow;
handle command RevokeCommissioning;
}
server cluster OperationalCredentials {
callback attribute NOCs;
callback attribute fabrics;
callback attribute supportedFabrics;
callback attribute commissionedFabrics;
callback attribute trustedRootCertificates;
callback attribute currentFabricIndex;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
ram attribute clusterRevision default = 1;
handle command AttestationRequest;
handle command AttestationResponse;
handle command CertificateChainRequest;
handle command CertificateChainResponse;
handle command CSRRequest;
handle command CSRResponse;
handle command AddNOC;
handle command UpdateNOC;
handle command NOCResponse;
handle command UpdateFabricLabel;
handle command RemoveFabric;
handle command AddTrustedRootCertificate;
}
server cluster GroupKeyManagement {
callback attribute groupKeyMap;
callback attribute groupTable;
callback attribute maxGroupsPerFabric;
callback attribute maxGroupKeysPerFabric;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
callback attribute featureMap;
callback attribute clusterRevision;
handle command KeySetWrite;
handle command KeySetRead;
handle command KeySetReadResponse;
handle command KeySetRemove;
handle command KeySetReadAllIndices;
handle command KeySetReadAllIndicesResponse;
}
}
endpoint 1 {
device type energy_evse = 1292, version 1;
server cluster Identify {
ram attribute identifyTime default = 0x0;
ram attribute identifyType default = 0x00;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0;
ram attribute clusterRevision default = 4;
handle command Identify;
handle command TriggerEffect;
}
server cluster Descriptor {
callback attribute deviceTypeList;
callback attribute serverList;
callback attribute clientList;
callback attribute partsList;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
callback attribute featureMap;
callback attribute clusterRevision;
}
server cluster ElectricalPowerMeasurement {
callback attribute powerMode;
callback attribute numberOfMeasurementTypes;
callback attribute accuracy;
callback attribute ranges;
callback attribute voltage;
callback attribute activeCurrent;
callback attribute reactiveCurrent;
callback attribute apparentCurrent;
callback attribute activePower;
callback attribute reactivePower;
callback attribute apparentPower;
callback attribute RMSVoltage;
callback attribute RMSCurrent;
callback attribute RMSPower;
callback attribute frequency;
callback attribute harmonicCurrents;
callback attribute harmonicPhases;
callback attribute powerFactor;
callback attribute neutralCurrent;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
callback attribute featureMap;
ram attribute clusterRevision default = 1;
}
server cluster ElectricalEnergyMeasurement {
emits event CumulativeEnergyMeasured;
emits event PeriodicEnergyMeasured;
callback attribute accuracy;
callback attribute cumulativeEnergyImported;
callback attribute cumulativeEnergyExported;
callback attribute periodicEnergyImported;
callback attribute periodicEnergyExported;
callback attribute cumulativeEnergyReset;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
callback attribute featureMap;
ram attribute clusterRevision default = 1;
}
server cluster DeviceEnergyManagement {
emits event PowerAdjustStart;
emits event PowerAdjustEnd;
emits event Paused;
emits event Resumed;
callback attribute ESAType;
callback attribute ESACanGenerate;
callback attribute ESAState;
callback attribute absMinPower;
callback attribute absMaxPower;
callback attribute powerAdjustmentCapability;
callback attribute forecast;
callback attribute optOutState;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
callback attribute featureMap;
ram attribute clusterRevision default = 3;
handle command PowerAdjustRequest;
handle command CancelPowerAdjustRequest;
handle command StartTimeAdjustRequest;
handle command PauseRequest;
handle command ResumeRequest;
handle command ModifyForecastRequest;
handle command RequestConstraintBasedForecast;
handle command CancelRequest;
}
server cluster EnergyEvse {
emits event EVConnected;
emits event EVNotDetected;
emits event EnergyTransferStarted;
emits event EnergyTransferStopped;
emits event Fault;
emits event RFID;
callback attribute state;
callback attribute supplyState;
callback attribute faultState;
callback attribute chargingEnabledUntil;
callback attribute circuitCapacity;
callback attribute minimumChargeCurrent;
callback attribute maximumChargeCurrent;
callback attribute userMaximumChargeCurrent;
callback attribute randomizationDelayWindow;
callback attribute nextChargeStartTime;
callback attribute nextChargeTargetTime;
callback attribute nextChargeRequiredEnergy;
callback attribute nextChargeTargetSoC;
callback attribute approximateEVEfficiency;
callback attribute sessionID;
callback attribute sessionDuration;
callback attribute sessionEnergyCharged;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
callback attribute featureMap;
ram attribute clusterRevision default = 2;
handle command GetTargetsResponse;
handle command Disable;
handle command EnableCharging;
handle command EnableDischarging;
handle command StartDiagnostics;
handle command SetTargets;
handle command GetTargets;
handle command ClearTargets;
}
server cluster EnergyEvseMode {
callback attribute supportedModes;
callback attribute currentMode;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
callback attribute featureMap;
ram attribute clusterRevision default = 1;
handle command ChangeToMode;
handle command ChangeToModeResponse;
}
server cluster DeviceEnergyManagementMode {
callback attribute supportedModes;
callback attribute currentMode;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute eventList;
callback attribute attributeList;
callback attribute featureMap;
ram attribute clusterRevision default = 1;
handle command ChangeToMode;
handle command ChangeToModeResponse;
}
}