iOS智能家居HomeKit学习,附完整代码

    HomeKit在iOS11前是不被我了解的,当iOS11出来以后这个名词就火了,然后就来学一波。首先我们需要知道HomeKit就是苹果的智能家居管家,借助HomeKit,用户可以使用iOS设备控制家里所有标有“Works with Apple HomeKit”(兼容 Apple HomeKit)的配件。这些配件包括灯、锁、恒温器、智能插头及其他配件。其他不重要了!!!!




一:启用HomeKit

1.你的App必须有签名验证,既在开发者平台配置AppID

2.启用HomeKit在项目中,在Xcode中

1).选择View > Navigators > Show Project Navigator。

2).从Project/Targets弹出菜单中target(或者从Project/Targets的侧边栏)

3).点击Capabilities查看你可以添加的应用服务列表。

4).滑到HomeKit 所在的行并打开关。

当没有报错说明你的配置没有问题

3.一般情况下你的学习是没有智能硬件设备支持的,你可以在官网上下载模拟器


运行:


这样基本配置就搞定了

二:了解一些基本概念

1).home(HMHome)

home代表的是一个智能设备的住所,用户拥有Home的数据并通过自己的任何一台iOS设备访问,用户也可以和客户共享一个Home,但是客户的权限会有更多限制。在用户的所有home中,会有一个常用的home,即为primary home。被指定为primary home的home默认是Siri指令的对象,并且不能指定home,就是说primary home是只读的不能去设定。

2).room(HMRoom)

每个Home一般有多个room,并且每个room一般会有多个智能配件。在home中,每个房间是独立的room,并具有一个有意义的名字,这个名字是唯一的。(home的名字也是唯一的)例如“卧室”或者“厨房”,这些名字可以在Siri 命令中使用。

3).accessory(HMAccessory)

一个accessory代表一个家庭中的自动化设备,一个accessory的设备组成在于一个家庭,然后再指定到不同的room中,例如一个智能插座,一个智能灯具是是属于一个家庭,但是灯具可能被指定在厨房,而插座指定在卧室等。

4).sevice(HMSevice)

一个sevice是accessory提供的一个实际服务,例如打开或者关闭灯泡,这里和蓝牙开发中的服务的意义基本是一样的。每个sevice中也会有多个特征(characteristic),同蓝牙,可以查看博主的蓝牙博客:www.jianshu.com/p/0e7294a87a94

三:逻辑和代码的构成

1.使用模拟器创建一个智能设备

1)创建设备


2)创建设备的服务并是指定随机特征


2.家庭组成的创建

1)家庭的创建,是依靠家庭管理类:HMHomeManager

func initHomeManager() {

self.homeManager = HMHomeManager.init()

self.homeManager.delegate = self

}

func addHome(homeName: String) {

self.homeManager.addHome(withName: homeName) { (home, error) in

}}

2)当创建成功后,可以获取家庭的列表:

self.homeArr = self.homeManagerTool.homeManager.homes

3)当得到家庭列表后选择我创建的家庭,然后可以为家庭创建房间room

self.currentHoom.addRoom(withName: roomNewName!, completionHandler: { (hoom, error) in

if error == nil{

self.getRoomArr(home: self.currentHoom)

}

})

4)当创建房间后,可以获取指点home的所有房间

self.roomArr = home.rooms

效果图:

3.房间里面的智能设备和设备操作

进入房间后我们可以得到Accessory即智能设备,智能设备是不能被用户创建的而是需要HMAccessoryBrowser去获取的

1).创建HMAccessoryBrowser

self.arressBrowser = HMAccessoryBrowser.init()

self.arressBrowser.delegate = self

2)当创建完毕后我们需要开启搜索未必添加的智能设备

self.arressBrowser.startSearchingForNewAccessories()

3)我们可以在协议中得到找到的智能设备

func accessoryBrowser(_ browser: HMAccessoryBrowser, didFindNewAccessory accessory: HMAccessory) {

self.accessoryArr.append(accessory)

self.myTableView.reloadData()

}

4)当找到智能设备后,我们可以把该智能设备添加到我们的房间,并指定我们的当前房间

self.myHome.addAccessory(accessoryName) { (error) in

if error == nil{

if accessoryName.room != self.myRoom{

self.myHome.assignAccessory(accessoryName, to: self.myRoom, completionHandler: { (error1) in

if error1 == nil{

print("已经将设备添加到了房间")

}else{

print("指定的设备添加失败")

}

})

}else{

print("该设备已经存在于房间")

}

}else{

print("添加设备到家失败")

}}

5)指定到房间后我们可以获取我们当前房间的所有智能设备

for accessory in self.myRoom.accessories {

self.myAccessoryArr.append(accessory)

}

6)选中我们已经添加到该房间的设备我们可以设置他的服务(此时和蓝牙类似有服务和特征的说法)

当特征是只读的,就是接受外设的通知的

当特征是只写的,就是我们操作外设的

太长截图:


7)特征发生改变的监听

func accessory(_ accessory: HMAccessory, didUpdateAssociatedServiceTypeFor service: HMService) {

print("特征发生了改变")

}

当我们操作硬件的时候,如果硬件的特征值改变的话。系统会自动调用这个方法,我们就可以看到特征值改变的情况,那么我们拿到这个特征值之后,可以去做相应的操作。

接下来就是大家最想看到的git地址:github.com/969661780/HomeKit.git

在这里2天的HomeKit就到此结束了,博主也是网上查了许多零碎的资料进行的学习,可能HomeKit目前为止用的的确不多,欢迎大家一起讨论,希望人工智能普及的一天,喜欢博主记得Mark哟!!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容