Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
What's new in HomeKitとNode-REDでカンタンHomeKitデバイスを...
Search
Shingo Tamaki
July 09, 2017
1
2k
What's new in HomeKitとNode-REDでカンタンHomeKitデバイスをDIY!
WWDC2017のアップデートとNode-REDを使った簡単なプロトタイプについて
Shingo Tamaki
July 09, 2017
Tweet
Share
More Decks by Shingo Tamaki
See All by Shingo Tamaki
Use Gemini CLI from Claude Code as part of Sub Agent
tamaki
0
250
Let's make an Immersive Video with APMP
tamaki
0
38
Firebase Studioで始めるモバイルアプリ開発入門
tamaki
0
30
Introduction to Claude Code Action
tamaki
0
740
AIエージェントを使ったiOSアプリ開発を試してみた
tamaki
0
160
沖縄モバイルアプリ開発勉強会#1
tamaki
0
130
iOSアプリ開発を始めよう
tamaki
0
220
詳解xcresult.pdf
tamaki
0
410
メルペイでのリグレッションテスト自動化推進のこれまでとこれから
tamaki
0
800
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
140
How to make the Groovebox
asonas
2
1.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
37
Context Engineering - Making Every Token Count
addyosmani
9
590
Believing is Seeing
oripsolob
0
19
Heart Work Chapter 1 - Part 1
lfama
PRO
4
35k
What's in a price? How to price your products and services
michaelherold
246
13k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
48
Transcript
What's new in HomeKit
ࣗݾհ
ࣗݾհ ۄ৴ޛ iOS Engineer! ͖ͳframeworkHomeKitͰ͢ झຯ" ిࢠ࡞⚡ ےτϨ$ ΨδΣοτ%
HomeKitͱʁ
HomeKitͱʁ HomeKitɺAppleͷHomeKit Accessory ProtocolʹରԠͨ͠ ϗʔϜΦʔτϝʔγϣϯػثͱ௨৴͠ɺ͜ΕΛ੍ޚ͢ΔͨΊͷ ϑϨʔϜϫʔΫͰ͢ɻ
HomeKitͷػೳ • ϗʔϜ/ϧʔϜཧ • ΞΫηαϦཧɾૢ࡞ • Ϣʔβཧ • γʔϯ •
τϦΨ • DBڞ༗
ϗʔϜͷϨΠΞτ HomeKitͰHome/Room/Accessory/ServiceʹΑͬͯߏ͞Ε ͍ͯ·͢ɻ
γʔϯ
γʔϯ γʔϯͱଟͷΞΫηαϦૢ࡞ΛҰׅͰߦ͏ҝͷఆٛͰ͢ɻ ʮ͓Α͏ʯʮ͍ͨͩ·ʯͳͲͷৗγʔϯΛΠϝʔδͯ͠ Β͑Εྑ͍ͱࢥ͍·͢ɻ
τϦΨ
τϦΨ HomeKitʹಛఆͷૢ࡞ΛΦʔτϝʔγϣϯԽ͢ΔͨΊͷτϦ Ψ͕༻ҙ͞Ε͍ͯ·͢ɻ • Ґஔใ • ࣌ࠁ • ΞΫηαϦͷঢ়ଶมԽ
Φʔτϝʔγϣϯ
Φʔτϝʔγϣϯ γʔϯͱτϦΨͷΈ߹ΘͤʹΑͬͯΞΫηαϦͷૢ࡞Λࣗಈ Խ͢Δࣄ͕Ͱ͖·͢ɻ
HomeApp ϗʔϜ/ϧʔϜͷΞΫηαϦཧͷૢ࡞iOS10Ͱొͨ͠ HomeΞϓϦͰ؆୯ʹߦ͏ࣄ͕Ͱ͖·͢ɻ ※ HomeKit frameworkΛͬͨαʔυύʔςΟΞϓϦͰߦ͑ ·͢ɻ
DBڞ༗
DBڞ༗ HomeKitͦͷใΛϗʔϜ͝ͱʹDBͱ͓ͯ࣋ͬͯ͠Γɺ ͕iCloudܦ༝ͰผʹDBΛڞ༗ɾมߋࢹΛߦͳ͍ͬͯ· ͢ɻ
͜͜·Ͱ͕͜Ε·ͰͷHomeKitͷ
࠷ۙͷΞοϓσʔτ
Home Pod
Home Pod Amazon EchoGoogle HomeͷΑ͏ͳεϚʔτεϐʔΧ SiriʹΑΔԻૢ࡞ͪΖΜHomeKitʹରԠ
New Accessories
New Accessories εϓϦϯΫϥʔͱऄޱ͕Ճ͞Ε·ͨ͠ɻ
Dates and Times ͜Ε·Ͱͷͷೖ/ͷग़/࣌ࠁ/༵ͷࢦఆ͚ͩͰͳ͘ɺ݄ ͷࢦఆ͕αϙʔτ͞Ε·͢ɻ
Threshold ݻఆ͚ͩͰͳ͘࠷େ/࠷খ/ൣғࢦఆͰΠϕϯτΛτϦΨ͞ ͤΔ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΓ·͢ɻ
Presence ෳϢʔβͷҐஔใʹΑΔΠϕϯτΛτϦΨ͕ग़དྷΔΑ͏ʹ ͳΓ·͢ɻ
Presence condition ·ͨɺ͜Ε·ͰͷΠϕϯτͷ݅ʹPresenceΛՃ͑ͯॊೈͳΠ ϕϯτൃՐ͕ग़དྷΔΑ͏ʹͳΓ·͢ɻ
End Event ΞΫηαϦΛىಈͤ͞Δ͚ͩͰͳ͘ɺͦͷऴྃΠϕϯτΛఆٛ ͢ΔࣄͰɺ Ұఆ࣌ؒޙʹऴྃͤ͞ΔͳͲͷૢ࡞͕ग़དྷΔΑ͏ʹͳΓ·͢ɻ
Enhanced Setup Code
Enhanced Setup Code ΞΫηαϦͷηοτΞοϓ࣌ͷίʔυೖྗͷํ๏͕৽͘͠Ճ ͞Ε·ͨ͠ɻ • QR Code • NFC
HAP༷ͷެ։ ͜Ε·ͰΦʔϓϯʹ͞Ε͍ͯͳ͔ͬͨHAPͷ༻͕։ൃऀ͚ ʹެ։͞Ε·ͨ͠ɻ ͜ΕʹΑΓ։ൃऀMFiͷϥΠηϯεܖΛߦ͏͜ͱͳ͘ɺHAP ༷ͷج͖ͮϓϩτλΠϐϯά͕͘͢͠ͳΓ·ͨ͠ɻ વɺ༻ʹMFiϥΠηϯεͷܖ͕ඞཁͰ͕͢ɺ։ൃ࣌ݸ ਓར༻ʹ͍ͭͯMFiΛ௨͢ඞཁ͕ͳ͘ͳΓ·ͨ͠ɻ
ڵຯग़ͯདྷ·͔ͨ͠ʁ (͍·͍ͪʁ)
Node-REDΛͬͨ HomeKit࿈ܞ
https://speakerdeck.com/tamaki/bu-wu-wonaitosihutosuru-in- node-red-ug
https://speakerdeck.com/tamaki/bu-wu-wonaitosihutosuru-in- node-red-ug
https://speakerdeck.com/tamaki/bu-wu-wonaitosihutosuru-in- node-red-ug
Կ͕໘͔ͩͬͨʁ • HomebridgeϓϥάΠϯͷ࣮ • ֎ઢϦϞίϯΛૢ࡞Ϟδϡʔϧͷ࡞
ɹnode-red-contrib-homekit HomebridgeͷϓϥάΠϯ։ൃͳ͠ʹαʔϏελΠϓɾΩϟϥ ΫλϦεςΟοΫΛϊʔυͷઃఆͰબ͢Δ͚ͩͰ؆୯ʹΞΫ ηαϦͷఆٛΛߦ͏ࣄ͕Մೳ node-red-contrib-homekit https://www.npmjs.com/package/node-red-contrib-homekit
͍ํ(1) Node-REDͱnode-red-contrib-homekitͷΠϯετʔϧ $ npm install -g node-red $ cd ~/.node-red/
$ npm install node-red-contrib-homekit
͍ํ(2) node-redͷىಈ(ԼهίϚϯυ)ɺ࣮ߦޙlocalhost:1880ʹϒϥ βͰΞΫηε͠Node-REDͷը໘Λ։͖·͠ΐ͏ɻ $ node-red
͍ํ(3) node-red-contrib-homekit͕Πϯετʔϧ͞Ε͍ͯΕࠨଆͷ Node-REDύϨοτʹHomeKitϊʔυ͕දࣔ͞Ε·͢ɻ
͍ํ(4) HomeKitϊʔυΛυϥοάͯ͠ϑϩʔʹஔ͠ɺμϒϧΫ ϦοΫͯ͠ઃஔΛ࢝Ί·͢ɻ
͍ํ(5) ·ͣAccessoryΛՃ͠·͠ΐ͏ɺฤूϘλϯΛԡͯ͠ Accessoryઃఆը໘ʹભҠ͠·͢
͍ํ(6) AccessoryͷઃఆͰجຊతʹTypeͱ NameͷઃఆΛߦ͍·͢ɻ ͦͷ΄͔ͷ߲ઃఆͰ͖·͕͢ɺجຊ తʹσϑΥϧτͰ͋Γ·ͤΜɻ
͍ํ(7) TypeҰཡ͔Βબ͢ΔܗʹͳΓ· ͢ɻ ྫͱͯ͠FAN(ઔ෩ػ)Λબͨ͠ྫͱ͠ ·͢ɻ
͍ํ(8) ࣍ʹAccessoryͰѻ͏ServiceΛબ͠· ͢ɻ ͜͜ͰAccessory͕FanͳͷͰService FanͰ߹Θ͓͖ͤͯ·͠ΐ͏
͍ํ(9) ͋ͱNodeʹ໊લΛ͚ͯྃͰ͢ɻDeployϘλϯͰσϓϩ Πͯ͠Έ·͠ΐ͏ɻ
͍ํ(10) ࣍ʹiOSͷHomeΞϓϦͰΞΫηαϦͱͯ͠ՃͰ͖Δ͔֬ೝͯ͠Έ·͠ΐ͏ɻ ※ iOSNode-REDΛىಈ͍ͯ͠ΔϚγϯͱಉ͡ωοτϫʔΫʹଓͨ͠ঢ়ଶʹ͍ͯͩ͘͠͞ɻ
͍ํ(11) AccessoryΛHomeKitʹొग़དྷͨΒ࣍ Πϕϯτ௨Λ֬ೝ͍͖ͯ͠·͢ɻ ·ͣHomeΞϓϦ͔Βͷૢ࡞Λߦͬͨ ࣌ʹͲͷΑ͏ͳΠϕϯτ͕Node-REDଆ ʹฦͬͯ͘Δͷ͔Λ֬ೝͯ͠Έ·͢ɻ ֬ೝʹDebugϊʔυΛ༻͠·͢ɻ
͍ํ(11) AccessoryΛHomeKitʹొग़དྷͨΒ࣍ Πϕϯτ௨Λ֬ೝ͍͖ͯ͠·͢ɻ ·ͣHomeΞϓϦ͔Βͷૢ࡞Λߦͬͨ ࣌ʹͲͷΑ͏ͳΠϕϯτ͕Node-REDଆ ʹฦͬͯ͘Δͷ͔Λ֬ೝͯ͠Έ·͢ɻ ֬ೝʹDebugϊʔυΛ༻͠·͢ɻ
͍ํ(12) ࣍Node-REDଆ͔ΒAccessoryͷมԽ Λىͯ͜͠HomeΞϓϦʹมߋ͕ө͞ ΕΔͷΛ֬ೝͯ͠Έ·͠ΐ͏ɻ injectϊʔυΛ༻ͯ͠໌ࣔతʹ HomeKitϊʔυʹinputΛ༩͑ͯΈ· ͢ɻ ͜ͷྫͰ{"foo": "bar"}ͱ͍͏ςΩ τʔͳjsonΛinputͱ͍ͯ͠·͢ɻ
͍ํ(12) ͦͷ߹ɺAccessoryʹׂΓͯͨ ServiceʹͦΕͧΕHAP(HomeKit Accessory Protocol)Ͱఆٛ͞Εͨ Characteristic͕͋ΔͨΊઌ΄ͲͷΑ͏ ͳσʔλΤϥʔͱͳΓdebugλϒʹΤ ϥʔ༰͕දࣔ͞Ε·͢ɻ͜͏͢Δ͜ͱ ʹΑͬͯService͕࣋ͭCharacteristicͷ ΩʔΛΔ͜ͱ͕Ͱ͖·͢ɻ
͍ํ(12) ͨͩɺ͜ͷํ๏ͰCharacteristicͷΩʔΛ୳ͯ͠Λઃఆ͢Δํ ๏͋·Γޮతͱݴ͑·ͤΜ! CharacteristicͷΩʔ͕Θ͔ͬͯͦͷͷܕ(จࣈྻɺɺ ཧͳͲʣ͕Θ͔Βͳ͍ͱ͍͏͋Γ·͢ɻ ɹ ͜ͷʹ͍ͭͯޙ΄Ͳઆ໌͢ΔͷͰҰ୴ઌʹਐΊ·͢ɻ
͍ํ(13) FanʹඞਢͱͳΔCharacteristicͱ͠ ͯ"On"͕͋Γɺͦͷ0͔1ɺͭ·Γ true/falseͷཧͰ͋Δࣄ͕HomeΞ ϓϦΛૢ࡞ͨ࣌͠ͷϩάͱઌ΄ͲͷΤ ϥʔ༰͔ΒਪଌͰ͖·͢ɻ injectϊʔυʹΩʔ"On"ͷΛઃఆͯ͠ ࣮ߦͯ͠Έ·͠ΐ͏ɻHomeΞϓϦͷ Fanͷঢ়ଶ͕มΘΕޭͰ͢ɻ
Characteristicͷ୳͠ํ ઌ΄ͲΘ͟ͱHomeKitϊʔυʹޡͬͨinputΛ༩͑ͯग़ͨΤϥʔ ΛݩʹCharacteristicΛਪଌ͢Δํ๏ΛͱΓ·͕ͨ͠ɺͦΕҎ֎ ͷCharacteristicͷௐํʹ͍ͭͯิ͠·͢ɻ
Characteristicͷ୳͠ ํ Ұ൪࣮֬ͳͷ͕݁ہHAP-NodeJSͷఆٛ ϑΝΠϧΛಡΉࣄͰͨ͠! ྫ͑FanͷCharacteristic͕Γ͍ͨ ߹HomeKitTypes.jsΛݕࡧ͢ΔͱҎ ԼͷΑ͏ͳఆ͕ٛ֬ೝͰ͖·͢ɻ https://github.com/KhaosT/HAP- NodeJS/blob/master/lib/gen/ HomeKitTypes.js
ؾ͖ͮ ͦͷ1 HomeΞϓϦ • DoorbellHomeΞϓϦͰαϙʔτ͍ͯ͠ͳ͍ • σόΠεͷొՄೳɺͨͩ͠DoorbellͷΞΠίϯදࣔ͞ Εͳ͍ɺσόΠεͷมߋ௨ʹԠ͠ͳ͍ • HomeKit
frameworkͷσόΠεͷมߋ௨ϑΥΞάϥϯ υͷΈͳͷͰɺόοΫάϥϯυ࣌ʹυΞϕϧͷมߋ௨ ඈΜͰ͜ͳ͍
ؾ͖ͮ ͦͷ2 DoorbellΞϓϦ • DoorbellΛѻ͍͍ͨ߹HomeKit frameworkΛͬͯΞϓ ϦΛ࡞Δ • HomeKit frameworkͷσόΠεͷมߋ௨ϑΥΞάϥϯ
υͷΈͳͷͰɺόοΫάϥϯυ࣌ʹυΞϕϧͷมߋ௨ ඈΜͰ͜ͳ͍
ॾҙ ͠HomeKitରԠσόΠεͷ։ൃΛߟ͍͑ͯΔͷͰ͋Εɺ HomebridgeΛͦͷ··͏ͷͰͳ͘ɺ͋͘·ͰϓϩτλΠ ϐϯάͷखஈͷҰͭͱ͍ͯΈͨํ͕ྑ͍ͱࢥ͍·͢ɻ
DEMO (ࣄલࡱӨ)
DEMO (ࣄલࡱӨ)
DEMO
Ҏ্