HomeKit: привязка имен SIRI к пользовательским характеристикам
Я хотел бы связать имя SIRI с характеристиками CUSTOM аксессуара для домашнего комплекта, который я определил с помощью симулятора HomeKit (см. Этот вопрос для получения подробной информации о том, как я это сделал).
Я был бы в состоянии сделать что-то вроде:
- "Установите для CHARACTERISTICONENAME значение VALUE в HOME"
- "Включите ACCESSORYNAME в HOME"
- "Установите для CHARACTERISTICTWONAME значение VOME в HOME"
Это легко возможно, используя предопределенные характеристики, однако я должен быть в состоянии сделать это с пользовательскими характеристиками.
Есть идеи, как мне этого добиться?
РЕДАКТИРОВАТЬ: только класс HMService имеет функцию "updateName". HMCharacteristic не имеет его.
Вот что я получу, если попытаюсь получить доступ к названию сервиса и описанию производителя соответствующей характеристики:
for (int i=0; i< [accessory.services count]; i++) {
HMService * service = [accessory.services objectAtIndex:i];
for (int j=0; j< [service.characteristics count]; j++) {
HMCharacteristic * characteristic = [service.characteristics objectAtIndex:j];
NSLog(@"service name: %@", service.name);
if ([characteristic.properties containsObject:HMCharacteristicPropertySupportsEventNotification]) {
NSLog(@"description of characteristic: %@", characteristic.metadata);
[characteristic enableNotification:TRUE completionHandler:^(NSError *error) {
if (error) {
NSLog(@"Error while enabling notification");
}
else {
NSLog(@"Notification enabled");
}
}];
}
}
}
имя службы: MyServiceName service 2015-08-21 09:40:20.833 AppName[217:5673] описание характеристики: [%@ Формат: строка, максимальная длина: 1, описание производителя: SomethingCustom Mode ]
1 ответ
Я подозреваю, что это невозможно. Siri имеет жестко запрограммированные отношения с homekit, что позволяет ему общаться с определенными типами аксессуаров.
Следует отметить, что siri использует имя службы, чтобы выяснить, куда направлять команды. Поэтому, если у вас есть термостат, который называется "наверху", вы можете сказать siri "установить температуру наверху на 65 градусов". Интерпретация Siri вашего взаимодействия со службами сложна, и похоже, что Apple поддерживает только определенные ими службы, чтобы они могли предоставлять необходимый опыт.