Harman Kardon AVR 的网络功能 API 包装器,支持 HK Remote。

dev-master / 1.0.x-dev 2020-01-26 06:01 UTC

This package is not auto-updated.

Last update: 2024-09-24 19:52:32 UTC


README

我有一个梦想。我想将我的 Harman Kardon AVR 集成到我的 SmartHome 环境中。许多 Harman Kardon 的 AV 接收器都提供了网络功能,用于通过 Android 或 iOS 的 HK Remote 进行 AirPlay 和远程控制。但你不能为这样的应用程序编写脚本。

因此,我决定逆向工程应用程序发送的请求,并编写一个具有该功能的 PHP 库。这就是我们现在的样子。请随意浏览 example.php 文件以查看实际演示。

需求

几乎不需要任何东西就可以运行 API。当然,您需要一个兼容的 AV 接收器或任何类似由 Harman Kardon 制造的东西。我正在尝试收集所有工作设备的列表,但由于我们永远无法确定,尝试将 API 对您的设备进行测试,并告诉我它是否工作可能是个好主意。

在客户端,您只需能够使用 PHP 连接到套接字。所需的最小版本是 5.6。当然,要使用自动加载功能,您必须使用 composer。

基本用法

作为 Composer 依赖项

将软件包添加到您的 require-dev 部分中的 composer.json 文件,并更新您的项目。

"require-dev": {
    "karimgeiger/hkapi": "1.0.x-dev"
}
composer update

作为基础项目

使用 composer install 生成自动加载器。

其余的都应该在代码本身中得到很好的文档说明,所以只需查看 example.php 或使用 IDE。

一般

您将从 API 对象开始。选择您的型号作为第三个参数(见:lib/Devices)。如果您的设备未列出,请尝试选择与您的设备尽可能相似的型号。

$hk = new \HKAPI\API('your_ip', 10025, new \HKAPI\Devices\AVR());

之后,您可以在每个预定义区域上使用任何可用的操作。例如

$zone = $hk->zone('Main Zone');
$zone->on();
$zone->selectSource('Radio');

在退出之前,请阅读以下部分,因为它将节省您大量调查时间。

您应该知道的事情

由于 Harman Kardon 不希望此 API 是公开的,访问它有点棘手。没有文档,大多数操作根本不会返回任何状态。因此,您永远不知道某事是否成功或失败。

此外,我们不知道每个请求需要多长时间才能发送。在发送多个请求时请记住这一点。

设备的另一个“特性”是,处理所有请求的服务器将在您的设备上关闭,直到下一次开机(使用按钮或遥控器)。这意味着在那段时间之后您将无法控制接收器。请注意,这种行为对每种设备都不同。某些设备在发出“关闭”命令后立即关闭。您可以尝试 使用这个解决方案。

可用操作

我已经遍历了官方应用程序上所有可用的操作,因此这个列表应该是完整的。尽管如此,仍然有可能存在一些由应用程序未提供的隐藏操作。如果您知道或发现一些新的,请告诉我或打开一个 Pull request。我会非常高兴的。

您可以使用区域对象通过 run() 或魔法方法触发所有操作。您还可以通过使用 API::generateRequest()、API::sendRequest() 和 API::readResponse() 来运行您自己的请求。

  • void on() - 打开设备。
  • void off() - 关闭设备。
  • void sleep() - 切换睡眠或设置睡眠定时器。
  • void play() - 播放当前曲目。
  • void pause() - 暂停当前曲目。
  • void forward() - 在当前曲目中前进。
  • void reverse() - 在当前曲目中倒退。
  • void next() - 选择下一曲目。
  • void previous() - 选择上一曲目。
  • void volumeDown() - 音量增加 +1。(寻找更好的方法...)
  • void volumeUp() - 音量减少 -1。(同上...)
  • void muteToggle() - (取消)静音切换。
  • void up() - 向上。
  • void right() - 向右。
  • void down() - 向下。
  • void left() - 向左。
  • void ok() - 确认选择。
  • void back() - 返回。
  • void home() - 返回主页。
  • void info() - 显示信息菜单。
  • void options() - 显示选项菜单。
  • string heartAlive() - 发送心跳请求并返回一些垃圾数据(耶!)。
  • void selectSource($source) - 选择源。以下显示源列表。

源与屏幕菜单上显示的完全一致,因此在我的情况下

  • 有线卫星
  • 光盘
  • DVR
  • 收音机
  • 电视
  • USB
  • 游戏
  • 媒体服务器
  • 家庭网络
  • AUX
  • 源 A
  • 源 B
  • 源 C
  • 源 D

测试设备

据一些测试人员所说,在这些设备上API似乎可以正常工作。我希望这个列表会随着时间的推移而增加。

  • Harman Kardon AVR 370
  • Harman Kardon AVR 170 - 可以正常工作,但 心跳响应不会响应。
  • Harman Kardon HK 3700 - 可以正常工作,但 唤醒时存在问题。
  • Harman Kardon BDS 7773w
  • Harman Kardon BDS 375
  • Harman Kardon BDS 277
  • Harman Kardon AVR 1510
  • Harman Kardon AVR 161S

已知问题/不兼容设备

在此您可以找到已知不与API当前版本兼容的设备列表以及问题的解释。

  • 没有已知问题

免责声明

本项目与Harman Kardon无任何关联或支持。Harman Kardon是注册商标。如果您认为该项目损害了您或您的公司,请与我联系。