juin 26

Le détecteur de mouvement comme système d’alarme

Aujourd’hui un petit billet invité que l’on m’a proposé et le sujet étant intéressant, je vous le fais partager.

Les alarmes anti-intrusion sont devenues un équipement standard dans les magasins et entreprises, et elles sont de plus en plus courantes dans les maisons des particuliers. Si vous avez déjà cherché un dispositif de surveillance pour votre maison, vous saurez qu’il y a une grande variété d’options disponibles, comme les détecteurs d’ouverture et les systèmes de télésurveillance.

Pour détecter un intrus qui a déjà réussi à pénétrer dans une maison, le meilleur système est le détecteur de mouvement. Les détecteurs de mouvement basiques sont assez courants de nos jours. Vous en voyez sans doute tous les jours quand vous franchissez une porte qui s’ouvre automatiquement, par exemple. Il existe plusieurs sortes de détecteurs :

Système infrarouge passif. Photo par Jack LaRosa.

  • Les systèmes de sécurité les plus avancés incluent le détecteur infrarouge passif , qui perçoit l’énergie infrarouge émise par la chaleur d’un corps. Le capteur va détecter une augmentation importante de l’énergie infrarouge lorsqu’une personne entre dans son champ de vision. Comme l’énergie thermique dans une zone donnée est en constante fluctuation, les détecteurs sont conçus pour déclencher l’alarme seulement quand les niveaux de rayonnement infrarouge changent très rapidement. Pour qu’un capteur puisse détecter un être humain, vous devez le rendre sensible à la température du corps humain. Les humains ont une température de peau d’environ 33ºC et émettent de l’énergie infrarouge d’une longueur d’onde comprise entre 9 et 10 micromètres. Par conséquent, les capteurs sont généralement sensibles dans la gamme de 8 à 12 micromètres. Si vous êtes bricoleur, vous pouvez fabriquer votre propre détecteur avec Arduino, une résistance et un capteur infrarouge vendu par rs components.
  • Il existe un autre type de design plus simple, le capteur à cellule photo-électrique. C’est le genre de dispositif que vous pouvez voir dans un magasin ou en entrant chez le médecin. Au moment où une personne franchit la porte du magasin ou du bureau, le détecteur de mouvement émet une sonnerie ou une cloche pour avertir les employés. Lorsque ce genre de détecteur est utilisé comme alarme domestique, le faisceau est dirigé vers le détecteur de lumière, à travers un couloir ou passage à l’intérieur de votre maison. Quand quelqu’un se promène entre la source lumineuse et le capteur, le trajet du faisceau est brièvement bloqué. Le capteur enregistre une baisse du niveau d’éclairage et envoie un signal au boitier de commande.
  • Un système d’ouverture automatique de porte coulissante est un exemple de détecteur de mouvement basé sur un radar. Un boitier placé au-dessus de la porte émet des salves d’ondes radio (ou ondes ultrasonores), puis attend que l’énergie réfléchie rebondisse. S’il n’y a personne en face de la porte, l’énergie radio va rebondir de la même manière. Mais si quelqu’un pénètre dans la zone, le faisceau de réflexion est perturbé. Lorsque cela se produit, le capteur envoie un signal au boitier de commande et la porte s’ouvre. Dans un système de sécurité, le capteur envoie un signal d’alarme lorsque le faisceau de réflexion dans une pièce est perturbé.

Tous ces modèles de détecteurs de mouvement peuvent être utilisés conjointement dans une maison de manière à offrir une couverture complète. Dans un système d’alarme typique, le boîtier de commande ne déclenchera pas la sonnette d’alarme dès que les détecteurs de mouvement captent un changement. Il y a toujours un court délai pour donner le temps au propriétaire d’entrer un code de sécurité qui éteint le système.

Classé dans Non classé | 5 Commentaires
juin 19

Domotique, le choix d’une vulgarisation erronée

La semaine des examens du BAC commençant par ses fameuses épreuves de philosophie (matière qui offre des débouchés forts intéressants ), ce billet sera plus d’humeur que technique.

D’ailleurs, il semblerait que cette semaine soit source à réflexion ;)
Donc deux bonnes lectures a ajouter à votre escarcelle :

http://blog.domadoo.fr/index.php/domotique/1271-quest-ce-que-la-domotique
http://www.domotique-info.fr/2013/06/domotique-interoperabilite-m2m-api-socket-ip/

Nous le savons tous, la domotique c’est pour demain (oui, cela fait des années que c’est demain).
Heureusement, ce demain se dessine de plus en plus grâce tout d’abord à un engouement porté par des passionnés de plus en plus nombreux qui, magie du Nain Ternet aidant, le relaie sur des blogs et forums.
Par des médias qui commencent doucement à en parler sur des chaînes tout public, et surtout par des constructeurs/distributeurs qui se sont dit que le créneau pouvait être porteur et ont donc commencé a offrir des offres packagées permettant au tout venant de s’initier au bienfait de la domotique chez soi.

Tout cela est bien, on ne peut pas dire le contraire. L’idée fait son chemin dans la tête de plus en plus de personnes pour qui la domotique n’était qu’une vaste idée de geeks technophiles accros aux dernières nouveautés et pour lesquels le fait d’allumer une lampe avec son pc par une url dans son navigateur était aussi excitant qu’un ping vers un serveur externe à moins de 10ms.

Oui mais pour ce commun des mortels, pour qui un pc est sous windows et un accès à internet est une boite noire (ou blanche ou translucide, bref un tupperware qui prend la poussière sur une étagère) qu’on branche sur la prise du téléphone, la domotique reste un gadget et je le comprend.
Après tout, allumer la lampe du salon avec son smartphone, c’est très con. Si, si, je vous assure.

 

Alors pour vulgariser la domotique et la rendre attrayante auprès du grand public, les constructeurs/distributeurs ont décidé de mettre en oeuvre une stratégie mercantile apte à rentabiliser les heures passées par les équipes de R&D (Rapporte de l’argent et Démerde toi pour que cela ne me coûte rien).
Un environnement domotique comprend des équipements de confort (télécommande, prise commandée, sonde de température, douille commandée, volets roulants ou portails automatisés etc..) et des équipements de sécurité (détecteur de mouvement, d’ouverture, de fuite d’eau, de gaz ou de fumée ).

A partir de ce concept assez basique,  les chefs de projets/commerciaux se sont dit :
- « Comment qu’on va vendre ça a Mme Michu ? On va quand même pas lui dire qu’elle peut gérer les prises électriques de sa maison ! ».
- « Non mais attends Roger ! On va vendre ça comme une alarme apaschère !!! »
- « Génial Brandon ! Vendons leur ça ! »
Car oui, l’idée absolument géniale qui va révolutionner le monde et amener la domotique chez les gens, c’est de leur parler « sécurité » !
Après tout, c’est un constat évident, les français ont un sentiment d’insécurité et on nous le rabache sans cesse.

Pain béni pour ses constructeurs de solution domotique et des équipement de « sécurité » qui en font partie, le leitmotiv commercial devenu bien rodé qu’ils ont décidé de nous asséner est la possibilité justement de détecter et prévenir de toutes intrusions à domicile.
Que je te vende des caméras ip/wifi, des possibilités de visionner les flux sur son smartphone, d’être prévenu par SMS d’une intrusion chez moi et que sais-je encore, les solutions domotiques de nos chers constructeurs/fabricants se sont rapidement transformées en alarme à domicile, moins cher qu’une vrai alarme (après tout je m’en fous qu’elle soit neutralisable en quelques secondes ou ne résiste pas à un coup de marteau ou un évier rempli d’eau), elle est devenu la solution de protection de sa maison a moindre coût.

Le plus gênant, c’est que cette stratégie a plutôt bien marché puisque même certains constructeurs d’alarmes ont décider d’intégrer des possibilités de controle de prise électrique sur leurs solutions
Car peu de particulier disposent d’une alarme à domicile (étonnant non ?) et les fabricants d’alarmes qui ont difficilement réussi à promouvoir leur solution au sein des foyers se sont dit qu’ils avaient peut-être louper le coche, malgré les sommes engagées dans la certification de leur produits à des attaques de tout genre, non, ce qui semble intéresser le client lambda, c’est que son smartphone sonne quand quelqu’un rentre chez lui, au détriment de la résistance du produit d’alarme et de sa capacité à éloigner un intrus (ceux qui ont entendu la sirène d’alarme d’une blyssbox me comprendront…).
Et bien entendu, les assureurs suivent le pas tracé dans le sable du business.

Dans les forums ou discussions sur la domotique, c’est d’ailleurs l’une des premières préoccupations des « nouveaux » qui s’essayent à ce concept. Loin de privilégier une autre piste, les premières questions portent quasiment toujours sur les équipements de sécurité, les caméras et les sirènes.

La domotique se trouvent donc t-elle condamnée à être confiner comme une alarme low-cost au détriment de ses autres possibilités parce que le choix stratégique commercial des principaux constructeurs/fabricants est d’en promouvoir le côté sécuritaire ?
Peut-être, et c’est bien dommage, car c’est un mauvais choix et sûrement pas la meilleure façon de vulgariser la domotique, de la rendre attrayante et de lui rendre ce pour quoi elle est a été conçue.

 

Ne nous méprenons pas. Je ne dénigre aucunement les capacités de détections d’un équipement domotique et la facilité de sa mise en oeuvre pour être alerter d’une effraction chez soi.
Mais n’est-il pas particulièrement réducteur d’en faire le cheval de bataille de la domotique ?
Est-ce par cette voie (voix s’appliquant aussi ;) ) que l’on fera comprendre la domotique aux gens ?
Non. Définitivement non.

La domotique a plusieurs rôles qui sont complètement occultés par cette approche sécuritaire.

  • Un rôle d’économie d’énergie à son domicile.
    La gestion de son chauffage beaucoup plus finement que ne le ferait n’importe quel thermostat d’ambiance. La coupure automatique de lampes restaient sournoisement allumées après avoir quitter une pièce. L’extinction d’appareil électrique qui n’ont pas vocation a être alimenter en permanence (et par la même la sécurité électrique d’une, par exemple, cafetière laisser en marche…).
  • Un rôle d’information et de prise en compte des données de son domicile. Température de chaque pièce (et par la même d’une isolation peut être déficiente a un endroit). Consommmation d’eau (et détection d’une surconsommation signe d’une fuite discrète). Consommation énergétique (électricité, gaz, fioul) en temps quasi réel et la prise de conscience subjacente des postes de dépenses.
  • Une centralisation de ses multiples données  (senseurs, équipements et vêtements connectés…) qui permettront un stockage et une analyse fines de toutes ses informations pour une traitement « a posteriori » (http://www.cityzensciences.fr/ sera a suivre dans les mois qui viennent)
  • Une automatisation des habitudes qui peuvent naturellement être délégués à un système domotique, avec un soupçon de cognitivité qui pourrait vous surprendre.

Enfin, et surtout, la force de la domotique pour laquelle le discours ne se veut malheureusement pas assez convaincant : les scénarios.

Car la puissance de la domotique vient justement de l’interopérabilité entre tout ce qui « fait » notre vie à la maison. Le fameux IFTTT (If Then Then That (si ça, alors fait ça).

- « S’il y a du vent supérieur à telle vitesse alors ferme les volets »
- « S’il est plus de 23h et que je sors de ma chambre pour aller aux toilettes, allume la lumière du couloir et des wc qu’a 20% de sa puissance »
- « Si ma grand-mère, chez elle, n’a pas ouvert sa boite de médicaments au repas du midi et/ou qu’elle n’a pas allumer un équipement électrique/ouvert un tiroir/frigidaire/placard depuis plus de 3h, alerte moi »
- « Si je suis en vacances alors n’ouvre pas les volets automatiquement à 7h, ne met pas mon réveil en route et coupe mon téléphone jusqu’à ce que j’ouvre mon frigo »
- « S’il fait beau demain, fait moi penser à acheter du charbon de bois pour le barbecue et profites en pour regarder si 2-3 potes seraient partant pour passer manger une merguez autour d’un bon bordeaux dont, bien sûr, tu auras vérifier que sa vieillesse se sera dérouler correctement en supervisant la température, la luminosité et l’hygrométrie de ma cave a vin ».
Etc, etc…

Ce manque de communication sur la possibilité de ces scénarios, sur des exemples de mise en place, de démonstration dans la vie quotidienne est un manque cruel des capacités réelles et avérées de la domotique en 2013.

Cantonner la domotique a un simple rôle de sécurité est dégradant au vue des possibilités du concept.
Rendre abordable, facile, compréhensible la création et la gestion de divers scénarios devrait être aussi simple que la mise en place de 3 détecteurs de mouvements couplés à une alerte SMS que se targue de vendre nos chers constructeurs/distributeurs.

C’est à nous tous, utilisateurs, contributeurs, passionnés de domotique de relayer ses possibilités auprès du public et de ne pas laisser quelques entreprises commerciales vulgariser un concept qui n’est vraiment pas le bon.

A ce genre de jeu, certains s’étaient essayer avec succès dans les années 80/90 avant que les passionnés et vrais utilisateurs en reprennent le contrôle et clame haut et fort qu’un autre chemin était possible et sûrement le mieux. Cela s’appelait, les débuts de l’informatique.

Classé dans domotique | Taggé , , , | 14 Commentaires
mar 18

Monter votre Hubic dans un répertoire Linux

Un petit billet vite fait suite a l’avalanche de mails que j’ai reçu après mon tweet sur mon montage local de mon dépot Hubic.

Apparemment, cette technique semble très recherchée actuellement (surtout depuis l’abandon du support « non officiel » webdav de Hubic).

Donc je vais vous expliquer rapidement, comment monter votre dépôt Hubic sous Linux, et l’utiliser comme un simple répertoire local (synchro comprise).

Hubic utilise Open Stack, un projet opensource axé sur le « cloud computing ».

A ce titre on pourrait imaginer qu’il est totalement compatible avec les librairies OpenStack (comme Swift), mais en fait, pas vraiment…

Si, intrinsèquement, le client Swift fonctionne, OVH a rajouté une couche  supplémentaire d’authentification à base de token, et ça, c’est pas vraiment bien géré par Swift.

Heureusement, des confrères bloggeurs comme Vincent Giersch ou Toorop ont proposé des solutions pour s’authentifier sur Hubic via Swift.

Toorop propose même une passerelle de pré-authentification en libre service pour votre Hubic, mais dans notre cas, nous allons tout gérer en interne.

  • Gérer en interne la pré-authentification Hubic

Je me suis basé sur l’excellent travail de Toorop et son HubicSwiftGateway.

Télécharger les sources :

https://github.com/Toorop/HubicSwiftGateway

Décompresser le tout et copier l’intégralité du contenu du répertoire « www » dans un des répertoires de votre serveur web local (ah bah oui, je suppose quand même que vous avec un petit serveur web dans votre réseau interne… (et qui supporte php aussi…)
Un niveau au dessus, il vous faut créer un répertoire « cache » avec les droits 777 (je sais c’est crade… mais bon, ca reste du local)

Pour ma part, j’ai tout déposé dans le répertoire « hubic » et la gateway est donc accessible via http://lan.web/hubic (et donc le cache sur http://lan.web/cache)

Dès maintenant vous pouvez utiliser le client Swift officiel en ligne de commande (y’a que ça de vrai) grâce a un :

swift -A http://lan.web/hubic/ -U loginhubic -K motdepassehubic

Je vous conseille un petit « alias hubic= … » dans votre .bashrc ;)

et donc un « hubic list » vous donnera la liste de vos fichiers.

(ou swift -A http://lan.web/hubic/ -U loginhubic -K motdepassehubic list , si vous aimez taper au clavier)

bref, swift -h pour l’aide ou le site web :)

  • Installer cloudfuse

Michael Barton nous offre une petit bout de code bien sympa permettant de monter sous linux des stockages distants type Rackspace (et Swift également) via la bibliothèque FUSE.

Télécharger les sources de CloudFuse ici :

https://github.com/redbo/cloudfuse

Préparer les pré-requis sous notre nunux favori :
libcurl, libcurl-devel, fuse, fuse-devel, fuse-libs, libxml2 et libxml2-devel

Installation comme je les aime :

tar xvzf redbo-cloudfuse-809b07e.tar.gz
cd redbo-cloudfuse-809b07e
./configure
make
make install

Un petit fichier de config dans votre home directory (.cloudfuse) :

username=loginhubic
api_key=motdepassehubic
authurl=http://lan.web/hubic/
cache_timeout=20

Et voila, ne reste qu’a se mkdir un /mnt/hubic

et la commande magique… tadammm :

/usr/local/bin/cloudfuse /mnt/hubic/ -o noauto_cache,sync_read

(bon je vous laisse lire le man de cloudfuse si vous voulez peaufiner ;) )

Et voila, vous avez votre Hubic directement sous /mnt/hubic.
Créer ou supprimer un fichier et vous le retrouverez synchroniser avec vos autres clients Hubic officiels :D

Magique non ?

Amusez-vous bien ;)

Classé dans linux | Taggé , , , , | 57 Commentaires
mar 10

S.A.R.A.H. , Contrôler votre domotique autrement

Un retour à la domotique en attendant la suite de mon billet système qui me prend plus de temps de rédaction que prévu :p
Que voulez-vous, on se laisse aller à tester plein de trucs et le temps file plus vite que l’on ne le souhaiterait…

Aujourd’hui je vais vous présenter un projet dont vous avez sûrement entendu parler si vous côtoyez l’actualité domotique, S.A.R.A.H.

S.A.R.A.H. (Self Actuated Residential Automated Habitat) est un framework écrit en C# pour Windows, basé sur les API de reconnaissance vocale Speech API et le SDK de la Kinect de Microsoft.

Et la vous vous dites, le GuiguiAbloc, il a pété un câble, il parle de windows sur son blog et il met même des liens vers Micro$oft !!!

C’est pas faux…

J’avoue que j’ai trainé des pieds avant de tester le projet de Jean-Philippe Encausse à cause de ma révulsion envers celui dont on peut pas citer le nom, mais il faut bien se rendre à l’évidence, la reconnaissance vocale sous Linux, c’est une horreur.
A part des POCs a 2 balles ou des démos du M.I.T., je n’ai pour l’instant vu personne faire un(e) tuto/démonstration tout simple pour faire de la reconnaissance vocale sous mon OS fétiche (si toi aussi tu as essayer de te configurer Sphinx le soir au fond des bois, tu me comprendras…)

Bref, mes aversions mises de côté, il faut se rendre a l’évidence, ce Monsieur a fait un travail époustouflant.

Ca me réconcilierais presque avec Micro$oft (nan j’déconne).

S.A.R.A.H. permet de contrôler votre domotique par la voix, par les gestes, par la reconnaissance faciale (en cours), par des QR codes etc…
En gros, toutes les possibilités énormes de la Kinect sont exploitées pour interagir avec votre domotique et bonus, elle vous répond (bon d’accord ça fait une femme de plus a causer dans la maison, je vous l’accorde)

En gros, il suffit de dire « Sarah, allume la lumière du salon » et « Sarah, lis le film la Cambrioleuse » pour que xbmc lance votre film favori sous le doux éclairage de votre halogène.

Intéressant, non ?

Concernant l’architecture de S.A.R.AH., vous trouverez tout ce qu’il vous faut ici:

http://encausse.wordpress.com/s-a-r-a-h/s-a-r-a-h-architecture/

Je ne rentrerais pas dans les détail du projet, le site de l’auteur vous l’expliquera mieux que moi, vidéo à l’appui, mais je vais plutôt vous parlez de sa mise en oeuvre ainsi que de la création d’un plugin tout simple pour s’intercaler avec un webservice qui interrogera une base de données.

Car si j’ai une remarque à formuler, c’est le côté léger de la documentation pour l’installation et l’utilisation, surtout quand, comme moi, on n’a pas toucher un Windows depuis 1993…

Tout d’abord, il vous faut un windows, Seven de préférence.
J’ai personnellement installé un windows 7 32bits tout ce qu’il y a de plus basique, sans fioritures, sur un ordinateur portable avec 2Go de RAM (ce qui me permet de profiter du micro intégré).

Ensuite, les pré-requis (bien sûr, installer les versions x64 si vous êtes sous un windows en 64bits) :

- Le framework Microsoft .Net 4.5

- Le SDK Microsoft Speech Platform (j’ai installé la version 11)

- Le Speech Platform Runtime (version 11 également)

- Le pack de langue Française

- les runtime Kinect

En résumé, voici ce que j’ai d’installer pour faire tourner S.A.R.A.H.

 

Ensuite je vous conseille fortement de configurer la reconnaissance vocale de Windows 7  pour être sur que tout fonctionne correctement.

http://windows.microsoft.com/fr-fr/windows7/set-up-speech-recognition

Ne reste qu’a récupérer le programme S.AR.A.H

Dézipper le (j’ai tout mis dans c:\sarah).

- Installer la voix française « Virginie » inclus dans le répertoire README/ScanSoftTTS
(je vous conseille d’ailleurs de régler la voix de synthèse vocale dans les paramètres Windows http://windows.microsoft.com/fr-fr/windows7/setting-speech-options )

Puis lancer le WSRNode.bat

Si vous n’avez pas autant de plugins qui se lance, rassurez vous, cela s’installe après

Puis le WSRMicro.bat (si comme moi vous n’avez qu’un micro, sinon le WSRKinect.bat si vous avez la kinect).

L’icône d’une petite maison doit apparaître dans la barre des tâches et si vous faites un clic droit dessus, vous pouvez lancer « Sentinel » qui permet de visualiser en direct les logs du programmes.

A vous de jouer maintenant pour essayer S.A.R.A.H en testant le plugin « time » déjà inclus :

Dites « Sarah, quelle heure est-il ? » et elle devrait vous donner l’heure :D Magique non ?

Si cela ne fonctionne pas, regarder ce qui défile dans la console Sentinel, cela devrait vous aider a débugger. Sachez que le groupe de discussion est là pour vous aider :)

Maintenant que cela fonctionne, vous pouvez ajouter des plugins via l’interface web (http://127.0.0.1:8080), dans le « Store ».
Ces plugins s’installeront dans le répertoire « plugins » (dingue, non) et leur structure est toute simple.

Nous allons donc ensemble créer un plugin tout simple qui va me permettre d’interroger S.A.R.A.H pour connaître la température ou le degré d’hygrométrie dans une pièce de la maison.

Toutes les données de mes sondes de températures sont enregistrées dans une base MySQL grâce au client xpl-mysql-logger.
La structure de la table est toute simple :

mysql> desc sensor ;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| idx            | int(11)      | NO   | PRI | NULL    | auto_increment |
| curDate        | date         | YES  |     | NULL    |                |
| curTime        | time         | YES  |     | NULL    |                |
| sensorType     | varchar(10)  | YES  |     | NULL    |                |
| sensorLocation | varchar(255) | YES  |     | NULL    |                |
| sensorValue    | varchar(25)  | YES  |     | NULL    |                |
| sensorUnit     | varchar(25)  | YES  |     | NULL    |                |
+----------------+--------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

Pour interroger cette base de données, on va vite fait s’écrire un Webservice en python :

simplews.py

#!/usr/bin/env python
# Grouik coded by GuiguiAbloc
 
import web, MySQLdb
import re,socket,sys,os
web.config.debug = False
urls = (
'/', 'index',
'/temp/(.*)', 'temp'
)
 
render = web.template.render('templates/', globals={'re':re})
app = web.application(urls, globals())
 
class index:
def GET(self):
return web.HTTPError(403)
def POST(self):
return web.HTTPError(403)
 
class temp:
def GET(self,id):
db = web.database(dbn='mysql', user='sensor', pw='sensor', db='sensor')
todos = db.query("SELECT * from sensor where sensorType=$toto ORDER BY idx DESC limit 1", vars={ 'toto' : id})
for todo in todos:
return todo.sensorValue
 
if __name__ == '__main__':
app.run()

Ne reste qu’a le lancer en spécificant le port d’écoute:

python simplews.py 8085

et une simple requête http du type :

http://serveur;8085/temp/TempSalon interrogera la base de données et vous retournera la valeur associée à l’entrée TempSalon :

$ curl http://serveur:8085/temp/TempSalon
20.7
 
# python simplews.py 8085
http://0.0.0.0:8085/
192.168.0.10:58311 - - [10/Mar/2013 17:30:49] "HTTP/1.1 GET /temp/TempSalon" - 200 OK

Maintenant que nous avons un webservice, écrivons un petit plugin pour S.A.R.A.H.

Dans c:\sarah\plugins, nous allons créer le répertoire « temperature ».

Ce répertoire contiendra 3 fichiers :

temperature.prop (qui est le descriptif du plugin)

{
"modules" : {
"temperature":     {
"description": "Lit des infos provenant de la bdd",
"version"    : "0.1",
"api_url"    : "http://serveur:8085/temp"
}
}
}

temperature.js (qui est le script js qu’exécutera S.A.R.A.H)

exports.action = function(data, callback, config){
 
// Retrieve config
config = config.modules.temperature;
if (!config.api_url){
console.log("Missing temperature config");
return;
}
 
console.log("temperature config complete");
var periphId;
if (data.room == "salon") {
var place = "le salon";
if (data.type == "T") {
var mesure = "la température";
periphId = "TempSalon";
}
}
 
if (data.room == "dehors") {
var place = "le jardin";
if (data.type == "T") {
var mesure = "la température";
periphId = "TempExt";
}
if (data.type == "H") {
var mesure = "le taux d'humidité";
periphId = "HygroExt";
}
}
 
// Build URL
var url = config.api_url;
url += '/'+periphId;
 
console.log('URL:' + url);
 
// Send Request
var request = require('request');
request({ 'uri' : url }, function (err, response, body){
 
if (err || response.statusCode != 200) {
callback({'tts': "Désolé , je ne parviens pas récupérer  " + mesure + "dans " + place});
 
return;
}
// Callback with TTS
console.log("Page : " + body);
console.log(data.type + " : " +body);
var value = body;
callback({'tts': mesure + " est de " + value + data.unit + " dans " + place});
});
}

Et enfin, le temperature.xml qui configure les phrases sur lesquelles S.A.R.A.H. doit réagir :

<grammar version="1.0" xml:lang="fr-FR" mode="voice" root="ruletemperature" xmlns="http://www.w3.org/2001/06/grammar" tag-format="semantics/1.0">
  <rule id="ruletemperature" scope="public">
 
<example>Sarah combien fait-il dans le salon</example>
    <tag>out.action=new Object(); </tag>
    <item weight="2">Sarah</item>
    <one-of>
<item>Quelle est la temperature dans out.action.type="T"out.action.unit="degrés"
</tag></item>
<item>Quelle est la temperature out.action.type="T"out.action.unit="degrés"
</tag></item>
<item>Combien fait-il dans out.action.type="T"out.action.unit="degrés"
</tag></item>
<item>Combien fait-il out.action.type="T"out.action.unit="degrés"
</tag></item>
<item>Quel est le taux d'humidité out.action.type="H"out.action.unit="pourcents"
</tag></item>
<item>Quelle est l'humidité out.action.type="H"out.action.unit="pourcents"
</tag></item>
<item>Quelle est l'hygrométrie out.action.type="H"out.action.unit="pourcents"
</tag></item>
 
</one-of>
    <one-of>
 
<item>le salonout.action.room="salon"
</tag></item>
<item>dehorsout.action.room="dehors"
</tag></item>
</one-of>
<tag>out.action._attributes.tts="Je regarde tout de suite";
</tag>
<tag>out.action._attributes.uri="http://127.0.0.1:8080/sarah/temperature";
</tag>
</rule>
</grammar>

Vraiment tout simple non ?

Pour vous donner un aperçu de ce que cela donne, je vous colle une petite vidéo vite faite :)


Démonstration S.A.R.A.H. par Guiguiabloc

Bref un excellent projet, qui fonctionne parfaitement et je compte continuer mes expérimentations avec une Kinect, histoire de voir ce que cela donne :D

Amusez-vous bien :D

Classé dans domotique | Taggé , | 13 Commentaires