12

我正在寻找一个飞利浦 Hue 服务,该服务需要允许用户使用我的服务注册他们的 Hue 桥。该服务将根据事件改变灯泡的颜色。我知道我可以使用 IFTTT,但在这种情况下,我不想使用 IFTTT,我想用 philips hue 的应用程序注册我的网站。

知道我该怎么做吗?非常感激你的帮助。谢谢!

编辑:不知道为什么我被否决了,但我确实做了我的研究。我查看了 philips hue 的开发者网站,在他们的 API 上找不到任何明确的内容。我还查看了 iOS SDK,没有看到任何会触发远程设备配对例程的方法。到目前为止,我有这个工作的唯一例子(飞利浦产品之外的是 IFTTT 服务,它允许将条目添加到“我的应用程序”部分)。

4

3 回答 3

22

TLDR:我写了一个 API:https ://github.com/jarvisinc/PhilipsHueRemoteAPI

我在我的技术博客 ( http://blog.paulshi.me/technical/2013/11/27/Philips-Hue-Remote-API-Explained.html )上回答了这个问题,我将在这里发布:

这个问题实际上分为两部分:

  • 验证
  • 遥控

验证

我还没有找到一种可靠的方法来自动进行身份验证。以下程序需要自动化: 想法是伪装成官方iOS APP,启用后可以远程控制。我们将需要获取BRIDGEIDACCESSTOKEN通过远程控制的身份验证步骤。

  1. BRIDGEIDhttps://www.meethue.com/api/nupnp找到你的。(或在meethue 网站上的“我的桥”页面中,然后单击“显示更多”)

  2. 得到ACCESSTOKEN

    www.meethue.com/en-US/api/gettoken?devicename=iPhone+5&appid=hueapp&deviceid=**BRIDGEID**
    
  3. 右键ACCESSTOKEN单击“返回应用程序”并在重定向到的链接内写下

    phhueapp://sdk/login/**ACCESSTOKEN**
    

基本上,获取您的访问令牌是一种黑客行为。你将你的应用伪装成官方的 iOS Hue 应用,然后以这种方式请求访问令牌。我不确定是否有更简单的方法,如果您知道,请在下面发表评论。

您可以通过模拟登录会话来实现自动化,并ACCESSTOKEN通过抓取页面内容来获取。但我认为它非常不可靠,因为对官方页面的任何更改都可能会破坏它。

我编写了这个脚本,允许从ACCESSTOKEN今天开始自动获取,但由于我上面解释的原因,我不保证它明天会起作用:P

目前,此 OAUTH 进程仅适用于官方应用程序。他们可能会向其他 3rd 方应用程序打开它。

遥控

身份验证完成后,这部分可以自动完成。有 2 个已知的私有端点用于发送控制命令并获取与 hue 桥相关的所有状态。

  • 发送命令端点:

    POST https://www.meethue.com/api/sendmessage
    
  • 获取状态端点:

    GET https://www.meethue.com/api/getbridge
    

发送命令端点

  • 网址: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>/部分
    • METHODPUT/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 个人无线照明系统的安全评估

于 2013-11-27T04:07:48.170 回答
2

我按照@paul-jianer-shi 的步骤进行了一些调查,但是访问令牌未显示在生成的 HTML 中。我认为 Hue 门户已经更新并删除了它可能显示访问令牌的方式。

我写了一篇关于通过重用另一个应用程序(如 IFTTT)的访问令牌来执行 Remote Hue 操作的博客文章。主要变化是如何获得该访问令牌。Hue 门户的“我的应用程序”部分中显示的令牌。检查(停用)链接。它包含访问令牌。

下一步是让 Hue Portal 信任我自己的应用程序。

于 2014-09-05T11:14:37.117 回答
0

飞利浦计划将远程 API 提供给第三方(IFTTT 和 meethue.com 已经使用它)。

目前开发者网站上有一个申请提前访问的表格(必须登录): http: //www.developers.meethue.com/content/remote-api

于 2014-10-28T15:49:17.323 回答