0

HomeKit Simulator を使用して定義したホーム キット アクセサリのCUSTOM 特性に SIRI 名を関連付けたいと思います (方法の詳細については、この質問を参照してください)。

私は次のようなことができるでしょう:

  • 「HOME で CHARACTERISTICONENAME を VALUE に設定」
  • 「HOME で ACCESSORYNAME をオンにして」
  • 「HOMEでCHARACTERISTICTWONAMEをVALUEに設定」

これは、定義済みの特性を使用して簡単に可能ですが、カスタム特性を使用できるようにする必要があります。

どうすればこれを達成できますか?


編集: 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 サービス 2015-08-21 09:40:20.833 AppName[217:5673] 特性の説明: [%@ 形式: 文字列、最大長: 1、メーカーの説明: サムシングカスタム モード]

4

1 に答える 1

1

ありえないと思います。Siri は、定義されたタイプのアクセサリと通信できるように、ホームキットとハードコーディングされた関係を持っています。

1 つの注意点として、siri はサービス名を使用して、コマンドを送信する場所を特定します。したがって、「2 階」と呼ばれるサーモスタットがある場合は、siri に「2 階の温度を 65 度に設定して」と伝えることができます。Siri のサービスとの対話の解釈は複雑であり、Apple は定義されたサービスのみをサポートしているように見えるため、必要なエクスペリエンスを提供できます。

于 2015-08-25T16:56:59.647 に答える