本帖最后由 3125589 于 2018-2-27 14:29 编辑
2月27日更新内容
经过一段时间的使用后发现还有一些问题导致无法正常使用,经过摸索找到了一些折中方案,发上来供大家参考。
关于firetv server我发现github有一些打包好的docker版本,应该可以大幅减少工作量,不过由于我已经部署了,没有测试docker版本,有兴趣的可以试试,看readme应该很简单,贴几个地址供参考。
https://github.com/kevineye/docker-firetv
https://github.com/cbrherms/python-firetv-freenas
https://github.com/MarvAmBass/docker-firetv-server
下面进入正题
经过一段时间使用,我发现firetv server有个比较蛋疼的问题,设备关机后由于获取不到设备状态,firetv server就会崩溃退出,导致下次设备再开机时就无法继续连接HA,必要kill掉进程再次启动,非常麻烦。
经过研究解决方案大致是通过HA的自动化让firetv server服务伴随电视同时进行启停,下面开工
我咨询翻阅了下firetv server原作者的github发现firetv没有停止命令,原作者分享了通过systemctl控制的方案。
我们先添加firetv server服务,在/etc/systemd/system/目录下创建tv.service服务(楼主是fedora,其他系统可能路径有差异,建议查询下systemctl的目录)
服务内容如下:
#########################################################################
[Unit]
Description=Android
Wants=network-online.target
After=network.target
[Service]
Type=simple
User=你的登录用户
#Environment=PATH="$VIRTUAL_ENV/bin:$PATH"
ExecStart=/usr/bin/firetv-server -d 电视IP:5555
[Install]
WantedBy=multi-user.target
#########################################################################
创建服务成功后sudo systemctl daemon-reload重新加载systemctl守护进程,然后sudo systemctl start tv,看看服务是否启动成功。如果启动成功就可以进入HA配置自动化相关内容。
首先在HA中配置cmdline switch 和ping senor配置如下:
switch:
platform: command_line
switches:
arest_pin_four:
command_on: "sudo systemctl restart tv"
command_off: "sudo systemctl stop tv"
binary_sensor:
- platform: ping
host: 电视IP地址
count: 2
scan_interval: 30
上面内容完成可以先检查下命令行开关能否正常使用以及ping传感器是否正常。
然后配置自动化配置文件:
- action:
- service: switch.turn_on
entity_id: switch.arest_pin_four
alias: 'CANTV_ON'
condition: []
id: '1519363544193'
trigger:
- entity_id: binary_sensor.ping_binary_sensor
platform: state
from: 'off'
to: 'on'
- action:
- service: switch.turn_off
entity_id: switch.arest_pin_four
alias: 'CANTV_OFF'
condition: []
id: '1519363544199'
trigger:
- entity_id: binary_sensor.ping_binary_sensor
platform: state
from: 'on'
to: 'off'
理论上重启下HA应该就可以了,这样firetv server就能跟电视开关一起启停了,0.64后如果关闭firetv server服务HA应该只会报一条无法连firetv server服务的报错,比之前版本隔几十秒报一次观感好多了,基本算完美状态。
---------------------------------------------------我是分割线,下面是原贴----------------------------------------------------------------
此方法安装是按HA组件中接入亚马逊FireTV的方法操作的,实际是利用了安卓5555 ADB调试端口未关闭的漏洞进行接入(推测悟空遥控之类应该也是用的这个漏洞)。
优点是官方组件,应该会有后续的维护。另外大部分安卓机顶盒和电视应该都可以按照此方法接入。
缺点是功能比较简单,能关机,暂停,但在我家的看尚电视上音量和切换播放内容的功能无法使用。其他的估计要自己尝试了。
先贴官方链接:
https://home-assistant.io/components/media_player.firetv/
注意,注意,注意这个插件要在Python2版本下运行。
手机发帖无图,大家凑合看吧。
第一步先安装必须的系统插件:
apt-get install swig libssl-dev python-dev libusb-1.0-0 python-yaml
如果是其他操作系统请自行搜索对应的包名,楼主是Fedora 27,这些软件包之前基本都装过。
第二步安装控制服务
再次提醒,以下软件包的安装都要求Python2环境,楼主的HA是部署在Python虚拟环境中(3.7版本),操作系统的Python环境是2版本,所以下面的软件都是在系统的Python环境中安装的。
另外坑比较大的是M2Crypto组件,这个组件是需要编译安装的,安装过程中可能会有各种报错,请各位根据编译结果里的报错百度解决办法,基本都是编译环境和openssl的依赖问题。
pip install flask
pip install https://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.24.0.tar.gz
pip install firetv[firetv-server]
第三步启动控制服务
如果第二部成功完成了,那你基本已经成功了。
在Python2环境中运行一下命令
firetv-server -d <tv device IP>:5555
如果成功运行,可以在其他主机的浏览器中输入
控制服务主机IP地址:5556
如果看到以下内容说明控制服务部署成功了。
{
"devices": {
"default": {
"host": "192.168.1.153:5555",
"state": "play"
}
}
}
最后一步,写配置文件,非常简单
media_player:
- platform: firetv
重启HA应该就能看到控制面板了。
配置文件还有一些可选参数。
host:如果控制服务和HA不在同一主机上,这通过这个指定控制服务的IP地址。
port : 控制服务端口号
device : 如果有多个设备可通过这个选项进行区别,设备名可通过web服务进行查看。
name : 别名,可以自己定义,其实就是friendly name 。如果需要开机启动可以把启动服务的命令写入rc.local,楼主就多说了。
教程完毕,祝各位玩的开心,有不明白的可以去官方的组件页面进行查看。也可以在帖子下面讨论,楼主要是知道会尽量解决。
|