找回密码
 立即注册
查看: 898|回复: 15

[教程系列] NodeRed部署AndroidTV遥控接入Homekit

[复制链接]

5

主题

82

回帖

663

积分

论坛积极会员

积分
663
金钱
576
HASS币
0
发表于 2025-2-3 17:23:24 | 显示全部楼层 |阅读模式
本帖最后由 mozzie 于 2025-2-3 17:25 编辑

写在前面:针对安卓电视(包括但不限于基于安卓系统的电视、机顶盒或者激光电视)没有比较好的遥控方案,不管是红外还是蓝牙都存在其局限性。偶然机会发现 homeassistant 下可以通过 ADB 命令控制电视遥控,也就有了这篇教程。该功能依赖node-red-contrib-homekit-bridged 插件,WIKI见 Television - NRCHKB
实现功能:
  • 家庭 APP 中可以通过遥控实现开启、关闭电视/盒子
  • 控制中心添加遥控后,可以实现开机关机、方向选择确认、音量调节、返回等功能
  • 可以通过遥控选择电视/盒子上面的 APP

微信图片_20250203171921.png 微信图片_20250203171928.png
  • 准备工作

    • 开启电视/盒子的 ADB 调试
    • homeassistant 设置-> 设备与集成-> 添加设备-> 搜索 Android-> 选择 Android Debug Bridge-> 输入电视/盒子的 IP,过程中电视/盒子可能提示授权,点击允许。
    • homeassistant-> 开发者工具-> 动作->Android Debug Bridge: 学习发送事件-> 选择上面添加的设备 IP-> 点击执行动作-> 在通知内提取有用信息。


  • NodeRed 部署节点

    • Nodered 进入节点管理-> 安装-> 搜索 node-red-contrib-homekit-bridged 并安装
    • 添加 Apple HomeKit 下的 Service 并进行配置,完成配置后点击部署。
    • 数据定义:


  • 流程逻辑

    • node-red-contrib-homekit-bridged 可以模拟一个电视设备
    • 根据 AndroidTV 状态,设置 Homekit 设备状态
      通过 ADB 命令,抓取 AndroidTV 的状态,playing/paused/idle 识别为开机,unavailable 识别为关机状态
    • 根据 Homekit 输出,设置电视状态
      ​{"Active":0/1} ​控制电视关/开
      ​{"Input":0-3} ​切换输入源
      ​{"VolumeSelector":0} ​音量 +
      ​{"VolumeSelector":1} ​音量-
      ​{"RemoteKey":various} ​Homekit 内遥控器点击时,输出不同数值,数值定义如下。
      {"RemoteKey":0} REWIND
      {"RemoteKey":1} FAST_FORWARD
      {"RemoteKey":2} NEXT_TRACK
      {"RemoteKey":3} PREVIOUS_TRACK
      {"RemoteKey":4} ARROW_UP
      {"RemoteKey":5} ARROW_DOWN
      {"RemoteKey":6} ARROW_LEFT
      {"RemoteKey":7} ARROW_RIGHT
      {"RemoteKey":8} SELECT
      {"RemoteKey":9} BACK
      {"RemoteKey":10} EXIT
      {"RemoteKey":11} PLAY_PAUSE
      {"RemoteKey":15} INFORMATION
      
      {"VolumeSelector":0} VOLUME_UP
      {"VolumeSelector":1} VOLUME_DOWN
      
      {"Active":0} POWER_OFF
      {"Active":1} POWER_ON

    • 通过 ADB 命令,控制相应动作。

  • 实现遥控开机逻辑

    • 因本遥控器基于 adb 命令,故无法通过 adb 命令实现开机,本方案需将盒子/TV 设置为上电开机。
    • 需要一个支持功耗检测的智能插座
    • 当按下遥控开机时,读取插座状态,如果处于开启状态,判断其功耗,如果功耗小于 10w,则认定盒子或电视处于关机状态(防止出现手动使用遥控器关闭设备但是没关闭插座的情况),关闭插座并再次打开,实现设备上电开机。如果插座处于关闭状态,打开插座,实现设备上电开机。


  • 实现遥控器选择 app 逻辑

    • 本功能本质上是通过选择输入源的功能实现,设置输入源代码见flow


hassbian.png

flow见附件
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1金钱 +12 收起 理由
隔壁的王叔叔 + 12 高手,这是高手!

查看全部评分

回复

使用道具 举报

0

主题

21

回帖

86

积分

注册会员

积分
86
金钱
65
HASS币
0
发表于 2025-2-4 02:01:17 | 显示全部楼层
感谢分享!
回复

使用道具 举报

14

主题

1526

回帖

4958

积分

论坛元老

积分
4958
金钱
3418
HASS币
0
发表于 2025-2-4 21:23:23 | 显示全部楼层
这个好,感谢分享!
回复

使用道具 举报

2

主题

129

回帖

997

积分

高级会员

积分
997
金钱
866
HASS币
0
发表于 2025-2-5 09:41:48 来自手机 | 显示全部楼层
感谢分享,这个我一直没搞成功。。
回复

使用道具 举报

0

主题

26

回帖

204

积分

中级会员

积分
204
金钱
178
HASS币
0
发表于 2025-2-7 12:44:26 | 显示全部楼层
感谢大神,高手
回复

使用道具 举报

0

主题

5

回帖

38

积分

新手上路

积分
38
金钱
33
HASS币
0
发表于 2025-2-14 22:31:11 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

17

回帖

181

积分

注册会员

积分
181
金钱
164
HASS币
0
发表于 2025-2-15 20:59:42 | 显示全部楼层
6666666666666666666666666666666666
回复

使用道具 举报

qclh 

0

主题

4

回帖

46

积分

新手上路

积分
46
金钱
42
HASS币
0
发表于 2025-2-19 10:24:32 | 显示全部楼层
学习一下
回复

使用道具 举报

qclh 

0

主题

4

回帖

46

积分

新手上路

积分
46
金钱
42
HASS币
0
发表于 2025-2-19 10:28:53 | 显示全部楼层
本帖最后由 qclh 于 2025-2-19 11:22 编辑

请教下,
  • 添加 Apple HomeKit 下的 Service 并进行配置,完成配置后点击部署。这个具体要怎么配置呢?

回复

使用道具 举报

0

主题

15

回帖

231

积分

中级会员

积分
231
金钱
216
HASS币
0
发表于 2025-2-26 14:26:48 | 显示全部楼层
电视重启后会关闭adb
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-5-1 09:46 , Processed in 1.363517 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表