Włączanie urządzenia z Androidem z czujnikiem ruchu (urządzenie zewnętrzne?)


10

Problem

Szukam detektora ruchu, który można skonfigurować tak, aby budził zrootowany tablet z Androidem (4.3) i włączał ekran, gdy ktoś mija go w promieniu około 2-3 metrów.

Pomysły

Zdecydowanie jestem skłonny kupić do tego urządzenie zewnętrzne i zainwestować (rozsądną) kwotę, musiałbym po prostu podłączyć urządzenie do tabletu.

Czy mogą być jakieś czujniki zbliżeniowe z dziedziny automatyki domowej o przyzwoitej jakości wykrywania (dobry kąt i konfigurowalna odległość), które mogą wysyłać powiadomienia push Android? W razie potrzeby jestem w stanie napisać kod od zera, ale jestem bardzo nieświadomy i niedoświadczony w dziedzinie sprzętu, więc na przykład nie wiedziałbym, jak trzymać lutownicę. ;)

tło

Chodzi o to, aby przekształcić stary tablet w jakiś stacjonarny ekran deski rozdzielczej, więc nie martwię się szczególnie zużyciem baterii (teraz jest już zużyty i od tej pory będzie używany z podłączonym kablem zasilającym aż do umiera) lub intensywne użytkowanie (chyba że mówimy o 100% CPU 24/7, co prawdopodobnie zabiłoby go w ciągu kilku dni).

Poprzednie badania

Zbadałem trochę, czy można to zrobić za pomocą istniejących czujników w urządzeniu i uważam, że nie jest to możliwe.

Problem z użyciem czujnika zbliżeniowego polega na tym, że tak naprawdę zwraca on tylko to, czy coś (zakładając, że jest to ucho podczas rozmowy) znajduje się tuż obok niego (kilka centymetrów dalej). Ale szukam czegoś w obszarze 2-3m.

Innym pomysłem byłby aparat przedni, ale wydaje się, że problem polega na tym, że a) aparat w wielu urządzeniach automatycznie wyłącza się, gdy ekran jest wyłączony oraz b) tylko aplikacje pierwszego planu mogą uzyskać dostęp do kamery, ale chcę, aby tablet pokaż inną aplikację po wykryciu.

Rzuciłem okiem na budzenie ekranu w odpowiedzi na powiadomienia wypychane i nie wydaje się to zbyt trudne przy użyciu interfejsu API PowerManager . Nie jestem pewien, jak szybko urządzenie zareaguje na pchnięcie podczas głębokiego snu, ale jest to drugorzędny problem.


Dlaczego nie skorzystać z Bluetooth lub NFC przy użyciu niestandardowego skryptu? Widziałem podobną weryfikację koncepcji gdzie indziej, używając bluetooth na PC i urządzenia Bluetooth noszonego na szyi, zostaw biurko PC i komputer się zablokuje, wróć z powrotem w pobliżu komputera, komputer się odblokuje.
t0mm13b

@ t0mm13b Naprawdę nie chcę niczego nosić. Ma to na celu stałą konfigurację i nie chcę nosić urządzenia BT przez resztę życia. ;) NFC oznaczałoby, że nie jest to już tryb głośnomówiący, co również wolałbym. Ale nie przestawaj ich napływać, na takie kreatywne pomysły miałem nadzieję. :)
hheimbuerger

W aplikacjach występuje „automatyka domowa” oraz aplikacje i sprzęt do kontroli alarmów. Może to być sposób na wykrycie przez człowieka detektora podczerwieni wysyłającego informacje z powrotem do urządzenia.
Psycogeek

@Psycogeek Tak, czy jesteś porządnym czujnikiem ruchu z dziedziny „automatyki domowej”?
hheimbuerger

Nie znam żadnego z nich.
Psycogeek

Odpowiedzi:


6

Aby poinformować, że mam trochę prostego rozwiązania, łączy aplikację ze sklepu z aplikacjami o nazwie Motion Detector firmy jastrzab: https://play.google.com/store/apps/details?id=org.motion.detector Następnie zainstaluj wtyczkę o nazwie Turn Screen: https://play.google.com/store/apps/details?id=org.jastrzab.plugin.screen

  1. Zainstaluj obie aplikacje.
  2. Otwórz aplikację Motion Detector i włącz „Send” na dole ustawień. Kliknij na czujnik ruchu (u góry), a następnie przewiń w dół do „kamery” i wybierz „przód”.
  3. Otwórz aplikację Turn Screen. kliknij jedyny przycisk, aby go aktywować.
  4. Otwórz ustawienia Androida, wyłącz ekran blokady lub wybierz „brak”.
  5. Zmień ustawienia uśpienia, aby przekroczyć limit czasu w żądanym czasie.
  6. Wyłącz Daydream.
  7. Otwórz aplikację (lub ekran główny), która ma być wyświetlana na ekranie po przebudzeniu tabletu i gotowe! Poczekaj, aż ekran przejdzie w tryb uśpienia, przejdź obok lub pomachaj kamerą, aby ją obudzić.

Działa świetnie w ciągu dnia lub przy włączonych światłach. Obecnie pracuję nad zewnętrznym czujnikiem ruchu PIR, który pozwoli tabletowi obudzić się w ciemności. Prosta konstrukcja do tej pory wykorzystuje tylko tani czujnik PIR i małą lampkę LED zamontowaną pod kamerą. Kiedy przechodzę obok PIR, wyzwala światło LED, pozwalając na zobaczenie kamery, która wyzwala ruch. Mając nadzieję, aby dowiedzieć się, jak wyeliminować diodę LED i po prostu uruchomić PIR bezpośrednio do tabletu za pomocą gniazda słuchawkowego lub USB na tablecie. Sugestie mile widziane.


Aha i nie zapomnij włączyć detektora ruchu, klikając niebieskie kółko u góry strony głównej aplikacji (obok „Detektora ruchu”). Ciesz się
Dallas Partin,

Działa mi to świetnie, dzięki! Korzystanie z Androida 4.4 KitKat
Rusty Divine

Link podany na Dysku Google jest uszkodzony. :(
Whit

5

Jak wspomniano tutaj Dallas Partin , istnieje bezpłatna aplikacja o nazwie Motion Detector . Używam go od dłuższego czasu i mogę powiedzieć, że będzie działał z innymi aplikacjami na pierwszym planie i przy zablokowanym ekranie. Wykryje ruch za pomocą wbudowanej kamery, więc jest bezpłatny. Ponadto nie musisz do tego rootować urządzenia.

Powiedziałeś, że nie umiesz lutować, ale istnieje bardzo prosty sposób na stworzenie własnego zewnętrznego czujnika. Spośród dwóch metod, o których wiem, wspomniałem jedną poniżej:

Metoda nr 1. Korzystanie z wbudowanej kamery

  1. Pobierz Motion Detector .

  2. Pobierz Tasker .

  3. Pobierz AutoStart

  4. Uruchom aplikację Tasker i dotknij trzech kropek w prawym górnym rogu.

  5. Dotknij PreferencjeInterfejs użytkownika (u góry), odznacz Tryb dla początkujących .

  6. Wyjdź z tego i dotknij karty Vars u góry.

  7. Naciśnij +i nazwij go % DISPLAYSTATE .

  8. Przejdź do karty Profile i dotknij +→ wybierz WydarzenieWyświetlaczWyświetl włączone .

  9. Naciśnij Backklawisz / przycisk. Stuknij Nowe zadanie , nazwij je Display On.

  10. Dotknij +ZmienneZestaw zmiennych . Stuknij ikonę ołówka obok opcji Nazwa .

  11. Stuknij % DISPLAYSTATE i tam, gdzie jest napisane To , zrób to 1.

  12. Repeat „krok 11” oprócz tego, że wszystko zmieni się wyłączenia wyświetlania i zmiany, gdzie stawiamy 1na 0.

  13. Przejdź do zakładki Sceny u góry.

  14. Stuknij +i nazwij coś.

  15. Przytrzymaj i przeciągnij linię przerywaną i ustaw rozmiar ekranu.

  16. Stuknij ikonę koła zębatego w lewym górnym rogu, aby wrócić.

  17. Stuknij w Profile i utwórz nowy za pomocą +przycisku.

  18. Stuknij w WydarzenieSystemOdebrano zamierzone .

  19. Możesz zignorować wszystko oprócz miejsca, w którym jest napisane Akcja . Tutaj musisz wpisać org.jastrzab.move.ACTION_GLOBAL_BROADCAST(ważne są wielkie litery). Jeśli to nie zadziała, spróbuj wykonać następujące czynności org.motion.detector.ACTION_GLOBAL_BROADCAST.

  20. Stuknij ikonę koła zębatego (wstecz) w lewym górnym rogu. Wyskoczy z menu.

  21. Stuknij Nowe zadanie i nadaj mu nazwę.

  22. W ramach tego zadania dotknij +ponownie i naciśnij ScenaPokaż scenę .

  23. Tam, gdzie jest napisane Nazwa , dotknij ikony szkła powiększającego (nie ołówka) i dotknij nazwy scen .

  24. Teraz, gdzie jest napisane Wyświetl jako , „Aktywność, pełny wyświetlacz, bez paska”.

  25. Przewiń w dół, a powiesz, czy . Naciśnij ikonę ołówka i wybierz % DISPLAYSTATE .

  26. Naciśnij przycisk na środku i zmień go na Równe. W prawym polu wpisz 0.

  27. Dotknij +i wykonaj ZadanieZaczekaj .

  28. Zmień MS na około 25 do 100.

  29. Dotknij +ScenaZniszcz scenę i kliknij ikonę lupy w polu Nazwa . Wybierz scenę.

  30. Teraz wróć do ekranu głównego aplikacji Tasker .

  31. Przejdź do aplikacji Motion Detector i upewnij się, że jest wyłączona. Jeśli nie, dotknij niebieskiego koła.

  32. Zejdź na dół i tam, gdzie jest napisane Wyślij , upewnij się, że jest włączony .

  33. Wróć na górę i ponownie dotknij niebieskiego koła, aby je włączyć.

  34. Otwórz Automatyczny start i upewnij się, że jest napisane Włączone .

  35. Dotknij DodajPokaż wszystkie aplikacjeDetektor ruchu .

  36. Zaznacz „przejdź do ekranu głównego po automatycznym uruchomieniu” i zmień „opóźnienie rozpoczęcia” na 5.

Działa to dla mnie bezbłędnie!

Należy również pamiętać, że w detektorze ruchu są ustawienia, które można zmienić, gdy detektor ruchu jest wyłączony . Jednym z najważniejszych jest aparat. Jeśli masz problemy, upewnij się, że kamera jest ustawiona na Przód .

Powiedziałeś, że chcesz zewnętrznego czujnika, który mógłby wykrywać odległość w odległości 2-3 cm, ale jeśli dobrze się czujesz w przypadku dalszego rozwiązania wykrywania, jest to bardzo niezawodne i stosunkowo łatwe w konfiguracji! Ale jeśli nadal masz serce ustawione na zewnętrznym czujniku, chętnie udzielę ci również instrukcji!

Powodzenia i mam nadzieję, że to ci pomoże!


Dzięki za odpowiedź, w końcu spróbuję! (Niestety obecnie nie mam czasu na ten projekt). Wydaje mi się, że przeczytałem, że to, czy kamera działa w tle, zależy od urządzenia, ale zobaczę, czy moje urządzenie to zrobi.
hheimbuerger

Zauważ, że nie powiedziałem, że chcę czujnika, który wyczuwa ruch w odległości „2-3 cm”, ale powiedziałem „2-3m”, tj. Kiedy osoba przechodzi przez pomieszczenie, w którym znajduje się urządzenie.
hheimbuerger

zauważam, że nie powiedziałem, że chcę czujnika, który wyczuwa ruch w odległości „2-3 cm”, ale powiedziałem „2-3m” Ok, myślałem, że wydaje się to trochę blisko :) Przeczytałem, że większość urządzeń będzie pracować z kamerą w tle, ale tak, to znaczy, że nie wszyscy to zrobią. Jeśli to nie działa na twoim konkretnym urządzeniu i nadal szukasz rozwiązania, wykonanie zewnętrznego czujnika nie jest takie trudne za mniej niż 10 USD. Jednak ta metoda jest znacznie prostsza i bardziej konfigurowalna. Powodzenia z tym, ilekroć masz czas, aby nad tym popracować!
Daniel Ford

AKTUALIZACJA: Nazwa zamiaru została zmieniona na org.motion.detector.ACTION_GLOBAL_BROADCAST. Zobacz dokumentację tutaj: programy.jastrzab.com/… i dyskusję tutaj: reddit.com/r/tasker/comments/27bvf8/help_motion_detector_app/ ... Powyższe nadal działa; po prostu zmień nazwę pakietu na nową w tym komentarzu.
André Christoffer Andersen

@ AndréChristofferAndersen Dobrze wiedzieć! Dziękuję za zwrócenie na to uwagi; Dodam to do odpowiedzi, aby zapobiec nieporozumieniom.
Daniel Ford

1

Nie wiem, czy ci to odpowiada, ale co z wtyczką z czujnikiem ruchu? Po wykryciu ruchu tablet zostanie podłączony do zasilania, a ekran się włączy. Dodatkowo w Tasker możesz skonfigurować znacznie więcej czynności do wykonania, gdy wykryje ruch.


1

Nienawidzę tego mówić, ale wszystko, co zrobiłem, to załączyłem swój kanał z mojego PIR w suficie (który już kontroluje diody LED pod prysznicem) do mojego Androida. Kiedy ktoś wchodzi do gniazdka, włącza telefon, a Bob jest twoim wujem.


Używanie ekranu urządzenia podczas włączania / wyłączania zasilania. Miły.
cde

1

Szukałem sposobu na włączenie ekranu tabletu, gdy zbliżam się do tabletu, który jest zamontowany na ścianie w celu monitorowania mojego domu. Podobnie jak termostat Nest. Niedawno kupiłem płytę systemu alarmowego Konnected i moduł Wi-Fi od Nate Clark. Zasugerował, żebym użył strony www.ozerov.de/fully-kiosk-browser/. Za niewielką opłatą licencyjną. Działa dobrze dla zamierzonego celu. Używam Actiontiles zintegrowanych z moimi Smartthings. Mój tablet jest montowany na ścianie z ciągłym zasilaniem.

           Nate Clark <nate@konnected.io>

0

Może chcesz sprawdzić Wimoto . Są to małe i tanie czujniki bluetooth, które występują w kilku wariantach (temperatura, wykrywanie ruchu, wykrywanie cieczy itp.). Mówią, że nadchodzi aplikacja na Androida i że w najbliższej przyszłości zostanie wydany zestaw SDK.

Z drugiej strony, jeśli chcesz czegoś prostszego (a twój tablet ma przedni aparat), możesz po prostu użyć aplikacji. Na przykład (tuż po szybkim wyszukiwaniu, więc go nie użyłem) Spust kamery .

Mam nadzieję że to pomoże.


Wimoto brzmi jak urządzenia, o których myślałem, ale nie mogłem znaleźć czujnika ruchu. Czy oni mają jeden?
hheimbuerger

Camera Trigger ma te same problemy, o których mowa powyżej, nie działa przy wyłączonym ekranie lub przy innej aplikacji na pierwszym planie.
hheimbuerger

Tak, nazywają to Straż Wimoto.
Natknąłem się

Masz rację. Byłem zdezorientowany, ponieważ w Amazon jest (niepoprawnie, jak sądzę) wymieniony jako „Inteligentny czujnik wody Bluetooth”. Wygląda dobrze, ale najwyraźniej minie jeszcze kilka miesięcy, zanim będziemy mogli go zdobyć.
hheimbuerger

0

Jedynym niedrogim i niedrogim czujnikiem ruchu, jaki udało mi się znaleźć, jest Belkin WeMo Motion .

Ian McCracken stworzył nieoficjalny zestaw SDK dla WeMo o nazwie Ouimeaux ( docs , PyPi ).

Mój obecny plan polega na napisaniu niewielkiej aplikacji działającej na Raspberry Pi, która używa Ouimeaux do reagowania na sygnał z WeMo Motion i wysyłania powiadomienia push na urządzenie z Androidem. A potem jeszcze prostsza aplikacja na Androida, która reaguje na powiadomienie push, budzi urządzenie i włącza ekran. (To drugie może być również wykonalne za pomocą Taskera).

W drugim etapie odpowiednie części Ouimeaux mogłyby zostać przepisane w Javie, a następnie możliwe byłoby połączenie bezpośrednio z aplikacji do WeMo, dzięki czemu Raspberry Pi stałoby się zbyteczne.

Oczywiście sugestie dotyczące ulepszeń są mile widziane. W szczególności, jeśli znasz istniejący sposób na przebudzenie ekranu Androida ze skryptu Python / powłoki / w inny sposób wyzwalaj powiadomienia push. To brzmi zbyt trywialnie, by wymagać napisania nowej aplikacji.


Jeśli wyłączysz blokadę urządzenia, możesz utworzyć małą aplikację, która pobiera dane wejściowe do akcji i używa Java ProcessBuilder do uruchomienia polecenia powłoki dla zdarzenia kluczowego, na przykład „klucz wejściowy powłoki - wydarzenie 26” (naciśnięcie przycisku zasilania), które powinno w pracy teoretycznej. Obecnie uruchamiam polecenie powłoki po naciśnięciu przycisku, aby uruchomić nową funkcję „screenrecord” w Androidzie KitKat, w tle dla tworzonej przeze mnie aplikacji, dzięki czemu mogę sprawdzić, czy uruchamianie poleceń powłoki w ten sposób działa.
Hrafn

@Hrafn Nie do końca zrozumiałem: jaki jest cel tego?
hheimbuerger

Pytałeś o możliwe sposoby na przebudzenie ekranu. Jeśli możesz uzyskać jakieś dane wejściowe, możesz utworzyć proces Java (jako część programu Android działającego w tle) i uruchomić go przyciskiem zasilania w powłoce urządzenia. To powinno, jeśli urządzenie jest skonfigurowane tak, aby nie blokować, obudź ekran.
Hrafn

@Hrafn Rozumiem, ale wtedy możesz po prostu użyć interfejsu API PowerManager, z którym już łączyłem się w pytaniu. Wymaga tylko około czterech linii kodu. Chociaż jedną z możliwości byłoby utrzymanie urządzenia podłączonego za pomocą kabla i uruchomienie budzenia za adbpomocą czegoś takiego jak Wakey Droid .
hheimbuerger

Pewnie. Ale aby korzystać z interfejsu API PowerManager, musisz samodzielnie zarządzać stanem pobudki (tak myślę). Więc jeśli kupisz wakelock, po pewnym czasie będziesz chciał wysłać sygnał wyłączenia zasilania. Dzięki kluczowemu zdarzeniu wywoływanemu przez powłokę nie musisz tego zarządzać i możesz po prostu pozwolić systemowi obsłużyć wszystko.
Hrafn
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.