Allumer un appareil Android avec un détecteur de mouvement (appareil externe?)

10

Problème

Je recherche un détecteur de mouvement qui peut être configuré pour réveiller une tablette Android (4.3) enracinée et allumer l'écran lorsque quelqu'un passe près de lui dans un rayon de 2-3 mètres.

Des idées

Je suis vraiment prêt à obtenir un appareil externe pour cela et à investir une somme d'argent (raisonnable), il suffirait que ce soit un appareil que je puisse en quelque sorte connecter à la tablette.

Existe-t-il des détecteurs de proximité du domaine de la domotique avec une qualité de détection décente (bon angle et distance configurable) qui peuvent envoyer des notifications push Android? Je suis capable d'écrire du code à partir de zéro si nécessaire, mais je suis très désemparé et inexpérimenté dans le domaine du matériel, donc je ne saurais pas comment tenir un fer à souder, par exemple. ;)

Contexte

L'idée ici est de transformer une vieille tablette en une sorte d'écran de tableau de bord fixe, donc je ne suis pas particulièrement inquiet pour l'usure de la batterie (elle est maintenant en fin de vie et sera désormais utilisée avec le câble d'alimentation branché jusqu'à ce qu'elle meurt) ou une utilisation intense (sauf si nous parlons de 100% CPU 24/7, ce qui le tuerait probablement dans quelques jours).

Recherche précédente

J'ai étudié un peu si cela pouvait être fait avec les capteurs existants dans l'appareil et je pense que ce n'est pas possible.

Le problème avec l'utilisation du capteur de proximité est qu'il ne retourne vraiment que si quelque chose (supposé être votre oreille pendant un appel) est juste à côté (à quelques centimètres). Mais je cherche quelque chose dans la zone 2-3m.

L'autre idée serait la caméra frontale, mais le problème semble être que a) la caméra de nombreux appareils s'éteint automatiquement lorsque l'écran est éteint et b) seules les applications de premier plan peuvent accéder à la caméra, mais je veux que la tablette afficher une autre application sur la détection.

J'ai jeté un coup d'œil sur le réveil de l'écran en réponse aux notifications push et cela ne semble pas trop difficile à utiliser l' API PowerManager . Je ne sais pas à quelle vitesse l'appareil répondrait à une poussée lorsqu'il est en sommeil profond, mais c'est un problème secondaire.

hheimbuerger
la source
Pourquoi ne pas utiliser Bluetooth ou NFC en utilisant un script personnalisé? J'ai vu une preuve de concept similaire ailleurs, en utilisant le Bluetooth sur PC et un appareil Bluetooth porté autour du cou, quittez le bureau du PC et les verrous du PC, revenez à proximité du PC, le PC se déverrouille.
t0mm13b
@ t0mm13b Je ne veux vraiment rien porter. Ceci est conçu comme une configuration permanente et je ne veux pas porter un appareil BT pour le reste de ma vie. ;) NFC signifierait que ce n'est plus mains libres, ce que je préférerais aussi. Mais faites-les venir, c'est le genre d'idées créatives que j'espérais. :)
hheimbuerger
Dans les applications, il existe des applications et du matériel de type "domotique" et de contrôle d'alarme. Cela pourrait être un moyen d'obtenir un détecteur infrarouge humain renvoyant des informations à l'appareil.
Psycogeek
@Psycogeek Oui, avez-vous un capteur de mouvement décent dans le domaine de la «domotique»?
hheimbuerger
Je n'en connais pas de particulier.
Psycogeek

Réponses:

6

Juste pour vous faire savoir que j'ai une solution simple, elle combine une application de l'App Store appelée Motion Detector by jastrzab: https://play.google.com/store/apps/details?id=org.motion.detector Installez ensuite un plug-in appelé Turn Screen: https://play.google.com/store/apps/details?id=org.jastrzab.plugin.screen

  1. Installez les deux applications.
  2. Ouvrez l'application Motion Detector et activez "Envoyer" en bas des paramètres. Cliquez sur le détecteur de mouvement (en haut) puis faites défiler jusqu'à "caméra" et sélectionnez "avant".
  3. Ouvrez l'application Turn Screen. cliquez sur le seul bouton pour le rendre actif.
  4. Ouvrez les paramètres Android, désactivez l'écran de verrouillage ou sélectionnez «aucun».
  5. Modifiez les paramètres de veille pour expirer à l'heure souhaitée.
  6. Désactivez Daydream.
  7. Ouvrez l'application (ou l'écran d'accueil) que vous souhaitez afficher à l'écran lorsque la tablette se réveille, et vous êtes prêt! Attendez que l'écran s'endorme et marchez ou saluez votre appareil photo et il le réveillera.

Fonctionne très bien pendant la journée ou avec les lumières allumées. Je travaille actuellement sur un capteur de mouvement PIR externe qui permettra à la tablette de se réveiller dans l'obscurité. La conception simple utilise jusqu'à présent un capteur PIR bon marché et une petite lumière LED montée sous la caméra. Lorsque je passe près du PIR, la lumière LED est déclenchée, ce qui permet à la caméra de voir, ce qui déclenche le mouvement. En espérant découvrir comment éliminer la LED et simplement exécuter le PIR directement dans la tablette en utilisant la prise casque ou USB sur la tablette. Suggestions bienvenues.

Dallas Partin
la source
Oh et n'oubliez pas d'activer le détecteur de mouvement en cliquant sur le cercle bleu en haut de la page principale de l'application (à côté de "Détecteur de mouvement"). Profitez
Dallas Partin
Cela a très bien fonctionné pour moi, merci! Utilisation d'Android 4.4 Kitkat
Rusty Divine
Le lien que vous avez fourni avec Google Drive est rompu. :(
Whit
5

Comme mentionné par Dallas Partin ici , il existe une application gratuite appelée Motion Detector . Je l'utilise depuis un certain temps et je peux vous dire que cela fonctionnera avec d'autres applications au premier plan et avec l'écran verrouillé. Cela détectera le mouvement à l'aide de la caméra intégrée, donc c'est gratuit. De plus, vous n'avez pas besoin de rooter votre appareil pour cela.

Vous avez dit que vous ne saviez pas comment souder, mais il existe un moyen très simple de créer votre propre capteur externe pour cela. Sur deux méthodes que je connais, j'en ai mentionné une ci-dessous:

Méthode n ° 1. Utilisation de la caméra intégrée

  1. Téléchargez Motion Detector .

  2. Téléchargez Tasker .

  3. Télécharger AutoStart

  4. Lancez l' application Tasker et appuyez sur les trois points dans le coin supérieur droit.

  5. Appuyez sur PréférencesUI (en haut), décochez Mode débutant .

  6. Sortez de cela et appuyez sur l' onglet Vars en haut.

  7. Appuyez +et nommez-le % DISPLAYSTATE .

  8. Accédez à l' onglet Profils et appuyez sur +→ sélectionnez ÉvénementAffichageAffichage activé .

  9. Appuyez sur la Backtouche / le bouton. Appuyez sur Nouvelle tâche , nommez-la Display On.

  10. Appuyez sur +VariablesEnsemble de variables . Appuyez sur l'icône en forme de crayon à côté de Nom .

  11. Tapotez % DisplayState et où il est dit à , faire 1.

  12. Répétez « étape 11 » sauf que tout changement d' affichage Off et le changement où nous mettons 1à 0.

  13. Accédez à l' onglet Scènes en haut.

  14. Appuyez +et nommez-le quelque chose.

  15. Maintenez enfoncé et faites glisser la ligne en pointillés et faites-en la taille de votre écran.

  16. Appuyez sur l'icône d'engrenage dans le coin supérieur gauche pour revenir en arrière.

  17. Appuyez sur Profils et créez-en un nouveau à l'aide du +bouton.

  18. Appuyez sur ÉvénementSystèmeIntention reçue .

  19. Vous pouvez tout ignorer sauf là où il est dit Action . Ici, vous devez entrer org.jastrzab.move.ACTION_GLOBAL_BROADCAST(les majuscules sont importantes). Si cela ne fonctionne pas, essayez plutôt ce qui suit org.motion.detector.ACTION_GLOBAL_BROADCAST.

  20. Appuyez sur l'icône d'engrenage (arrière) dans le coin supérieur gauche. Il apparaîtra avec un menu.

  21. Appuyez sur Nouvelle tâche et nommez-la quelque chose.

  22. Dans cette tâche, appuyez à +nouveau sur et appuyez sur ScèneAfficher la scène .

  23. Là où il est écrit Nom , appuyez sur l'icône de la loupe (pas sur le crayon) et appuyez sur le nom de votre scène .

  24. Maintenant, où il est dit Afficher comme , "Activité, Affichage complet, Pas de barre".

  25. Faites défiler vers le bas et il dira si . Appuyez sur l'icône en forme de crayon et sélectionnez % DISPLAYSTATE .

  26. Appuyez sur le bouton au milieu et changez-le en Égal. Dans la case de droite, tapez 0.

  27. Appuyez +et faites TâcheAttendre .

  28. Changer MS entre quelque part entre 25 et 100.

  29. Appuyez sur +ScèneDétruire la scène et appuyez sur l'icône de la loupe sur Nom . Sélectionnez votre scène.

  30. Revenez maintenant à l'écran principal de l' application Tasker .

  31. Accédez à l' application Motion Detector et assurez-vous qu'elle est désactivée. Sinon, appuyez sur le cercle bleu.

  32. Allez en bas et là où il est dit Envoyer , assurez-vous qu'il est activé .

  33. Retournez en haut et appuyez à nouveau sur le cercle bleu pour l'activer.

  34. Ouvrez le démarrage automatique et assurez-vous qu'il indique Activé .

  35. Appuyez sur AjouterAfficher toutes les applicationsDétecteur de mouvement .

  36. Cochez «aller à l'écran d'accueil après le démarrage automatique» et changez «délai de démarrage» en 5.

Cela a fonctionné parfaitement pour moi!

Notez également que dans Motion Detector, il existe des paramètres que vous pouvez modifier lorsque Motion Detector est désactivé . L'un des plus importants est l'appareil photo. Si vous rencontrez des problèmes, assurez-vous que la caméra est réglée sur Avant .

Vous aviez dit que vous vouliez un capteur externe capable de détecter une distance de 2-3 cm, mais si vous vous contentez d'une solution de détection plus éloignée, celle-ci est très fiable et relativement facile à installer! Mais si vous avez toujours le cœur sur un capteur externe, je serais plus qu'heureux de vous donner quelques instructions pour cela aussi!

Bonne chance et j'espère que cela vous aidera!

Daniel Ford
la source
Merci pour votre réponse, j'essaierai éventuellement! (Mais actuellement, je n'ai pas le temps pour ce projet, malheureusement.) Je crois avoir lu que le fonctionnement de la caméra en arrière-plan est spécifique à l'appareil, mais je vais voir si mon appareil peut le faire.
hheimbuerger
Notez que je n'ai pas dit que je voulais un capteur qui détecte le mouvement à l'intérieur de "2-3cm", mais plutôt j'ai dit "2-3m", c'est-à-dire quand une personne passe dans la pièce où se trouve l'appareil.
hheimbuerger
notez que je n'ai pas dit que je voulais un capteur qui détecte le mouvement à l'intérieur de "2-3cm", mais plutôt j'ai dit "2-3m" Ok, je pensais que cela semblait un peu proche :) J'ai lu que la plupart des appareils travailler avec la caméra en arrière-plan, mais oui, cela signifie que tous ne le feront pas. Si cela ne fonctionne pas sur votre appareil spécifique et que vous voulez toujours une solution, faire un capteur externe n'est pas si difficile à faire pour moins de 10 $. Cependant, cette méthode est beaucoup plus simple et plus configurable. Bonne chance avec ça quand vous aurez le temps de travailler dessus!
Daniel Ford
MISE À JOUR: le package d'intention a été renommé en org.motion.detector.ACTION_GLOBAL_BROADCAST. Voir la documentation ici: programy.jastrzab.com/… et la discussion ici: reddit.com/r/tasker/comments/27bvf8/help_motion_detector_app/… Ce qui précède fonctionne toujours; changez simplement le nom du paquet avec le nouveau dans ce commentaire.
André Christoffer Andersen
@ AndréChristofferAndersen Bon à savoir! Merci d'avoir fait remarquer cela; Je vais l'ajouter à la réponse pour éviter toute confusion.
Daniel Ford
1

Je ne sais pas si cela vous convient mais qu'en est-il d'une prise d'alimentation avec un capteur de mouvement? Lorsqu'il détecte un mouvement, la tablette sera connectée et l'écran s'allumera. De plus, avec Tasker, vous pouvez configurer beaucoup plus de choses à faire lorsqu'il détecte un mouvement.

Jorge
la source
1

Je déteste le dire les gars mais tout ce que j'ai fait a été de fixer mon flux de mon PIR dans le plafond (qui contrôle déjà les leds dans la douche) à mon androïde. Quand quelqu'un entre dans le courant, allume le téléphone et Bob est ton oncle.

James Norman
la source
Utilisation de l'écran de l'appareil lorsque la fonction de mise sous / hors tension est activée. Agréable.
cde
1

Je cherchais un moyen d'avoir l'écran de la tablette lorsque je me rapproche de la tablette qui est montée sur le mur pour surveiller ma maison. Tout comme le thermostat Nest. J'ai récemment acheté la carte du système d'alarme Konnected et le module wifi de Nate Clark. Il m'a suggéré d'utiliser www.ozerov.de/fully-kiosk-browser/ Il y a une petite redevance. Cela fonctionne bien pour le but prévu. J'utilise des Actiontiles intégrés à mes Smartthings. Ma tablette est fixée au mur avec une alimentation continue.

           Nate Clark <[email protected]>
Atilyg
la source
0

Vous voudrez peut-être consulter Wimoto . Ce sont de petits capteurs Bluetooth bon marché qui se déclinent en plusieurs saveurs (température, détection de mouvement, détection de liquide, etc.). Ils disent qu'il y a une application Android qui arrive et qu'il va y avoir un SDK dans un futur proche.

Là encore, si vous voulez quelque chose de plus simple (et que votre tablette dispose d'une caméra frontale), vous pouvez simplement utiliser une application. Par exemple (juste après une recherche rapide, je ne l'ai donc pas utilisé) Déclencheur de caméra .

J'espère que cela t'aides.

Hrafn
la source
Wimoto ressemble au genre d'appareils auxquels je pensais, mais je n'ai pas trouvé de capteur de mouvement. En ont-ils un?
hheimbuerger
Camera Trigger a les mêmes problèmes que ceux mentionnés ci-dessus, il ne fonctionne pas avec l'écran éteint ou avec une autre application au premier plan.
hheimbuerger
Oui, ils l'appellent la sentinelle de Wimoto. Je suis également tombé sur Twine qui est également un micro capteur avec quelques fonctionnalités
Hrafn
Vous avez raison. Je suis devenu confus parce que sur Amazon, il est (incorrectement, je suppose) répertorié comme un "Bluetooth Smart Water Sensor". Ça a l'air bien, mais apparemment, il faudra encore quelques mois avant d'en avoir un.
hheimbuerger
0

Le seul capteur de mouvement abordable et raisonnablement accessible que j'ai pu trouver est le Belkin WeMo Motion .

Ian McCracken a créé un SDK non officiel pour le WeMo appelé Ouimeaux ( docs , PyPi ).

Mon plan actuel est d'écrire une petite application fonctionnant sur un Raspberry Pi qui utilise Ouimeaux pour répondre à un signal du WeMo Motion et envoyer une notification push à l'appareil Android. Et puis une application Android encore plus simple qui répond à la notification push et réveille l'appareil et allume l'écran. (Ce dernier pourrait également être faisable avec Tasker à la place.)

Dans un deuxième temps, les parties pertinentes d'Ouimeaux pourraient être réécrites en Java et il serait alors possible de se connecter directement de l'application au WeMo, rendant le Raspberry Pi superflu.

Bien entendu, les suggestions d'amélioration sont les bienvenues. En particulier si vous connaissez un moyen existant de réveiller un écran Android à partir d'un script Python / shell / autrement déclencher une notification push. Cela semble trop trivial pour nécessiter l'écriture d'une nouvelle application.

hheimbuerger
la source
Si vous désactivez le verrouillage du périphérique, vous pouvez créer une petite application qui prend une entrée pour action et utilise un Java ProcessBuilder pour exécuter une commande shell pour un événement clé, par exemple 'shell input keyevent 26' (pression sur le bouton d'alimentation), qui devrait dans le travail théorique. J'exécute actuellement une commande shell après avoir appuyé sur un bouton, pour exécuter la nouvelle fonctionnalité `` screenrecord '' dans Android KitKat, en arrière-plan pour une application que je crée afin de pouvoir vérifier que l'exécution des commandes shell de cette manière fonctionne.
Hrafn
@Hrafn Je n'ai pas bien compris: quelle est l'intention derrière cela?
hheimbuerger
Vous demandiez des moyens possibles de réveiller l'écran. Si vous pouvez obtenir une sorte d'entrée, vous pouvez créer un processus Java (dans le cadre d'un programme Android qui s'exécute en arrière-plan) et lui faire exécuter un clic de bouton d'alimentation dans la coque de l'appareil. Cela devrait, si l'appareil est configuré pour ne pas se verrouiller, réveiller l'écran.
Hrafn
@Hrafn je vois, mais alors vous pouvez simplement utiliser l'API PowerManager que j'ai déjà lié à la question. Il ne nécessite que quatre lignes de code environ. Bien qu'une possibilité serait de garder l'appareil connecté avec un câble et de simplement déclencher le réveil via adbquelque chose comme Wakey Droid .
hheimbuerger
Sûr. Mais pour utiliser l'API PowerManager, vous devez gérer vous-même l'état de veille (je pense). Donc, si vous acquérez un wakelock, vous voudrez envoyer un signal de mise hors tension après un certain temps. Avec l'appel d'événement clé via un shell, vous n'avez pas à gérer cela, et vous pouvez simplement laisser le système gérer tout.
Hrafn