Nest恒温器如何通信

我想要构build一个类似于Nest Thermostat的树莓派(RPi)设备,除了我想要控制灯光开关。 我知道我可以很容易地在RPi上编写一个Node.js脚本,然后把它连接到我的本地路由器,并用连接到同一个路由器的PC来控制它。

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

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

Nest如何能够通过Web控制客户的恒温器,而无需在客户的路由器中启用端口转发?

博客文章使用Node JS和Nest API Update的Nest Thermostat API讨论了恒温器和嵌套实验室服务器之间的API。 尤其是:

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

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


值得一提的是,博客文章中的非官方API(在node.js!中)可在github上获得: Node上的非官方Nest API 。

我认为恒温器会周期性地发出一个温控器序列号的要求。 在http头文件中可能会超时或更有可能,如果没有命令进入,嵌套服务器只需一分钟左右closures连接。只要嵌套closures连接,恒温器就会打开一个新连接。 当命令请求带有序列号时,可以快速查找当前连接到恒温器的线程。 该命令在当前恒温器请求的有效负载中发送,执行该命令,连接closures,恒温器打开一个新的嵌套请求。

看看HTML5标准中的eventSource。 它做所有需要的。

Interesting Posts