2016-02-27 64 views
6

Pracuję nad niektórymi programami automatyki domowej i jedną z rzeczy, które chcę zrobić, jest wykrycie, gdy mój Apple TV 4. generacji obudził się ze snu. Zdarza się to zazwyczaj tylko wtedy, gdy ktoś nacisnął przycisk na swoim pilocie Siri, aby go obudzić.Wykrywanie, kiedy 4. generacji Apple TV obudził się ze snu

Mam komputer (podłączony do tego samego telewizora co Apple TV), który ma przejściówkę USB-CEC Pulse-Eight, więc naturalnie pierwszą rzeczą, którą wypróbowałem, było użycie CEC do określenia, kiedy Apple TV się obudzi. Niestety nie jest to niezawodne, ponieważ monitorowanie stanu zasilania Apple TV, aby zobaczyć, kiedy się budzi, generuje fałszywe alarmy. (Powinienem zauważyć, że nie mam włączonej opcji "Kontroluj telewizory i odbiorniki" w Apple TV, i nie mogę włączyć jej dla konkretnego projektu, nad którym pracuję, ponieważ potrzebuję Apple TV, aby nie zmieniać wejścia telewizora.)

Próbuję wymyślić inny sposób, aby to zrobić. Jestem otwarty na wszelkie możliwości, w tym takie rzeczy jak:

  • wykorzystanie prywatnych API na Apple TV
  • Uruchamianie „na zawsze” programu w tle Apple TV, który wysyła sygnał, gdy Apple TV budzi się, jeśli to nawet możliwe. (Podejrzewam, że tak nie jest).
  • Monitorowanie komunikacji bluetooth pomiędzy Siri Remote i Apple TV, jeśli to możliwe
  • W jakiś sposób filtrowanie poleceń HDMI-CEC, dzięki czemu mogę włączyć "Kontroluj telewizory i odbiorniki" , zezwól na polecenia CEC firmy Apple TV dotyczące włączania i wyłączania telewizora oraz wykluczania poleceń dotyczących zmiany wejścia telewizora.
  • Jakakolwiek inna metoda, bez względu na to, jak ostra lub niedorzeczna, o ile działa!

Czy ktoś ma jakieś sugestie? Skończą mi się różne rzeczy do wypróbowania!

+0

Myślę, że patrzysz na aplikację, która zapewnia serwer sieciowy, prawdopodobnie opublikowany przez Bonjour. – trojanfoe

+0

@trojanfoe Czy możesz być bardziej konkretny? Czy ta aplikacja działa na Apple TV, czy uruchomi się w innym miejscu i będzie podłączona do Apple TV? Jeśli to drugie, jak mogę sprawić, by Apple TV zawsze było podłączone, gdy się obudzi? – GuyGizmo

+0

Nie wiem dokładnie; Po prostu zgaduję, ale moim zdaniem jest to aplikacja zapewniająca usługę sieciową na Apple TV. – trojanfoe

Odpowiedz

0

W końcu znalazłem metodę, która wydaje się działać konsekwentnie. Ta metoda jest niewiarygodnie hackowata i wcale nie jest taka, którą wolałbym robić, ale jest to jedyna, którą udało mi się znaleźć, która działa konsekwentnie.

Wziąłem starą kamerę USB i umieściłem ją na przodzie mojego Apple TV, tak aby jej soczewka znajdowała się bezpośrednio przed światłem skierowanym do przodu telewizora. Ilekroć Apple TV śpi, po prostu sprawdzam, czy światło się włącza, robiąc zdjęcia z kamery i analizując ich średnią jasność. Ponieważ soczewka znajduje się tuż obok światła, po włączeniu tworzy ogromne białe kółko na obrazie, który jest niezwykle łatwy do wykrycia.

Dopóki urządzenie Apple TV zasypia, światło włącza się, wydaje się wskazywać 100% czasu, o którym się obudziło. Muszę jeszcze znaleźć pojedynczy przypadek fałszywego pozytywu lub fałszywego negatywu.

Ponieważ naciskanie przycisków na pilocie Siri powoduje miganie tego światła, oznacza to również, że mogę wykrywać naciśnięte przyciski, szukając zmian w świetle, gdy Apple TV się obudzi. To nie jest w 100% dokładne, ponieważ niektóre naciśnięcia guzików są szybsze niż liczba klatek na sekundę mojej starej starej kamery USB, ale działa to wystarczająco dobrze.

Zdecydowanie wolałbym znaleźć lepszą metodę robienia tego, na przykład wysyłanie prośby przez sieć LAN do Apple TV, gdzie odpowiedź wyraźnie wskazuje, że jest przebudzona lub śpi, ale jak dotąd nie wygląda na to, że jest to możliwe .

1

Próbowałem opublikować poniżej w społeczności dyskusyjnej/wsparcia dla Apple, ale powiedziano mi, że nie mam prawa publikować tych treści.Może ktoś w tej grupie może odnieść sukces:

Apple TV 4 Integracja CEC jest świetna, gdy działa, ale nie działa cały czas, a nie z całym różnorodnym sprzętem tam, możesz zrobić wyszukiwanie na forach, a zobaczysz wielu nieszczęśliwych użytkowników. Chciałbym użyć malinowego PI, aby wykryć, kiedy mój AppleTV kładzie się spać i budzi się i programowo włącza lub wyłącza telewizor za pomocą swoich RS232C lub niestandardowych poleceń CEC.

Użyłem eksploratora usług bonjour i porównałem każdy wynik między stanem uśpienia i na stanie i nie ma żadnych różnic. Spodziewałbym się, że Apple przyjmie takie projekty automatyzacji i udostępni te informacje za pomocą zmiennej, takiej jak status: sleep lub status: on.

Czy istnieje sposób, w jaki mogę odróżnić oba stany przez połączenie sieciowe?

Jeśli nie, czy można zbudować aplikację TvOS działającą w tle i udostępniającą te informacje klientom?

+0

Nie próbowałem pisać o tym na forach pomocy technicznej, ale mogę odpowiedzieć na twoje pytania. Nie można stworzyć aplikacji w tle, przynajmniej nie bez jailbreakingu tvOS. Brak usług sieciowych informujących o tym, czy Apple TV jest w trybie gotowości, czy nie. I całkiem frustrująco, zgłosiłem błąd do Apple'a lata temu o tym, jak Apple TV nie zgłasza poprawnie swojego stanu za pośrednictwem HDMI-CEC, a oni wciąż go nie naprawili. Domyślam się, że CEC/automatyka domowa nie jest dla nich priorytetem. – GuyGizmo