S.A.R.A.H.
L’objectif du Projet S.A.R.A.H est d’avoir une maison intelligente connectée àl’internet des objets un peu dans l’esprit de la série TV Eureka.
Le principe est de déclencher des requêtes HTTP via:
- la reconnaissance vocale de phrases exprimées en XML
- la reconnaissance de gestes exprimés en XML
- la reconnaissance faciale (machine puissante !)
- une planification Google Calendar
- la reconnaissance de QRCodes
- des scripts joués périodiquements, …
Ces requêtes HTTP déclenchent des scripts NodeJS pour interagir avec les boîtiers domotiques, le karotz ou simplement aller chercher de l’information sur internet (scraping): horaires de cinéma, météo, horaires de bus, …
ParisWeb 2013
Le framework
La configuration de ces actions est simple (XML et JavaScript) et modulaire (plugins).
Communauté
Démonstration:
- S.A.R.A.H et la domotique
- S.A.R.A.H et XBMC
Architecture
Une description complète de l’architecture se trouve sur cette page.
- Un programme C#
- Ecoute des phrases/gestes/qrcode (grammaires XML).
- Envoie une requête HTTP
- Vocalise la réponse HTTP
- Un programme NodeJS
- Reçoit une requêtes HTTP qui exécute un script associé
- pour scraper de l’information sur internet (avec PhantomJS)
- ou simplement exécuter des programmes
- Exécute périodiquement des scripts (CRON)
- Qui peuvent déclencher des requêtes HTTP
- Reçoit une requêtes HTTP qui exécute un script associé
Interface web
SARAH est accessible depuis une interface web (HTML5, CSS3, Bootstrap, Responsive…).
Le portail permet d’avoir une vue d’ensemble des plugins installés. C’est un moyen simple pour véhiculer de l’information ou de la documentation.
Les plugins installés sont automatiquement configurables depuis le tableau de bord de la page d’accueil. Les données sont ensuite stockées au format JSON dans le fichier custom.prop.
Planification d’actions
Depuis la version 1.9, en plus de la vocalisation, les évènements de calendrier peuvent déclencher des scripts. Cela permet de profiter de toute la souplesse de Google Calandar: IHM, Périodicité, Collaboration, Planification, …
Google
Calendar étant un des channels de IFTTT, cela permet d’avoir un pont entre les actions qui se déroulent en ligne et les objets de la maison.
Bibliothèque d’applications
Depuis la version 2.2, l’interface web propose une bibliothèque d’application contenant de nombreux plugins pour SARAH:
Karotz, Freebox, Météo, Dictionnaire, … ou Domotiques (Eedomus, Vera, Zibase, …)
Il est possible d’installer ces plugins, hébergés en ligne (dans ma DropBox), directement depuis le store. Les plugins sont téléchargés puis décompressés dans l’application.
Voici un tutorial décrivant toutes les étapes de création d’un plugin XBMC.
Moteur de règles
Depuis la version 2.3, il est possible de définir des règles pour enchaîner les scripts de la même manière que les services en ligne comme IFTTT ou Zapier.
Par exemple: quand la météo se déclenche, si je ne suis pas présent, faire une notification Push sur l’iPhone et envoyer un mail plutôt que de vocaliser le message dans une pièce vide.
L’idée est de faire le pont entre les services de la maison (internet des objets) et les services en ligne (de IFTTT)
Reconnaissance gestuelle
Utilisé avec un Kinect, SARAH permet de faire de la reconnaissance gestuelle pour déclencher des scripts. la grammaire de geste est décrite en XML.
Le plugin gesture propose plusieurs geste prédéfinis à brancher directement via le moteur de règles à d’autres scripts
Reconnaissance de QRCodes
Utilisé avec un Kinect, SARAH permet de faire de la reconnaissance de QRCode pour déclencher des scripts. Le plugin Loups garous de Thiercelieu en est un très bon exemple.
Les QRCodes sont gratuits et ont l’avantage de pouvoir encapsuler n’importe quelle URL.
Reconnaissance Faciale
La version 2.6 embarque la librairie OpenCV afin, dans une premier temps, de faire de la détection et reconnaissance faciale.
Quand la reconnaissance est activée, une requête est envoyée à NodeJS chaque fois (min 5s) que le visage est détecté.
Serveur WebSocket
Depuis la version 2.7, le serveur websocket a été modifié pour streamer des images jpg ou png en mode fond vert.
En jouant avec les styles CSS3 il est alors très simple de construire un hologramme.
Leave a Reply