Matter is an IP-based, royalty-free connectivity protocol standard that enables communication among a wide range of smart devices.

Posts under Matter tag

39 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

Matter tilt only Window Coverings and the Home App
There are a number of window covering types that have tilt only capabilities, such some venetian blinds. The matter specification allows for a window covering to have tilt only functionality and attributes. When I add one of the tilt only Matter accessories to the Home app, I get "This accessory is not responding" If I go into Accessory Details and Settings, I am still able to use the tilt slider (see photo), however the target tilt percentage is always sent as 100% (90 degrees) or 0% (0 degrees). There is no granularity.
1
0
427
Oct ’23
Matter QR code scanner UI (MatterAddDeviceRequest) close event
Our smart home app is integrating Matter as a way to add devices to the user's home. The implementation is pretty standard, here is the main part: Code var setupPayload: MTRSetupPayload? if let onboardingPayload = onboardingPayload { setupPayload = try MTRSetupPayload(onboardingPayload: onboardingPayload) } let topology = MatterAddDeviceRequest.Topology( ecosystemName: ecosystemName, homes: [MatterAddDeviceRequest.Home(displayName: homeDisplayName)]) let request = MatterAddDeviceRequest(topology: topology, setupPayload: setupPayload) do { try await request.perform() print("Success") } catch { print("Failure") } Issue If the user decides to press the close button on the UI, the iOS treats it as a success. This use case messes with our flow as we have different paths in the app for success and failures. I would normally expect that if the user cancels something there is a callback that enables the developers to handle it properly. I've researched a lot on this topic but unfortunately I wasn't able to find anything helpful. Any advice on how to resolve this is much appreciated. Thanks in advance P.S. Yes we have implemented the MatterRequestExtension and all the handlers, the commissioning part works fine, we are able to add a Matter device and control it with our app, this issue happens before scanning the QR code.
0
0
645
Sep ’23
How to manage matter custom commissioning with auto fill ssid and password?
Matter-enabled devices can be commissioned directly using MatterSupport and Default System UI. But what if we don't want that default system ui instead want to implement an entire customized flow as in Matter Sample iOS app. How can I do that if I'm using MatterSupport and want a custom flow instead of a default flow? Currently, in custom flow, the user has to enter ssid and password of the network connection, but I want to programmatically read SSID and password on the network and pass those as arguments to the chip controller for commissioning. Is it possible in iOS to read the credentials of a wifi network by any chance?
1
0
770
Sep ’23
Matter.framework does not work properly in iOS 16.1.1
On iOS 16.0, I added accessories via the MTRDeviceController class in the Matter.framework, and it worked fine. But when I will phone upgrade to the latest version of the iOS (iOS 16.1.1), after I call "MTRDeviceController" class "pairDevice: onboardingPayload: error:" method. I get an error like this: CHIP: [BLE] BLE:Error writing Characteristics in Chip service on the device: [The specified UUID is not allowed for this operation.] According to the error message, I guess that the characteristics of a certain Bluetooth cannot be read and written. After trying to verify it, I find that the characteristics uuid of the Matter accessory: "18EE2EF5-263D-4559-959F-4F9C429F9D12" cannot be read. So, my question is what can I do in iOS 16.1.1 to make my app work as well as it does on iOS 16.0.
8
0
2.4k
Aug ’23
Matter Enabled iOS Application
Hello fellow developers, I am in the process of developing an iOS application that support the Matter Framework. My goal is to enable user to commission their Matter-enabled device to a fabric and control them through the fabric. However, I stumbled upon a few questions and areas that I would greatly appreciate guidance on: Commission Process What is the recommended steps to successfully commission a Matter-enabled device? Using the Matter API I have reviewed the provided sample app in the CHIP repo. However, I find it a bit complex to understand fully (background context: I am a junior developer and have never work on iOS development before). I replicated the app using Swift since the sample is written in ObjC but often times got stuck on [connection] nw_read_request_report [C1] Receive failed with error "Operation timed out" log. How to effectively use the Matter API to handle commissioning, device control and other interactions with Matter-enabled devices? Keypair generation I have noticed that the framework doesn't provide an API with the keypair generation (correct me if I am wrong). What is the best practice or resources for handling the keypair generation within the Matter context? Matter Support vs Matter framework I need clarification on the roles of these two framework. From my understanding, MatterSupport adds Matter devices into my ecosystem(?) while Matter framework handles the commission and control in the Matter fabric. And we can use the Matter framework within the MatterSupport using the request handler to commission Matter-enabled device.
1
0
841
Aug ’23
Matter - programmable switch and battery
Hi, we develop devices on Matter. I have two questions: I have a device with four buttons. These are programmable buttons that can be programmed for a short press and a long press. I have an issue that after pairing the buttons with Apple Home, all the buttons are displayed as button 1. They also appear in different environments each time. How do I need to configure the clusters for Apple Home to correctly recognize the buttons? How do I display the battery status? I'm using the Power Cluster, but Apple Home doesn't detect it. The battery doesn't show up in the app at all. On Samsung SmartThings, the battery works correctly. Best regards, HaWca.
0
0
523
Aug ’23
Matter device commissioning failed with i-phone.
Hello, I trying to commission and joint thread matter device through I-phone ( ios 16.3.1) and apple home pod mini (16.3.2). After scanning QR code and following setup process it fails to add accessory and iPhone shows" Pairing with device failed" (attaching screen shot). I confirmed with device manufacturer, and it seems to be problem from apple side. Any help will be appreciated, Thank you.
1
0
1.2k
Aug ’23
how to attribute bind with switch and bulb on home app
I can bind the light bulb to the light switch through chip-tool software But when I added the light bulb to the apple home app, I noticed two problems (1) The light switch is displayed as an unsupported accessory, note that it is an unsupported accessory, not an uncertified device, because the light bulb can be normally added to the home app and is only displayed as an uncertified device (2) If the light switch can be added to the home app, then I do not know how to bind the light bulb to the light switch
1
0
610
Jul ’23
MatterSupport integrated with objective-c No MatterAddDeviceExtensionRequestHandler
Run the sample code as doc https://developer.apple.com/documentation/mattersupport?changes=latest_minor import MatterSupport let request = MatterAddDeviceRequest( topology: .init(ecosystemName: "Acme SmartHome", homes: [ .init(displayName: "Default Acme Home"), ]) ) do { try await request.perform() print("Successfully set up a device!") } catch { print("Failed to set up a device with error: \(error)") } it runs but stuck in the scene below, never get the callback. Another issue about MatterSupport, when integrated with objective-c the bridge file(eg xx-Swift.h) turn out to show error: Cannot find interface declaration for 'MatterAddDeviceExtensionRequestHandler', superclass of 'MatterAddDeviceHandler' Xcode Version 14.2 (14C18) My code: // // MatterHelper.swift // xx // // Created by Robin on 2023/3/21. // import Foundation import MatterSupport @available(iOS 16.1, *) class MatterHelper: NSObject { @objc class func commission() { let request = MatterAddDeviceRequest( topology: .init(ecosystemName: "RRRRRR", homes: [ .init(displayName: "R11111"), .init(displayName: "R222222") ]) ) Task.init { do { try await request.perform() print("Successfully set up a device!") } catch { print("Failed to set up a device with error: \(error)") } } } } @available(iOS 16.1, *) class MatterAddDeviceHandler: MatterAddDeviceExtensionRequestHandler { override func validateDeviceCredential(_ deviceCredential: MatterAddDeviceExtensionRequestHandler.DeviceCredential) async throws { print("validateDeviceCredential \(deviceCredential)") } override func selectThreadNetwork(from threadScanResults: [MatterAddDeviceExtensionRequestHandler.ThreadScanResult]) async throws -> MatterAddDeviceExtensionRequestHandler.ThreadNetworkAssociation { print("selectThreadNetwork \(threadScanResults)") return ThreadNetworkAssociation.defaultSystemNetwork } override func commissionDevice(in home: MatterAddDeviceRequest.Home?, onboardingPayload: String, commissioningID: UUID) async throws { print("Home: \(String(describing: home)) " + "payload: \(onboardingPayload) " + "commissionID: \(commissioningID)") } } Many thanks for your help.
2
0
1.1k
Jun ’23
How do I get the device ID from the callback information when a HomeKit paired with a Matter device within an application
I'm trying to pair the Matter by calling HomeKit from within our app, I can successfully pair and the matter device is discovered via bonjour, but after the HomeKit pairing success callback, I can't get a similar UUID or other identifier. I invoked HomeKit with the following code - (void)addAccessoriesWithCompletion:(void (^)(NSError * _Nullable))completion {     if(@available(iOS 15.4, *)) {         HMAccessorySetupRequest *setupRequest = [[HMAccessorySetupRequest alloc] init];         setupRequest.homeUniqueIdentifier = self.currentHome.uniqueIdentifier;         [self.setupManager performAccessorySetupUsingRequest:setupRequest completionHandler:^(HMAccessorySetupResult * _Nullable result, NSError * _Nullable error) {                    completion(error);         }];     }     else {         [self.currentHome addAndSetupAccessoriesWithCompletionHandler:completion];     } } - (HMAccessorySetupManager *)setupManager {     if (_setupManager == nil) {         _setupManager = [[HMAccessorySetupManager alloc] init];     }     return _setupManager; } HomeKit successfully added device delegate - (void)home:(HMHome *)home didAddAccessory:(HMAccessory *)accessory {     if (self.homeDidAddAccessoryBlock) {         self.homeDidAddAccessoryBlock(accessory);     }     accessory.delegate = self; } Multiple matter devices may be discovered through bonjour, and I need to know which matter device I just added in order to bind to our user system. So I need to get the device id from the HomeKit pairing success callback so I can filter the matter device. Or do we need to set something on our matter firmware?
3
0
2.8k
Jun ’23
How do I obtain the unique ID of a device and control the device after adding a device using MatterSupport.framework
I am trying to manage my Matter device using MatterSupport.Framework. Prior to this I was using the matter.Framework, and I added devices through the commissionDevice API, which has the ability to set DeviceId for Matter devices. I was then able to use deviceId to control my device (like setting switches, brightness, etc.). But due to some other issues, I had to add my device using the MatterAddDeviceRequest API in MatterSupport. I can't find a unique identifier for a device such as "deviceID" in the documentation. So I'm confused, how do I control my matter device after adding it via the MatterAddDeviceRequest API
2
0
934
Jun ’23
MatterExtension with class MatterAddDeviceExtensionRequestHandler never called?!
Added the MatterExtension for MatterAddDeviceExtensionRequestHandler as new Target. Everything is automatically generated. But still only the default MatterAddDevice pickerView is displayed instead of MatterAddDeviceExtension?! func play() { Task { let homes = [MatterAddDeviceRequest.Home(displayName: "my Home")] let topology = MatterAddDeviceRequest.Topology(ecosystemName: "MyEcosystemName", homes: homes) let request = MatterAddDeviceRequest(topology: topology) do { try await request.perform() print("Successfully set up device!") } catch { print("Failed to set up device with error: \(error)") } } } Entitlements: Matter Allow Setup Payload = YES .plist is set up: NSLocalNetworkUsageDescription NSBonjourServices:
1
0
775
Jun ’23