7

我正在开发一些家庭自动化程序,我想做的一件事是检测我的第 4 代 Apple TV 何时从睡眠中醒来。这通常只会在有人按下 Siri 遥控器上的按钮将其唤醒时才会发生。

我有一台带有 Pulse-Eight USB-CEC 适配器的 PC(连接到与 Apple TV 相同的电视),所以我尝试的第一件事自然是使用 CEC 来确定 Apple TV 何时唤醒。不幸的是,它并不可靠,因为监控 Apple TV 的电源状态以查看它何时唤醒会产生误报。(我应该注意,我没有在 Apple TV 上启用“控制电视和接收器”,并且无法为我正在处理的特定项目打开它,因为我需要 Apple TV 不改变电视的输入。 )

我正在尝试其他方法来做到这一点。我对任何可能性持开放态度,包括:

  • 在 Apple TV 上使用私有 API
  • 在 Apple TV 的后台运行“始终开启”程序,当 Apple TV 唤醒时发送信号(如果可能的话)。(我怀疑不是。)
  • 如果可能的话,监控 Siri Remote 和 Apple TV 之间的蓝牙通信
  • 以某种方式过滤 HDMI-CEC 命令,以便我可以打开“控制电视和接收器”,允许 Apple TV 的 CEC 命令打开和关闭电视,并排除更改电视输入的命令。
  • 任何其他方法,无论多么骇人听闻或荒谬,只要它有效!

有没有人有什么建议?我没有东西可以尝试了!

4

2 回答 2

2

我试图在苹果讨论/支持社区下面发帖,但被告知我无权发布此内容。也许这个小组中的某个人可以成功地做到这一点:

Apple TV 4 CEC 集成在工作时非常棒,但它并非一直都有效,而且不是与所有各种设备一起工作,你可以在论坛上进行搜索,你会看到很多不满意的用户。我想使用树莓派来检测我的 AppleTV 何时进入睡眠状态并醒来,并使用其 RS232C 或自定义 CEC 命令以编程方式打开或关闭我的电视。

我使用了 bonjour services explorer 并比较了 sleep 和 on 状态之间的每一个结果,并且没有任何差异。我原以为 Apple 会欢迎这样的自动化项目,并通过诸如 status: sleep 或 status: on 之类的变量来提供这些信息。 

有没有办法通过网络连接区分这两种状态?

如果没有,是否可以构建一个在后台运行的 TvOS 应用程序并以某种方式将这些信息提供给客户?

于 2017-10-12T06:29:26.233 回答
0

我终于找到了一种似乎始终如一的方法。这种方法非常老套,完全不是我喜欢的那种方法,但它是迄今为止我发现的唯一一种能始终如一地工作的方法。

我拿了一个旧的 USB 网络摄像头并将其固定在我的 Apple TV 前面,这样它的镜头就在 Apply TV 的前置灯的正前方。每当 Apple TV 处于睡眠状态时,我只需通过从相机拍摄图像并分析它们的平均亮度来检查灯是否打开。由于镜头就在灯光旁边,当它打开时,它会在图像中产生一个巨大的白色圆圈,非常容易检测到。

只要 Apple TV 处于睡眠状态,亮起的灯似乎就表明它 100% 的时间已经醒来。我还没有发现一个假阳性或假阴性事件。

由于按下 Siri 遥控器上的按钮会导致此灯闪烁,这也意味着我可以通过在 Apple TV 醒着时寻找灯的变化来检测按钮被按下。它不是 100% 准确的,因为某些按钮的按下速度比我糟糕的旧 USB 网络摄像头的帧速率要快,但它运行得很好。

我非常希望找到一种更好的方法来做到这一点,比如通过 LAN 向 Apple TV 发出请求,其中的响应清楚地表明它是醒着或睡着的,但到目前为止这看起来不太可能。

于 2016-04-01T04:34:24.360 回答