Nest恒温器如何通信

时间:2013-03-18 16:43:27

标签: node.js heroku raspberry-pi

我想构建一个类似于Nest Thermostat的基于Raspberry Pi(RPi)的设备,除了我想控制灯开关。我知道我可以轻松地在RPi上编写Node.js脚本,然后将其连接到我的本地路由器,并通过连接到同一路由器的PC来控制它。

但是,我想让它更像巢。我希望能够通过像Heroku这样的云提供商控制不同子网中的20个(或更多)RP。

Nest恒温器不需要用户在其路由器上打开端口,以便Nest服务器可以与其通信。

如果不在客户的路由器中启用端口转发,Nest如何通过网络控制客户的恒温器?

3 个答案:

答案 0 :(得分:5)

博客文章Nest Thermostat API using Node JS and Nest API Update讨论了API 在恒温器和巢实验室服务器之间。特别是:

  

API主要使用发布到其Web服务器的JSON格式数据。

所以有你的答案。通过使用HTTPS定期将数据发布到嵌套Web服务器,Nest可以避免让用户打开其路由器上的任何端口。

<小时/> 对于它的价值,博客文章中的非官方API(在node.js!中)可以在github上找到:Unofficial Nest API on Node

答案 1 :(得分:0)

我认为恒温器会定期发出一个带恒温器序列号的请求来嵌套。它可能会在http标头设置为无限或更可能的情况下超时,如果没有该设备的命令进入,则嵌套服务器只需在一分钟左右后关闭连接。每当嵌套关闭连接时,恒温器会打开一个新的连接。当命令请求带有序列号时,它会快速查找以找到当前连接到该恒温器的线程。该命令在当前恒温器请求的有效负载中发送,执行该连接,连接关闭,恒温器打开新的嵌套请求。

答案 2 :(得分:0)

在HTML 5标准中查看eventSource。它可以完成所需的一切。