TLDR:我写了一个 API:https ://github.com/jarvisinc/PhilipsHueRemoteAPI
我在我的技术博客 ( http://blog.paulshi.me/technical/2013/11/27/Philips-Hue-Remote-API-Explained.html )上回答了这个问题,我将在这里发布:
这个问题实际上分为两部分:
验证
我还没有找到一种可靠的方法来自动进行身份验证。以下程序需要自动化: 想法是伪装成官方iOS APP,启用后可以远程控制。我们将需要获取BRIDGEID
并ACCESSTOKEN
通过远程控制的身份验证步骤。
BRIDGEID
从https://www.meethue.com/api/nupnp找到你的。(或在meethue 网站上的“我的桥”页面中,然后单击“显示更多”)
得到ACCESSTOKEN
www.meethue.com/en-US/api/gettoken?devicename=iPhone+5&appid=hueapp&deviceid=**BRIDGEID**
右键ACCESSTOKEN
单击“返回应用程序”并在重定向到的链接内写下
phhueapp://sdk/login/**ACCESSTOKEN**
基本上,获取您的访问令牌是一种黑客行为。你将你的应用伪装成官方的 iOS Hue 应用,然后以这种方式请求访问令牌。我不确定是否有更简单的方法,如果您知道,请在下面发表评论。
您可以通过模拟登录会话来实现自动化,并ACCESSTOKEN
通过抓取页面内容来获取。但我认为它非常不可靠,因为对官方页面的任何更改都可能会破坏它。
我编写了这个脚本,允许从ACCESSTOKEN
今天开始自动获取,但由于我上面解释的原因,我不保证它明天会起作用:P
目前,此 OAUTH 进程仅适用于官方应用程序。他们可能会向其他 3rd 方应用程序打开它。
遥控
身份验证完成后,这部分可以自动完成。有 2 个已知的私有端点用于发送控制命令并获取与 hue 桥相关的所有状态。
发送命令端点
网址:https://www.meethue.com/api/sendmessage
方法:POST
网址参数:
token=**ACCESSTOKEN** (which you obtained earlier)
请求头
content-type=application/x-www-form-urlencoded
身体
clipmessage={ bridgeId: "**BRIDGEID**", clipCommand: { url: "/api/0/**APIENDPOINT**", method: "**METHOD**", body: **JSONCOMMAND** } }
BRIDGEID
与您之前获得的相同
APIENDPOINT
与官方 API 相同/api/<username>/***
,去掉/api/<usename>/
部分
METHOD
PUT/GET/POST/DELETE 与官方 API 相同的 4 种方法。尽管 GET 确实不起作用,因为来自 Sending Command Endpoint 的所有响应都是 200,在下面的部分中进行了解释,而 DELETE 没有经过测试
JSONCOMMAND
例如实际的命令体{"on":true}
获取状态端点
网址:https://www.meethue.com/api/getbridge
方法:GET
网址参数:
token=**ACCESSTOKEN**
bridgeid=**BRIDGEID**
请求头
content-type=application/x-www-form-urlencoded
限制
当前的限制是您无法立即从响应中知道您的控制命令是否像官方 API 一样成功。<200>
如果您操作正确,您从调用发送命令端点获得的所有响应几乎总是如此。但是您始终可以从 Getting Status Endpoint 中提取与 Hue 桥相关的所有状态。
远程控制 API
我写了Philips HUE Remote API专门解决遥控问题。
享受 :)
纸
有关完整文档,请参阅这篇优秀的论文:
黑客攻击灯泡: Nitesh Dhanjani对飞利浦 Hue 个人无线照明系统的安全评估