Android电视
这AndroidTV
平台允许您控制Android TV设备或亚马逊消防电视设备。
设置此集成时,建议您不要使用ADB服务器,而是使用内置的Python ADB实现。这简化了设置,使问题更容易解决问题。如果此方法存在稳定性问题,那么您可能希望尝试使用ADB服务器。看到ADB设置部分以获取更多信息。
设备准备
要设置设备,您需要找到其IP地址并启用ADB调试。对于Android电视设备,请为您的设备咨询文档。
对于消防电视设备,说明如下:
- 在您的亚马逊消防电视上打开ADB调试:
- 从主(启动器)屏幕中选择设置。
- 选择我的消防电视>开发人员选项。
- 选择ADB调试。
- 查找Amazon Fire TV设备IP地址:
- 从主(启动器)屏幕中选择设置。
- 选择我的火电视>关于网络。
如果设置中缺少Develper选项,请选择我的Fire TV,然后按下七次按钮。
配置
可以通过使用此MY按钮将Android T必威体育存款V添加到您必威是什么的家庭助理实例中:
选项
可以通过采取以下步骤来通过用户界面设置Android TV的选项:
在这里,您可以定义由后端库自动检测到的应用程序,其中键是应用程序ID,并且值是将在UI中显示的应用程序名称。如果未提供名称,并且选项排除名称未知的应用程序
已启用,该应用将永远不会在源列表中显示。
在这里,您可以配置规则密钥是应用程序ID且值为状态检测规则列表的规则列表。例如,检测规则的有效值是[“待机”,{“ play”:{“ Media_session_state”:4}},{“ paused”:{“ Media_session_state”:3,“ Wake_lock_size”:4}}]
。请注意,规则值必须始终在方括号内([...]
)。请参阅该部分自定义状态检测有关更多信息。
ADB设置
该集成通过将ADB命令发送到您的Android TV / Fire TV设备来起作用。有两种方法可以实现这一目标。
首次连接到设备时,Android TV / Fire TV上将出现一个对话框,要求您批准连接。选中说“始终允许此设备连接”的框,然后命中确定。
1. Python ADB实施
默认方法是使用ADB壳
Python包。从家庭助理助必威是什么理0.101起,如果需要键进行身份验证,并且不提供。ADB密钥
设置选项,然后家庭助理将为您生成钥匙。必威是什么
能够提供ADB密钥
在集成设置上,您需要启用高级模式。
在家庭助理0.10必威是什么1之前,这种方法对新设备的运行不佳。已经努力解决这些问题,但是如果您遇到问题,则应使用ADB服务器选项。
2. ADB服务器
第二种选择是使用ADB服务器连接到您的Android TV和Fire TV设备。
要在集成设置上配置ADB服务器,您需要启用高级模式。
使用这种方法,家庭助理将将ADB命令发送到必威是什么服务器,然后将其发送到Android TV / Fire TV设备并将其报告回到家庭助理。要使用此选项,请添加adb_server_ip
配置的选项。如果您正在与家用助理在同一台计算机上运行服务器,则可以使用必威是什么127.0.0.1
为此值。
ADB故障排除
如果您的Android TV或Fire TV设备的设置失败,则您的ADB连接可能存在问题。这是一些可能的原因。
您的设备的IP地址错误。
设备上未启用ADB。
您已经通过另一台设备通过ADB连接到Android TV / Fire TV。只能连接一台设备,因此请断开另一个设备,重新启动Android TV / Fire TV(良好的方法),然后重新启动家庭助理。必威是什么
您需要批准ADB连接;在ADB设置上面的部分。
一些Android电视设备(例如,运行Android TV的飞利浦电视)仅接受其Wi-Fi接口的初始ADB连接请求。如果您有电视连线,则需要将其连接到Wi-Fi,然后再次尝试初始连接。通过Wi-Fi授予身份验证后,您也可以通过有线接口连接到电视。
如果您的设备删除WiFi,打破ADB连接并导致实体在家庭助理中无法使用,则可以安装尾流锁实用程序(例如必威是什么Wakelock)防止这种情况发生。一些用户报告了小米MI盒子设备的问题。
如果您正在使用Python ADB实施如上所述,方法可能存在一些新设备的问题。在这种情况下,您应该使用ADB服务器而是方法。
服务
MEDIA_PLAYER.SELECT_SOURCE
您可以使用MEDIA_PLAYER.SELECT_SOURCE
命令。只需提供应用程序ID作为来源
。您还可以通过将应用程序ID的前缀加上一个呢
。例如,您可以定义脚本启动和停止Netflix如下:
start_netflix:顺序:-服务:MEDIA_PLAYER.SELECT_SOURCE目标:ENTITY_ID:Media_player.fire_tv_living_room数据:来源:“com.netflix.ninja“stop_netflix:顺序:-服务:MEDIA_PLAYER.SELECT_SOURCE目标:ENTITY_ID:Media_player.fire_tv_living_room数据:来源:“!com.netflix.ninja”
androidtv.adb_command
服务androidtv.adb_command
允许您将键或ADB Shell命令发送到Android TV / Fire TV设备。如果有任何输出,它将存储在'adb_response'
属性(即state_attr('Media_player.android_tv_living_room','adb_response')
在模板中)并记录在信息级别。
服务数据属性 | 选修的 | 描述 |
---|---|---|
ENTITY_ID |
不 | Android TV / Fire TV实体的名称。 |
命令 |
不 | 键命令或ADB shell命令。 |
行动:服务:androidtv.adb_command目标:ENTITY_ID:Media_player.androidtv_tv_living_room数据:命令:“家”
可用的关键命令包括:
力量
睡觉
家
向上
向下
左边
正确的
中心
后退
菜单
关键命令的完整列表可以在后端找到AndroidTV包裹。
您也可以使用命令get_properties
检索家庭助理使用以更新设备状态的属性。必威是什么这些将存储在媒体播放器的'adb_response'
属性并记录在信息级别。这些信息可用于帮助改善后端的状态检测AndroidTV包裹,也定义自己的自定义状态检测规则。
可以找到各种意图的清单这里。
androidtv.learn_sendevent(对于更快的ADB命令)
通过ADB发送命令时,该设备的响应速度可能很慢。问题不是ADB,而是Android命令输入
这用于执行这些动作。发送这些命令的更快方法是使用Androidsendevent
命令。挑战是这些命令是特定于设备的。为了帮助用户学习设备的命令,Android TV集成提供了androidtv.learn_sendevent
服务。它的用法如下:
服务数据属性 | 选修的 | 描述 |
---|---|---|
ENTITY_ID |
不 | Android TV / Fire TV实体的名称。 |
- 致电
androidtv.learn_sendevent
服务。 - 在8秒钟内,点击Android TV / Fire TV遥控器上的一个按钮。
- 8秒钟后,将出现持续的通知,其中包含可以通过该命令发送的等效命令
androidtv.adb_command
服务。此命令也可以在adb_response
媒体播放器在家庭助理中的属性,并将在信息级别记录。必威是什么
例如,服务呼叫脚本可以从中改变:
#发送“ UP”命令(慢)-服务:androidtv.adb_command目标:ENTITY_ID:Media_player.fire_tv_living_room数据:命令:向上
因此:
#使用`sendevent'(更快)发送“ UP”命令-服务:androidtv.adb_command目标:ENTITY_ID:Media_player.fire_tv_living_room数据:命令:“sendevent/dev/intup/event444786979&&sendevent/dev/intup/event411721&&sendevent/dev/intup/event4000&&sendevent/dev/intup/event444786979&&sendevent/dev/intup/event411720&&sendevent/dev/intup/event4000”
Androidtv.Download和Androidtv.upload
您可以使用Androidtv.Download
服务将文件从您的Android TV / Fire TV设备下载到家庭助理实例。必威是什么必威体育存款
服务数据属性 | 选修的 | 描述 |
---|---|---|
ENTITY_ID |
不 | Android电视 /消防电视实体的名称。 |
Device_path |
不 | Android TV / Fire TV设备上的Filepath。 |
local_path |
不 | 您的家庭助理实例中的filepa必威体育存款th。必威是什么 |
同样,您可以使用androidtv.upload
服务以将文件从家庭助理实例上传到Android TV / F必威是什么ire TV设备。
服务数据属性 | 选修的 | 描述 |
---|---|---|
ENTITY_ID |
不 | Android TV / Fire TV实体的名称。 |
Device_path |
不 | Android TV / Fire TV设备上的Filepath。 |
local_path |
不 | 您的家庭助理实例中的filepa必威体育存款th。必威是什么 |
自定义状态检测
Android TV集成是通过定期进行Android TV / Fire TV设备进行轮询并收集少数属性的。不幸的是,没有标准API来确定所有应用程序遵循的设备状态。相反,后端AndroidTV
软件包使用其收集的三个属性来确定状态:audio_state
,,,,Media_session_state
, 和wake_lock_size
。确定状态的正确逻辑取决于当前应用程序,而后端AndroidTV
软件包实现了少数应用程序的特定应用程序检测逻辑。当然,为每个应用程序中的每个应用程序实现自定义逻辑是不可行的AndroidTV
包裹。此外,正确的状态检测逻辑可能会在设备和设备配置之间有所不同。
解决这个问题的解决方案是state_detection_rules
配置参数,该参数允许您提供自己的规则以进行状态检测。键是应用程序ID,值是按顺序评估的规则列表。有效规则是:
'支持'
,,,,“玩”
,,,,“暂停”
,,,,'闲置的'
, 或者'离开'
- 如果这不是地图,那么当此应用是当前应用时,将始终报告此状态
- 如果这是一张地图,则其条目将是将要检查的条件。如果所有条件都是正确的,则将报告该状态。有效条件与3个属性有关(请参见上面的示例配置):
'Media_session_state'
'audio_state'
'wake_lock_size'
'Media_session_state'
=尝试使用Media_session_state
确定状态的财产'audio_state'
=尝试使用audio_state
确定状态的财产
为了确定这些规则应该是什么,您可以使用androidtv.adb_command
用命令服务get_properties
,如androidtv.adb_command部分。