[置顶] iOS CoreBluetooth 框架

摘要: 1. 发现 心率服务(0x180D)和 电池服务(0x180F)。 2. 读取 电池电量特征值(0x2A19)。 3.读取和监听 心率数据特征值(0x2A37),让设备主动通知 App 心率变化。 1. 扫描 BLE 设备,只搜索支持 心率服务 (0x180D) 的设备。 2. 连接设备 后,发现 阅读全文
posted @ 2025-02-14 16:24 youhui 阅读(11) 评论(0) 推荐(0) 编辑

[置顶] 【鸿蒙/Harmony】 ArkUI

摘要: 课程 https://developer.huawei.com/consumer/cn/training/result?courseType=5&orderBy=1&type1List=101718934267126043 【鸿蒙/Harmony】ArkTS语言简介 https://www.arku 阅读全文
posted @ 2024-12-12 20:50 youhui 阅读(24) 评论(0) 推荐(0) 编辑

[置顶] RxSwift + Moya + ObjectMapper

摘要: https://www.jianshu.com/p/173915b943af use_frameworks! target 'RXDemo' do pod 'RxSwift' pod 'RxCocoa' pod 'Moya-ObjectMapper/RxSwift' pod 'Moya/RxSwif 阅读全文
posted @ 2019-01-14 23:08 youhui 阅读(1475) 评论(0) 推荐(0) 编辑

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 @ 2025-02-14 16:46 youhui 阅读(8) 评论(0) 推荐(0) 编辑

react native 安装及初始化工程

摘要: 1、npx 安装太慢解决办法 https://blog.csdn.net/m0_46423830/article/details/140628277 npm config set registry https://registry.npmmirror.com 2、搭建环境 https://react 阅读全文
posted @ 2024-10-16 10:20 youhui 阅读(164) 评论(0) 推荐(0) 编辑

Swift 与 OC 如何相互调用

摘要: Swift 与 OC 如何相互调用 Swift -> OC 需要创建一个 Target-BriBridging-Header.h (默认在OC项目中,会提示自动创建)的桥文件,在该文件中,导入需要调用的OC代码的头文件即可 OC -> Swift 直接导入Target-Swift.h(该文件是Xco 阅读全文
posted @ 2024-09-10 20:23 youhui 阅读(138) 评论(0) 推荐(0) 编辑

Mac系统 .zprofile、.zshrc 和 .bash_profile 区别及作用

摘要: 在 macOS 中,.zprofile、.zshrc 和 .bash_profile 是三个重要的配置文件,分别用于不同的 shell 和场景。下面详细介绍它们的作用和区别: 1. .zprofile 作用: .zprofile 主要用于 Zsh shell 的全局配置。 它在每次用户登录时都会被读 阅读全文
posted @ 2024-09-08 15:31 youhui 阅读(3982) 评论(0) 推荐(0) 编辑

部署ASP.NET Core程序到Linux系统

摘要: https://www.cnblogs.com/ants/p/5732337.html https://www.jb51.net/article/241514.htm https://www.cnblogs.com/wyy1234/p/10542815.html 一、前言 这篇文章我们将讲解如何将a 阅读全文
posted @ 2023-04-20 17:55 youhui 阅读(189) 评论(0) 推荐(0) 编辑

golang打包和部署到centos

摘要: 项目在golang开发好,打包上传到linux服务器运行,两步: 1、打包; 在控制台项目于目录下,执行下列命令 set GOOS=linux set GOARCH=amd64 go build -o "packageName" 如下图所示: 会生成一个没有后缀的二进制文件main 2、生成main 阅读全文
posted @ 2023-04-18 10:36 youhui 阅读(399) 评论(0) 推荐(0) 编辑

mysqldump 命令导出数据,解决中文乱码问题

摘要: https://www.cnblogs.com/LoveBB/p/16941639.html mysqldump -uroot -ppassword --add-drop-table --default-character-set=utf8 --hex-blob dbname --result-fi 阅读全文
posted @ 2023-04-07 18:31 youhui 阅读(44) 评论(0) 推荐(0) 编辑

MySQL新身份验证插件caching_sha2_password

摘要: 用sequel pro 工具登录,连接失败~!“Authentication plugin 'caching_sha2_password' cannot be loaded” 失败原因: mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是 阅读全文
posted @ 2023-04-07 17:34 youhui 阅读(209) 评论(0) 推荐(0) 编辑

SQL 在线教程&在线练习平台

摘要: https://www.liaoxuefeng.com/wiki/1177760294764384 阅读全文
posted @ 2020-03-21 09:48 youhui 阅读(751) 评论(0) 推荐(0) 编辑

flutter 从入门到精通

摘要: https://juejin.im/post/5d8d5a105188256ec311fa99 阅读全文
posted @ 2019-11-07 09:58 youhui 阅读(71) 评论(0) 推荐(0) 编辑

DotNetCore知识栈

摘要: #、.NET Core提供的特性 1.开源、免费 2.轻量级、跨平台 3.组件化、模块化、IOC+Nuget、中间件 4.高性能 5.统一了MVC和WebAPI编程模型 a) 比如:ASP.NET Core 中MVC 和Web API 直接或间接继承同一个基类 ControllerBase,提供可使 阅读全文
posted @ 2019-04-02 10:49 youhui 阅读(853) 评论(0) 推荐(1) 编辑

Building gRPC Client iOS Swift Note Taking App

摘要: gRPC is an universal remote procedure call framework developed by Google that has been gaining interests among many software developers that were deve 阅读全文
posted @ 2019-02-17 22:52 youhui 阅读(617) 评论(0) 推荐(0) 编辑

iOS-InterviewQuestion-collection

摘要: 推荐书目 1.《Effective Objective-C 2.0》 2.《Objective-C 高级编程》 3.《程序员的自我修养》 4.《图解HTTP》 5.《高性能iOS应用开发》 6.《算法图解》 7.《剑指Offer》 数据结构及算法 数据结构 1.数组 - 链接 2.字典 - 链接 3 阅读全文
posted @ 2019-01-17 23:18 youhui 阅读(428) 评论(0) 推荐(0) 编辑

React Native

摘要: https://www.cnblogs.com/powertoolsteam/p/react-native-tutorials1.html import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Flat 阅读全文
posted @ 2018-06-04 17:12 youhui 阅读(259) 评论(0) 推荐(0) 编辑

Node.js 教程

摘要: http://www.runoob.com/nodejs/nodejs-tutorial.html http://blog.csdn.net/liyuechun520/article/details/75165351 http://nqdeng.github.io/7-days-nodejs/ ht 阅读全文
posted @ 2018-02-03 11:32 youhui 阅读(313) 评论(0) 推荐(0) 编辑
< 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

统计

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