| 本帖最后由 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,楼主就多说了。
 教程完毕,祝各位玩的开心,有不明白的可以去官方的组件页面进行查看。也可以在帖子下面讨论,楼主要是知道会尽量解决。
 
 
 
 |