Activer une tablette avec un détecteur de mouvement

Cela fait un petit moment que je voulais mettre une tablette au mur dans l’entrée afin de simplifier certaines interactions avec mon système domotique. Par exemple, lorsque je quitte mon logement, je voudrais d’un coup d’œil vérifier que tout est OK (portes/fenêtre fermées, lumières éteintes …) plutôt que d’avoir une alerte de défaut d’activation après être sorti ! J’ai pu trouver une « vieille » tablette Samsung sous Android 4.4 (!) à moins de 100 euros qui fait très bien l’affaire !

Après avoir bricolé un support mural, je me suis rendu compte que c’était pénible de devoir réveiller la tablette à chaque fois. La domotique doit simplifier le quotidien, devoir faire x étapes pour avoir une info n’est pas assez simple 🙂

Après quelques recherches, il n’y a finalement pas beaucoup de possibilité:

  • Laisser tout le temps allumé
    C’est pas terrible, ça consomme et ça use plus vite la tablette et surtout l’écran
  • Allumer sur une détection de mouvement à l’aide de la caméra
    Ça consomme aussi énormément et ça ne marche pas dans le noir
  • Utiliser un capteur PIR externe
    Solution idéale, mais il faut réussir à l’interfacer avec la tablette

Relier un capteur de mouvement PIR à une tablette

Plusieurs possibilités apparaissent mais voulant une solution esthétique et pas trop bricole, j’ai opté pour une solution complètement logicielle. Le capteur de mouvement existe déjà : il s’agit d’un capteur zwave qui sert de capteur d’alarme et à allumer la lumière. Celui-ci est présent dans Jeedom et remonte déjà des events en cas de détection.

Ce qu’il reste à faire est donc de trouver une API permettant de réveiller la tablette.

Réveiller une tablette android avec un appel de service

Vous en avez sans doute déjà entendu parler : tasker et surtout tout l’écosystème monstrueux qui gravite autour de cette application !

On va donc se servir de :

  • Tasker
  • Auto remote 3 (en version pro pour un peu plus de 3 euros)
  • Auto tools

Auto remote va exposer une API (sous la forme d’un service adressable en POST + application/json) afin de recevoir un message qui sera interprété par tasker pour réveiller la tablette (cad allumer l’écran et ouvrir une page web). Ma tablette étant ni rootée, ni récente ; tasker ne peut pas directement réveiller la tablette. Il m’a donc fallu passer par un plugins tasker tier : auto tools.

Tutorial

Installez les 2 app sur votre appareil android

 

Tasker :
Disponible sur Google Play

Tasker autoremote :
Disponible sur Google Play

AutoTools (pas obligatoire):
Disponible sur Google Play

 

Activer le service wifi

Pas facile à comprendre et pas intuitif du tout : il faut « activer le service wifi » de auto remote à l’aide d’une tache tasker. Il y a bien une case à cocher dans auto remote, mais elle ne semble pas tout activer !

Tache tasker qui démarre le wifi service

Petite tâche qui, lorsque le wifi et UP, démarre donc le fameux service.

A toute fins utiles, je vous mets également ma configuration auto remote (grosso modo, j’ai coché la case !) :

Consommer le message reçu

Lorsque le message est reçu, suite à un test sur sa valeur, on lance le réveil de la tablette.

Pour ma part, ne pouvant le faire directement, je suis donc passé par auto tools qui m’a permis, via l’option « secure settings » > « screen and keyboard lights on » de réveiller la tablette.

Voici les capacités de auto tools sur ma tablette, on voit bien que « Wake Device » est possible:

Capacités auto tools

 

Lorsque l’on reçoit le message, on lance la tache « screen on » (vous pouvez l’appeler « chocolat » si vous préférez ;)) :

Tâche « screen on » qui allume l’écran

Détail de la sous tâche « secure settings » :

Détail sous tâche secure settings

Cette méthode équivaut finalement à appuyer sur le bouton d’alimentation ou le bouton home de la tablette, si vous avez donc activé un verrou sur celui-ci (par code, ou dessin par ex) vous allez donc arriver sur celui-ci, il vous faudra donc le désactiver pour pouvoir arriver directement sur l’écran d’accueil non verrouillé de la tablette.

Afficher une page web

Tasker permet, via le plugin « auto tools »  d’afficher ce qu’ils appellent des « webscreen ». Ce sont finalement de simples pages web capables d’interagir avec la tablette (et donc de trigger des events dessus !) Ces capacités ne nous intéressent pas ici, c’est simplement la possibilité d’afficher en plein écran (un vrai plein écran, sans la barre des tâches avec l’heure, la batterie et les icones de notifs) qui nous intéresse !

Lancement web view

Je ne précise pas ce détail, mais j’ai ajouté une variable « JDISPLAYED » afin d’éviter de relancer la page web qui est déjà active, cela évite de faire clignoter la tablette, et évite les changements d’écrans intempestifs lors des manipulations.

Voici le détail de la configuration auto tools web screen :

Configuration auto tools web screen

Pensez à ajouter un widget permettant de simplement lancer la page web directement depuis l’écran d’accueil 😉 J’ai mis une icone de panda sur la tâche !

Home screen de la tablette

Voici les tâches finalement requises. J’ai ajouté une tâche permettant de voir l’adresse IP de la tablette plus facilement à l’aide d’une vue tasker.

Overview des taches tasker

Déclencher la tâche depuis jeedom

Pas de chance, Jeedom sait très facilement faire des appels de service en GET, mais en POST c’est une autre paire de manche … Il m’a fallu bricoler un petit script php qui fait du curl pour pouvoir arriver à mes fins. Le voici, pensez à remplacer l’API KEY. Cette API key est récupérable dans l’URL de test à laquelle vous accédez lorsque vous ouvrez auto remote.

Créez un nouveau « script » à l’aide du plugin éponyme.

Screen jeedom pour faire un POST

Voici le code utilisé. Il vous faudra remplir

  • VOTRE_CLE_API avec l’API KEY décrite plus haut
  • IP_DE_VOTRE_TABLETTE avec … l’ip de votre tablette ! (Pensez évidemment à la rendre fixe côté tablette ou côté serveur DHCP)
<?php
$request = '
    {
        "message": "screenon",
        "password": "",
        "ttl": 0,
        "collapsekey": "",
        "key": "VOTRE_CLE_API",
        "sender": "SENDER_KEY",
        "communication_base_params": {
            "sender": "SENDER_KEY",
            "type": "Message"
        }
    }';

	$url = 'http://IP_DE_VOTRE_TABLETTE:1817';
	 
	$ch = curl_init($url);

	curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
	curl_setopt($ch, CURLOPT_POSTFIELDS, $request); 
	curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

	$result = curl_exec($ch);
	curl_close($ch);
	//echo $result;

?>

Ensuite, un petit scénario et le tour est joué !

Scenario pour activer la tablette

Résultat

Un petit schéma pour expliquer ce qu’il se passe simplement :

C’est plutôt sympa, en moins d’une seconde, le capteur détecte le mouvement et la tablette s’allume toute seule !

Bien entendu, vous pouvez utiliser décliner ce principe sur n’importe quel événement qui produit n’importe quelle action sur la tablette. Exemple : une ouverture de porte qui joue un son, le déclenchement de l’alarme qui affiche une page de saisie de code pour la désactiver …

2 thoughts to “Activer une tablette avec un détecteur de mouvement”

    1. bonjour Steph
      Ah je suis team Android ici, désolé 🙂 Cela m’etonnerait un peu que des applications équivalentes soient dispo directement sur iOS, peut-etre en jailbreak ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *