Skip to main content

未提供项目描述

项目描述

IP远程

三星电视 IP 遥控器



IPRemote 是一个库和命令行工具,用于通过 TCP/IP 连接远程控制三星电视。它目前支持具有以太网或 Wi-Fi 连接的 2008+ 电视。这包括 H 和 J 年型号电视以及具有使用基于 SSL 的 websocket 连接的最新三星固件的电视。

在所有电视上,系统都会提示您接受连接,此提示会显示在电视上。在它出错之前,您将有 30 秒的时间来执行此操作。对此略有不同,在 2014 年和 2015 年的电视(H 和 J)上,电视上将显示一个引脚,当提示您在您的 PC 上时必须输入该引脚。

依赖项

  • Python 2.7+
  • websocket-client
  • requests
  • pycryptodome
  • lxml
  • ifaddr
  • six
  • curses(可选,用于交互模式)



安装

首选:

    pip install ipremote

使用下载的代码:

    setup.py install

使用下载的代码,也可以在不安装的情况下使用命令行工具:

    python -m IPRemote



命令行使用

您可以使用IPRemote命令将密钥发送到电视:

    IPRemote --host <host> [options] <key> [key ...]
  • host是电视的主机名或 IP 地址。
  • key是一个关键代码,例如
  • KEY_VOLDOWN(见关键代码)。

    还有一个交互模式(ncurses)用于发送按键:
    IPRemote --host <host> [options] --interactive



用于IPRemote --help获取有关命令行参数的更多信息:

usage: IPRemote [-h] [--version] [-v] [-q] [-i] [--host HOST] [--port PORT]
                     [--method METHOD] [--name NAME] [--description DESC]
                     [--id ID] [--token TOKEN] [--timeout TIMEOUT]
                     [--volume VOLUME] [--mute MUTE] [--brightness BRIGHTNESS]
                     [--contrast CONTRAST] [--sharpness SHARPNESS]
                     [--source SOURCE] [--source-label SOURCE_LABEL]
                     [--config-file PATH/FILENAME]
                     [--start-app APP NAME OR ID] [--app-metadata METADATA]
                     [--key-help]
                     [key [key ...]]

Remote control Samsung televisions via TCP/IP connection

positional arguments:
    key [keys to be sent (e.g. KEY_VOLDOWN)]



参数分解:

可选参数 描述
-h,--帮助 显示此帮助信息并退出
- 版本 显示程序的版本号并退出
-v,--详细 增加输出详细程度
-q,--安静 抑制非致命输出
-i,--交互式 交互控制
--host 主机 电视主机名或 IP 地址
--port 端口 电视端口号 (TCP)
--method 方法 连接方法(legacy 或 websocket)
--name 名称 遥控器名称
--description DESC 遥控器说明
--id 标识 遥控器标识
--token 代币 2014-2015 年电视和一些 2016 年当前电视使用的身份验证令牌
--timeout 超时 以秒为单位的套接字超时(0 = 无超时)
--volume 音量 设置音量允许值:0-100 或 -1 以打印音量
--静音静音 设置静音。允许值:开、关、状态。state 打印静音状态
--brightness 亮度 设置亮度允许值:0-100 或 -1 打印亮度
--对比度 对比度 设置对比度允许值:0-100 或 -1 以打印对比度
--sharpness 锐度 设置锐度允许值:0-100 或 -1 打印锐度
--source SOURCE 设置源。您可以使用电视定义的名称.. HDMI1、HDMI2、PC、USB... 或者您可以使用显示在 OSD 上的编程标签。
--source-label SOURCE_LABEL 设置显示在 OSD 上的源标签
--config-file 路径/文件名 配置文件的路径和文件名 *有关更多信息,请参见下文
--start-app 应用程序名称或 ID 启动应用程序
--app-元数据元数据 应用程序启动时可以使用的信息字符串。例如浏览器。要将其直接打开到特定的 URL,您将输入:"http\/\/www.some-web-address.com"将元数据括在引号中将减少命令行解析器错误的可能性。
--key-help {可选键} 打印出关键帮助



示例使用:

    IPRemote --host 192.168.0.10 --name myremote KEY_VOLDOWN



要获取所有已知密钥的列表:

    IPRemote --help-keys



您还可以获得有关特定键的帮助:

    IPRemote --key-help KEY_16_9



或者,如果您想列出多个键:

    IPRemote --key-help KEY_16_9 KEY_TTX_MIX





--配置文件

如果这是您第一次在电视上使用此库,则必须为您希望执行的命令指定 --host 和密钥代码以及此参数。

    IPRemote --host 192.168.1.100 --config-file "/PATH/FILE.NAME" KEY_MENU



通过这样做,它将为您的电视进行所有必要的配置文件设置。库将命令发送到您的电视后,它将保存文件。之后的任何调用都只需要 --config-file PATH/FILENAME 以及您希望为命令行选项执行的命令。

    IPRemote --config-file "/PATH/FILE.NAME" KEY_MENU



所有其他信息将从文件中检索。





******************

depreciated

***************

可以从配置文件中加载设置。该文件是从

  • $XDG_CONFIG_HOME/IPRemote.conf
  • ~/.config/IPRemote.conf
  • /etc/IPRemote.conf

按照这个顺序。一个简单的默认配置与源捆绑为

  • IPRemote.conf <IPRemote.conf>



图书馆使用

IPRemote 也可以用作 python 包。

    import IPRemote

Remote可以使用以下with语句构造上下文管理的远程控制器类对象:

    with IPRemote.Remote(config) as remote:
        # Use the remote object



配置类

有一个类可以处理所有的配置信息。它使保存和加载配置数据变得更加容易。

import IPRemote

config = IPRemote.Config(
    name='IPRemote',
    description='IPRemote-library',
    method='websocket',
    port=8001
)



Config 类的构造函数采用以下参数:

参数名称 默认值 参数类型 利用
姓名 "IPRemote" str “遥控器”的名称这是将出现在电视上的名称
描述 本地 PC 的主机名 str 仅用于旧版连接(2014 年之前的电视)
主持人 None str 电视的ip地址"192.168.1.1"
港口 None int 要连接的端口。选择是 55000 (< 2014)、8080 (2014 & 2015)、8001 & 8002 (>= 2016) 或None*
方法 None str 连接方法(、"legacy""websocket"* )"encrypted"None
ID None str 这是您可以设置的标识符。当使用“加密”方法时,这应该被忽略
暂停 0 int 套接字超时,仅用于遗留方法
令牌 None str 用于 2014 和 2015 以及一些 2016+ 电视的身份验证令牌
设备ID None str 内部使用
upnp_locations None list 未来使用
苹果电脑 None str 电视的 MAC 地址"00:00:00:00:00"None**。



* 检测系统会自动检测要使用的连接类型和端口。为了让检测系统激活端口,调用 Config 中的方法参数必须是None.

**mac如果您使用的是旧版连接,则不必使用配置类中的参数,<= 2013 TV。如果您使用的是 2014 年及更新版本的电视,如果没有 mac 地址,则开机功能将无法使用。如果您未指定 MAC 地址且电视为 2014 或更新版本,程序将尝试为您获取电视的 MAC 地址。为了成功,您需要打开电视。save如果您使用该方法保存配置数据,则此过程只需执行一次。如果由于某种原因我们无法找到电视的 MAC 地址,您可以选择手动将其传递给对 Config 的调用。如果您手动输入,则需要对其进行格式化"00:00:00:00:00"

这是一个使用所有已激活检测功能运行 IPRemote 的 Python 脚本示例,记住要使其正常工作,您需要打开电视电源。由于我们只想执行一次此过程(因为它可能需要额外的一两秒),我们希望将配置信息保存到文件中。所以一定要在保存方法中输入路径和文件名。

import IPRemote

config = IPRemote.Config(host='192.168.1.100')

with IPRemote.Remote(config) as remote:
    remote.KEY_MENU()

config.save('PATH/FILE.NAME')



Config 类也是您设置日志记录级别的地方

import logging
import IPRemote

config = IPRemote.Config(
    name='IPRemote',
    method='websocket',
    host='192.168.1.100'
)

config.log_level = logging.DEBUG



有两种方法可以保存和加载配置文件。

import IPRemote

config = IPRemote.Config.load('path/to/save/file')



如果您加载文件,则会保存路径,因此您可以调用 save 来保存任何新数据。如果您手动构建了 Config 类,则需要在调用 save 时传递路径。然后保存该路径,因此任何后续的保存调用都不需要您传递路径

import IPRemote

config = IPRemote.Config(
    name='IPRemote',
    description='IPRemote-library',
    method='websocket',
    host='192.168.1.100'
)

config.save('path/to/save/file')



调用 save 时,如果您只传递文件夹路径而不是文件夹/文件路径,则传递给构造函数的名称将与扩展名“.config”一起使用。

您不需要跟踪配置实例。一旦它被传递给 Remote 构造函数,它就会存储在该实例中。

import IPRemote

config = IPRemote.Config.load('path/to/save/file')
远程 =  IPRemote 远程配置
远程配置保存()



交替,

import IPRemote

config = IPRemote.Config.load('PATH/FILE.NAME')(
    name='IPRemote',
    description='IPRemote-library',
    method='websocket',
    host='192.168.1.100'
)

config.save()



只需要一个配置设置例程。

  1. 如果文件存在,则使用它。
  2. 如果您碰巧只指定了一个目录并希望 IPRemote 使用 name 参数作为文件名,这就是使之成为可能的原因。
  3. 如果路径不存在,那么它将使用提供的参数创建一个新配置并保存该配置数据。





您仍然可以将字典传递给 Remote 构造函数。



******************

depreciated

***************

构造函数将配置字典作为参数。必须指定所有配置项。



钥匙 类型 描述
主持人 细绳 电视的主机名或 IP 地址。
港口 整数 TCP 端口号。(默认: 55000)
方法 细绳 连接方式("legacy""websocket"
姓名 细绳 遥控器名称。
描述 细绳 遥控器说明。
ID 细绳 附加遥控器 ID。
令牌 细绳 身份验证令牌
暂停 整数 以秒为单位的超时。0表示没有超时。



电源属性

电源状态以及关闭和打开 2014+ 电视的电源状态

import IPRemote

config = IPRemote.Config.load('path/to/save/file')
远程 =  IPRemote 远程配置
打印远程电源


#远程打开电视功率 = 

print ( remote.power ) #远程关闭电视功率=

  

# 切换电源
遥控器电源 =  远程力量



我们无法打开 2014 年以前的电视。



例外

当出现问题时,您将收到异常:

例外 描述
三星电视错误 三星电视异常基类。
拒绝访问 连接被拒绝。
连接关闭 连接已关闭。
未处理的响应 收到未知回复。
未找到电视 找不到电视。
配置错误 配置异常的基类。
ConfigUnknownMethod 未知的连接方法。
配置解析错误 配置数据不是 json 格式或不是格式化的平面文件。
配置加载错误 找不到指定的配置路径。
配置保存路径错误 配置保存路径无效。
配置保存错误 保存配置时出错。
ConfigSavePathNotSpecified 未指定配置保存路径。
配置参数错误 参数不是配置参数。



示例程序

这个简单的程序会打开和关闭菜单几次。

import IPRemote
import time

config = IPRemote.Config(
    name='IPRemote',
    method='legacy',
    host='192.168.1.100'
)

with IPRemote.Remote(config) as remote:
    for i in range(10):
        remote.control("KEY_MENU")
        time.sleep(0.5)



鼠标控制

鼠标控制只能通过使用 IPRemote 作为 python 模块来完成。鼠标命令是内置的。这样,您可以在单个“命令”中完成多个动作,并且可以存储动作集以供以后使用。根据完成一次运动(行进距离)所需的时间,您需要在每次运动之间插入一个等待时间。

import IPRemote

config = IPRemote.Config(
    name='IPRemote',
    method='websocket',
    host='192.168.1.100'
)

with IPRemote.Remote(config) as remote:
    mouse = remote.mouse
    mouse.move(x=100, y=300)
    mouse.wait(0.5)
    mouse.left_click()
    mouse.run()
    mouse.clear()



这是线程安全的,因此一次只能运行一个鼠标命令集。如果您的鼠标在一个线程中运行并且您需要停止另一个线程的移动,或者您只是想优雅地终止程序,您可以调用mouse.stop()

import IPRemote
import time

config = IPRemote.Config(
    name='IPRemote',
    method='websocket',
    host='192.168.1.100'
)

with IPRemote.Remote(config) as remote:
     mouse = remote.mouse

    def move_mouse(_x, _y):
        mouse.move(x=x, y=y)
        start = time.time()
        mouse.run()
        stop = time.time()
        print('x:', x, 'y:', y, 'time:', (stop - start) * 1000)
        mouse.clear()
        mouse.move(x=-x, y=-y)
        mouse.run()
        mouse.clear()

    for x in range(1920):
        move_mouse(x, 0)

        for y in range(1080):
            move_mouse(0, y)
            move_mouse(x, y)



语音识别

如果您的电视支持语音识别,则您可以在电视上启动和停止语音识别服务。这只能通过将 IPRemote 库用作现有程序的包来完成。如何执行此操作的示例代码如下。

import IPRemote
import time

config = IPRemote.Config(
    name='IPRemote',
    method='websocket',
    host='192.168.1.100'
)

with IPRemote.Remote(config) as remote:
    remote.start_voice_recognition()
    time.sleep(5.0)
    remote.stop_voice_recognition()



应用

以下是如何访问电视上的应用程序的示例。

import IPRemote

config = IPRemote.Config(
    name='IPRemote',
    method='websocket',
    host='192.168.1.100'
)

with IPRemote.Remote(config) as remote:
    for app in remote.applications:
        print('name:', app.name)
        print('=' * 30)
        print('id:', app.app_id)
        print('is running:', app.is_running)
        print('version:', app.version)
        print()



如果您想通过名称或应用程序 ID 访问特定应用程序。

import IPRemote

config = IPRemote.Config(
    name='IPRemote',
    method='websocket',
    host='192.168.1.100'
)

with IPRemote.Remote(config) as remote:
    app = remote.get_application('YouTube')
    if app is not None:
        print('name:', app.name)
        print('=' * 30)
        print('id:', app.app_id)
        print('is running:', app.is_running)
        print('version:', app.version)
        print()



以下是应用程序的可用属性

  • is_lock
  • 姓名
  • app_type
  • 位置
  • app_id
  • 启动器类型
  • mbr_index
  • source_type_num
  • 图标
  • ID
  • mbr_source
  • 动作类型
  • 版本
  • is_visible
  • 在跑



我们还可以针对任何内容组迭代应用程序,然后我们可以针对该组中的可用内容迭代内容组。

import IPRemote

config = IPRemote.Config(
    name='IPRemote',
    method='websocket',
    host='192.168.1.100'
)

with IPRemote.Remote(config) as remote:
    for app in remote.applications:
        print('name:', app.name)
        print('=' * 30)
        for content_group in app:
            print('   ', content_group.title)
            print('   ', '-' * 26)
            for content in content_group:
                print('       ', content.title)



以下是内容组的可用属性:

  • 标题



以下是内容的可用属性:

  • is_playable
  • 字幕
  • app_type
  • 标题
  • mbr_index
  • live_launcher_type
  • action_play_url
  • 服务标识
  • 启动器类型
  • source_type_num
  • 动作类型
  • app_id
  • 字幕2
  • display_from
  • 显示_直到
  • mbr_source
  • ID
  • 字幕3
  • 图标



您还可以通过调用应用程序或内容来运行应用run() 程序或内容。

关键代码

这是支持的键码的新列表。



电源键

钥匙 描述
KEY_POWEROFF 关机
KEY_POWERON 打开
KEY_POWER 电源切换



输入键

钥匙 描述
KEY_SOURCE 资源
KEY_COMPONENT1 组件1
KEY_COMPONENT2 组件2
KEY_AV1 AV1
KEY_AV2 AV2
KEY_AV3 AV3
KEY_SVIDEO1 视频1
KEY_SVIDEO2 视频2
KEY_SVIDEO3 视频3
KEY_HDMI HDMI
KEY_HDMI1 HDMI1
KEY_HDMI2 HDMI2
KEY_HDMI3 HDMI3
KEY_HDMI4 HDMI4
KEY_FM_RADIO 调频广播
KEY_DVI DVI
KEY_DVR 硬盘录像机
KEY_TV 电视
KEY_ANTENA 模拟电视
KEY_DTV 数字电视



数字键

钥匙 描述
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_0 键0



杂项键

钥匙 描述
KEY_PANNEL_CHDOWN 3D
KEY_ANYNET 任网+
KEY_ESAVING 节能
KEY_SLEEP 睡眠定时器
KEY_DTV_SIGNAL 数字电视信号



频道键

钥匙 描述
KEY_CHUP 频道向上
KEY_CHDOWN 通道向下
KEY_PRECH 上一个频道
KEY_FAVCH 收藏频道
KEY_CH_LIST 频道列表
KEY_AUTO_PROGRAM 自动程序
KEY_MAGIC_CHANNEL 魔术频道



音量键

钥匙 描述
KEY_VOLUP 提高音量
KEY_VOLDOWN 音量减小
KEY_MUTE 沉默的



方向键

钥匙 描述
KEY_UP 导航向上
KEY_DOWN 导航向下
KEY_LEFT 导航左
KEY_RIGHT 导航右
KEY_RETURN 导航返回/返回
KEY_ENTER 导航进入



媒体键

钥匙 描述
KEY_REWIND 倒带
KEY_STOP 停止
KEY_PLAY
KEY_FF 快进
KEY_REC 记录
KEY_PAUSE 暂停
KEY_LIVE 居住
KEY_QUICK_REPLAY fnKEY_QUICK_REPLAY
KEY_STILL_PICTURE fnKEY_STILL_PICTURE
KEY_INSTANT_REPLAY fnKEY_INSTANT_REPLAY



画中画

钥匙 描述
KEY_PIP_ONOFF PIP开/关
KEY_PIP_SWAP 点子交换
KEY_PIP_SIZE 画中画大小
KEY_PIP_CHUP 画中画频道向上
KEY_PIP_CHDOWN PIPChannelDown
KEY_AUTO_ARC_PIP_SMALL PIPS小
KEY_AUTO_ARC_PIP_WIDE PIPWide
KEY_AUTO_ARC_PIP_RIGHT_BOTTOM 画中画右下角
KEY_AUTO_ARC_PIP_SOURCE_CHANGE PIPSourceChange
KEY_PIP_SCAN 画中画扫描



模式

钥匙 描述
KEY_VCR_MODE 录像机模式
KEY_CATV_MODE 有线电视模式
KEY_DSS_MODE DSS模式
KEY_TV_MODE 电视模式
KEY_DVD_MODE DVD模式
KEY_STB_MODE 机顶盒模式
KEY_PCMODE PC模式



颜色键

钥匙 描述
KEY_GREEN 绿色的
KEY_YELLOW 黄色
KEY_CYAN 青色
KEY_RED 红色的



图文电视

钥匙 描述
KEY_TTX_MIX 图文电视混合
KEY_TTX_SUBFACE 图文电视字幕



纵横比

钥匙 描述
KEY_ASPECT 纵横比
KEY_PICTURE_SIZE 图片尺寸
KEY_4_3 纵横比4:3
KEY_16_9 纵横比16:9
KEY_EXT14 纵横比 3:4(Alt)
KEY_EXT15 纵横比16:9(Alt)



图片模式

钥匙 描述
KEY_PMODE 图片模式
KEY_PANORAMA 图片模式全景
KEY_DYNAMIC 图片模式动态
KEY_STANDARD 图片模式标准
KEY_MOVIE1 图片模式电影
KEY_GAME 图片模式游戏
KEY_CUSTOM 图片模式自定义
KEY_EXT9 图片模式电影(Alt)
KEY_EXT10 图片模式标准(Alt)



菜单

钥匙 描述
KEY_MENU 菜单
KEY_TOPMENU 顶部菜单
KEY_TOOLS 工具
KEY_HOME
KEY_CONTENTS 内容
KEY_GUIDE 指导
KEY_DISC_MENU 光盘菜单
KEY_DVR_MENU DVR菜单
KEY_HELP 帮助



屏显

钥匙 描述
KEY_INFO 信息
KEY_CAPTION 标题
KEY_CLOCK_DISPLAY 时钟显示
KEY_SETUP_CLOCK_TIMER 设置时钟
KEY_SUB_TITLE 字幕



飞涨

钥匙 描述
KEY_ZOOM_MOVE 缩放移动
KEY_ZOOM_IN 放大
KEY_ZOOM_OUT 缩小
KEY_ZOOM1 缩放1
KEY_ZOOM2 缩放2



其他键

钥匙 描述
KEY_WHEEL_LEFT 左轮
KEY_WHEEL_RIGHT 右轮
KEY_ADDDEL 添加/删除
KEY_PLUS100 加100
KEY_AD 广告
KEY_LINK 关联
KEY_TURBO 涡轮
KEY_CONVERGENCE 收敛
KEY_DEVICE_CONNECT 设备连接
KEY_11 键 11
KEY_12 键 12
KEY_FACTORY 密钥工厂
KEY_3速度 Key3SPEED
KEY_RSURF 密钥RSURF
KEY_FF_ FF_
KEY_REWIND_ 倒带_
KEY_ANGLE 角度
KEY_RESERVED1 保留1
KEY_PROGRAM 程序
KEY_BOOKMARK 书签
KEY_PRINT 打印
KEY_CLEAR 清除
KEY_VCHIP 微芯
KEY_REPEAT 重复
KEY_DOOR
KEY_OPEN 打开
KEY_DMA DMA
KEY_MTS MTS
KEY_DNie DNie
KEY_SRS SRS
KEY_CONVERT_AUDIO_MAINSUB 转换音频主/子
KEY_MDC 数据中心
KEY_SEFFECT 音效
KEY_PERPECT_FOCUS 完美聚焦
KEY_CALLER_ID 来电显示
KEY_SCALE 规模
KEY_MAGIC_BRIGHT 魔术亮
KEY_W_LINK 微联
KEY_DTV_LINK 数字电视链接
KEY_APP_LIST 应用程序列表
KEY_BACK_MHP 返回MHP
KEY_ALT_MHP 备用MHP
KEY_DNSe 域名系统
KEY_RSS RSS
KEY_ENTERTAINMENT 娱乐
KEY_ID_INPUT 身份输入
KEY_ID_SETUP ID设置
KEY_ANYVIEW 任意视图
KEY_MS 多发性硬化症
KEY_MORE
KEY_MIC
KEY_NINE_SEPERATE
KEY_AUTO_FORMAT 自动套用格式
KEY_DNET 网络



自动弧键

钥匙 描述
KEY_AUTO_ARC_C_FORCE_AGING
KEY_AUTO_ARC_CAPTION_ENG
KEY_AUTO_ARC_USBJACK_INSPECT
KEY_AUTO_ARC_RESET
KEY_AUTO_ARC_LNA_ON
KEY_AUTO_ARC_LNA_OFF
KEY_AUTO_ARC_ANYNET_MODE_OK
KEY_AUTO_ARC_ANYNET_AUTO_START
KEY_AUTO_ARC_CAPTION_ON
KEY_AUTO_ARC_CAPTION_OFF
KEY_AUTO_ARC_PIP_DOUBLE
KEY_AUTO_ARC_PIP_LARGE
KEY_AUTO_ARC_PIP_LEFT_TOP
KEY_AUTO_ARC_PIP_RIGHT_TOP
KEY_AUTO_ARC_PIP_LEFT_BOTTOM
KEY_AUTO_ARC_PIP_CH_CHANGE
KEY_AUTO_ARC_AUTOCOLOR_SUCCESS
KEY_AUTO_ARC_AUTOCOLOR_FAIL
KEY_AUTO_ARC_JACK_IDENT
KEY_AUTO_ARC_CAPTION_KOR
KEY_AUTO_ARC_ANTENNA_AIR
KEY_AUTO_ARC_ANTENNA_CABLE
KEY_AUTO_ARC_ANTENNA_SATELLITE



面板键

钥匙 描述
KEY_PANNEL_POWER
KEY_PANNEL_CHUP
KEY_PANNEL_VOLUP
KEY_PANNEL_VOLDOW
KEY_PANNEL_ENTER
KEY_PANNEL_MENU
KEY_PANNEL_SOURCE
KEY_PANNEL_ENTER



扩展键

钥匙 描述
KEY_EXT1
KEY_EXT2
KEY_EXT3
KEY_EXT4
KEY_EXT5
KEY_EXT6
KEY_EXT7
KEY_EXT8
KEY_EXT11
KEY_EXT12
KEY_EXT13
KEY_EXT16
KEY_EXT17
KEY_EXT18
KEY_EXT19
KEY_EXT20
KEY_EXT21
KEY_EXT22
KEY_EXT23
KEY_EXT24
KEY_EXT25
KEY_EXT26
KEY_EXT27
KEY_EXT28
KEY_EXT29
KEY_EXT30
KEY_EXT31
KEY_EXT32
KEY_EXT33
KEY_EXT34
KEY_EXT35
KEY_EXT36
KEY_EXT37
KEY_EXT38
KEY_EXT39
KEY_EXT40
KEY_EXT41



请注意,某些代码在 2016+ 电视上有所不同。例如, KEY_POWEROFFKEY_POWER较新的电视上。

您可以选择使用发送密钥的方法

导入 IPRemote

配置 =  IP远程配置
    名称= 'IPRemote' 
    方法= 'websocket'