karimgeiger / hkapi
Harman Kardon AVR 的网络功能 API 包装器,支持 HK Remote。
Requires
- php: >=5.6.0
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是注册商标。如果您认为该项目损害了您或您的公司,请与我联系。