Old Macdonald - Decentralised Controlled Environment Agriculture System Help

Data Model

Overview

Matter devices follow a hierarchical Data Model.

At the top of this hierarchy is the Device, which represents a physical entity.

Each Device contains one or more Nodes - addressable entities that support the Matter protocol stack. Once commissioned, each Node has its own Operational Node ID and Node Operational Credentials. Nodes can have different roles:

  • Controllers (e.g., Google Home app) manage other nodes.

  • Commissioners are responsible for commissioning devices by assigning Fabric credentials to Commissionee devices.

  • OTA Providers supply software updates to OTA Requesters.

Nodes can contain one or more individually addressable Endpoints, each representing a specific feature set.

Endpoints contain one or more Clusters, which enable independent utility or application functions. The Endpoint 0 is reserved for the Utility Clusters. Each Cluster may include the following:

  • Attributes, which represent a physical quantity or state.

  • Commands, which are actions.

  • Events, which represent notifications of state changes or significant conditions.

Example: a Smart Thermostat Device contains two Nodes:

  • A Thermostat Node with a Thermostat Cluster (Attributes: Current Temperature, Commands: Set Heating Setpoint, Events: Temperature Changed).

  • A Humidity Sensor Node with a Humidity Measurement Cluster (Attributes: Humidity Percentage, Commands: Read Humidity, Events: Humidity Changed).

Device Types

Thread Border Router (0x0091)

Clusters:

  • Thread Network Diagnostics (0x0035)

  • Thread Border Router Management (0x0452)

  • Thread Network Directory (0x0453)

Temperature Sensor (0x0302)

Clusters:

  • Identify (0x0003)

  • Groups (0x0004)

  • Temperature Measurement (0x0402)

Secondary Network Interface (0x0019)

Clusters:

  • Network Commissioning (0x0031)

  • Thread Network Diagnostics (0x0035)

  • Wi-Fi Network Diagnostics (0x0036)

  • Ethernet Network Diagnostics (0x0037)

Root Node (0x0016)

Conditions:

  • CustomNetworkConfig: The node only supports out-of-band-configured networking (e.g., rich user interface, manufacturer-specific means, custom commissioning flows, or future IP-compliant network technology not yet directly supported by the NetworkCommissioning cluster).

  • ManagedAclAllowed: The node has at least one endpoint where some Device Type present on the endpoint has a Device Library element requirement table entry that sets this condition to true.

Clusters:

  • Access Control (0x001F)

  • Basic Information (0x0028)

  • Localization Configuration (0x002B)

  • Time Format Localization (0x002C)

  • Unit Localization (0x002D)

  • Power Source Configuration (0x002E)

  • General Commissioning (0x0030)

  • Network Commissioning (0x0031)

  • Diagnostic Logs (0x0032)

  • General Diagnostics (0x0033)

  • Software Diagnostics (0x0034)

  • Thread Network Diagnostics (0x0035)

  • Wi-Fi Network Diagnostics (0x0036)

  • Ethernet Network Diagnostics (0x0037)

  • Time Synchronization (0x0038)

  • Administrator Commissioning (0x003C)

  • Node Operational Credentials (0x003E)

  • Group Key Management (0x003F)

  • ICD Management (0x0046)

Pressure Sensor (0x0305)

Clusters:

  • Identify (0x0003)

  • Groups (0x0004)

  • Pressure Measurement (0x0403)

Network Infrastructure Manager (0x0090)

Clusters:

  • Wi-Fi Network Management (0x0451)

  • Thread Border Router Management (0x0452)

  • Thread Network Directory (0x0453)

Clusters

This section describes the Clusters in the Matter data model used in this project.

Descriptor Cluster (0x001D)

Features:

  • TagList: The TagList attribute is present.

Attributes:

  • DeviceTypeList (0x0000): List of device types associated with this endpoint.

  • ServerList (0x0001): List of server clusters implemented on this endpoint.

  • ClientList (0x0002): List of client clusters implemented on this endpoint.

  • PartsList (0x0003): List of endpoints that are part of this endpoint.

  • TagList (0x0004): List of semantic tags (available if the TagList feature is supported).

Basic Information Cluster (0x0028)

Attributes:

  • DataModelRevision (0x0000): Data model revision, default is "MS"

  • VendorName (0x0001): Vendor name (max length: 32 characters)

  • VendorID (0x0002): Vendor ID

  • ProductName (0x0003): Product name (max length: 32 characters)

  • ProductID (0x0004): Product ID

  • NodeLabel (0x0005): Node label (max length: 32 characters)

  • Location (0x0006): Location (2-character code)

  • HardwareVersion (0x0007): Hardware version (default is 0)

  • HardwareVersionString (0x0008): Hardware version as a string (1 to 64 characters)

  • SoftwareVersion (0x0009): Software version

  • SoftwareVersionString (0x000A): Software version as a string (1 to 64 characters)

  • ManufacturingDate (0x000B): Manufacturing date (8 to 16 characters)

  • PartNumber (0x000C): Part number (max length: 32 characters)

  • ProductURL (0x000D): Product URL (max length: 256 characters)

  • ProductLabel (0x000E): Product label (max length: 64 characters)

  • SerialNumber (0x000F): Serial number (max length: 32 characters)

  • LocalConfigDisabled (0x0010): Local configuration status (true/false)

  • Reachable (0x0011): Device reachability status (true/false)

  • UniqueID (0x0012): Unique ID (max length: 32 characters)

  • CapabilityMinima (0x0013): Minimum capabilities (Case sessions and subscriptions)

  • ProductAppearance (0x0014): Product appearance (Finish and PrimaryColor)

  • SpecificationVersion (0x0015): Specification version

  • MaxPathsPerInvoke (0x0016): Max paths per invocation (default is 1)

Events:

  • StartUp (0x00): Triggered on startup with the SoftwareVersion field

  • ShutDown (0x01): Triggered on shutdown

  • Leave (0x02): Triggered when a device leaves, with a FabricIndex field (1 to 254)

  • ReachableChanged (0x03): Triggered when the reachability status changes, with a ReachableNewValue field (true/false)

Commissioner Control Cluster (0x0751)

Attributes:

  • SupportedDeviceCategories (0x0000): Supported Device Categories bitmap

Commands:

  • RequestCommissioningApproval (0x00): Triggered by a request for commissioning approval from the server

    • RequestID (uint64)

    • VendorID (vendor-id)

    • ProductID (uint16)

    • Label (string, max length 64)

  • CommissionNode (0x01): Command to commission a node, expects a response from the server

    • RequestID (uint64)

    • ResponseTimeoutSeconds (uint16, default 30, range 30 to 120)

  • ReverseOpenCommissioningWindow (0x02): Response from the server after a commissioning request

    • CommissioningTimeout (uint16)

    • PAKEPasscodeVerifier (octstr)

    • Discriminator (uint16, max value 4095)

    • Iterations (uint32, range 1000 to 100000)

    • Salt (octstr, length between 16 to 32)

Events:

  • CommissioningRequestResult (0x00): Event indicating the result of a commissioning request

    • RequestID (uint64)

    • ClientNodeID (node-id)

    • StatusCode (status)

Thread Network Diagnostics Cluster (0x0035)

Attributes:

  • Channel (0x0000): Channel number

  • RoutingRole (0x0001): Routing role of the node

  • NetworkName (0x0002): Network name (max length 16)

  • PanId (0x0003): PAN ID

  • ExtendedPanId (0x0004): Extended PAN ID

  • MeshLocalPrefix (0x0005): Mesh local prefix

  • OverrunCount (0x0006): Overrun count (default 0)

  • NeighborTable (0x0007): List of neighbor table entries

  • RouteTable (0x0008): List of route table entries

  • PartitionId (0x0009): Partition ID

  • Weighting (0x000A): Weighting (max value 255)

  • DataVersion (0x000B): Data version (max value 255)

  • StableDataVersion (0x000C): Stable data version (max value 255)

  • LeaderRouterId (0x000D): Leader router ID (max value 62)

  • DetachedRoleCount (0x000E): Detached role count (default 0)

  • ChildRoleCount (0x000F): Child role count (default 0)

  • RouterRoleCount (0x0010): Router role count (default 0)

  • LeaderRoleCount (0x0011): Leader role count (default 0)

  • AttachAttemptCount (0x0012): Attach attempt count (default 0)

  • PartitionIdChangeCount (0x0013): Partition ID change count (default 0)

  • BetterPartitionAttachAttemptCount (0x0014): Better partition attach attempt count (default 0)

  • ParentChangeCount (0x0015): Parent change count (default 0)

  • TxTotalCount (0x0016): Total TX count (default 0)

  • TxUnicastCount (0x0017): Unicast TX count (default 0)

  • TxBroadcastCount (0x0018): Broadcast TX count (default 0)

  • TxAckRequestedCount (0x0019): TX with ACK requested (default 0)

  • TxAckedCount (0x001A): TX with ACK received (default 0)

  • TxNoAckRequestedCount (0x001B): TX with no ACK requested (default 0)

  • TxDataCount (0x001C): Data TX count (default 0)

  • TxDataPollCount (0x001D): Data poll TX count (default 0)

  • TxBeaconCount (0x001E): Beacon TX count (default 0)

  • TxBeaconRequestCount (0x001F): Beacon request TX count (default 0)

  • TxOtherCount (0x0020): Other TX count (default 0)

  • TxRetryCount (0x0021): Retry TX count (default 0)

  • TxDirectMaxRetryExpiryCount (0x0022): Direct max retry expiry TX count (default 0)

  • TxIndirectMaxRetryExpiryCount (0x0023): Indirect max retry expiry TX count (default 0)

  • TxErrCcaCount (0x0024): CCA error TX count (default 0)

  • TxErrAbortCount (0x0025): Abort error TX count (default 0)

  • TxErrBusyChannelCount (0x0026): Busy channel error TX count (default 0)

  • RxTotalCount (0x0027): Total RX count (default 0)

  • RxUnicastCount (0x0028): Unicast RX count (default 0)

  • RxBroadcastCount (0x0029): Broadcast RX count (default 0)

  • RxDataCount (0x002A): Data RX count (default 0)

  • RxDataPollCount (0x002B): Data poll RX count (default 0)

  • RxBeaconCount (0x002C): Beacon RX count (default 0)

  • RxBeaconRequestCount (0x002D): Beacon request RX count (default 0)

  • RxOtherCount (0x002E): Other RX count (default 0)

  • RxAddressFilteredCount (0x002F): Address filtered RX count (default 0)

  • RxDestAddrFilteredCount (0x0030): Destination address filtered RX count (default 0)

  • RxDuplicatedCount (0x0031): Duplicated RX count (default 0)

  • RxErrNoFrameCount (0x0032): No frame error RX count (default 0)

  • RxErrUnknownNeighborCount (0x0033): Unknown neighbor error RX count (default 0)

  • RxErrInvalidSrcAddrCount (0x0034): Invalid source address error RX count (default 0)

  • RxErrSecCount (0x0035): Security error RX count (default 0)

  • RxErrFcsCount (0x0036): FCS error RX count (default 0)

  • RxErrOtherCount (0x0037): Other error RX count (default 0)

  • ActiveTimestamp (0x0038): Active timestamp (default 0)

  • PendingTimestamp (0x0039): Pending timestamp (default 0)

  • Delay (0x003A): Delay (default 0)

  • SecurityPolicy (0x003B): Security policy

Commands:

  • ResetCounts (0x00): Resets error counts and statistics, invokes on the server

Events:

  • ConnectionStatus (0x00): Event indicating connection status

  • NetworkFaultChange (0x01): Event indicating network fault change

Wi-Fi Network Diagnostics Cluster (0x0036)

Attributes:

  • BSSID (0x0000): Basic Service Set Identifier (BSSID)

  • SecurityType (0x0001): Wi-Fi security type

  • WiFiVersion (0x0002): Wi-Fi version

  • ChannelNumber (0x0003): Channel number

  • RSSI (0x0004): Received Signal Strength Indicator (RSSI)

  • BeaconLostCount (0x0005): Number of beacon losses (default 0)

  • BeaconRxCount (0x0006): Number of beacon packets received (default 0)

  • PacketMulticastRxCount (0x0007): Multicast RX packet count (default 0)

  • PacketMulticastTxCount (0x0008): Multicast TX packet count (default 0)

  • PacketUnicastRxCount (0x0009): Unicast RX packet count (default 0)

  • PacketUnicastTxCount (0x000A): Unicast TX packet count (default 0)

  • CurrentMaxRate (0x000B): Current maximum rate (default 0)

  • OverrunCount (0x000C): Overrun count (default 0)

Commands:

  • ResetCounts (0x00): Resets the counts for errors and statistics

Events:

  • Disconnection (0x00): Event triggered when a disconnection occurs

    • ReasonCode (uint16)

  • AssociationFailure (0x01): Event triggered on association failure

    • AssociationFailureCause (AssociationFailureCauseEnum)

    • Status (uint16)

  • ConnectionStatus (0x02): Event triggered when the connection status changes

    • ConnectionStatus (ConnectionStatusEnum)

Network Commissioning Cluster (0x0031)

Attributes:

  • MaxNetworks (0x0000): Maximum number of networks (min 1)

  • Networks (0x0001): List of network information

  • ScanMaxTimeSeconds (0x0002): Max scan time for networks

  • ConnectMaxTimeSeconds (0x0003): Max connection time

  • InterfaceEnabled (0x0004): Whether the interface is enabled (default true)

  • LastNetworkingStatus (0x0005): Last network commissioning status

  • LastNetworkID (0x0006): Last network ID

  • LastConnectErrorValue (0x0007): Last connection error value

  • SupportedWiFiBands (0x0008): List of supported Wi-Fi bands

  • SupportedThreadFeatures (0x0009): Thread features supported

  • ThreadVersion (0x000A): Thread version

Commands:

  • ScanNetworks (0x00): Scan for available networks

  • ScanNetworksResponse (0x01): Response to scan networks request

  • AddOrUpdateWiFiNetwork (0x02): Add or update a Wi-Fi network

  • AddOrUpdateThreadNetwork (0x03): Add or update a Thread network

  • RemoveNetwork (0x04): Remove a network

  • NetworkConfigResponse (0x05): Response to network configuration commands

  • ConnectNetwork (0x06): Connect to a network

  • ConnectNetworkResponse (0x07): Response to connect to network

  • ReorderNetwork (0x08): Reorder a network in the list

Events:

  • Disconnection (0x00): Event indicating network disconnection

  • AssociationFailure (0x01): Event indicating a failure in association

  • ConnectionStatus (0x02): Event indicating the connection status

On/Off Cluster (0x0006)

Attributes:

  • OnOff (0x0000): On/Off state (default false)

  • GlobalSceneControl (0x4000): Global scene control (default true)

  • OnTime (0x4001): On time duration (default 0)

  • OffWaitTime (0x4002): Off wait time (default 0)

  • StartUpOnOff (0x4003): Start-up behavior for OnOff state (default "MS")

Commands:

  • Off (0x00): Command to turn off

  • On (0x01): Command to turn on

  • Toggle (0x02): Command to toggle the On/Off state

  • OffWithEffect (0x40): Turn off with an effect

    • EffectIdentifier (EffectIdentifierEnum)

    • EffectVariant (enum8)

  • OnWithRecallGlobalScene (0x41): Turn on with the recall of the global scene

  • OnWithTimedOff (0x42): Turn on with timed off

    • OnOffControl (OnOffControlBitmap)

    • OnTime (uint16)

    • OffWaitTime (uint16)

Events:

  • No events listed for this cluster

Features:

  • Lighting (LT): Supports lighting applications

  • DeadFrontBehavior (DF): Device has Dead Front behavior

  • OffOnly (OFFONLY): Device supports the OffOnly feature

Data Types:

  • DelayedAllOffEffectVariantEnum: Defines variants for delayed off effects

  • DyingLightEffectVariantEnum: Defines variants for dying light effect

  • EffectIdentifierEnum: Identifiers for effects like DelayedAllOff and DyingLight

  • StartUpOnOffEnum: Defines start-up behavior for OnOff (Off, On, or Toggle)

  • OnOffControlBitmap: Bitmap for controlling On/Off state behavior

Pressure Measurement Cluster (0x0403)

Attributes:

  • MeasuredValue (0x0000): The current measured pressure value (int16)

  • MinMeasuredValue (0x0001): Minimum measured pressure value (int16, max 32766)

  • MaxMeasuredValue (0x0002): Maximum measured pressure value (int16)

  • Tolerance (0x0003): Tolerance for the measurement (uint16, default 0, max 2048)

  • ScaledValue (0x0010): Scaled pressure value (int16)

  • MinScaledValue (0x0011): Minimum scaled value (int16, max 32766)

  • MaxScaledValue (0x0012): Maximum scaled value (int16)

  • ScaledTolerance (0x0013): Tolerance for the scaled value (uint16, default 0, max 2048)

  • Scale (0x0014): Scaling factor for the measurement (int8, default 0, min -127)

Features:

  • Extended (EXT): Indicates extended range and resolution support

Temperature Measurement Cluster (0x0402)

Attributes:

  • MeasuredValue (0x0000): The current measured temperature value (type: temperature)

  • MinMeasuredValue (0x0001): Minimum measured temperature value (type: temperature, range: -273.15°C to 32766°C)

  • MaxMeasuredValue (0x0002): Maximum measured temperature value (type: temperature, greater than MinMeasuredValue)

  • Tolerance (0x0003): Tolerance for the measurement (uint16, default 0, max 2048)

Thread Border Router Management Cluster (0x0452)

Attributes:

  • BorderRouterName (0x0000): The name of the Border Router (1 to 63 characters)

  • BorderAgentID (0x0001): The Border Agent ID (16 bytes)

  • ThreadVersion (0x0002): The Thread version (default "MS")

  • InterfaceEnabled (0x0003): Whether the interface is enabled (default false)

  • ActiveDatasetTimestamp (0x0004): Timestamp for the active dataset (default 0)

  • PendingDatasetTimestamp (0x0005): Timestamp for the pending dataset (default 0)

Commands:

  • GetActiveDatasetRequest (0x00): Request to get the active dataset

  • GetPendingDatasetRequest (0x01): Request to get the pending dataset

  • DatasetResponse (0x02): Response containing the dataset (max length: 254 bytes)

  • SetActiveDatasetRequest (0x03): Request to set the active dataset (max length: 254 bytes)

  • SetPendingDatasetRequest (0x04): Request to set the pending dataset (max length: 254 bytes) with PAN change feature

Thread Network Directory Cluster (0x0453)

Attributes:

  • PreferredExtendedPanID (0x0000): Preferred Extended PAN ID (8 bytes, nullable)

  • ThreadNetworks (0x0001): List of Thread networks (max count defined by ThreadNetworkTableSize)

  • ThreadNetworkTableSize (0x0002): Maximum number of Thread networks (default: 10)

Commands:

  • AddNetwork (0x00): Add a network by providing the Operational Dataset (max length: 254 bytes)

  • RemoveNetwork (0x01): Remove a network by specifying the Extended PAN ID (8 bytes)

  • GetOperationalDataset (0x02): Get the Operational Dataset of a specified network by providing the Extended PAN ID (8 bytes)

  • OperationalDatasetResponse (0x03): Response containing the Operational Dataset (max length: 254 bytes)

References

Device Types are defined in the Device Library rather than the main Matter specification document. Application Clusters are specified in the Application Cluster Library. These three documents can be requested from the Connectivity Standards Alliance (CSA) members' website. The Matter Data Model is also available on GitHub in the Connected Home over IP repository.

Last modified: 24 March 2025