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
Introduction to Claude Code Action
tamaki
0
590
AIエージェントを使ったiOSアプリ開発を試してみた
tamaki
0
86
沖縄モバイルアプリ開発勉強会#1
tamaki
0
110
iOSアプリ開発を始めよう
tamaki
0
180
詳解xcresult.pdf
tamaki
0
360
メルペイでのリグレッションテスト自動化推進のこれまでとこれから
tamaki
0
750
What do you want to test with UI Test v2
tamaki
2
890
JPQRによって変わる日本のQRコード決済
tamaki
0
300
What's New in Testing
tamaki
1
58
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
Producing Creativity
orderedlist
PRO
346
40k
For a Future-Friendly Web
brad_frost
179
9.8k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
950
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Why Our Code Smells
bkeepers
PRO
337
57k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
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
Ҏ্