使用homekit设置颜色的特性

时间:2015-04-02 13:22:23

标签: ios homekit

我正在使用https://github.com/etwmc/Personal-HomeKit-HAP-来模拟兼容家庭套件的设备。 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;

1 个答案:

答案 0 :(得分:2)

Homekit数据库是共享的,它可以被所有支持homekit的应用程序安装在设备和 Siri 中访问,但是siri只能理解你给Home,附件,触发器,场景和服务和其他homekit对象的特征。

现在,如果你想改变任何配件(Light)的颜色,最可能的是它会有饱和度亮度 Hue 特征。 这3个特征的组合将创造一种颜色。

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

像 Siri,将大厅的台灯Hue设置为220(Hue可以是0到360)

这里大厅是房间的名称(你可以自己更改), 台灯是附件的名称 Hue 台灯轻型服务的特点。

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