Maison connectée
Votre maison a des choses à vous dire.
Piloter un robot aspirateur Neato XV avec un système domotique
Les robots aspirateurs de la série Neato XV ainsi que leurs successeurs Botvac, de l’américain Neato Robotics, sont pour moi les meilleurs robots aspirateurs du marché. Pourquoi ? Après avoir essayé de nombreux modèles, ils me paraissent les plus intelligents et les plus performants. Les plus intelligents, car ils sont capables de naviguer sur de grandes surfaces de façon totalement autonome, sans nécessité d’utiliser des balises pour leur indiquer les différentes pièces. Ils fonctionnent également parfaitement dans le noir (contrairement aux modèles équipés de caméras pour la cartographie). Les plus performants, car ils proposent une des puissances d’aspiration les plus élevées.
Ce robot est donc idéal. MAIS, car évidemment il n’est pas parfait, il présente un sacré point noir : il n’offre pas de télécommande (concernant la série XV bien entendu, les Botvac ayant maintenant leur version Connected).
Télécommande, appplication mobile ou API… Peu importe, vous aurez compris que ce qui manque, c’est un moyen de l’intégrer à votre système domotique.
Pour quoi faire ? L’idée n’est bien entendu pas de piloter le robot depuis votre canapé, ce qui n’a aucun intérêt à part divertir votre chat, mais de pouvoir utiliser l’intelligence de la maison pour optimiser le travail de l’aspirateur. L’avantage du robot, c’est qu’il peut travailler seul lorsque la maison est inoccupée. C’est d’ailleurs préférable pour ne pas le gêner mais aussi pour ne pas être dérangé par la bruit de la machine.
Comment télécommander le Neato XV ?
Afin d’intégrer mon XV-Signature à ma domotique qui repose sur une box eedomus, j’ai opté pour des micro-émetteur et micro-récepteur relais 433MHz.
Pas question d’objet connecté dans cette solution : on donne dans l’artisanal. Attention donc à l’électricité, aux courts-circuits tout ça tout ça… Je ne saurais être tenu pour responsable de quoi que ce soit !
Il faut bien veiller à ce que les émetteur et récepteur fonctionnent dans les plages de tensions que vous avez à disposition :
– 3 ou 5v côté eedomus
– 7,2v côté Neato
Pas de souci pour ceux-là, ils acceptent des plages de tensions de 3,5 à 12v.
On a donc un émetteur qui transmet un signal lorsqu’il est alimenté et un récepteur qui ferme un relais le temps du signal. Elémentaire !
Pour pouvoir démarrer un cycle d’aspiration, on va simuler l’appui sur le bouton Neato en reproduisant le contact fermé.
Installation du récepteur
On va tout d’abord installer le récepteur à bord du robot. Ouvrez votre Neato, je passe sur les détails du démontage…
Repérez les pattes de l’interrupteur situé sous le gros bouton Neato. Avec un multimètre, vérifiez à quelles pattes correspond le contact fermé et soudez-y deux fils d’une vingtaine de centimètres.
Avant de ré-assembler les deux faces, percez un trou dans le compartiment arrière pour y passer les fils.
Vous pouvez ensuite raccourcir les deux fils du contact sec et les souder sur le récepteur. Coupez les fils de façon à pouvoir ranger proprement votre récepteur dans le compartiment arrière (celui fermé avec la grille plastique).
Remplacez alors les deux fils d’alimentation par une paire plus longue et percez des ptits trous par-ci par-là (je vous avais prévenu qu’on était plus proche de la maçonnerie que de l’informatique) pour passer vos câbles d’alimentation jusqu’à l’une des batteries où vous viendrez récupérer du 7,2v comme un cochon (vous pouvez aussi le récupérer à l’intérieur du robot pour souder ça proprement mais j’avais une grosse flemme).
Bouchez les trous avec un petit point de colle pour éviter les appels d’air du moteur d’aspiration.
Pensez à isoler tout le récepteur des deux contacts métalliques qui servent à la recharge (dans une gaine thermorétractable par exemple).
Refermez tout le bazar et passons à la partie émetteur !
Installation de l’émetteur
L’émetteur fonctionne très simplement puisqu’il émet son signal dès lors qu’il est alimenté. Dans mon cas, la maison est gérée par une eedomus. On va donc utiliser une des 4 sorties RJ12 de la box. Elles serviront enfin à quelque chose !
Reportez-vous à la doc pour comprendre le câblage :
- négatif sur le pin A6
- positif sur le pin A1
Vous pouvez réutiliser une vieille rallonge téléphonique en gardant la prise RJ12 à une extrémité.
Configuration sur la box eedomus
Créez un nouveau périphérique « Sortie 0-3-5v » :
Et configurez-le ainsi :
Vous pouvez ensuite mettre en place une petite macro qui alimente l’émetteur deux fois de suite à 3 secondes d’intervalle pour lancer le cycle d’aspiration (vous devez normalement appuyer 2 fois sur le bouton).
Et voilà un objet de plus à ajouter à l’intelligence de votre maison !
Sources images : Neato Robotics, eedomus, milillicuti
LireDomotiser un chauffe-eau
Pourquoi piloter un chauffe-eau ?
La réponse n’est pas si évidente. Effectivement, les chauffe-eaux récents sont suffisamment isothermes et leur thermostat relativement efficace, même pour des ballons standards. Deux éléments de réponse :
- pour faire des économies d’€nergie : pouvoir suivre les horaires des heures creuses si jamais votre ballon ou compteur n’est pas pourvu d’un relais Heures Pleines/Heures Creuses, mais aussi et surtout couper votre ballon pendant une absence prolongée
- pour améliorer votre confort : avoir de l’eau chaude à votre retour de vacances, décaler la période de chauffe par rapport aux HC EDF, suivre les plages de votre abonnement Tempo …
Avertissement : cet article ainsi que son schéma sont présentés à titre indicatif. Je ne pourrai être tenu pour responsable d’un quelconque sinistre et toute intervention sur votre réseau électrique doit évidemment être effectuée par un professionnel.
Cela étant dit, nous allons voir comment domotiser un ballon d’eau chaude sanitaire.
Comment domotiser votre ballon d’eau chaude ?
Nous allons voir ici comment piloter un ballon ET récupérer le signal HP/HC EDF dans le cas où vous ne disposez pas de la téléinfo. Evidemment vous pourrez faire l’un sans l’autre.
Voici le matériel nécessaire, une partie (voir peut-être même presque tout) se trouve déjà dans votre tableau électrique :
- un module Fibaro double switch FGS-221 (ou 222)
- un contacteur Jour/Nuit
- un disjoncteur 2A
Voici le schéma d’installation :
Le signal HP/HC envoyé par EDF est en fait un simple relais sous le compteur. Lorsque le circuit est fermé (EDF a envoyé le signal Heures Creuses), le courant passe dans le circuit et alimente alors le contacteur J/N, qui lui alimente alors le chauffe-eau.
Lorsque le circuit est ouvert, le contacteur J/N n’est plus alimenté et coupe alors l’alimentation du chauffe-eau.
- le chauffe-eau est alimenté par le disjoncteur 20A qui passe par le contacteur J/N
- le contacteur J/N est alimenté par le circuit qui part du disjoncteur 2A et passe par le relais HP/HC EDF
Dans le cas de cette installation, le module Fibaro FGS-221 est intercalé entre les deux : c’est lui qui reçoit l’information circuit HP/HC ouvert/fermé (comme s’il s’agissait d’un interrupteur) sur son entrée 1 (S1) et c’est lui qui pilote le contacteur J/N à partir de son relais 2 (O2).
Voici ce que ça donne sur mon eedomus, mais le fonctionnement est le même pour n’importe quelle box :
Ensuite vous mettez en place vos règles/scènes/scénarios en fonction de vos critères.
Chez moi, le ballon chauffe à partir de 1h30 du matin SI on est en heures creuses ET SI la maison est occupée.
Avec cette installation, vous gardez la possibilité de forcer la chauffe du ballon à partir du contacteur J/N et vous la gagnez à partir de votre système domotique. Ca tourne chez moi sans aucun souci depuis plusieurs années maintenant : mon contacteur J/N ne me dérange plus (il est presque dans mon salon et très bruyant…) et j’ai toujours de l’eau chaude en rentrant de vacances !
Crédit photo de couverture : ©2happy
LireRM Bridge : une API pour la passerelle IR/RF wifi Broadlink RM-Pro ?
Vous connaissez peut-être la passerelle IR/RF Wifi RM2 ou RM-Pro de nos amis chinois de chez Broadlink.
Pour rappel : ce petit boitier vous permet de piloter des équipements infrarouges (TV, ampli…) ou radio-fréquences (prises télécommandées…) à partir de votre smartphone.
Le fonctionnement est simple : vous lui apprenez les codes de chaque commande à partir de la télécommande originale et le RM-Pro est capable de la reproduire.
Ce n’est pas le seul me direz vous. Entre les Kira 128, Global Cache et autres projets DIY, il y a de quoi faire. Oui, mais le RM-Pro est vendu aux alentours de 35-40€ (vous pouvez maintenant jeter un coup d’œil à son concurrent direct Orvibo, plus ouvert mais qui ne propose pas l’apprentissage RF).
Alors comment intégrer cet outil à notre domotique ? C’est quasiment impossible. Quasiment, à part pour deux hargneux à qui l’ont doit un grand merci : Fabien Lefebvre et Jochen Ruehl (le créateur de PAW Server).
Ces deux-là ont réussi l’impossible : décrypter le SDK hyper fermé de Broadlink et les convaincre d’accepter qu’un outil tierce soit créé pour piloter leur produit.
Ils ont créé RM Bridge. Merci !
Update : Nouvelle version RM Bridge v1.2.0
La nouvelle version RM Bridge permet maintenant de se passer, si besoin, de l’outil Windows et ne nécessite maintenant qu’un device sous Android !
Téléchargez l’app RM-Bridge sur Google Play. Installez-la sur votre device Android. Mémorisez l’adresse IP de celui-ci (que vous aurez fixée auparavant) ainsi que le port utilisé.
Rendez-vous ensuite directement ici, sur le site de Jochen, pour configurer vos différents devices IR ou RF grâce à l’outil qu’il a conçu.
Vous pouvez ensuite utiliser très simplement des requêtes http du type :
http://IP-PASSERELLE:PORT/code/NOM-DE-LA-COMMANDE-ENREGISTREE
Fonctionnement (version utilisant l’outil Windows RM Commander Tool)
La mise en place n’est pas si simple et on ne peut pas à proprement parler d’une API toute faite, Broadlink s’y refusant et le SDK Android étant obligatoire pour communiquer avec le RM-Pro.
Fabien et Jochen ont donc du concevoir un bridge pour faire le lien avec la passerelle RM-Pro : RM Bridge. Le fonctionnement est le suivant :
script > RM Bridge > RM-Pro > appareil IR ou RF
Mise en place
Pour communiquer avec le RM-Pro vous aurez besoin de :
- un appareil sous Android pour faire tourner l’application RM Bridge (un smartphone, une box TV…)
- un PC sous windows pour faire tourner l’outil RM Commander Builder Tools qui permettra d’apprendre les codes IR et RF de vos appareils
- n’oubliez pas que tous ce petit monde doit se trouver sur le même réseau !
1- Installation de la passerelle RM Bridge
Rendez-vous sur le site créé par Fabien pour présenter RM Bridge : domo-assist.
Suivez le lien vers la page Google Play RM Bridge et installez l’application. N’oubliez pas de lancer le serveur une fois l’installation terminée.
2- Installation de RM Commander Builder Tools
RM Commander Builder Tools est l’outil développé par Fabien pour vous permettre de récupérer les codes IR et RF de vos télécommandes.
Il utilise Curl : commencez donc par l’installer si vous ne l’avez pas déjà en téléchargeant la bonne version ici.
Veillez à installer Curl à la racine c:/curl/ de votre disque dur sinon RM Commander Builder Tools ne le retrouvera pas.
Pour ma part, j’ai également été obligé de copier les fichier présents dans le dossier c:/curl/bin/ à la racine c:/curl/ sinonRM Commander Builder Tools ne les trouvait pas.
Ensuite télécharger le programme RM Commander Builder Tools sur le site domo-assist et installez-le.
Configurez l’adresse IP + port de votre RM Bridge.
Puis suivez les instructions pour enregistrer vos premiers codes. Ceux-ci seront toujours stockés sous forme de fichiers .cbe dans le dossier c:/coder/codes/ .
3- Utilisation du RM-Pro avec un script via le Android RM Bridge
Nous arrivons enfin à la partie qui nous intéresse : intégrer le RM Bridge et le RM-Pro à un système domotique. Pour ma part et pour cet article j’utilise Jeedom, mais vous trouverez sur le site domo-assist les utilisations Linux et DOS.
Alors comment ça marche ?
Jeedom va exécuter un script qui utilisera plusieurs fichiers, dont les codes que vous avez créés, pour envoyer une commande au bridge qui la traduira pour le RM-Pro qui pilotera votre appareil. Je vous ai perdu ? Ne vous inquiétez pas, dans les faits l’exécution de la commande est très rapide !
Récupérez les fichiers nécessaires
Vous devez récupérer ces éléments dans le dossier c:/coder/ et les transférer dans le dossier de votre choix sur votre Jeedom :
- ini.d2l
- choice.d2l
- tout le contenu du dossier c:/coder/codes/
Vous devez maintenant créer le script qui permettra de communiquer avec le RM Bridge.
Créez donc le nouveau script sendir.sh avec pour contenu :
!/bin/sh echo $1 echo $2 echo $3 curl -H "Content-Type: application/json" -X POST -d @$1init.d2l $3 curl -H "Content-Type: application/json" -X POST -d @$1choice.d2l $3 curl -H "Content-Type: application/json" -X POST -d @$1$2 $3
Vous devez maintenant insérer la bonne requête pour indiquer à Jeedom quoi exécuter et comment. Elle est du type :
/usr/share/nginx/www/jeedom/plugins/script/core/ressources/sendir.sh /usr/share/nginx/www/jeedom/plugins/script/core/ressources/ denonoff.cbe http://xxx.xxx.xxx.xxx:xxxx
La première partie correspond à l’emplacement du script sendir.sh :
/usr/share/nginx/www/jeedom/plugins/script/core/ressources/sendir.sh
La deuxième partie correspond à l’emplacement des vos fichiers de codes IR ou RF :
/usr/share/nginx/www/jeedom/plugins/script/core/ressources/
La troisième partie correspond au nom du fichier de code IR ou RF à lire :
denonoff.cbe
Et la quatrième partie correspond à l’adresse IP + port du serveur RM Bridge (affichée sur l’application).
Attention à bien ajouter un espace entre chaque partie !! (c.f. la requête complète ci-dessus)
Il ne vous reste plus qu’à créer autant de commandes que vous avez de codes différents.
Done! Vous voilà avec un Jeedom (ou plus largement un système domotique) qui cause IR et RF pour 40€ et un peu d’huile de coude !
Si vous avez des questions sur le sujet, Fabien a mis en place un forum dédié.
Un très grand merci à Fabien et à Jochen pour leur travail formidable !
Lire
Raspberry Pi et SMS
Raspberry Pi : une passerelle pour envoyer des SMS, recevoir des SMS et déclencher des actions.
Toutes nos boxes sont capables, nativement ou grâce à différents scripts, d’envoyer des notifications. Cette fonction nécessite cependant une connexion internet active. Certaines box (je pense notamment à l’eedomus) permettent même nativement l’envoi de SMS. Mais, même problème : si la connexion internet est coupée, aucun moyen d’informer le serveur qu’il doit envoyer un SMS !
Voici donc la problématique : comment permettre à votre box domotique d’envoyer des notifications par SMS sans connexion internet ?
Mais aussi comment piloter votre installation domotique à partir de SMS si la connexion internet est coupée ?
Ca ira pour cette fois, je vous sauve gratos.
Mise à jour : puisque vous êtes équipé d’un Raspberry Pi et d’un dongle GSM, la solution la plus simple est d’utiliser la solution JEEDOM (+ plugin SMS) développée par les deux petits frenchies Loïc et Mathieu.
Prérequis
Nous avons donc besoin :
- d’un Raspberry Pi avec n’importe quelle distribution fonctionnelle (testé avec Raspbian et Squeezeplug) et évidemment configuré en IP fixe (ou IP fixée sur votre routeur grâce à l’adresse MAC, bien plus simple …)
- d’un serveur web avec PHP
- d’un dongle GSM désimlocké (testé avec une clé 3G Huawei E220)
- d’une carte SIM avec un crédit de SMS, code PIN désactivé pour faciliter les choses (mais vous pourrez toujours le spécifier dans la configuration)
- d’un peu d’huile de coude car pour l’instant toute l’installation doit se faire à la mano
Connectez votre dongle et démarrez votre bouzin…
Ouvrez une fenêtre terminal (sur mac) ou putty (sur pc). Quasiment tout se passe en lignes de commandes.
Loggez-vous en root (ou alors utilisez la commande sudo). Mettez à jour tous vos paquets puis installez gammu et son daemon gammu-smsd :
# apt-get update
# apt-get install gammu
# apt-get install gammu-smsd
Si vous n’avez pas installé de serveur web, c’est le moment :
# apt-get install lighttpd
Puis installez PHP :
# apt-get install php5-common php5-cgi php5
Puis expliquez à votre serveur d’utiliser PHP avec la commande :
# lighty-enable-mod fastcgi-php
Rechargez votre serveur web pour qu’il prenne en compte les nouveaux paramètres :
# service lighttpd force-reload
Envoyer des SMS
Avant tout il faut configurer gammu pour qu’il puisse utiliser votre dongle GSM.
Tapez dsmeg pour savoir sur quel port est connectée votre clé 3G et gardez le bien en mémoire. Il sera normalement du type ttyUSB0, ttyUSB1…
# dmesg
Editez le fichier /etc/gammu-smsdrc et dans la partie [gammu] renseignez le port que vous avez retenu tout à l’heure.
Voici l’exemple de mon fichier :
[gammu]
# Please configure this!
port = /dev/ttyUSB0
connection = at19200
# Debugging
# logformat = textall
Comme je suis une grosse quiche sur vi (l’éditeur en ligne de commandes), j’édite mes fichiers avec WinSCP. Si vous avez une méthode plus simple, n’hésitez pas à la proposer dans les commentaires et je mettrai l’article à jour.
Vous pouvez aussi ajouter votre code PIN si vous ne l’avez pas désactivé en ajoutant :
pin = XXXX
N’oubliez pas de démarrer le daemon :
# service gammu-smsd start
Vous pouvez déjà tester l’envoi de SMS avec la commande :
gammu-smsd-inject TEXT NUMERO -text "MESSAGE"
Maintenant, comment faire pour que votre box (ou autre) puisse utiliser votre Raspberry pour envoyer des SMS à partir d’une simple URL ?
Créez le fichier sendsms.php et placez-le sur votre serveur web.
<?php
$numero = $_GET['numero'];
$texte = $_GET['texte'];
echo `sudo gammu-smsd-inject TEXT '$numero' -text '$texte'`;
?>
Vous devez maintenant autoriser votre serveur web à exécuter le script gammu-smsd-inject en éditant le fichier sudoers.
Pour cela, tapez
visudo
et ajoutez à la fin
www-data ALL=(ALL) NOPASSWD: /usr/bin/gammu-smsd-inject
Ça y est, vous pouvez envoyer des SMS à partir de l’URL (en vérifiant bien le chemin vers votre fichier sendsms.php) :
http://IP-RASPBERRY/sendsms.php?numero=06xxxxxxxx&texte=votremessage
Recevoir un SMS et lancer une action avec une URL
Pour déclencher une action à la réception d’un SMS, nous allons utiliser la fonction runonreceive. Celle-ci lancera, à la réception d’un SMS, le script que vous allez spécifier dans la configuration du daemon.
Dans mon exemple, le script récupère le texte du SMS pour l’inscrire, grâce à l’API eedomus, dans un état virtuel.
Exemple : j’envoie le SMS « alarme on ». L’état virtuel de ma box prend donc la valeur « alarme on ». Dans le moteur de règles je programme l’action à lancer à partir de cet état etc.
Tout d’abord, créez le fichier script receivesms.sh et uploadez-le où vous voulez. N’oubliez-pas de vérifier que tous les utilisateurs aient bien tous les droits sur ce script.
#!/bin/sh
PROGRAM=/bin/echo
for i in `seq $SMS_MESSAGES` ; do
wget O q t 1 "http://IPEEDOMUS/api/set? action=periph.value&periph_id= XXXXX&api_user=XXX&api_secret= XXX&value=$SMS_1_TEXT" >/dev/null 2>&1
deleteallsms /var/spool/gammu/inbox/
done
Pour une question de sécurité, le script supprime automatiquement tous les SMS reçus.
Maintenant, configurez le daemon pour qu’il lance le script receivesms.sh à la réception d’un SMS en ajoutant à la fin du fichier /etc/gammu-smsdrc :
runonreceive = /dossieroùsetrouvevotrescript/ receivesms.sh
Voici l’exemple de mon fichier gammu-smsdrc complet :
# Configuration file for Gammu SMS Daemon
# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB0
connection = at19200
# Debugging
#logformat = textall
# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = files
logfile = syslog
runonreceive = /var/www/receivesms.sh
# Increase for debugging information
debuglevel = 0
# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/
Voilà, vous pouvez maintenant envoyer un SMS à votre Raspberry qui exécutera le script receivesms.sh à la réception ! Dans cet exemple on récupère la valeur du texte mais on pourrait aussi récupérer le numéro de l’expéditeur etc.
Pour une question de sécurité, je vous suggère d’ajouter, aux commandes que vous allez enregistrer, un mot de passe. C’est une solution simpliste mais elle aura déjà le mérite d’éviter que n’importe qui, qui trouve le numéro de téléphone de votre Raspberry, puisse désactiver votre alarme avec le simple mot clef « alarme off ».
Vous pouvez donc envoyer un SMS de la forme « motdepasse alarme off ».
Si vous jetez un coup d’œil à la documentation gammu-smsdrc, vous pouvez limiter la réception de SMS à certains numéros de téléphone enregistrés. Avec l’inconvénient de ne plus pouvoir piloter votre installation à partir de n’importe quel téléphone qui vous tomberait sous la main.
Ca y est ! Votre box est autonome en cas de coupure internet (en termes de communication, évidemment). Vous pourrez connaître l’état de votre maison et lancer des commandes, à l’ancienne sur votre 3310 !
Le SMS n’est pas mort. Vive le SMS !
N’hésitez pas à poster vos retours dans les commentaires que je mette à jour la liste des clés 3G et distributions compatibles.
LireKoubachi et eedomus
Malgré tout le mal que je pense du capteur Koubachi, je vais quand même vous présenter comment l’interfacer avec votre box eedomus pour pouvoir ensuite en exploiter les données au travers de vos scénarios.
ATTENTION : le Koubachi ne transmet les valeurs mesurées que toutes les 12h. Ce qui, je vous l’accorde et c’est justement le sujet de mon mécontentement, est beaucoup trop long et rend l’exploitation des valeurs complètement inutile.
M’enfin. Tout d’abord, rendez-vous sur le « Labs Koubachi » pour vous enregistrer et obtenir vos identifiants permettant d’accéder à l’API Koubachi.
Retournez à votre box eedomus pour y créer un nouveau capteur HTTP.
- Choisissez une unité.
- Remplissez le champ URL de la requête avec cette adresse sans oublier de compléter avec vos idenfiants API :
http://api.koubachi.com/v2/user/smart_devices.xml?user_credentials=XXX&app_key=XXX
- Ajustez la fréquence de la requête. Vu que le Koubachi ne transmet les informations que toutes les 12h, rien ne sert de surcharger l’eedomus ni les serveurs Koubachi (même si ce serait une bonne vengeance, gniark, gniark, gniark…).
- Remplissez ensuite le chemin XPATH. Les lignes ci-dessous permettent récupérer les informations correctement à partir du XML Koubachi afin qu’elles soient affichées proprement dans votre capteur HTTP. En effet, Koubachi a eu la bonne (^^) idée d’ajouter aux valeurs des espaces ainsi que les unités de mesure … Nous allons donc les tronquer pour faire ça proprement.
Température :
substring(//smart-device-devices/smart-device-device/recent-temperature-reading-value,1,string-length(//smart-device-devices/smart-device-device/recent-temperature-reading-value)-3)
Humidité :
substring(//smart-device-devices/smart-device-device/recent-soilmoisture-reading-value,1,string-length(//smart-device-devices/smart-device-device/recent-soilmoisture-reading-value)-2)
Luminosité :
substring(//smart-device-devices/smart-device-device/recent-light-reading-value,1,string-length(//smart-device-devices/smart-device-device/recent-light-reading-value)-3)
Niveau des piles :
substring(//smart-device-devices/smart-device-device/virtual-battery-level , 3, 2)
Et voilà, vous pouvez maintenant utiliser les mesures de votre Koubachi dans l’ensemble de vos scénarios.
Attention néanmoins à ne pas prévoir l’arrosage automatique d’un pied de tomate en plein soleil sur un balcon… En 12h, il a bien le temps de carboniser…
Crédit photo de couverture : Koubachi
LireEedomus : géolocalisation avec Geohopper
Le grand intérêt de la domotique n’est pas de piloter la maison à distance, à partir d’un smartphone ou autre, mais réside dans l’automatisation des tâches. Ce sont toutes ces actions, exécutées dans l’ombre et au bon moment, qui rendent la maison vraiment intelligente.
Dès lors, comment votre maison peut-elle savoir si vous êtes présent ou absent ?
Je vous présente ici une solution utilisant l’application iOS Geohopper et appliquée à la box eedomus de Connected Objects. Mais elle est bien sûr utilisable avec n’importe quelle autre box du marché pour peu que celle-ci offre une API.
Nous allons avoir recours à 3 services. Je sais, c’est beaucoup, d’autant plus qu’ils sont tous en ligne (et la multiplication de solutions online rend plus vulnérable aux éventuelles erreurs), mais c’est pour l’instant la seule solution à partir de l’application Geohopper. Vous allez comprendre pourquoi.
Pourquoi l’application Geohopper ?
J’ai essayé, du temps de ma Vera Lite, pas mal de solutions dont une très efficace à base de scripts et Google Latitude.
Son énorme défaut était d’être extrêmement énergivore, Google Latitude sollicitant en permanence le GPS de l’appareil, donc inutilisable au quotidien.
L’avantage de Geohopper, c’est que l’application a recours au geofencing. On trace, autour d’un point donné, un cercle qui détermine une zone de laquelle on sort ou entre. De plus, l’application utilise le GPS uniquement lorsque qu’elle est affichée. Sinon, elle utilise le réseau wifi auquel vous êtes connecté ou encore la triangulation GSM pour déterminer votre position.
Cette solution sauvegarde grandement votre batterie et vous pourrez tenir la journée sans souci !
L’application est gratuite mais pour pouvoir utiliser le service URL vous devrez passer à la caisse et vous délester de 4 petits euros 49. N’allez pas broncher, au prix de l’iPhone vous seriez de bien mauvaise fois !
L’application est encore jeune et nous travaillons au debuggage avec l’équipe, mais elle fonctionne déjà très bien. L’équipe s’est attelée à mettre en place une solution plutôt pro qui utilise les webhooks (rappel, il s’agit de pousser des notifications vers un serveur). Hors peu de services sont aujourd’hui capables de les traiter. C’est pourquoi nous avons recours à un deuxième service : Zapier.
Zapier est un proche cousin de IFTTT.
Il a donc pour mission de relier les services connectés entre eux afin de déclencher des actions à partir de critères.
Nous allons utiliser Zapier pour traiter la webhook et la transformer en une URL toute simple que l’eedomus saura traiter facilement. En attendant que le Support eedomus intègre les webhooks, évidemment (big up au Support ^^).
Mise en place
Tout d’abord rendez-vous sur Zapier et créez votre compte.
Commencez votre première règle (Make a Zap!) en sélectionnant Web Hook comme critère et comme action (vous pourrez récupérer directement cette règle en fin d’article) :
Récupérez ensuite l’URL de votre webhook. Vous en aurez besoin pour configurer Geohopper :
Continuez jusqu’à l’étape n°4 où vous devez ajouter 2 filtres personnalisés. Ces filtres servent à sélectionner l’information poussée et à la traiter.
Ici, dans le cas de event=LocationEnter ou event=LocationExit, on déclenche l’action.
Complétez ensuite le champ url qui correspond à l’action que vous voulez lancer.
Dans le cas de l’eedomus, l’URL est du type :
http://api.eedomus.com/set?action=periph.value&periph_id=XXX&value=EVENT&api_user=XXXX&api_secret=XXXX
Vous devez bien entendu compléter la valeur periph_id par celle du périphérique que vous souhaitez commander (un état virtuel dans le cas de l’eedomus) ainsi que vos identifiants API.
Attention : utilisez le bouton Insert fields pour ajouter la valeur Event. Ainsi la valeur de votre périphérique sera celle extraite de la webhook. Vous l’aurez compris, votre état virtuel aura donc deux valeurs : LocationEnter ou LocationExit.
Voici le lien pour récupérer directement cette nouvelle Zap préconfigurée !
Vous déclenchez ensuite sur votre box les actions que vous souhaitez en fonction de la valeur de cet état virtuel.
Yes we did!
LireInterfacer la box eedomus avec OpenRemote
Le premier objectif de la maison intelligente est de simplifier la vie de ses occupants. Hors elle ne peut s’y parfaire si son usage quotidien devient plus compliqué encore que celui d’une maison idiote.
Le seul rapport entre la maison et ses occupants est l’interface qui les relie. Celle-ci doit être simple à utiliser, intuitive, et tant qu’à faire adaptée aux spécificités de chaque habitat et ses équipements.
Je n’ai pour l’instant trouvé qu’une seule solution : OpenRemote. Il s’agit d’une solution open source qui permet de créer une interface utilisateur visuelle entièrement personnalisable. Le revers de la médaille c’est que la mise en place du design est assez longue, mais elle est sans limites !
Tout d’abord, je ne reviendrai pas sur l’installation ou encore la création d’une interface OpenRemote. Il s’agit là précisément de comprendre comment faire communiquer OpenRemote et la box eedomus.
Grâce à son API, l’eedomus permet notamment deux choses :
– envoyer des commandes http pour modifier l’état des périphériques
– récupérer l’état des différents capteurs et actionneurs, également au travers d’une requête http
Explication rapide du fonctionnement de OpenRemote
Lorsque vous créez votre interface OpenRemote vous avez besoin de deux choses :
– des commandes http qui permettent de modifier l’état d’un prériphérique sur votre box
– des sensors qui vont interroger à intervalle régulier un fichier xml ou json pour relever l’état des capteurs auxquels ils sont associés
Mise en place dans OpenRemote
Nous allons utiliser les “rules” d’OpenRemote. Les rules permettent de scripter un peu tout et n’importe quoi …
Dans notre cas, nous allons demander à OpenRemote d’interroger toutes les secondes l’URL de l’API eedomus afin récupérer l’état des capteurs et actionneurs de la box.
Cette URL est de la forme :
http://IP-EEDOMUS/api/get?action=periph.caract&periph_id=XXX&api_user=XXX&api_secret=XXX
periph_id est le code API du périphérique dont vous souhaitez connaître l’état, à récupérer dans les paramètres experts du module en question :
api_user et api_secret sont à récupérer dans la configuration de votre box.
Rendez-vous ensuite dans votre designer OpenRemote, dans l’onglet Config for Controller.
Sélectionnez rules et dans le champ rules editor collez ce script en ayant pris soin, bien sûr, de compléter l’URL avec vos propres valeurs.
package org.openremote.controller.model.event
import org.apache.commons.io.FileUtils;
import java.net.URL;
import java.io.File;
rule "Poll eedomus every second"
timer (cron: * * * * * ?)
when
eval(true)
then
pollEedomus();
end
function void pollEedomus() {
FileUtils.copyURLToFile(new URL("http://IP-EEDOMUS/api/get?action=periph.caract&periph_id=XXX&api_user=XXX&api_secret=XXX"), new File("../webapps/controller/eedomus.json"));
}
Petit point :
Pour l’instant l’API eedomus ne permet pas de récupérer d’une URL générique l’ensemble des statuts des capteurs de la box. Il va vous falloir ajouter manuellement chaque periph_id à la suite du premier en les séparant simplement par une virgule (periph_id=XXX,XXX,XXX…).
Pas très pratique, mais pour l’instant c’est comme ça…
Validez la rule puis retournez dans la rubrique Device.
Nous allons prendre pour exemple un simple switch.
Il faut tout d’abord créer les deux commandes ON et OFF.
Créez une nouvelle commande http :
http://IP-EEDOMUS/api/set?action=periph.value&periph_id=XXX&value=100&api_user=XXX&api_secret=XXX
Même chose pour la commande OFF en changeant la valeur à 0 :
http://IP-EEDOMUS/api/set?action=periph.value&periph_id=XXX&value=0&api_user=XXX&api_secret=XXX
Puis on crée une nouvelle commande http qui mettra à jour le sensor qui renseigne l’état du switch (veillez à compléter l’adresse IP de votre controller OpenRemote ainsi que le port utilisé) :
http://IP_OR:8688/controller/eedomus.json
On choisit de vérifier l’état toutes les secondes.
On renseigne le JSONpath expression qui permet de choisir le capteur à relever (valeur et periph_id à vérifier d’après l’URL citée en début d’article) :
body[?(@.periph_id==XXX)].last_value
Ensuite vous créez, comme d’habitude, un sensor utilisant cette URL, puis un switch utilisant le sensor créé ainsi que les deux commandes ON et OFF.
Ca y est, votre interface OpenRemote cause avec votre eedomus !
Lire