Android : exploitez vos capteurs !

Les tablettes et smartphones android sont bardés de capteurs. Mais comment les utiliser au sein de vos scénarios domotiques ? Petit exemple.

C’est une chance, ma tablette Archos Smart Home possède plusieurs capteurs, notamment de luminosité, de température et d’humidité. Seulement voilà, Archos n’a pas jugé bon de publier une API pour profiter des données générées par ces capteurs sur d’autres appareils. Je me suis donc penché sur la question, et j’ai fini par réussir à extraire efficacement ces données. Et comme cette méthode est adaptable à tous les appareils android, voici comment faire pour récupérer les données de vos capteurs.

Quels capteurs sur mon Android ?

Tout d’abord, il vous faut découvrir de quels capteurs est équipé votre smartphone ou votre tablette Android. Pour cela, vous aurez besoin d’une appli. Perso, j’utilise Sensors, une petite appli gratuite qui vous permettra de voir vos capteurs et de lire leurs valeurs en temps réel, mais il y en a un paquet d’autres sur le Play Store. Mais voilà, cela ne suffit pas, car ces infos sont pour le moment captives de votre appareil Android.

Exploitez vos capteurs Android !

Exploitez vos capteurs Android !

Nous nous intéresserons ici aux valeurs Température, humidité ou Niveau de lumière par exemple, mais vous pourrez lister n’importe quelle donnée, comme le niveau de batterie si vous le souhaitez.

Comment récupérer les valeurs ?

Pour cela, nous utiliserons bien entendu Tasker. Tasker est une application Android qui permet une foule de choses, et même de faire de la domotique, d’ailleurs ce que nous allons faire ici pourrait être fort utile dans le domaine : récupérer la valeur de température mesurée par ma tablette pour l’envoyer sur ma box Jeedom, en vue de l’exploitation dans un scénario.

Tasker sait lister les valeurs de vos capteurs, il vous suffit de regarder dans les variables quelles sont les valeurs disponibles.

Créez donc un nouveau profil Heure, décochez « De » et « à » et cochez « Répéter », avec une valeur de 5 minutes par exemple. Ceci aura pour effet de lancer la tâche toutes les 5 minutes pour faire du monitoring. La création du profil achevée, Tasker va vous demander de créer une nouvelle tâche. Donnez-lui le nom de votre choix, et ajoutez une première tâche : Alerte/Popup, et dans le champ Texte, entrez « %TEMP » (sans les guillemets) ou cliquez sur le symbole Tag à droite, et faites défiler la liste des variables pour choisir la valeur de votre choix (de préférence une variable qui délivre une valeur numérique !)

Revenez en arrière et cliquez sur le bouton Play, une popup s’affiche avec le contenu de votre variable. Si ce n’est pas le cas, revenez une nouvelle fois en arrière et attendez que votre profil se lance. En effet, certaines variables, notamment les variables dites « dynamiques » ne s’initialisent que si elles font partie d’une tâche utilisée dans un profil ou un widget.

Voilà, vous pouvez déjà visualiser votre valeur dans une popup, partant de là, vous pouvez exploiter votre capteur dans d’autres profils, comme envoyer un sms ou un mail si la température excède une certaine valeur par exemple. Mais… si on allait plus loin encore ?

Tasker et Thingspeak !

Vous connaissez Thingspeak ? Ce site vous permet de visualiser les données de vos objets connectés. Vous n’avez pas d’objet connecté ? Et votre tablette, sur laquelle on vient de relever la valeur d’un capteur, c’est du mou de veau ? Ben oui, vous l’avez compris, nous allons envoyer les données de notre tablette Android sur Thingspeak, et ainsi visualiser l’évolution sous forme de graphique.

thingspeak

Commencez par vous rendre sur le site Thingspeak, créez un compte ainsi qu’un nouveau channel. Un channel est un espace où vous pouvez récolter des données et les afficher sous forme de graphique. Vous pouvez choisir de rendre ce channel public ou bien le garder privé. Donnez donc un titre à votre channel, puis dans le champ field 1, nous afficherons les valeurs de notre capteur.

Une fois validé, votre graphique, vide, s’affiche. Il est maintenant temps de récolter les données. Cliquez sur l’onglet Data Import/Export, et notez les url qui vous sont données dans la rubrique de droite.

Add data by sending a POST or GET to:

https://api.thingspeak.com/update

Please include your write API key and some data, for example:

https://api.thingspeak.com/update?key=MACLEAPI&field1=0

Copiez cette URL, et envoyez-la vers votre tablette Android via Pushbullet ou par mail par exemple, c’est le meilleur moyen de la récupérer sans erreur. De retour sur votre tablette Android, copiez cette URL, et retournez sur Tasker. Editez la tâche précédente, puis ajoutez une action « Réseau/Post HTTP ». Dans le champ Serveur, collez l’URL, et remplacez le zéro à la fin par votre variable, en ce qui me concerne : %TEMP. Revenez en arrière pour valider la tâche, et attendez les premiers retours ! Et afin d’éviter que votre tablette ne s’allume toutes les 5 minutes, désactivez la première action (celle de l’affichage de la popup) qui ne nous sera plus utile.

Au bout d’une heure ou deux, ou plus, vous devriez avoir un joli graphique !

Aller encore plus loin ?

<

p class= »code »>Une fois votre capteur disponible sur Thingspeak, il est accessible facilement par votre box domotique. Une simple URL lui permet de récupérer les données au format json ou xml. Partant de là, il est facile de créer un équipement virtuel pour l’afficher sur votre dashboard. Vous pourrez bien entendu l’utiliser dans vos scénarios. Je vous laisse vous reporter à la documentation de votre box concernant la manière de récupérer les données au format json. Voici l’URL à utiliser pour y accéder :

https://api.thingspeak.com/channels/IDCHANNEL/feeds/last.xml?key=MACLEAPI

xml

Cela vous donnera la dernière mesure au format xml. Remplacez xml par json si vous préférez ce format.

jeedomscript

Le script sous Jeedom

Sur Jeedom, vous aurez besoin du plugin Script. Créez un nouveau script, nommez-le, activez-le mais ne le rendez pas visible. Créez une nouvelle commande script, au format json ou xml. Dans le champ requête, ajoutez la requête « field1 » (sans les guillemets), puis dans le champ URL, collez l’adresse dûment complétée avec le numéro du channel et votre clé api à la fin. Prenez soin de mettre le paramètre « événement » sur « non ». Enregistrez, testez, et vous devriez récupérer la valeur. Vous pourrez ensuite utiliser cette commande dans un virtuel, et lui attribuer un joli widget. Cerise sur le gâteau, vous pourrez l’historiser !

jeedom

Allez, soyons fous : si on veut pousser encore le bouchon (mais pas trop, hein Maurice ?), imaginez que votre box soit compatible ImperiHome….

imperihome