通过TCP/IP连接远程控制三星电视
samsungTVlegac的Python项目详细描述
从Ape/samsungctl github派生,用于传统系列电视。在
在我的例子中是F系列(2013)三星电视。 为time_interval添加了额外的时间,以处理密钥代码字符串
三星电视遗产
samsuntvlegacy是一个用于远程控制三星的库和命令行工具 通过TCP/IP连接的电视。目前支持2016年前的两款电视 大多数现代的Tizen OS电视都有以太网或Wi-Fi连接。在
依赖性
- Python3
- websocket-client(可选,适用于2016+电视)
- curses(可选,用于交互模式)
安装
samsuntvlegacy可以使用pip<;(https://pip.pypa.io/>;)安装:
# pip install samsungTVlegacy
或者,您可以克隆Git存储库并运行:
^{pr2}$无需安装即可使用命令行工具:
$ python -m samsungTVlegacy
命令行用法
您可以使用samsungTVlegacy命令将密钥发送到电视:
$ samsungTVlegacy --host <host> [options] <key> [key ...]
host是电视的主机名或IP地址。key是一个密钥代码,例如。 KEY_VOLDOWN。见Key codes。在
还有一种交互模式(ncurses)用于发送按键,以检查您的电视有哪些按键代码:
$ samsungTVlegacy --host <host> [options] --interactive
有关命令行的详细信息,请使用samsungTVlegacy --help 参数:
usage: samsungTVlegacy [-h] [--version] [-v] [-q] [-i] [--host HOST] [--port PORT] [--method METHOD] [--name NAME] [--description DESC] [--id ID] [--timeout TIMEOUT] [key [key ...]] Remote control Samsung televisions via TCP/IP connection positional arguments: key keys to be sent (e.g. KEY_VOLDOWN) or set of keys (e.g. KEY_SOURCE KEY_RIGHT KEY_ENTER) optional arguments: -h, --help show this help message and exit --version show program's version number and exit -v, --verbose increase output verbosity -q, --quiet suppress non-fatal output -i, --interactive interactive control --host HOST TV hostname or IP address --port PORT TV port number (TCP) --method METHOD Connection method (legacy or websocket) --name NAME remote control name --description DESC remote control description --id ID remote control id --timeout TIMEOUT socket timeout in seconds (0 = no timeout) E.g. samsungTVlegacy --host 192.168.0.10 --name myremote KEY_VOLDOWN
可以从配置文件加载设置。从中搜索文件 $XDG_CONFIG_HOME/samsungctl_legacy.conf,~/.config/samsungctl_legacy.conf,和 /etc/samsungctl_legacy.conf,按此顺序排列。一个简单的默认配置是 与源绑定为samsungctl_legacy.conf。在
库使用
samsuntvlegacy可以作为Python 3库导入:
importsamsungTVlegacy
类Remote的上下文管理的远程控制器对象可以是 使用with语句构造:
withsamsungTVlegacy.Remote(config)asremote:# Use the remote object
构造函数将配置字典作为参数。全部 必须指定配置项。在
Key | Type | Description |
---|---|---|
host | string | Hostname or IP address of the TV. |
port | int | TCP port number. (Default: ^{tt13}$) |
method | string | Connection method (^{tt14}$ or ^{tt15}$) |
name | string | Name of the remote controller. |
description | string | Remote controller description. |
id | string | Additional remote controller ID. |
timeout | int | Timeout in seconds. ^{tt16}$ means no timeout. |
{tt11}你只需要一个简单的对象$ 方法。唯一的参数是一个字符串来命名要发送的密钥(例如。 KEY_VOLDOWN)。见Key codes。您可以多次调用control 使用相同的Remote对象。连接在以下情况下自动关闭 正在退出with语句。在
出现问题时,您将收到一个异常:
^{tb2}$示例程序
这个简单的程序打开和关闭菜单几次。在
#!/usr/bin/env python3importsamsungTVlegacyimporttimeconfig={"name":"samsungTVlegacy","description":"PC","id":"","host":"192.168.0.10","port":55000,"method":"legacy","timeout":0,}withsamsungTVlegacy.Remote(config)asremote:foriinrange(10):remote.control("KEY_MENU")time.sleep(0.5)
按键代码
可接受的按键列表可能因电视型号而异,但以下内容 列表中有一些常见的密钥代码及其描述。在
三星F系列电视的按键代码数量有限,如下所示。在
^{3}$请注意,2016+电视上有些代码是不同的。例如, KEY_POWEROFF在较新的电视上是KEY_POWER。在
参考文献
我自己没有对控制协议进行逆向工程,samsungctl也没有 唯一的实现。以下是激发samsungctl的灵感。在
- 项目
标签: