Et bien voila, joli délai depuis mon dernier post, un rythme effréné de 1 article tous les 6 mois c’est impressionnant non ? Non… ok.

En ce tout début d’année, je me suis intéressé de plus près à mettre en place une IHM de contrôle pour mon installation domotique. Je vais donc partager le début de mes réflexions.


Les contraintes pour réaliser ce que je voulais :

(pour rappel chez moi c’est des technos low cost type Chacon/HomeEasy, et c’est du xPL pour les interfaces)

  • Pas envie de dépenser des centaines d’euros dans une station de contrôle domotique type Crestron ou les écrans HomeSeer : j’ai déjà suffisamment de gadgets qui trainent… autant les utiliser !
  • Évidemment, pas envie d’acheter de software ni de licence
  • Pas envie (enfin… surtout pas le temps en fait) d’apprendre à fond un nouveau langage de programmation, un nouvel environnement non connu (genre Objective C et XCode pour ne pas les nommer ;) )
  • Je veux du pratique, du « à portée de main », du tactile, et quelque chose d’un minimum joli et réactif (oui hein on est en 2011, c’est fini le minitel)


Les opportunités et autres réflexions :

  • Un des rares trucs que j’aie fait sur mon installation est de tout passer en xPL (Cf mes précédents articles sur le sujet). Du coup, pas de code compliqué à faire pour discuter avec les interfaces domotique (RFXCOM, TellStick, CM15, etc..)
  • A moins que vous ayez été isolé du monde durant les précédents mois, ça ne vous aura pas échappé : l’essor des appareils mobiles : iPhone et smartphones Android  évidemment, mais aussi la déferlante de tablettes tactiles qui arrivent sur le marché. Perso de ce côté là je suis équipé en Apple (iPhone et iPad) : je veux donc quelque chose qui me permette de contrôler mon installation au moins depuis ces deux appareils
  • En prévision de cette problématique, j’avais réalisé en perl (avec les librairies xpl-perl comme d’hab) un petit programme de contrôle domotique qui tourne sur mon réseau xPL, et qui expose une API Web à la REST (très simple pour le moment) pour permettre de commander et de récupérer le status des modules et capteurs de mon installation : Je peux donc contrôler mon installation à coup de requêtes Web simples : il ne reste plus qu’à faire un joli frontend (‘ya pu k’à’ comme dirait l’autre ;) )


Choix de la techno :

Deux possibilités : une webapp ou une vraie application mobile. Le titre de l’article vous a mis sur la voie : j’ai choisi la Webapp pour plusieurs raisons :

  • Rapidité de développement : pas envie de passer trop de temps à refaire de l’Objective-C sous XCode ou à apprendre à coder pour Android
  • Portabilité : une webapp n’est rien d’autre qu’un site web qui ressemble à une application. Du coup une webapp est potentiellement utilisable sur n’importe quel device équipé d’un navigateur Web récent. C’est particulièrement important pour moi qui n’aie pas envie de m’enfermer sur une marque. (A titre d’exemple, on commence à trouver des tablettes Android low cost qui feraient potentiellement de bons écrans de contrôle tactiles, beaucoup moins chez qu’un iPad).

Choix du Framework :

Décision est prise de faire une Webapp. Pour faciliter le développement (et aussi parce-que je suis une feignasse),  l’idée est bien entendu d’utiliser un Framework dédié aux Webapps. Je vous laisse googler, il y en a plusieurs, iWebKit, JQTouch, iUI, etc… Mon choix (en espérant qu’il soit bon) s’est porté sur le framework Sencha Touch.

Sencha Touch est un framework javascript spécifiquement fait pour les applications mobiles tactiles. Il est une excroissance de Ext JS pour ceux qui connaissent, un autre framework javascript bien connu depuis un moment. Il utilise les technos Javascript, HTML5 et CSS3, et est à ce titre compatible avec les appareils sous iOS ET avec ceux sous Android. Il est plus généralement compatible avec les navigateurs WebKit. En ce qui concerne les navigateurs pour ordinateurs classiques, c’est vers Safari ou vers Chrome qu’il faudra se tourner pour tester les développements réalisés sur un PC ou un Mac.

Last but not least, Sencha Touch dispose d’une licence open-source.


Mes impressions :

Étant plus à placer dans la catégorie des développeurs du dimanche, j’ai eu un peu de mal à me mettre dans la logique du framework Sencha Touch; c’est un peu particulier, mais rien d’insurmontable quand on suit les nombreux exemples qu’on trouve sur le net.

Comme je le mentionnait plus haut, avoir toutes les infos liées à mon installation à disposition dans une API Web REST a été d’une grande aide => ça permet de vraiment se concentrer sur la partie UserInterface et de ne pas s’embetter avec les détails d’implémentation de la partie domotique à proprement parler.


Ce que ça donne maintenant :

Attention hein, interdit de se moquer : c’est loin d’être fini :p. Mon premier objectif était de faire un écran général pour visualiser les infos principales et contrôler mes modules domotiques. Voici ce que ça donne :

Sur iPhone :


Sur iPad :


Pour la suite :

Ca reste très succinct pour le moment. Plein de choses à y ajouter, dans le désordre ce qui me vient à l’esprit :

  • l’accès aux graphes pour les données environnementales
  • l’accès à des macros, voire à des screnarii
  • le contrôle multimédia : multiroom (squeezebox soft), media center (XBMC)
  • une section pour tout ce qui est sécurité (détecteurs d’ouverture, videosurveillance, etc…)

On verra ce que je peux faire avancer en fonction du temps (ou plutot du manque de temps ;) ). Autre point intéressant avec une Webapp qui accède à toutes ses données via une API Web en REST, c’est que peut être si un jour j’utilise un autre soft (Domogik ? ;) ) je pourrai, à moindre frais, le plugger dessus…