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
1.9k
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
1
130
Let's make an Immersive Video with APMP
tamaki
0
18
Firebase Studioで始めるモバイルアプリ開発入門
tamaki
0
17
Introduction to Claude Code Action
tamaki
0
670
AIエージェントを使ったiOSアプリ開発を試してみた
tamaki
0
120
沖縄モバイルアプリ開発勉強会#1
tamaki
0
120
iOSアプリ開発を始めよう
tamaki
0
200
詳解xcresult.pdf
tamaki
0
380
メルペイでのリグレッションテスト自動化推進のこれまでとこれから
tamaki
0
770
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
For a Future-Friendly Web
brad_frost
180
9.9k
Writing Fast Ruby
sferik
628
62k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Producing Creativity
orderedlist
PRO
347
40k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Done Done
chrislema
185
16k
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
Ҏ্