25
Introduction à HomeKit Cocoaheads 14/01/2016 Julien Péraudeau @Juli3n_P

Découverte de HomeKit

Embed Size (px)

Citation preview

Introduction à HomeKitCocoaheads 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 SiriAccessories

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