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

vin*_*bad 12 api philips-hue

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

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

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

Pau*_*Shi 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网站的My bridge页面中点击"Show me more")

  2. 得到 ACCESSTOKEN

    www.meethue.com/en-US/api/gettoken?devicename=iPhone+5&appid=hueapp&deviceid=**BRIDGEID**
    
    Run Code Online (Sandbox Code Playgroud)
  3. 右键单击"返回应用程序"并ACCESSTOKEN在其重定向到的链接中记下

    phhueapp://sdk/login/**ACCESSTOKEN**
    
    Run Code Online (Sandbox Code Playgroud)

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

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

我写了这个脚本,允许自动获取ACCESSTOKEN今天,但我不保证它将在明天工作,原因我上面解释:P

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

遥控

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

发送命令端点

  • 网址: https://www.meethue.com/api/sendmessage

  • 方法: POST

  • 网址参数:

    token=**ACCESSTOKEN** (which you obtained earlier)
    
    Run Code Online (Sandbox Code Playgroud)
  • 请求标头

    content-type=application/x-www-form-urlencoded
    
    Run Code Online (Sandbox Code Playgroud)
  • 身体

    clipmessage={ bridgeId: "**BRIDGEID**", clipCommand: { url: "/api/0/**APIENDPOINT**", method: "**METHOD**", body: **JSONCOMMAND** } }
    
    Run Code Online (Sandbox Code Playgroud)
    • BRIDGEID 是你之前获得的那个
    • APIENDPOINT/api/<username>/***删除/api/<usename>/部分与官方API相同
    • METHODPUT/GET/POST/DELETE与官方API相同的4方法.尽管GET确实不起作用,因为发送命令端点的所有响应都在下面的部分中解释为200,而DELETE未经过测试
    • JSONCOMMAND 例如,实际的命令体 {"on":true}

获取状态端点

限制

目前的限制是你不能立即从响应中知道你的控制命令是否像官方API一样成功.<200>如果您正确地执行此操作,则通过调用"发送命令端点"获得的所有响应几乎都是.但是,您始终可以从获取状态端点获取与Hue桥相关的所有状态.

远程控制API

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

请享用 :)

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

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