Slide 1

Slide 1 text

What's new in HomeKit

Slide 2

Slide 2 text

ࣗݾ঺հ

Slide 3

Slide 3 text

ࣗݾ঺հ ۄ৓৴ޛ iOS Engineer! ޷͖ͳframework͸HomeKitͰ͢ झຯ" ిࢠ޻࡞⚡ ےτϨ$ ΨδΣοτ%

Slide 4

Slide 4 text

HomeKitͱ͸ʁ

Slide 5

Slide 5 text

HomeKitͱ͸ʁ HomeKit͸ɺAppleͷHomeKit Accessory ProtocolʹରԠͨ͠ ϗʔϜΦʔτϝʔγϣϯػثͱ௨৴͠ɺ͜ΕΛ੍ޚ͢ΔͨΊͷ ϑϨʔϜϫʔΫͰ͢ɻ

Slide 6

Slide 6 text

HomeKitͷػೳ • ϗʔϜ/ϧʔϜ؅ཧ • ΞΫηαϦ؅ཧɾૢ࡞ • Ϣʔβ؅ཧ • γʔϯ • τϦΨ • DBڞ༗

Slide 7

Slide 7 text

ϗʔϜͷϨΠΞ΢τ HomeKitͰ͸Home/Room/Accessory/ServiceʹΑͬͯߏ੒͞Ε ͍ͯ·͢ɻ

Slide 8

Slide 8 text

γʔϯ

Slide 9

Slide 9 text

γʔϯ γʔϯͱ͸ଟ਺ͷΞΫηαϦૢ࡞ΛҰׅͰߦ͏ҝͷఆٛͰ͢ɻ ʮ͓͸Α͏ʯ΍ʮ͍ͨͩ·ʯͳͲͷ೔ৗγʔϯΛΠϝʔδͯ͠ ΋Β͑Ε͹ྑ͍ͱࢥ͍·͢ɻ

Slide 10

Slide 10 text

τϦΨ

Slide 11

Slide 11 text

τϦΨ HomeKitʹ͸ಛఆͷૢ࡞ΛΦʔτϝʔγϣϯԽ͢ΔͨΊͷτϦ Ψ͕༻ҙ͞Ε͍ͯ·͢ɻ • Ґஔ৘ใ • ࣌ࠁ • ΞΫηαϦͷঢ়ଶมԽ

Slide 12

Slide 12 text

Φʔτϝʔγϣϯ

Slide 13

Slide 13 text

Φʔτϝʔγϣϯ γʔϯͱτϦΨͷ૊Έ߹ΘͤʹΑͬͯΞΫηαϦͷૢ࡞Λࣗಈ Խ͢Δࣄ͕Ͱ͖·͢ɻ

Slide 14

Slide 14 text

HomeApp ϗʔϜ/ϧʔϜ΁ͷΞΫηαϦ؅ཧͷૢ࡞͸iOS10Ͱొ৔ͨ͠ HomeΞϓϦͰ؆୯ʹߦ͏ࣄ͕Ͱ͖·͢ɻ ※ HomeKit frameworkΛ࢖ͬͨαʔυύʔςΟΞϓϦͰ΋ߦ͑ ·͢ɻ

Slide 15

Slide 15 text

DBڞ༗

Slide 16

Slide 16 text

DBڞ༗ HomeKit͸ͦͷ৘ใΛϗʔϜ͝ͱʹDBͱ͓ͯ࣋ͬͯ͠Γɺ୺຤ ͕iCloudܦ༝Ͱผ୺຤ʹDBΛڞ༗ɾมߋ؂ࢹΛߦͳ͍ͬͯ· ͢ɻ

Slide 17

Slide 17 text

͜͜·Ͱ͕͜Ε·ͰͷHomeKitͷ࿩

Slide 18

Slide 18 text

࠷ۙͷΞοϓσʔτ

Slide 19

Slide 19 text

Home Pod

Slide 20

Slide 20 text

Home Pod Amazon Echo΍Google HomeͷΑ͏ͳεϚʔτεϐʔΧ SiriʹΑΔԻ੠ૢ࡞͸΋ͪΖΜHomeKitʹ΋ରԠ

Slide 21

Slide 21 text

New Accessories

Slide 22

Slide 22 text

New Accessories εϓϦϯΫϥʔͱऄޱ͕௥Ճ͞Ε·ͨ͠ɻ

Slide 23

Slide 23 text

Dates and Times ͜Ε·Ͱͷ೔ͷೖ/೔ͷग़/࣌ࠁ/༵೔ͷࢦఆ͚ͩͰ͸ͳ͘ɺ೥݄ ೔ͷࢦఆ͕αϙʔτ͞Ε·͢ɻ

Slide 24

Slide 24 text

Threshold ݻఆ஋͚ͩͰͳ͘࠷େ஋/࠷খ஋/ൣғࢦఆͰΠϕϯτΛτϦΨ͞ ͤΔ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΓ·͢ɻ

Slide 25

Slide 25 text

Presence ෳ਺ϢʔβͷҐஔ৘ใʹΑΔΠϕϯτΛτϦΨ͕ग़དྷΔΑ͏ʹ ͳΓ·͢ɻ

Slide 26

Slide 26 text

Presence condition ·ͨɺ͜Ε·ͰͷΠϕϯτͷ৚݅ʹPresenceΛՃ͑ͯॊೈͳΠ ϕϯτൃՐ͕ग़དྷΔΑ͏ʹͳΓ·͢ɻ

Slide 27

Slide 27 text

End Event ΞΫηαϦΛىಈͤ͞Δ͚ͩͰͳ͘ɺͦͷऴྃΠϕϯτΛఆٛ ͢ΔࣄͰɺ Ұఆ࣌ؒޙʹऴྃͤ͞ΔͳͲͷૢ࡞͕ग़དྷΔΑ͏ʹͳΓ·͢ɻ

Slide 28

Slide 28 text

Enhanced Setup Code

Slide 29

Slide 29 text

Enhanced Setup Code ΞΫηαϦͷηοτΞοϓ࣌ͷίʔυೖྗͷํ๏͕৽͘͠௥Ճ ͞Ε·ͨ͠ɻ • QR Code • NFC

Slide 30

Slide 30 text

HAP࢓༷ͷެ։ ͜Ε·ͰΦʔϓϯʹ͞Ε͍ͯͳ͔ͬͨHAPͷ࢖༻͕։ൃऀ޲͚ ʹެ։͞Ε·ͨ͠ɻ ͜ΕʹΑΓ։ൃऀ͸MFiͷϥΠηϯεܖ໿Λߦ͏͜ͱͳ͘ɺHAP ࢓༷ͷج͖ͮϓϩτλΠϐϯά͕͠΍͘͢ͳΓ·ͨ͠ɻ ౰વɺ঎༻ʹ͸MFiϥΠηϯεͷܖ໿͕ඞཁͰ͕͢ɺ։ൃ࣌΍ݸ ਓར༻ʹ͍ͭͯ͸MFiΛ௨͢ඞཁ͕ͳ͘ͳΓ·ͨ͠ɻ

Slide 31

Slide 31 text

ڵຯग़ͯདྷ·͔ͨ͠ʁ (͍·͍ͪʁ)

Slide 32

Slide 32 text

Node-REDΛ࢖ͬͨ HomeKit࿈ܞ

Slide 33

Slide 33 text

https://speakerdeck.com/tamaki/bu-wu-wonaitosihutosuru-in- node-red-ug

Slide 34

Slide 34 text

https://speakerdeck.com/tamaki/bu-wu-wonaitosihutosuru-in- node-red-ug

Slide 35

Slide 35 text

https://speakerdeck.com/tamaki/bu-wu-wonaitosihutosuru-in- node-red-ug

Slide 36

Slide 36 text

Կ͕໘౗͔ͩͬͨʁ • HomebridgeϓϥάΠϯͷ࣮૷ • ੺֎ઢϦϞίϯΛૢ࡞Ϟδϡʔϧͷ࡞੒

Slide 37

Slide 37 text

ɹnode-red-contrib-homekit HomebridgeͷϓϥάΠϯ։ൃͳ͠ʹαʔϏελΠϓɾΩϟϥ ΫλϦεςΟοΫΛϊʔυͷઃఆͰબ୒͢Δ͚ͩͰ؆୯ʹΞΫ ηαϦͷఆٛΛߦ͏ࣄ͕Մೳ node-red-contrib-homekit https://www.npmjs.com/package/node-red-contrib-homekit

Slide 38

Slide 38 text

࢖͍ํ(1) Node-REDͱnode-red-contrib-homekitͷΠϯετʔϧ $ npm install -g node-red $ cd ~/.node-red/ $ npm install node-red-contrib-homekit

Slide 39

Slide 39 text

࢖͍ํ(2) node-redͷىಈ(ԼهίϚϯυ)ɺ࣮ߦޙlocalhost:1880ʹϒϥ ΢βͰΞΫηε͠Node-REDͷը໘Λ։͖·͠ΐ͏ɻ $ node-red

Slide 40

Slide 40 text

࢖͍ํ(3) node-red-contrib-homekit͕Πϯετʔϧ͞Ε͍ͯΕ͹ࠨଆͷ Node-REDύϨοτʹHomeKitϊʔυ͕දࣔ͞Ε·͢ɻ

Slide 41

Slide 41 text

࢖͍ํ(4) HomeKitϊʔυΛυϥοάͯ͠ϑϩʔ಺ʹ഑ஔ͠ɺμϒϧΫ ϦοΫͯ͠ઃஔΛ࢝Ί·͢ɻ

Slide 42

Slide 42 text

࢖͍ํ(5) ·ͣ͸AccessoryΛ௥Ճ͠·͠ΐ͏ɺฤूϘλϯΛԡͯ͠ Accessoryઃఆը໘ʹભҠ͠·͢

Slide 43

Slide 43 text

࢖͍ํ(6) AccessoryͷઃఆͰ͸جຊతʹTypeͱ NameͷઃఆΛߦ͍·͢ɻ ͦͷ΄͔ͷ߲໨΋ઃఆͰ͖·͕͢ɺجຊ తʹσϑΥϧτ஋Ͱ໰୊͋Γ·ͤΜɻ

Slide 44

Slide 44 text

࢖͍ํ(7) Type͸Ұཡ͔Βબ୒͢ΔܗʹͳΓ· ͢ɻ ྫͱͯ͠FAN(ઔ෩ػ)Λબ୒ͨ͠ྫͱ͠ ·͢ɻ

Slide 45

Slide 45 text

࢖͍ํ(8) ࣍ʹAccessoryͰѻ͏ServiceΛબ୒͠· ͢ɻ ͜͜Ͱ΋Accessory͕FanͳͷͰService ΋FanͰ߹Θ͓͖ͤͯ·͠ΐ͏

Slide 46

Slide 46 text

࢖͍ํ(9) ͋ͱ͸Nodeʹ໊લΛ෇͚ͯ׬ྃͰ͢ɻDeployϘλϯͰσϓϩ Πͯ͠Έ·͠ΐ͏ɻ

Slide 47

Slide 47 text

࢖͍ํ(10) ࣍ʹiOSͷHomeΞϓϦͰΞΫηαϦͱͯ͠௥ՃͰ͖Δ͔֬ೝͯ͠Έ·͠ΐ͏ɻ ※ iOS୺຤͸Node-REDΛىಈ͍ͯ͠ΔϚγϯͱಉ͡ωοτϫʔΫʹ઀ଓͨ͠ঢ়ଶʹ͍ͯͩ͘͠͞ɻ

Slide 48

Slide 48 text

࢖͍ํ(11) AccessoryΛHomeKitʹొ࿥ग़དྷͨΒ࣍ ͸Πϕϯτ௨஌Λ֬ೝ͍͖ͯ͠·͢ɻ ·ͣ͸HomeΞϓϦ͔Βͷૢ࡞Λߦͬͨ ࣌ʹͲͷΑ͏ͳΠϕϯτ͕Node-REDଆ ʹฦͬͯ͘Δͷ͔Λ֬ೝͯ͠Έ·͢ɻ ֬ೝʹ͸DebugϊʔυΛ࢖༻͠·͢ɻ

Slide 49

Slide 49 text

࢖͍ํ(11) AccessoryΛHomeKitʹొ࿥ग़དྷͨΒ࣍ ͸Πϕϯτ௨஌Λ֬ೝ͍͖ͯ͠·͢ɻ ·ͣ͸HomeΞϓϦ͔Βͷૢ࡞Λߦͬͨ ࣌ʹͲͷΑ͏ͳΠϕϯτ͕Node-REDଆ ʹฦͬͯ͘Δͷ͔Λ֬ೝͯ͠Έ·͢ɻ ֬ೝʹ͸DebugϊʔυΛ࢖༻͠·͢ɻ

Slide 50

Slide 50 text

࢖͍ํ(12) ࣍͸Node-REDଆ͔ΒAccessoryͷมԽ Λىͯ͜͠HomeΞϓϦʹมߋ͕൓ө͞ ΕΔͷΛ֬ೝͯ͠Έ·͠ΐ͏ɻ injectϊʔυΛ࢖༻ͯ͠໌ࣔతʹ HomeKitϊʔυʹinputΛ༩͑ͯΈ· ͢ɻ ͜ͷྫͰ͸{"foo": "bar"}ͱ͍͏ςΩ τʔͳjsonΛinputͱ͍ͯ͠·͢ɻ

Slide 51

Slide 51 text

࢖͍ํ(12) ͦͷ৔߹ɺAccessoryʹׂΓ౰ͯͨ Serviceʹ͸ͦΕͧΕHAP(HomeKit Accessory Protocol)Ͱఆٛ͞Εͨ Characteristic͕͋ΔͨΊઌ΄ͲͷΑ͏ ͳσʔλ͸ΤϥʔͱͳΓdebugλϒʹΤ ϥʔ಺༰͕දࣔ͞Ε·͢ɻ͜͏͢Δ͜ͱ ʹΑͬͯService͕࣋ͭCharacteristicͷ ΩʔΛ஌Δ͜ͱ͕Ͱ͖·͢ɻ

Slide 52

Slide 52 text

࢖͍ํ(12) ͨͩɺ͜ͷํ๏ͰCharacteristicͷΩʔΛ୳ͯ͠஋Λઃఆ͢Δํ ๏͸͋·Γޮ཰తͱ͸ݴ͑·ͤΜ! CharacteristicͷΩʔ͕Θ͔ͬͯ΋ͦͷ஋ͷܕ(จࣈྻɺ਺஋ɺ࿦ ཧ஋ͳͲʣ͕Θ͔Βͳ͍ͱ͍͏໰୊఺΋͋Γ·͢ɻ ɹ ͜ͷ఺ʹ͍ͭͯ͸ޙ΄Ͳઆ໌͢ΔͷͰҰ୴ઌʹਐΊ·͢ɻ

Slide 53

Slide 53 text

࢖͍ํ(13) Fanʹ͸ඞਢͱͳΔCharacteristicͱ͠ ͯ"On"͕͋Γɺͦͷ஋͸0͔1ɺͭ·Γ true/falseͷ࿦ཧ஋Ͱ͋Δࣄ͕HomeΞ ϓϦΛૢ࡞ͨ࣌͠ͷϩάͱઌ΄ͲͷΤ ϥʔ಺༰͔ΒਪଌͰ͖·͢ɻ injectϊʔυʹΩʔ"On"ͷ஋Λઃఆͯ͠ ࣮ߦͯ͠Έ·͠ΐ͏ɻHomeΞϓϦͷ Fanͷঢ়ଶ͕มΘΕ͹੒ޭͰ͢ɻ

Slide 54

Slide 54 text

Characteristicͷ୳͠ํ ઌ΄ͲΘ͟ͱHomeKitϊʔυʹޡͬͨinputΛ༩͑ͯग़ͨΤϥʔ ΛݩʹCharacteristicΛਪଌ͢Δํ๏ΛͱΓ·͕ͨ͠ɺͦΕҎ֎ ͷCharacteristicͷௐ΂ํʹ͍ͭͯิ଍͠·͢ɻ

Slide 55

Slide 55 text

Characteristicͷ୳͠ ํ Ұ൪࣮֬ͳͷ͕݁ہHAP-NodeJSͷఆٛ ϑΝΠϧΛಡΉࣄͰͨ͠! ྫ͑͹FanͷCharacteristic͕஌Γ͍ͨ৔ ߹HomeKitTypes.js಺Λݕࡧ͢ΔͱҎ ԼͷΑ͏ͳఆ͕ٛ֬ೝͰ͖·͢ɻ https://github.com/KhaosT/HAP- NodeJS/blob/master/lib/gen/ HomeKitTypes.js

Slide 56

Slide 56 text

ؾ͖ͮ ͦͷ1 HomeΞϓϦ • Doorbell͸HomeΞϓϦͰ͸αϙʔτ͍ͯ͠ͳ͍ • σόΠεͷొ࿥͸Մೳɺͨͩ͠DoorbellͷΞΠίϯ͸දࣔ͞ Εͳ͍ɺσόΠεͷมߋ௨஌ʹ΋൓Ԡ͠ͳ͍ • HomeKit frameworkͷσόΠεͷมߋ௨஌͸ϑΥΞάϥ΢ϯ υͷΈͳͷͰɺόοΫάϥ΢ϯυ࣌ʹυΞϕϧͷมߋ௨஌͸ ඈΜͰ͜ͳ͍

Slide 57

Slide 57 text

ؾ͖ͮ ͦͷ2 DoorbellΞϓϦ • DoorbellΛѻ͍͍ͨ৔߹͸HomeKit frameworkΛ࢖ͬͯΞϓ ϦΛ࡞Δ • HomeKit frameworkͷσόΠεͷมߋ௨஌͸ϑΥΞάϥ΢ϯ υͷΈͳͷͰɺόοΫάϥ΢ϯυ࣌ʹυΞϕϧͷมߋ௨஌͸ ඈΜͰ͜ͳ͍

Slide 58

Slide 58 text

ॾ஫ҙ ΋͠HomeKitରԠσόΠεͷ։ൃΛߟ͍͑ͯΔͷͰ͋Ε͹ɺ HomebridgeΛͦͷ··࢖͏ͷͰ͸ͳ͘ɺ͋͘·ͰϓϩτλΠ ϐϯάͷखஈͷҰͭͱ͍ͯΈͨํ͕ྑ͍ͱࢥ͍·͢ɻ

Slide 59

Slide 59 text

DEMO (ࣄલࡱӨ)

Slide 60

Slide 60 text

DEMO (ࣄલࡱӨ)

Slide 61

Slide 61 text

DEMO

Slide 62

Slide 62 text

Ҏ্