SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Introduction à HomeKit
Cocoaheads 14/01/2016
Julien Péraudeau @Juli3n_P
« HomeKit is a framework for communicating with and
controlling connected accessories in a user’s home. »
Apple
Principes d’une application HomeKit
• configurer sa ou ses maisons
• gérer ses objets connectés
• définir les actions à réaliser sur ses objets
• gérer les utilisateurs de la maison
• utiliser Siri pour piloter sa maison
Configuration d’une maison
Home Manager
• point d’entrée pour découvrir les
maisons d’un utilisateur
• liste des maisons
• permet d’ajouter/supprimer des
maisons
• accès direct maison principale
HMHomeManager
domicile
Agay
Campagne
Maison
• distribution des objets dans les pièces et les
zones
• liste des groupes de services disponibles
• liste des actions définies par l’utilisateur
• liste des scénarios définis par l’utilisateur
• point d’entrée pour agir sur les objets
Accessories
Rooms
Zones
ServiceGroups
ActionsSet
HMHome
Triggers
Pièce
• liste les objets dans la pièce
• nom utilisé par Siri
Accessories
HMRoom
Zone
• liste des pièces
• nom utilisé par Siri
• une pièce peut être dans plusieurs zones
Rooms
HMZone
Objet
• nom utilisé par Siri
• localisation
• liste des fonctions (services) fournies par l’objet
• 3 statuts
• joignable
• bloqué
• derrière une passerelle (bloque les actions d’ajout/
suppression)
• fonction pour demander à l’objet de s’identifier
• pour trouver les objets : HMAccessoryBrowser
Services
HMAccessory
service : ventilateurservice : lumière
Service
• représente une fonction pour un objet
• un service n’a pas obligatoirement un nom
• ex : une mise à jour de firmware n’a pas de nom
• les services sans nom ne doivent pas être affichés à l’utilisateur
• le type de fonction (serviceType)
• "fonction associée" possible pour les prises ou les interrupteurs
• liste des caractéristiques
• Siri reconnait le nom ou le serviceType
Characteristics
HMService
Caractéristique
• donne le type de paramètre et la valeur
• liste des propriétés du paramètre (lecture/écriture/notification)
• mode asynchrone pour la mise à jour d’une valeur
• metadata : informations complémentaires fournies par le fabriquant de
l’objet
• unité de la valeur (ex °C ou °F)
• valeurs minimales, maximales
• format
• notification possible mais seulement en cas de changement de valeur
depuis l’objet (valeur remontée par une sonde, action de l’utilisateur)
HMCharacteristic
properties
metadata
Groupes de services
• utilisé pour contrôler un ensemble
d’objets
• nom utilisé par Siri
• liste des services du groupe
• un service peut appartenir à plusieurs
groupes
HMServiceGroup
services
ActionSet
• rassemble un ensemble d’actions
• nom utilisé par Siri
• liste d’actions
• état d’exécution
• 4 actionsSet fournis par Apple
• WakeUP, Sleep, Departure, Arrival
HMActionSet
actions
Action
• initialisé par le type d’action à réaliser
• HMCharacteristicWriteAction :
positionne une valeur cible pour la
caractéristique d’un objet
HMCharateristicWriteAction
Characteristic
targetValue
Scénario
• initialisé avec un type d’activateur
• soit activé par un événement
• soit programmé ou récurrent
• liste d’actionSets
• état du scénario : actif/inactif
• nom utilisé par Siri
• la date de la dernière exécution
• exécuté en tache de fond
HMTrigger
actionsSets
HMTimerTrigger
• activation programmée ou récurrente
• heure de prochaine exécution (ne gère pas les secondes)
• intervalle : entre 5 minutes et 5 semaines, "nil" si pas de
récurrence
• date de prochaine activation calculée à chaque fois que
l’événement est déclenché
• calendrier à utiliser pour déterminer la prochaine date
d’exécution
• /! selon les calendriers il est possible que certaines dates
ne soient pas calculées
• timeZone : à fixer sur le fuseau horaire des objets
• si non fixé, basé sur le fuseau horaire de l’utilisateur…
HMTimerTrigger
fireDate
reccurence
calendarReccurence
calendarReccurence
HMEventTrigger depuis iOS 9
• liste d’événements
• HMLocationEvent
• HMCharacteristicEvent
• HMSignificantEventSunrise
• HMSignificantEventSunset
• "predicate" pour valider l’événement
HMEventTrigger
events
predicate
Home Kit Accessory Protocol (HAP)
• communication avec les objets HomeKit
• Bluetooth LE ou IP
• échange crypté
• bi directionnel
• puce d’authentification MFi obligatoire
• pour les objets connectés en IP :
• Bonjour utilisé pour les découvrir sur le réseau
• Mode passerelle disponible lorsque plusieurs objets sont connectés à un
accessoire HomeKit
• les mobiles sous iOS 9 n’ont plus besoin d’Apple TV pour avoir un accès distant
• les objets communiquent directement avec iCloud
Gestion des utilisateurs
• l’utilisateur créateur de la maison est
administrateur
• ajout/suppression d’utilisateurs via leur Apple ID
• droits restreints pour les invités:
• identifier les accessoires
• lire/écrire des données, être notifié des
changements
• exécuter des actions
Synchronisation des données
• une base HomeKit par
maison
• iCloud pour la
synchronisation entre les
mobiles des utilisateurs
• les applications ne
tournent pas en arrière
plan
Mise à jour des données
• mode asynchrone pour
prendre en compte le résultat
• applications au premier plan :
notification de mise à jour
reçue
• application en arrière plan : au
lancement une notification
invite à recharger toutes les
données
HomeKit Accessory Simulator
• à installer en plus
d’XCode
• permet de simuler des
objets ou des
passerelles
Freins au développement d’HomeKit
• pour les développeurs : un système encore jeune
• des fonctions manquantes
• prix du ticket d’entrée élevé
• pour les utilisateurs : l’écosystème Apple
• dépendance à la certification MFi
• pas d’accès en dehors des appareils iOS
• dépendance au cloud
• Obsolescence programmée
Autres solutions de smart home
Merci
Julien Péraudeau / Cocoaheads -14/01/2016
Mon projet de smart home
https://github.com/OS-Home/sources
@OS_Home_Project

Contenu connexe

En vedette

BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureBlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureCocoaHeads France
 
Swift Sequences & Collections
Swift Sequences & CollectionsSwift Sequences & Collections
Swift Sequences & CollectionsCocoaHeads France
 
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...CocoaHeads France
 
OSX Complex Application Challenge Architecture
OSX Complex Application Challenge ArchitectureOSX Complex Application Challenge Architecture
OSX Complex Application Challenge ArchitectureCocoaHeads France
 
CocoaPods for private libraries
CocoaPods for private librariesCocoaPods for private libraries
CocoaPods for private librariesCocoaHeads France
 
How javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible toolHow javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible toolCocoaHeads France
 

En vedette (15)

POI clusturing
POI clusturingPOI clusturing
POI clusturing
 
Conférence DotSwift 2016
Conférence DotSwift 2016Conférence DotSwift 2016
Conférence DotSwift 2016
 
Mastering Interface Builder
Mastering Interface BuilderMastering Interface Builder
Mastering Interface Builder
 
App-resizer Library
App-resizer LibraryApp-resizer Library
App-resizer Library
 
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureBlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
 
Swift open source
Swift open sourceSwift open source
Swift open source
 
Swift Sequences & Collections
Swift Sequences & CollectionsSwift Sequences & Collections
Swift Sequences & Collections
 
3D Touch
3D Touch3D Touch
3D Touch
 
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
Genius scan - Du boostrap à 20 millions d’utilisateurs, techniques et outils ...
 
Silent push
Silent pushSilent push
Silent push
 
Zenly - Reverse geocoding
Zenly - Reverse geocodingZenly - Reverse geocoding
Zenly - Reverse geocoding
 
OSX Complex Application Challenge Architecture
OSX Complex Application Challenge ArchitectureOSX Complex Application Challenge Architecture
OSX Complex Application Challenge Architecture
 
CocoaPods for private libraries
CocoaPods for private librariesCocoaPods for private libraries
CocoaPods for private libraries
 
OHHttpStubs
OHHttpStubsOHHttpStubs
OHHttpStubs
 
How javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible toolHow javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible tool
 

Plus de CocoaHeads France

Plus de CocoaHeads France (20)

Mutation testing for a safer Future
Mutation testing for a safer FutureMutation testing for a safer Future
Mutation testing for a safer Future
 
iOS App Group for Debugging
iOS App Group for DebuggingiOS App Group for Debugging
iOS App Group for Debugging
 
Asynchronous swift
Asynchronous swiftAsynchronous swift
Asynchronous swift
 
Visual accessibility in iOS11
Visual accessibility in iOS11Visual accessibility in iOS11
Visual accessibility in iOS11
 
My script - One year of CocoaHeads
My script - One year of CocoaHeadsMy script - One year of CocoaHeads
My script - One year of CocoaHeads
 
Ui testing dealing with push notifications
Ui testing dealing with push notificationsUi testing dealing with push notifications
Ui testing dealing with push notifications
 
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANECONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 
Super combinators
Super combinatorsSuper combinators
Super combinators
 
Design like a developer
Design like a developerDesign like a developer
Design like a developer
 
Handle the error
Handle the errorHandle the error
Handle the error
 
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
 
IoT Best practices
 IoT Best practices IoT Best practices
IoT Best practices
 
SwiftyGPIO
SwiftyGPIOSwiftyGPIO
SwiftyGPIO
 
Présentation de HomeKit
Présentation de HomeKitPrésentation de HomeKit
Présentation de HomeKit
 
Programme MFI retour d'expérience
Programme MFI retour d'expérienceProgramme MFI retour d'expérience
Programme MFI retour d'expérience
 
How to communicate with Smart things?
How to communicate with Smart things?How to communicate with Smart things?
How to communicate with Smart things?
 
Build a lego app with CocoaPods
Build a lego app with CocoaPodsBuild a lego app with CocoaPods
Build a lego app with CocoaPods
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
 
Project Entourage
Project EntourageProject Entourage
Project Entourage
 

Découverte de HomeKit

  • 1. Introduction à HomeKit Cocoaheads 14/01/2016 Julien Péraudeau @Juli3n_P
  • 2. « HomeKit is a framework for communicating with and controlling connected accessories in a user’s home. » Apple
  • 3. Principes d’une application HomeKit • configurer sa ou ses maisons • gérer ses objets connectés • définir les actions à réaliser sur ses objets • gérer les utilisateurs de la maison • utiliser Siri pour piloter sa maison
  • 5. Home Manager • point d’entrée pour découvrir les maisons d’un utilisateur • liste des maisons • permet d’ajouter/supprimer des maisons • accès direct maison principale HMHomeManager domicile Agay Campagne
  • 6. Maison • distribution des objets dans les pièces et les zones • liste des groupes de services disponibles • liste des actions définies par l’utilisateur • liste des scénarios définis par l’utilisateur • point d’entrée pour agir sur les objets Accessories Rooms Zones ServiceGroups ActionsSet HMHome Triggers
  • 7. Pièce • liste les objets dans la pièce • nom utilisé par Siri Accessories HMRoom
  • 8. Zone • liste des pièces • nom utilisé par Siri • une pièce peut être dans plusieurs zones Rooms HMZone
  • 9. Objet • nom utilisé par Siri • localisation • liste des fonctions (services) fournies par l’objet • 3 statuts • joignable • bloqué • derrière une passerelle (bloque les actions d’ajout/ suppression) • fonction pour demander à l’objet de s’identifier • pour trouver les objets : HMAccessoryBrowser Services HMAccessory service : ventilateurservice : lumière
  • 10. Service • représente une fonction pour un objet • un service n’a pas obligatoirement un nom • ex : une mise à jour de firmware n’a pas de nom • les services sans nom ne doivent pas être affichés à l’utilisateur • le type de fonction (serviceType) • "fonction associée" possible pour les prises ou les interrupteurs • liste des caractéristiques • Siri reconnait le nom ou le serviceType Characteristics HMService
  • 11. Caractéristique • donne le type de paramètre et la valeur • liste des propriétés du paramètre (lecture/écriture/notification) • mode asynchrone pour la mise à jour d’une valeur • metadata : informations complémentaires fournies par le fabriquant de l’objet • unité de la valeur (ex °C ou °F) • valeurs minimales, maximales • format • notification possible mais seulement en cas de changement de valeur depuis l’objet (valeur remontée par une sonde, action de l’utilisateur) HMCharacteristic properties metadata
  • 12. Groupes de services • utilisé pour contrôler un ensemble d’objets • nom utilisé par Siri • liste des services du groupe • un service peut appartenir à plusieurs groupes HMServiceGroup services
  • 13. ActionSet • rassemble un ensemble d’actions • nom utilisé par Siri • liste d’actions • état d’exécution • 4 actionsSet fournis par Apple • WakeUP, Sleep, Departure, Arrival HMActionSet actions
  • 14. Action • initialisé par le type d’action à réaliser • HMCharacteristicWriteAction : positionne une valeur cible pour la caractéristique d’un objet HMCharateristicWriteAction Characteristic targetValue
  • 15. Scénario • initialisé avec un type d’activateur • soit activé par un événement • soit programmé ou récurrent • liste d’actionSets • état du scénario : actif/inactif • nom utilisé par Siri • la date de la dernière exécution • exécuté en tache de fond HMTrigger actionsSets
  • 16. HMTimerTrigger • activation programmée ou récurrente • heure de prochaine exécution (ne gère pas les secondes) • intervalle : entre 5 minutes et 5 semaines, "nil" si pas de récurrence • date de prochaine activation calculée à chaque fois que l’événement est déclenché • calendrier à utiliser pour déterminer la prochaine date d’exécution • /! selon les calendriers il est possible que certaines dates ne soient pas calculées • timeZone : à fixer sur le fuseau horaire des objets • si non fixé, basé sur le fuseau horaire de l’utilisateur… HMTimerTrigger fireDate reccurence calendarReccurence calendarReccurence
  • 17. HMEventTrigger depuis iOS 9 • liste d’événements • HMLocationEvent • HMCharacteristicEvent • HMSignificantEventSunrise • HMSignificantEventSunset • "predicate" pour valider l’événement HMEventTrigger events predicate
  • 18. Home Kit Accessory Protocol (HAP) • communication avec les objets HomeKit • Bluetooth LE ou IP • échange crypté • bi directionnel • puce d’authentification MFi obligatoire • pour les objets connectés en IP : • Bonjour utilisé pour les découvrir sur le réseau • Mode passerelle disponible lorsque plusieurs objets sont connectés à un accessoire HomeKit • les mobiles sous iOS 9 n’ont plus besoin d’Apple TV pour avoir un accès distant • les objets communiquent directement avec iCloud
  • 19. Gestion des utilisateurs • l’utilisateur créateur de la maison est administrateur • ajout/suppression d’utilisateurs via leur Apple ID • droits restreints pour les invités: • identifier les accessoires • lire/écrire des données, être notifié des changements • exécuter des actions
  • 20. Synchronisation des données • une base HomeKit par maison • iCloud pour la synchronisation entre les mobiles des utilisateurs • les applications ne tournent pas en arrière plan
  • 21. Mise à jour des données • mode asynchrone pour prendre en compte le résultat • applications au premier plan : notification de mise à jour reçue • application en arrière plan : au lancement une notification invite à recharger toutes les données
  • 22. HomeKit Accessory Simulator • à installer en plus d’XCode • permet de simuler des objets ou des passerelles
  • 23. Freins au développement d’HomeKit • pour les développeurs : un système encore jeune • des fonctions manquantes • prix du ticket d’entrée élevé • pour les utilisateurs : l’écosystème Apple • dépendance à la certification MFi • pas d’accès en dehors des appareils iOS • dépendance au cloud • Obsolescence programmée
  • 24. Autres solutions de smart home
  • 25. Merci Julien Péraudeau / Cocoaheads -14/01/2016 Mon projet de smart home https://github.com/OS-Home/sources @OS_Home_Project