0

我正在使用https://github.com/etwmc/Personal-HomeKit-HAP-来模拟与 homekit 兼容的设备。Siri 不会接受颜色命令,例如“将我的灯更改为蓝色”,以“您的灯没有响应”作为响应,而显然没有请求。我假设是因为我的特征不符合 siri 的期望,但哪些是正确的?

printf("Initial Accessory\n");
accSet = &AccessorySet::getInstance();
Accessory *lightAcc = new Accessory();
addInfoServiceToAccessory(lightAcc, "Light 1", "ET", "Light", "12345678", &lightIdentify);
accSet->addAccessory(lightAcc);

Service *lightService = new Service(charType_lightBulb);
lightAcc->addService(lightService);

stringCharacteristics *lightServiceName = new stringCharacteristics(charType_serviceName, premission_read, 0);
lightServiceName->setValue("Light");
lightAcc->addCharacteristics(lightService, lightServiceName);

boolCharacteristics *powerState = new boolCharacteristics(charType_on, premission_read|premission_write|premission_notify);
powerState->setValue("true");
powerState->valueChangeFunctionCall = &changeLightState;
lightAcc->addCharacteristics(lightService, powerState);

intCharacteristics *brightnessState = new intCharacteristics(charType_brightness, premission_read|premission_write|premission_notify, 0, 100, 1, unit_percentage);
brightnessState->setValue("50");
brightnessState->valueChangeFunctionCall = &changeLightIntensity;
lightAcc->addCharacteristics(lightService, brightnessState);

intCharacteristics *saturationState= new intCharacteristics(charType_saturation, premission_read|premission_write|premission_notify, 0, 100, 1, unit_percentage);
saturationState->setValue("100");
saturationState->valueChangeFunctionCall = &changeLightSat;
lightAcc->addCharacteristics(lightService, saturationState);

intCharacteristics *hueState= new intCharacteristics(charType_hue, premission_read|premission_write|premission_notify, 0, 360, 1, unit_arcDegree);
hueState->setValue("0");
hueState->valueChangeFunctionCall = &changeLightColor;
4

1 回答 1

2

Homekit 数据库是共享的,所有安装在设备中的支持 homekit 的应用程序以及Siri都可以访问它,但 siri 只能理解您为 Home、附件、触发器、场景以及服务和其他 homekit 对象的特性赋予的名称。

现在,如果您想更改任何配件(灯光)的颜色,很可能它会具有饱和度亮度色调特性。这 3 个特性的组合将创建一个颜色。

所以你可以告诉siri改变饱和度、亮度和色相,

和Siri一样,将正厅台灯Hue设置为220(Hue可以是0到360)

这里Main Hall是房间名称(您可以自己更改), 台灯是配件名称 Hue台灯照明服务的特点。

220是特征值 色调是实际的颜色或阴影。

于 2015-04-03T05:22:41.340 回答