Homekit 的 HMCharacteristicTypeBrightness 未获取当前值

问题描述

我尝试使用以下代码获取当前亮度值。

它收集旧值。

如果我在本机 Home 应用程序中更改灯光的亮度(存储在 lightData[0] 中的相同灯光)并返回到我的应用程序并调用以下函数,它会显示正确的值。

我找不到显示当前灯光亮度值的方法

readValue 假设直接从配件中获取价值,而不是从 iPhone 中的缓冲区。

func getThem() {
        
        lightData[0].characteristic.readValue(completionHandler: {(error) in

            if error != nil {

                print(error!.localizedDescription)

            } else  {

                let type =  self.lightData[0].characteristic.value

                guard let value = (type as? NSNumber)?.intValue

                else {

                    return
                }

                print("values = \(value)")
             
            }       
            
        })
    } 

附注: (我在这里只展示了 lightData[0] 以使代码更具可读性,应用程序收集并存储所有灯光 应用启动时 func homeManagerDidUpdateHomes(_ manager: HMHomeManager) {} 处的 lightData 结构数组中的数据)

解决方法

我“发现”如果灯泡的电源状态为 0,您将无法读取或写入亮度级别。

为了解决这个问题,我读取了电源状态,如果它是 0,我首先将其更改为 1,然后更改亮度级别。

当电源状态为 0 时读取亮度级别只是为了在屏幕上显示 我刚刚在我的指示系统中将其设为 0。

很遗憾我无法在文档中阅读此内容。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...