通过 TCP/IP 连接远程控制三星电视
项目描述
从 Ape/samsungctl github 分叉,用于传统系列电视。
就我而言,是 F 系列(2013 年)三星电视。为 time_interval 添加了额外的时间来处理键码字符串
三星电视遗产
samsungTVlegacy 是一个库和命令行工具,用于通过 TCP/IP 连接远程控制三星电视。它目前支持 2016 年之前的电视以及大多数具有以太网或 Wi-Fi 连接的现代 Tizen-OS 电视。
依赖项
蟒蛇 3
websocket-client(可选,适用于 2016 年以上的电视)
诅咒(可选,用于交互模式)
安装
samsungTVlegacy 可以使用 pip <( https://pip.pypa.io/ >:
# pip install samsungTVlegacy
或者,您可以克隆 Git 存储库并运行:
# python setup.py install
无需安装即可使用命令行工具:
$ python -m samsungTVlegacy
命令行使用
您可以使用samsungTVlegacy命令将密钥发送到电视:
$ samsungTVlegacy --host <host> [options] <key> [key ...]
host是电视的主机名或 IP 地址。key是一个键码,例如 KEY_VOLDOWN。请参阅密钥代码。
还有一种交互模式 (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与源捆绑在一起。
图书馆使用
samsungTVlegacy 可以作为 Python 3 库导入:
import samsungTVlegacy
可以使用with语句构造Remote类的上下文管理的远程控制器对象:
with samsungTVlegacy.Remote(config) as remote:
# Use the remote object
构造函数将配置字典作为参数。必须指定所有配置项。
钥匙 |
类型 |
描述 |
|---|---|---|
主持人 |
细绳 |
电视的主机名或 IP 地址。 |
港口 |
整数 |
TCP 端口号。(默认: 55000 ) |
方法 |
细绳 |
连接方式(legacy或websocket) |
姓名 |
细绳 |
遥控器名称。 |
描述 |
细绳 |
遥控器说明。 |
ID |
细绳 |
附加遥控器 ID。 |
暂停 |
整数 |
以秒为单位的超时。0表示没有超时。 |
Remote对象非常简单,您只需要control (key) 方法。唯一的参数是一个字符串,命名要发送的密钥(例如 KEY_VOLDOWN)。请参阅密钥代码。您可以使用同一个Remote对象多次调用控制。退出with语句时连接会自动关闭。
当出现问题时,您将收到异常:
例外 |
描述 |
|---|---|
拒绝访问 |
电视不允许您发送密钥。 |
连接关闭 |
连接已关闭。 |
未处理的响应 |
收到了意想不到的回复。 |
套接字超时 |
连接超时。 |
示例程序
这个简单的程序会打开和关闭菜单几次。
#!/usr/bin/env python3
import samsungTVlegacy
import time
config = {
"name": "samsungTVlegacy",
"description": "PC",
"id": "",
"host": "192.168.0.10",
"port": 55000,
"method": "legacy",
"timeout": 0,
}
with samsungTVlegacy.Remote(config) as remote:
for i in range(10):
remote.control("KEY_MENU")
time.sleep(0.5)
关键代码
接受的密钥列表可能因电视型号而异,但以下列表包含一些常用密钥代码及其说明。
三星 F 系列电视的按键代码数量有限,如下所示。
关键代码 |
描述 |
|---|---|
KEY_POWEROFF |
关机 |
KEY_UP |
向上 |
KEY_DOWN |
下 |
KEY_LEFT |
剩下 |
KEY_RIGHT |
正确的 |
KEY_CHUP |
向上 |
KEY_CHDOWN |
P 下 |
KEY_ENTER |
进入 |
KEY_RETURN |
返回 |
KEY_CH_LIST |
频道列表 |
KEY_MENU |
菜单 |
KEY_SOURCE |
资源 |
KEY_GUIDE |
指导 |
KEY_TOOLS |
工具 |
KEY_INFO |
信息 |
KEY_RED |
A / 红 |
KEY_GREEN |
B / 绿色 |
KEY_YELLOW |
C / 黄色 |
KEY_BLUE |
D / 蓝色 |
KEY_PANNEL_CHDOWN |
3D |
KEY_VOLUP |
提高音量 |
KEY_VOLDOWN |
音量减小 |
KEY_MUTE |
沉默的 |
KEY_0 |
0 |
KEY_1 |
1 |
KEY_2 |
2 |
KEY_3 |
3 |
KEY_4 |
4 |
KEY_5 |
5 |
KEY_6 |
6 |
KEY_7 |
7 |
KEY_8 |
8 |
KEY_9 |
9 |
KEY_TV |
电视源 |
KEY_HDMI |
HDMI 源 |
请注意,某些代码在 2016+ 电视上有所不同。例如, KEY_POWEROFF在较新的电视上是KEY_POWER 。
参考
我自己没有对控制协议进行逆向工程,而且 samsungctl 不是唯一的实现。这是启发 samsungctl 的事情的列表。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
samsungTVlegacy -0.1.1.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | eda008f5168df239317a00ccda7307ff7133a286781a0db7422a39be1743716e |
|
| MD5 | 471fa46f75296005b9187f9b9af39da3 |
|
| 布莱克2-256 | 59405f2737106320d3ed6f8f723c7b33b873124b6006da0682e0ee548ffdb47b |
samsungTVlegacy -0.1.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | ed4de2343f873ef85bce0db2f25f586004c78b042441f00a336056f5132e4b31 |
|
| MD5 | 725f7eb6160fc62967e901d9c142087f |
|
| 布莱克2-256 | af8df610d1f7813153d6b3c1e2683f201e2c4d6ef57172dfedc85ddfa1fd86d3 |