<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.1.0 -",
    "macOS: 13.0.0 -",
    "tvOS: 16.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 9.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Matter",
  "identifier" : "/documentation/Matter/MTRDeviceControllerServerProtocol",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Matter"
    ],
    "preciseIdentifier" : "c:objc(pl)MTRDeviceControllerServerProtocol"
  },
  "title" : "MTRDeviceControllerServerProtocol"
}
-->

# MTRDeviceControllerServerProtocol

```
protocol MTRDeviceControllerServerProtocol : NSObjectProtocol
```

## Topics

### Instance Methods

[`func downloadLog(withController: Any?, nodeId: NSNumber, type: MTRDiagnosticLogType, timeout: TimeInterval, completion: (String?, (any Error)?) -> Void)`](/documentation/Matter/MTRDeviceControllerServerProtocol/downloadLog(withController:nodeId:type:timeout:completion:))

[`func getAnyDeviceController(completion: (Any?, (any Error)?) -> Void)`](/documentation/Matter/MTRDeviceControllerServerProtocol/getAnyDeviceController(completion:))

[`func getDeviceController(withFabricId: UInt64, completion: (Any?, (any Error)?) -> Void)`](/documentation/Matter/MTRDeviceControllerServerProtocol/getDeviceController(withFabricId:completion:))

[`func invokeCommand(withController: Any?, nodeId: UInt64, endpointId: NSNumber, clusterId: NSNumber, commandId: NSNumber, fields: Any, timedInvokeTimeout: NSNumber?, completion: (Any?, (any Error)?) -> Void)`](/documentation/Matter/MTRDeviceControllerServerProtocol/invokeCommand(withController:nodeId:endpointId:clusterId:commandId:fields:timedInvokeTimeout:completion:))

[`func readAttribute(withController: Any?, nodeId: UInt64, endpointId: NSNumber?, clusterId: NSNumber?, attributeId: NSNumber?, params: [String : Any]?, completion: (Any?, (any Error)?) -> Void)`](/documentation/Matter/MTRDeviceControllerServerProtocol/readAttribute(withController:nodeId:endpointId:clusterId:attributeId:params:completion:))

[`func readAttributeCache(withController: Any?, nodeId: UInt64, endpointId: NSNumber?, clusterId: NSNumber?, attributeId: NSNumber?, completion: (Any?, (any Error)?) -> Void)`](/documentation/Matter/MTRDeviceControllerServerProtocol/readAttributeCache(withController:nodeId:endpointId:clusterId:attributeId:completion:))

[`func stopReports(withController: Any?, nodeId: UInt64, completion: () -> Void)`](/documentation/Matter/MTRDeviceControllerServerProtocol/stopReports(withController:nodeId:completion:))

[`func subscribe(withController: Any?, nodeId: UInt64, minInterval: NSNumber, maxInterval: NSNumber, params: [String : Any]?, shouldCache: Bool, completion: ((any Error)?) -> Void)`](/documentation/Matter/MTRDeviceControllerServerProtocol/subscribe(withController:nodeId:minInterval:maxInterval:params:shouldCache:completion:))

[`func subscribeAttribute(withController: Any?, nodeId: UInt64, endpointId: NSNumber?, clusterId: NSNumber?, attributeId: NSNumber?, minInterval: NSNumber, maxInterval: NSNumber, params: [String : Any]?, establishedHandler: () -> Void)`](/documentation/Matter/MTRDeviceControllerServerProtocol/subscribeAttribute(withController:nodeId:endpointId:clusterId:attributeId:minInterval:maxInterval:params:establishedHandler:))

[`func writeAttribute(withController: Any?, nodeId: UInt64, endpointId: NSNumber, clusterId: NSNumber, attributeId: NSNumber, value: Any, timedWriteTimeout: NSNumber?, completion: (Any?, (any Error)?) -> Void)`](/documentation/Matter/MTRDeviceControllerServerProtocol/writeAttribute(withController:nodeId:endpointId:clusterId:attributeId:value:timedWriteTimeout:completion:))

## Relationships

### Inherits From

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)