Включение устройства Android с детектором движения (внешнее устройство?)

10

проблема

Я ищу детектор движения, который можно настроить для пробуждения рутированного планшета Android (4.3) и включения экрана, когда кто-то проходит мимо него в радиусе, возможно, 2-3 м.

идеи

Я определенно хочу приобрести для этого внешнее устройство и инвестировать (разумную) сумму, это просто должно быть то, что я могу каким-то образом подключить к планшету.

Есть ли какие-нибудь датчики приближения из области домашней автоматизации с приличным качеством обнаружения (хороший угол и настраиваемое расстояние), которые могут отправлять push-уведомления Android? Я могу написать немного кода с нуля, если это необходимо, но я очень невежественен и неопытен в области аппаратного обеспечения, поэтому я не знаю, как держать паяльник, например. ;)

Задний план

Идея заключается в том, чтобы превратить старый планшет в какой-то стационарный экран приборной панели, так что меня не особенно беспокоит износ батареи (сейчас это срок службы, и теперь он будет использоваться с подключенным кабелем питания до умирает) или интенсивное использование (если мы не говорим о 100% CPU 24/7, который, вероятно, убьет его через несколько дней).

Прошлое исследование

Я немного исследовал, можно ли это сделать с помощью существующих датчиков в устройстве, и я считаю, что это невозможно.

Проблема с использованием датчика приближения заключается в том, что он на самом деле возвращает только то, находится ли что-то (предположительно, ваше ухо во время разговора) рядом с ним (на расстоянии нескольких сантиметров). Но я ищу что-то в области 2-3м.

Другой идеей была бы фронтальная камера, но проблема, по-видимому, заключается в том, что а) камера во многих устройствах автоматически отключается, когда экран выключен, и б) только приложения переднего плана могут получить доступ к камере, но я хочу, чтобы планшет показать другое приложение при обнаружении.

Я быстро взглянул на пробуждение экрана в ответ на push-уведомления, и это не кажется слишком сложным с помощью PowerManager API . Не уверен, как быстро устройство будет реагировать на пуш в глубоком сне, но это вторичная проблема.

hheimbuerger
источник
Почему бы не использовать Bluetooth или NFC, используя собственный скрипт? Вы видели подобное доказательство концепции в другом месте, используя Bluetooth на ПК и устройство Bluetooth, надетое на шею, оставив рабочий стол ПК и ПК заблокированным, вернувшись в непосредственной близости от ПК, ПК разблокируется.
t0mm13b
@ t0mm13b Я не хочу ничего носить. Это задумано как постоянная установка, и я не хочу носить устройство BT до конца своей жизни. ;) NFC будет означать, что это больше не громкая связь, что я бы тоже предпочел. Но продолжайте в том же духе, вот на что я надеялся. :)
hheimbuerger
В приложениях есть «домашняя автоматизация» и тип управления приложениями и оборудованием. Это может быть способом получить инфракрасный детектор, отправляющий информацию обратно на устройство.
Psycogeek
@Psycogeek Да, ты приличный датчик движения из области «домашней автоматизации»?
hheimbuerger
Я не знаю конкретного.
Psycogeek

Ответы:

6

Просто чтобы вы знали, что у меня есть кое-что с простым решением, оно объединяет приложение из магазина приложений под названием Motion Detector от jastrzab: https://play.google.com/store/apps/details?id=org.motion.detector Затем установите плагин под названием Turn Screen: https://play.google.com/store/apps/details?id=org.jastrzab.plugin.screen

  1. Установите оба приложения.
  2. Откройте приложение Motion Detector и включите «Отправить» в нижней части настроек. Нажмите на детектор движения (вверху), затем прокрутите вниз до «камеры» и выберите «спереди».
  3. Откройте приложение Turn Screen. нажмите единственную кнопку, чтобы сделать ее активной.
  4. Откройте настройки Android, выключите экран блокировки или выберите «нет».
  5. Измените настройки сна на время ожидания в желаемое время.
  6. Выключи Мечту.
  7. Откройте приложение (или домашний экран), которое вы хотите отобразить на экране, когда планшет проснется, и все готово! Дождитесь, пока экран уснет, и пройдите мимо или помахайте камерой, и она проснется.

Прекрасно работает в течение дня или с включенным светом. В настоящее время я работаю над внешним датчиком движения PIR, который позволит планшету просыпаться в темноте. Простая конструкция до сих пор просто использует дешевый ИК-датчик и небольшой светодиодный фонарь, установленный под камерой. Когда я прохожу мимо PIR, включается светодиод, который позволяет камере видеть, что вызывает движение. Надеясь выяснить, как устранить светодиод и просто запустить PIR непосредственно в планшет, используя разъем для наушников или USB на планшете. Предложения приветствуются.

Даллас Партин
источник
Да, и не забудьте включить детектор движения, нажав синий кружок в верхней части главной страницы приложения (рядом с «Детектор движения»). Наслаждайтесь
Даллас Партин
Это отлично сработало для меня, спасибо! Использование Android 4.4 KitKat
Rusty Divine
Ссылка, предоставленная вами на Google Диск, не работает. :(
Whit
5

Как упоминал Даллас Партин, здесь есть бесплатное приложение под названием Motion Detector . Я использую его некоторое время и могу сказать, что он будет работать с другими приложениями на переднем плане и с заблокированным экраном. Это будет обнаруживать движение с помощью встроенной камеры, так что это бесплатно. Кроме того, вам не нужно рутировать ваше устройство для этого.

Вы сказали, что не знаете, как паять, но есть очень простой способ сделать свой собственный внешний датчик для этого. Из двух известных мне методов я упомянул один ниже:

Способ № 1. Использование встроенной камеры

  1. Загрузите детектор движения .

  2. Скачать Tasker .

  3. Скачать автозапуск

  4. Запустите приложение Tasker и коснитесь трех точек в правом верхнем углу.

  5. Нажмите « Настройки» → « Пользовательский интерфейс» (вверху), снимите флажок « Режим начинающего» .

  6. Выйдите из этого и нажмите вкладку Vars вверху.

  7. Нажмите +и назовите его % DISPLAYSTATE .

  8. Перейдите на вкладку « Профили » и нажмите +→ выберите « Событие» → « Показать» → « Показать вкл .».

  9. Нажмите Backкнопку / кнопку. Нажмите « Новое задание» , назовите его Display On.

  10. Нажмите +ПеременныеНабор переменных . Нажмите значок карандаша рядом с именем .

  11. Tap % DISPLAYSTATE и где он говорит , чтобы , сделать это 1.

  12. Повторите «шаг 11» за исключением того, что изменения все , чтобы Display Off и изменения , где мы помещаем 1в 0.

  13. Перейдите на вкладку Сцены вверху.

  14. Нажмите +и назовите что-нибудь.

  15. Удерживая нажатой пунктирную линию, перетащите ее по размеру экрана.

  16. Нажмите на значок шестеренки в левом верхнем углу, чтобы вернуться назад.

  17. Нажмите на профили и создайте новый с помощью +кнопки.

  18. Нажмите на СобытиеСистемаНазначение получено .

  19. Вы можете игнорировать все, кроме тех, где написано действие . Здесь вам нужно ввести org.jastrzab.move.ACTION_GLOBAL_BROADCAST(заглавные буквы важны). Если это не работает для вас, попробуйте следующее org.motion.detector.ACTION_GLOBAL_BROADCAST.

  20. Нажмите на значок шестеренки (назад) в верхнем левом углу. Появится меню.

  21. Нажмите Новое задание и назовите его как-нибудь.

  22. В рамках этой задачи +снова нажмите на значок и нажмите « Сцена» → « Показать сцену» .

  23. Там, где написано « Имя» , коснитесь значка увеличительного стекла (не карандаша) и коснитесь названия сцены .

  24. Теперь там, где написано « Отображать как» , «Активность, Полное отображение, Без полосы».

  25. Прокрутите вниз, и он скажет, если . Нажмите на значок карандаша и выберите % DISPLAYSTATE .

  26. Нажмите кнопку посередине и измените ее на «Равно». В правой части введите 0.

  27. Нажмите +и выполните ЗадачаПодождите .

  28. Замените MS где-то между 25 и 100.

  29. Нажмите +СценаУничтожить сцену и нажмите значок увеличительного стекла на Имя . Выберите свою сцену.

  30. Теперь вернитесь к главному экрану приложения Tasker .

  31. Зайдите в приложение Motion Detector и убедитесь, что оно выключено. Если нет, коснитесь синего круга.

  32. Перейдите в конец и там, где написано « Отправить» , убедитесь, что он включен .

  33. Вернитесь наверх и снова коснитесь синего круга, чтобы он включился.

  34. Откройте Автозапуск и убедитесь, что он говорит Вкл .

  35. Нажмите ДобавитьПоказать все приложенияДетектор движения .

  36. Установите флажок «перейти на главный экран после автоматического запуска» и измените «задержка запуска» на 5.

Это работает безупречно для меня!

Также обратите внимание, что в Детекторе движения есть настройки, которые вы можете изменить, когда Детектор движения выключен . Одним из наиболее важных является камера. Если у вас возникли проблемы, пожалуйста, убедитесь, что камера установлена ​​в положение Front .

Вы действительно сказали, что хотели бы иметь внешний датчик, который мог бы измерять расстояние в пределах 2-3 см, но если вы хорошо настроены на дальнейшее решение для измерения, это очень надежно и относительно легко настроить! Но если ваше сердце все еще настроено на внешний датчик, я был бы более чем рад дать вам некоторые инструкции для этого!

Удачи, и я надеюсь, что это поможет вам!

Дэниел Форд
источник
Спасибо за ваш ответ, я попробую в конце концов! (Но, к сожалению, на данный момент у меня нет времени на этот проект.) Мне кажется, я читал, что работа камеры в фоновом режиме зависит от устройства, но я посмотрю, сможет ли мое устройство это сделать.
Hheimbuerger
Обратите внимание, что я не сказал, что мне нужен датчик, который измеряет движение в пределах «2-3 см», но я сказал «2-3 м», то есть, когда человек проходит через комнату, в которой находится устройство.
hheimbuerger
обратите внимание, что я не говорил, что мне нужен датчик, который измеряет движение в пределах "2-3 см", а скорее сказал "2-3 м". Хорошо, я думал, что это немного близко :) Я читал, что большинство устройств будут работать с камерой в фоновом режиме, но да, это означает, что не все будет. Если это не работает на вашем конкретном устройстве, и вы все еще хотите решение, сделать внешний датчик не так сложно сделать менее чем за $ 10. Однако этот метод намного проще и более настраиваемый. Удачи вам в этом, когда у вас есть время поработать над этим!
Дэниел Форд
ОБНОВЛЕНИЕ: пакет намерений был переименован в org.motion.detector.ACTION_GLOBAL_BROADCAST. См. Документацию здесь: programy.jastrzab.com/… и обсуждение здесь: reddit.com/r/tasker/comments/27bvf8/help_motion_detector_app/… Выше все еще работает; просто поменяйте имя пакета с новым в этом комментарии.
Андре Кристоффер Андерсен
@ AndréChristofferAndersen Полезно знать! Спасибо за указание на это; Я добавлю это в ответ, чтобы избежать путаницы.
Даниэль Форд
1

Я не знаю, подходит ли вам это, но как насчет вилки питания с датчиком движения? Когда он обнаружит движение, планшет подключится к источнику питания и включится экран. Кроме того, с помощью Tasker вы можете настроить гораздо больше действий, когда он обнаруживает движение.

Jorge
источник
1

Ненавижу это говорить, ребята, но все, что я сделал, это прикрепил свой канал от моего ИК на потолке (который уже контролирует светодиоды в душе) к моему андроиду. Когда кто-то входит, включается телефон, и Боб - твой дядя.

Джеймс Норман
источник
Использование экрана устройства при включении / выключении питания. Приятно.
CDE
1

Я искал способ включить экран планшета, когда подхожу к планшету, установленному на стене, для наблюдения за моим домом. Так же, как термостат Nest. Недавно я приобрел плату системы оповещения Konnected и модуль Wi-Fi у Нейта Кларка. Он предложил мне воспользоваться www.ozerov.de/fully-kiosk-browser/ За небольшую плату за лицензию. Хорошо работает по назначению. Я использую Actiontiles, интегрированные с моими Smartthings. Мой планшет настенный с непрерывным питанием.

           Nate Clark <nate@konnected.io>
Atilyg
источник
0

Вы можете проверить Wimoto . Это небольшие и дешевые датчики Bluetooth, которые бывают нескольких видов (температуры, движения, обнаружения жидкости и т. Д.). Говорят, что есть приложение для Android, и в ближайшее время для него будет выпущен SDK.

Опять же, если вы хотите что-то более простое (а ваш планшет оснащен фронтальной камерой), вы можете просто использовать приложение. Например (сразу после быстрого поиска, поэтому не использовали его) Camera Trigger .

Надеюсь это поможет.

Hrafn
источник
Wimoto звучит как устройства, о которых я думал, но я не смог найти датчик движения. У них есть один?
hheimbuerger
Camera Trigger имеет те же проблемы, что и выше, он не работает с выключенным экраном или с другим приложением на переднем плане.
Hheimbuerger
Да, они называют это Wimoto Sentry. Я также наткнулся на Twine, который также является микродатчиком с парой функций
Hrafn
Ты прав. Я запутался, потому что на Amazon он (я думаю, неправильно) указан как «Bluetooth Smart Water Sensor». Выглядит хорошо, но, видимо, пройдет еще несколько месяцев, пока мы не получим его.
hheimbuerger
0

Единственный доступный и достаточно доступный датчик движения, который я смог найти, - это Belkin WeMo Motion .

Ян Маккракен создал неофициальный SDK для WeMo под названием Ouimeaux ( docs , PyPi ).

Мой текущий план состоит в том, чтобы написать крошечное приложение, работающее на Raspberry Pi, которое использует Ouimeaux для ответа на сигнал от WeMo Motion и отправки push-уведомления на устройство Android. А потом еще более простое Android-приложение, которое реагирует на push-уведомления, а затем активирует устройство и включает экран. (Последнее может также быть выполнено с Tasker вместо этого.)

В качестве второго шага, соответствующие части Ouimeaux могут быть переписаны на Java, и тогда можно будет подключиться прямо из приложения к WeMo, что сделает Raspberry Pi излишним.

Предложения по улучшению приветствуются, конечно. В частности, если вы знаете существующий способ пробуждения экрана Android из скрипта Python / shell / в противном случае вызовите push-уведомление. Это звучит слишком тривиально, чтобы требовать написания нового приложения.

hheimbuerger
источник
Если вы отключите блокировку устройства, вы можете создать небольшое приложение, которое принимает ввод для действия и использует Java ProcessBuilder для запуска команды оболочки для ключевого события, например «shell input keyevent 26» (нажатие кнопки питания), которое должно в теоретической работе. В настоящее время я запускаю команду оболочки после нажатия кнопки, чтобы запустить новую функцию 'screenrecord' в Android KitKat, в фоновом режиме для приложения, которое я создаю, чтобы я мог проверить, что запуск команд оболочки таким образом работает.
Hrafn
@Hrafn Я не совсем понял: что за этим стоит?
hheimbuerger
Вы спрашивали о возможных способах пробуждения экрана. Если вы можете получить какой-то ввод, вы можете создать Java-процесс (как часть программы Android, работающей в фоновом режиме) и заставить его запускать нажатие кнопки питания в оболочке устройства. Это должно произойти, если устройство настроено на блокировку, разбудите экран.
Храфн
@ Храфн Я вижу, но тогда вы можете просто использовать API PowerManager, на который я уже ссылался в этом вопросе. Требуется всего около четырех строк кода. Хотя одной из возможностей было бы сохранить устройство подключенным с помощью кабеля и просто вызвать пробуждение через adbчто-то вроде Wakey Droid .
hheimbuerger
Конечно. Но чтобы использовать PowerManager API, вы должны сами управлять состоянием бодрствования (я думаю). Поэтому, если вы приобрели будильник, вы захотите отправить сигнал о выключении через определенное время. С вызовом keyevent через оболочку вам не нужно управлять этим, и вы можете просто позволить системе обрабатывать все.
Храфн