如果你没有智能电器(智能配件),你可以使用HomeKit Accessroy Simulator来模拟home中的智能电器。每个模拟配件都拥有服务和特性,你可以从你的App当中控制它。你的App在HomeKit数据库中创建对象和关系。它可以创建home布局,可以添加新的配件到模拟的home环境当中,最后向home中的每个房间添加智能配件。然后,你的app就能控制这些在HomeKit Accessory Simulator展示的模拟智能配件了。为了使用HomeKit Accessory Simulator,请在iOS模拟器中运行你的应用程序,或者使用Xcode在iOS设备上运行应用程序。
HomeKit Accessory Simulator是一个附加的开发者工具,不过并没有安装在Xcode当中。请按照[Download HomeKit Accessory Simulator](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/EnablingHomeKit/EnablingHomeKit.html#//apple_ref/doc/uid/TP40015050-CH2-SW3)中所述的安装HomeKit Accessory Simulator。
**添加智能电器(配件)**
使用HomeKit Accessory Simulator来添加智能电器到模拟网络中。
向网络中添加智能电器配件,请按照下面的步骤添加:
1. 在HomeKit Accessory Simulator中,点击底部左边‘+’按钮。
2. 从弹出菜单中选择添加智能电器(Add Accessory)
3. 输入智能电器的名字和制造商。
![QQ截图20150326143608.png](https://box.kancloud.cn/2015-08-08_55c5769c171b6.png "1427351791316102.png")
4\. 点击完成
如果想删除一个智能电器,请选择一个智能电器然后点击键盘上的Delete键。
**向智能电器(配件)中添加服务**
一个智能电器需要一项服务和特性,你可以从app控制它。从预定义了服务列表中选择一项服务,并自定义特性。
按照下面步骤向智能电器中添加服务
1. 在HomeKit Accessory Simulator中,选择Accessories列中的某个配件。
该配件的服务信息会展示在一个详情界面中。
![066.png](https://box.kancloud.cn/2015-08-08_55c5769d2d5be.png "1427351843973684.png")
注意:所有智能电器都有一个Accessory Information,显示在所有其他服务的下方。你可以向这个Accessory Information服务添加特性,但你不能删除默认的特性。
2\. 点击添加服务(Add Service),并从弹出视图中选择一个服务类型。
新添加的服务会在右边详细显示。HomeKit Accessory Simulator为每种服务创建通用的特性。比如一个灯光服务的默认特性为色彩(Hue),饱和度(Saturation),亮度(Brightness)和开关。(开关特性和电源状态特性是一样的,正如[ Accessing Values of Characteristics](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/AccessingServicesandTheirCharacteristics/AccessingServicesandTheirCharacteristics.html#//apple_ref/doc/uid/TP40015050-CH6-SW3)中描述的那样。)一些特性是强制性的有一些也是可选择的。比如,开关特性就是强制性的,而色彩,饱和度,亮度这些特性都是可选择的。
![63.png](https://box.kancloud.cn/2015-08-08_55c5769d8f305.png "1427351903471378.png")
**向服务中添加特性**
你可以向服务中添加预定义的特性,或者自定义的特性。每种特性你都只能添加一个。
按照下面的步骤向服务中添加特性:
1. 在HomeKit Accessory Simulator中,服务详情视图,点击添加特性(Add Characteristic)
2. 在特性类型菜单中,选择一个类型或者自定义类型。
3. 在其他文本框中输入此特性的其他信息,并点击完成(Finish).新添加的特性会在详细视图展示出来。
![2015-08-08/55c57c95f4071](https://box.kancloud.cn/2015-08-08_55c57c95f4071.png)
点击特性右边的减号来删除一个特性。如果特性右边并没有减号显示,这说明这个特性对这个服务来说是必须的。比如,你可以删除电灯服务中的色彩(Hue),饱和度(Saturation)和亮度(Brightness),但是你不可以删除开关特性。
**通过你的app向家庭中添加智能电器(配件)**
在你通过HomeKit Accessory Simulator创建了一个智能电器后,运行你的App然后添加一个新的智能电器到你的家庭。
如何配对家庭中的智能电器:
1\. 在Xcode中,点击Run并调用[addAccessory:completionHandler:](https://developer.apple.com/library/ios/documentation/HomeKit/Reference/HMHome_Class/index.html#//apple_ref/occ/instm/HMHome/addAccessory:completionHandler:)方法(如[Adding Accessories to Homes and Rooms](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/WritingtotheHomeKitDatabase/WritingtotheHomeKitDatabase.html#//apple_ref/doc/uid/TP40015050-CH4-SW5)中描述的那样).
2\. 如果弹出了一个Add HomeKit Accessory对话框声明这个智能电器未被信任(这在HomeKit Accessory Simulator中是被允许的),不用管它,点击Add Anyway。
![55.png](https://box.kancloud.cn/2015-08-08_55c577161fbb1.png "1427358025958904.png")
3\. 在接下来显示的Add HomeKit Accessory对话框中,输入智能电器的setup code然后点击Add。
在HomeKit Accessory Simulator,setup code显示在详情界面智能电器名称下。
![65.png](https://box.kancloud.cn/2015-08-08_55c5771a48ac9.png "1427352256850459.png")
关于如何编写代码来添加一个智能电器到家庭和房间请阅读[Creating Homes and Adding Accessoris](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/WritingtotheHomeKitDatabase/WritingtotheHomeKitDatabase.html#//apple_ref/doc/uid/TP40015050-CH4-SW1)。
**控制智能电器(配件)**
在HomeKit Accessory Simulator中,你可以获得智能电器的服务,并在其他HomeKit App中设置服务的特性值来模拟控制这个智能电器,或者手动地模拟控制智能电器。
想要控制一个智能电器你需要:
1. 在HomeKit Accessory Simulator中的智能电器列表(Accessories column)中选择一个智能电器。这个智能电器的服务和特性会被展示在详情界面。
2. 操作一个特性的控件来改变它的值。
比如,为了改变一个灯泡的颜色(Hue),饱和度(Saturation)和亮度(Brightness),请滑动这个滑块。为了打开这个灯泡请选择On选项。
![66.png](https://box.kancloud.cn/2015-08-08_55c5771aa0c01.png "1427352302224481.png")
如果你的app展示了一个服务的特性,比如灯泡的开关状态,当你在HomeKit Accessory Simulator中改变这些特性的值时,它应当更新视图。
为了观察HomeKit数据库的变化,请阅读[Observing HomeKit Database Changes](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/RespondingtoHomeKitDatabaseChanges/RespondingtoHomeKitDatabaseChanges.html#//apple_ref/doc/uid/TP40015050-CH5-SW2)。如果你想从app中通过编写代码来控制一个智能电器,请阅读[Accessing Services and Characteristics](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/AccessingServicesandTheirCharacteristics/AccessingServicesandTheirCharacteristics.html#//apple_ref/doc/uid/TP40015050-CH6-SW1)。
**添加桥接口**
为了模拟那些不支持HomeKit Accessory Protocol协议的智能电器,需要添加一个虚拟桥接口,然后将智能电器添加到这个虚拟桥接口。配置虚拟桥接口底层的智能电器和配置其他类型的智能电器差不多。
添加一个虚拟桥接口到网络
添加一个代表这个虚拟桥接口的智能电器。
为了添加一个虚拟桥接口到网络你需要:
1. 在HomeKit Accessory Simulator中,点击智能电器列表底部的“+”按钮。
2. 在弹出框中选择Add 虚拟桥接口。
3. 输入一个智能电器的名称和制造商。
![67.png](https://box.kancloud.cn/2015-08-08_55c5771b10953.png "1427352409557394.png")
4. 点击完成
向虚拟桥接口添加智能电器配件
可向一个虚拟桥接口添加一个或多个智能电器。
为了向一个虚拟桥接口添加一个智能电器,需要:
1. 在HomeKit Accessory Simulator左边的列表中,选择虚拟桥接口中的一个虚拟桥接口。
2. 在详情页面选择Add Accessory。
3. 输入一个智能电器名字和制造商。
4. 点击完成。
想要了解虚拟桥接口中的智能电器的详细信息,请选择虚拟桥接口部分中的智能电器。如果需要的话你可以点击虚拟桥接口旁边的查看详情来查看这个虚拟桥接口的智能电器。在你添加了一个服务和特性到这些智能电器之后,如[Adding Services to Accessories](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/TestingYourHomeKitApp/TestingYourHomeKitApp.html#//apple_ref/doc/uid/TP40015050-CH7-SW3)和[Adding Characteristics to Services](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/TestingYourHomeKitApp/TestingYourHomeKitApp.html#//apple_ref/doc/uid/TP40015050-CH7-SW9)中描述。它们会在这个虚拟桥接口被选择之后被展示出来。
![68.png](https://box.kancloud.cn/2015-08-08_55c57723d9119.png "1427352657682526.png")
**在你的App中添加虚拟桥接口到home**
将虚拟桥接口和home匹配的过程和将一个智能电器配置到一个home的过程是一样的,如[Adding Accessories to a Home in Your App](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/TestingYourHomeKitApp/TestingYourHomeKitApp.html#//apple_ref/doc/uid/TP40015050-CH7-SW4)描述的。在虚拟桥接口底层的智能电器配件也一样被加入到了home,如 [Adding Bridges to Homes and Rooms](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/WritingtotheHomeKitDatabase/WritingtotheHomeKitDatabase.html#//apple_ref/doc/uid/TP40015050-CH4-SW9)所描述。
**控制虚拟桥接口底层的智能电器**
如何控制虚拟桥接口底层的智能电器和直接控制智能电器的步骤一致,如[Controlling Accessories in HomeKit Accessory Simulator](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/TestingYourHomeKitApp/TestingYourHomeKitApp.html#//apple_ref/doc/uid/TP40015050-CH7-SW5)中描述,除了你直接选择虚拟桥接口下的智能电器之外。
**在多设备和多用户环境中测试**
在iOS模拟器中你不能测试分享HomeKit数据库到多个iOS设备和用户。你应该安装你的App到多台iOS设备上,在这些设备中输入iCloud证书,然后运行你的App。或者,使用ad hoc授权来在多台注册设备中测试你的app,如[Distributing Your App Using Ad Hoc Provisioning in App Distribution Guide](https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/TestingYouriOSApp/TestingYouriOSApp.html#//apple_ref/doc/uid/TP40012582-CH8-SW4)描述。
1. 为了测试单用户多设备环境,你应该使用同一个iCloud账户在多台设备登陆。
2. 为了测试多用户使用同一家庭的智能电器,你应该在多台设备使用不同的iCloud账户登陆。
你的App应该应该可以允许一个用户邀请客人到你的家中,如[Managing Users](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/HomeKitDeveloperGuide/ManagingUsers/ManagingUsers.html#//apple_ref/doc/uid/TP40015050-CH9-SW1)所述。