在其他networking上的生产Web应用程序中查找Phillips Hue Bridge

我正在Node.js / Express服务器上使用node-hue-api包来处理Hue API。 我build立了一个网站的pipe理部分,只有我可以访问,我想用来控制我的色调灯。 这在我的开发环境中工作正常,因为我的本地主机显然与网桥在相同的networking/ IP上运行。

我认为问题在于,当我将更改推送到我的生产环境(运行在不同IP的数字海洋液滴上,桥接器未连接或意识到)时,显然无法find桥接器 – – 返回空数组作为响应: Hue Bridges Found: []

我不能成为第一个遇到这个问题的人,但是Hue的文档一般都很less。 我已经同时进行UPnP和N-UPnPsearch,但是我已经看到提到了IP扫描,您可以在其中设置特定IP(我知道IP),但是文档实际上并不存在。 有任何想法吗?

由于文档是稀疏的,这是接近工作,这是我的代码的有用的部分,以防万一它帮助别人或显示我做错了什么。

 hue = require("node-hue-api"); //===== Hue ===== var HueApi = require("node-hue-api").HueApi, lightState = hue.lightState, timeout = 5000; var displayResult = function(result) { console.log(JSON.stringify(result, null, 2)); }; var displayError = function(err) { console.error(err); }; var displayBridges = function(bridge) { console.log("Hue Bridges Found: " + JSON.stringify(bridge)); }; hue.nupnpSearch().then(displayBridges).done(); hue.upnpSearch(timeout).then(displayBridges).done(); var hostname = "my-ip-address", username = "my-registered-user-hash", api = new HueApi(hostname, username), state = lightState.create(), lightsObject; //Get all lights attached to the bridge api.lights(function(err, lights) { if (err) throw err; lightsObject = lights; displayResult(lightsObject); console.log(lightsObject); }); 

然后,我通过渲染函数将lightsObject传递给我的pipe理页面,做一个for循环来循环返回的对象中的每个灯光,然后根据对象的状态显示一些切换开关。 然后onchange ,我在这里运行一个jQuery AJAX调用app.put方法,它运行node-hue-api代码来设置灯的状态,从admin页面的切换值属性传递lightId。 这是一张照片来显示工作。

色调UI

app.put代码。 可能可以结合这些,但我想要分开的电话,以防我想在on状态下做更多的创意。

 app.put('/lighton', function(req, res) { //Set the state of the light api.setLightState(req.body.lightId, state.on()) .fail(displayError) .done(); }); app.put('/lightoff', function(req, res) { //Set the state of the light api.setLightState(req.body.lightId, state.off()) .fail(displayError) .done(); }); 

根据Phillips Hue API文档页面中的常见问题解答 :

API位于何处?

网桥中的色调API可以在本地networking上访问。 也就是说, 它可以在您的本地WiFi或有线networking上访问,并且不能在该networking之外直接访问 。 这也使你的色相系统安全。 一旦安装在您的networking上,色相桥将拥有由您的本地路由器设置的自己的IP地址。 这是将命令发送到RESTful API时将使用的IP地址。

我可以远程访问色调(例如IFTTT以外)吗?

计划我们将有一个远程API来访问互联网上的色调。 现在唯一可用的select是使用IFTTT接口。

(强调加)

所以你要么需要在你的主服务器上公开一些你自己创build的定制API,要么使用IFTTT(我相信一个制造商渠道可以做你想做的事情,但是我之前没有和之前一起工作,所以我不太确定) ,如果这个FAQ是相信的话。