iOS智能家居HomeKit學(xué)習(xí)拘荡,附完整代碼

? ? HomeKit在iOS11前是不被我了解的,當(dāng)iOS11出來以后這個(gè)名詞就火了撬陵,然后就來學(xué)一波珊皿。首先我們需要知道HomeKit就是蘋果的智能家居管家网缝,借助HomeKit,用戶可以使用iOS設(shè)備控制家里所有標(biāo)有“Works with Apple HomeKit”(兼容 Apple HomeKit)的配件蟋定。這些配件包括燈粉臊、鎖、恒溫器驶兜、智能插頭及其他配件维费。其他不重要了!4偻酢O恕耳璧!




一:啟用HomeKit

1.你的App必須有簽名驗(yàn)證壁拉,既在開發(fā)者平臺(tái)配置AppID

2.啟用HomeKit在項(xiàng)目中凌简,在Xcode中

1).選擇View > Navigators > Show Project Navigator躏筏。

2).從Project/Targets彈出菜單中target(或者從Project/Targets的側(cè)邊欄)

3).點(diǎn)擊Capabilities查看你可以添加的應(yīng)用服務(wù)列表合蔽。

4).滑到HomeKit 所在的行并打開關(guān)税娜。

當(dāng)沒有報(bào)錯(cuò)說明你的配置沒有問題

3.一般情況下你的學(xué)習(xí)是沒有智能硬件設(shè)備支持的魄藕,你可以在官網(wǎng)上下載模擬器


運(yùn)行:


這樣基本配置就搞定了

二:了解一些基本概念

1).home(HMHome)

home代表的是一個(gè)智能設(shè)備的住所日麸,用戶擁有Home的數(shù)據(jù)并通過自己的任何一臺(tái)iOS設(shè)備訪問颤专,用戶也可以和客戶共享一個(gè)Home纽哥,但是客戶的權(quán)限會(huì)有更多限制。在用戶的所有home中栖秕,會(huì)有一個(gè)常用的home春塌,即為primary home。被指定為primary home的home默認(rèn)是Siri指令的對(duì)象簇捍,并且不能指定home只壳,就是說primary home是只讀的不能去設(shè)定。

2).room(HMRoom)

每個(gè)Home一般有多個(gè)room暑塑,并且每個(gè)room一般會(huì)有多個(gè)智能配件吼句。在home中,每個(gè)房間是獨(dú)立的room事格,并具有一個(gè)有意義的名字惕艳,這個(gè)名字是唯一的。(home的名字也是唯一的)例如“臥室”或者“廚房”驹愚,這些名字可以在Siri 命令中使用远搪。

3).accessory(HMAccessory)

一個(gè)accessory代表一個(gè)家庭中的自動(dòng)化設(shè)備,一個(gè)accessory的設(shè)備組成在于一個(gè)家庭么鹤,然后再指定到不同的room中终娃,例如一個(gè)智能插座,一個(gè)智能燈具是是屬于一個(gè)家庭,但是燈具可能被指定在廚房棠耕,而插座指定在臥室等余佛。

4).sevice(HMSevice)

一個(gè)sevice是accessory提供的一個(gè)實(shí)際服務(wù),例如打開或者關(guān)閉燈泡窍荧,這里和藍(lán)牙開發(fā)中的服務(wù)的意義基本是一樣的辉巡。每個(gè)sevice中也會(huì)有多個(gè)特征(characteristic),同藍(lán)牙蕊退,可以查看博主的藍(lán)牙博客:www.reibang.com/p/0e7294a87a94

三:邏輯和代碼的構(gòu)成

1.使用模擬器創(chuàng)建一個(gè)智能設(shè)備

1)創(chuàng)建設(shè)備


2)創(chuàng)建設(shè)備的服務(wù)并是指定隨機(jī)特征


2.家庭組成的創(chuàng)建

1)家庭的創(chuàng)建郊楣,是依靠家庭管理類:HMHomeManager

func initHomeManager() {

self.homeManager = HMHomeManager.init()

self.homeManager.delegate = self

}

func addHome(homeName: String) {

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

}}

2)當(dāng)創(chuàng)建成功后,可以獲取家庭的列表:

self.homeArr = self.homeManagerTool.homeManager.homes

3)當(dāng)?shù)玫郊彝チ斜砗筮x擇我創(chuàng)建的家庭瓤荔,然后可以為家庭創(chuàng)建房間room

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

if error == nil{

self.getRoomArr(home: self.currentHoom)

}

})

4)當(dāng)創(chuàng)建房間后净蚤,可以獲取指點(diǎn)home的所有房間

self.roomArr = home.rooms

效果圖:

3.房間里面的智能設(shè)備和設(shè)備操作

進(jìn)入房間后我們可以得到Accessory即智能設(shè)備,智能設(shè)備是不能被用戶創(chuàng)建的而是需要HMAccessoryBrowser去獲取的

1).創(chuàng)建HMAccessoryBrowser

self.arressBrowser = HMAccessoryBrowser.init()

self.arressBrowser.delegate = self

2)當(dāng)創(chuàng)建完畢后我們需要開啟搜索未必添加的智能設(shè)備

self.arressBrowser.startSearchingForNewAccessories()

3)我們可以在協(xié)議中得到找到的智能設(shè)備

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

self.accessoryArr.append(accessory)

self.myTableView.reloadData()

}

4)當(dāng)找到智能設(shè)備后输硝,我們可以把該智能設(shè)備添加到我們的房間今瀑,并指定我們的當(dāng)前房間

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("已經(jīng)將設(shè)備添加到了房間")

}else{

print("指定的設(shè)備添加失敗")

}

})

}else{

print("該設(shè)備已經(jīng)存在于房間")

}

}else{

print("添加設(shè)備到家失敗")

}}

5)指定到房間后我們可以獲取我們當(dāng)前房間的所有智能設(shè)備

for accessory in self.myRoom.accessories {

self.myAccessoryArr.append(accessory)

}

6)選中我們已經(jīng)添加到該房間的設(shè)備我們可以設(shè)置他的服務(wù)(此時(shí)和藍(lán)牙類似有服務(wù)和特征的說法)

當(dāng)特征是只讀的,就是接受外設(shè)的通知的

當(dāng)特征是只寫的点把,就是我們操作外設(shè)的

太長截圖:


7)特征發(fā)生改變的監(jiān)聽

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

print("特征發(fā)生了改變")

}

當(dāng)我們操作硬件的時(shí)候橘荠,如果硬件的特征值改變的話。系統(tǒng)會(huì)自動(dòng)調(diào)用這個(gè)方法郎逃,我們就可以看到特征值改變的情況哥童,那么我們拿到這個(gè)特征值之后,可以去做相應(yīng)的操作褒翰。

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

在這里2天的HomeKit就到此結(jié)束了贮懈,博主也是網(wǎng)上查了許多零碎的資料進(jìn)行的學(xué)習(xí),可能HomeKit目前為止用的的確不多影暴,歡迎大家一起討論错邦,希望人工智能普及的一天,喜歡博主記得Mark喲P椭妗!B追汀W倍摇!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末毛仪,一起剝皮案震驚了整個(gè)濱河市搁嗓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌箱靴,老刑警劉巖腺逛,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異衡怀,居然都是意外死亡棍矛,警方通過查閱死者的電腦和手機(jī)安疗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來够委,“玉大人荐类,你說我怎么就攤上這事∽旅保” “怎么了玉罐?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長潘拨。 經(jīng)常有香客問我吊输,道長,這世上最難降的妖魔是什么铁追? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任季蚂,我火速辦了婚禮,結(jié)果婚禮上脂信,老公的妹妹穿的比我還像新娘癣蟋。我一直安慰自己,他們只是感情好狰闪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布疯搅。 她就那樣靜靜地躺著,像睡著了一般埋泵。 火紅的嫁衣襯著肌膚如雪幔欧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天丽声,我揣著相機(jī)與錄音礁蔗,去河邊找鬼。 笑死雁社,一個(gè)胖子當(dāng)著我的面吹牛浴井,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播霉撵,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼磺浙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了徒坡?” 一聲冷哼從身側(cè)響起撕氧,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喇完,沒想到半個(gè)月后伦泥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年不脯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了府怯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡跨新,死狀恐怖富腊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情域帐,我是刑警寧澤赘被,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站肖揣,受9級(jí)特大地震影響民假,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜龙优,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一羊异、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彤断,春花似錦野舶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至供炼,卻和暖如春一屋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背袋哼。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工冀墨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涛贯。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓诽嘉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弟翘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子含懊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容