如何将后端服务与飞利浦 Hue 桥接器远程连接



我希望编写一个飞利浦 hue 服务,该服务需要允许用户向我的服务注册他们的 hue 桥接器。 此服务将根据事件更改灯泡的颜色。 我知道我可以使用 IFTTT,但在这种情况下,我不想使用 IFTTT,我想使用飞利浦 hue 的应用程序注册我的网站。

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

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

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. 从 https://www.meethue.com/api/nupnp 找到您的BRIDGEID。(或在 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>/部分
    • METHOD 放置/获取/发布/删除与官方 API 相同的 4 方法。尽管 GET 真的不起作用,因为来自发送命令端点的所有响应都是 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>。但是,您始终可以从获取状态端点中提取与 Hue 桥接器相关的所有状态。

远程控制接口

我编写了飞利浦 HUE Remote API 来专门解决远程控制问题。

享受:)

有关完整的文档,请参阅这篇优秀的论文:

黑客灯泡:飞利浦Hue个人无线照明系统的安全性评估,Nitesh Dhanjani

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

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

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

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

开发者网站上目前有一个表格可以请求抢先体验(必须登录):http://www.developers.meethue.com/content/remote-api

最新更新