iOS matter

 

https://developer.apple.com/cn/apple-home/matter/

Matter 是一种 智能家居设备的通用连接协议,由 CSA(Connectivity Standards Alliance,连接标准联盟) 开发,旨在让不同品牌和平台的智能家居设备能够无缝互通

Matter 允许设备通过 Wi-Fi、以太网、Thread 和 BLE 进行通信,支持 苹果 HomeKit、Google Home、Amazon Alexa 和 SmartThings 等智能家居生态系统。

Matter介绍
 Matter 的核心特点

✅ 跨平台兼容:支持 Apple、Google、Amazon、Samsung 等生态系统。

✅ 本地运行:设备之间可以本地通信,无需云端支持,更快、更安全。

✅ 多种通信协议:支持 Wi-Fi、Thread、BLE、以太网(不支持 Zigbee 和 Z-Wave)。

✅ 低功耗支持:Thread 适用于低功耗设备(如智能灯泡、门锁等)。

✅ 安全性强:采用 AES 加密、区块链认证,确保设备通信安全。




Matter 设备如何通信?

Matter 主要通过 IP 协议(IPv6)进行设备通信,并支持以下几种方式:

1.Wi-Fi:用于高带宽设备(如智能音箱、摄像头)。

2.Thread:低功耗无线通信,适用于门锁、灯泡等小型设备。

3.以太网(Ethernet):用于稳定的有线连接设备(如智能家居中枢)。

4.BLE(蓝牙低功耗):用于设备初次配对(不用于持续通信)。




Matter 设备的通信流程

1.设备发现:使用 BLE 进行初始配对,或通过 IP 发现设备。

2. 身份认证:设备通过 区块链证书(DAC - Device Attestation Certificate) 进行安全认证。

3.本地控制:设备通过 Wi-Fi 或 Thread 与其他设备本地通信,无需互联网。

4.云端集成(可选):如果设备需要远程控制,可以通过 云端桥接(如 HomeKit、Alexa、Google Cloud)。

 

Matter 的实际应用

 

✅ 兼容的智能设备

智能灯泡(如 Philips Hue、Nanoleaf)

智能门锁(如 August、Yale)

智能开关 & 插座(如 TP-Link、Eve)

智能传感器(如 Aqara、Eve)

智能音箱 & 电视(如 Google Nest、Apple HomePod、Amazon Echo)

✅ 兼容的平台

Apple Home(iOS 16+)

Google Home

Amazon Alexa

Samsung SmartThings

 

1. 配置 Matter SDK

Xcode 项目中,需要:

1. 启用 Matter Support

• 在 Signing & Capabilities 选项卡中,添加 Matter 配件开发权限

2. 添加 MatterSupport 框架

• 在 Frameworks, Libraries, and Embedded Content 中,添加 MatterSupport.framework

 

2. 配对 Matter 设备

在 Matter 设备连接时,我们需要 搜索可用设备进行配对

🔹 代码示例

import UIKit
import MatterSupport

class ViewController: UIViewController {
    let matterPairingManager = MTPairingManager()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 开始扫描并配对 Matter 设备
        startPairing()
    }
    
    func startPairing() {
        let setupPayload = MTSetupPayload(onboardingPayload: "MT:1234567890") // 示例二维码数据
        
        matterPairingManager.pairDevice(with: setupPayload) { result in
            switch result {
            case .success(let pairedDevice):
                print("✅ 设备配对成功: \(pairedDevice)")
            case .failure(let error):
                print("❌ 设备配对失败: \(error.localizedDescription)")
            }
        }
    }
}

解释

MTSetupPayload 解析 Matter 设备的二维码或手动输入代码

MTPairingManager.pairDevice 进行 配对,成功后返回 设备信息

3. 发现 & 控制 Matter 设备

配对成功后,我们可以发现设备,并进行 开/关控制(比如智能灯泡)

🔹 代码示例

import Matter

class MatterDeviceController {
    let deviceController = MTRDeviceController.sharedController
    
    func turnOnLight(deviceID: UInt64) {
        guard let device = deviceController.device(forNodeID: deviceID) else {
            print("❌ 找不到设备")
            return
        }
        
        let command = MTRBaseClusterOnOff()
        command.off()
        
        print("💡 发送开灯命令")
        device.sendCommand(command, completion: { success, error in
            if success {
                print("✅ 灯已打开")
            } else {
                print("❌ 开灯失败: \(String(describing: error?.localizedDescription))")
            }
        })
    }
}

解释

MTRDeviceController.sharedController.device(forNodeID:) 查找 Matter 设备。

MTRBaseClusterOnOff().off() 发送 开灯/关灯 指令。

•通过 回调 确认命令执行成功或失败。

 

4. 监听设备状态(比如灯泡亮度变化)

如果你想监听 Matter 设备的状态(如 灯泡亮度变化),可以使用 订阅机制

🔹 代码示例

import Matter

class MatterDeviceMonitor {
    let deviceController = MTRDeviceController.sharedController
    
    func subscribeToLightStatus(deviceID: UInt64) {
        guard let device = deviceController.device(forNodeID: deviceID) else {
            print("❌ 找不到设备")
            return
        }
        
        device.subscribe(toCluster: MTRBaseClusterLevelControl.self, attributeId: 0x0000, minInterval: 1, maxInterval: 10) { value, error in
            if let brightness = value as? UInt8 {
                print("💡 当前亮度: \(brightness)%")
            } else {
                print("❌ 订阅失败: \(String(describing: error?.localizedDescription))")
            }
        }
    }
}

解释

subscribe(toCluster:attributeId:minInterval:maxInterval:) 订阅 亮度属性 (0x0000)。

回调返回亮度值(单位 %)。

• 适用于 智能灯泡、温控器等可变设备

🔹 Matter 的优势

通用协议,支持 Apple、Google、Amazon。

本地运行,无需云端,更安全。

跨品牌兼容,支持不同厂商设备互联。

 

1. Matter.framework

 

📌 主要用于:

控制 Matter 设备(如灯泡、门锁、恒温器)。

管理设备状态(订阅设备状态变化,如灯泡亮度)。

发送指令(如开关灯、调整温度)。

本地和远程控制(可以通过 Apple Home 或自定义 App)。

 

📌 适用场景:

开发智能家居 App,用于控制管理 Matter 设备。

智能家居平台集成,支持 Apple HomeKit 和其他 Matter 设备。

 

📌 示例代码(控制灯泡)

查看代码
 import Matter

class MatterDeviceController {
    let deviceController = MTRDeviceController.sharedController

    func turnOnLight(deviceID: UInt64) {
        guard let device = deviceController.device(forNodeID: deviceID) else {
            print("❌ 设备未找到")
            return
        }
        
        let command = MTRBaseClusterOnOff()
        command.on()  // 开灯指令
        
        device.sendCommand(command) { success, error in
            if success {
                print("✅ 灯已打开")
            } else {
                print("❌ 开灯失败: \(String(describing: error?.localizedDescription))")
            }
        }
    }
}

🔹 关键点:

MTRDeviceController.sharedController:用于管理 Matter 设备。

device.sendCommand(command):发送控制指令(如开灯、关门)。

 

2. MatterSupport.framework

 

📌 主要用于:

发现和配对 Matter 设备(设备加入本地网络)。

处理设备的配网和认证(二维码扫描或手动输入)。

添加设备到 HomeKit 或其他智能家居平台

 

📌 适用场景:

初次连接 Matter 设备(类似 Wi-Fi 设备的配网过程)。

配网、身份验证,确保设备能正常连接到本地网络。

 

📌 示例代码(扫描二维码进行配对)

查看代码
 import MatterSupport

class MatterPairingManager {
    let pairingManager = MTPairingManager()

    func pairDevice() {
        let setupPayload = MTSetupPayload(onboardingPayload: "MT:1234567890")  // 示例二维码数据

        pairingManager.pairDevice(with: setupPayload) { result in
            switch result {
            case .success(let pairedDevice):
                print("✅ 设备配对成功: \(pairedDevice)")
            case .failure(let error):
                print("❌ 设备配对失败: \(error.localizedDescription)")
            }
        }
    }
}

🔹 关键点:

MTPairingManager.pairDevice:用于 Matter 设备的配网认证

MTSetupPayload:包含设备的二维码信息(可以是手动输入的代码)。

📌 MatterSupport 负责 “配对 & 发现”,而 Matter 负责 “控制 & 管理”。

 

posted on   youhui  阅读(8)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示