如何远程连接philips hue bridge后端服务?

时间:2013-11-11 07:05:21

标签: api philips-hue

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

知道我怎么能这样做吗?非常感激您的帮忙。谢谢!

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

3 个答案:

答案 0 :(得分:21)

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网站的My bridge页面中,点击“显示更多”)

  2. 获取ACCESSTOKEN

    www.meethue.com/en-US/api/gettoken?devicename=iPhone+5&appid=hueapp&deviceid=**BRIDGEID**
    
  3. 正确点击“返回应用”并在其重定向到

    的链接中记下ACCESSTOKEN
    phhueapp://sdk/login/**ACCESSTOKEN**
    
  4. 基本上,获取访问令牌是一种破解。您将您的应用程序假冒为官方iOS Hue应用程序,并以此方式请求访问令牌。我不确定有更简单的方法,如果你知道一个,请在下面做评论。

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

    我写了这个script,允许自动获取今天的ACCESSTOKEN,但我不保证明天会因为我上面解释的原因而工作:P

    目前,此OAUTH流程仅适用于官方应用。他们可能会将其打开到其他第三方应用程序。

    远程控制

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

    • 发送命令端点:

      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/<username>/***与官方API /api/<usename>/相同
      • METHOD PUT / GET / POST / DELETE与官方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桥相关的所有状态。

    远程控制API

    我写了Philips HUE Remote API来专门解决远程控制问题。

    享受:)

    纸张

    有关完整文档,请参阅此优秀论文:

    Hacking Lightbulbs: Security Evaluation of the Philips Hue Personal Wireless Lighting System

    Nitesh Dhanjani

答案 1 :(得分:2)

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

我通过重用另一个应用程序的访问令牌(如IFTTT)写了一篇关于做远程Hue操作的blog post。主要变化是如何获得访问令牌。 Hue Portal的“我的应用”部分中显示的令牌。检查(取消激活)链接。它包含访问令牌。

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

答案 2 :(得分:0)

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

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