繁体   English   中英

Google智能家居与我的物联网设备集成(需要澄清)

[英]Google Smart Home integration with my IoT device (clarification needed)

我正在寻找有关Google智能家居如何运作的一些说明。 我希望将我当前控制灯光的终端设备与Google Smart Home集成。

我的终端设备正在运行一个使用RTOS的小型微控制器(Linux不可用)

我是这样看的(请更正或评论)

  • 根据我的理解,这需要我托管我自己的云服务,该服务将与我当前的终端设备通信?
  • 然后,我的云服务将与Google云服务通信。
  • 我的云服务定义了与多个终端设备通信的协议
  • Google智能家居定义了与我的云服务通信的协议

问题

  1. 有没有我自己的云服务这样做的方法?

这是一个非常基本的事情总结 - 是的。

关键是,向Google Home发出命令并不会在本地网络上发送消息。 Google会从其网络发出任何命令,而不是从您的设备发出。

这似乎是一个小细节,但它不需要是您控制谷歌谈话的“云服务”。 确实需要是可公开访问的HTTPS端点。 这可能是云服务(在大多数情况下也是如此),公共非云服务器,甚至只是具有到您的专用网络的隧道的公共URL(例如使用ngrok)。

最后一个是您如何使用自己的云服务 - 您可以在本地计算机上设置控件,并使用ngrok建立隧道。

我认为一个具体的例子可能是有益的:这里是如何使用像IFTTT这样的中介服务将Google Home连接到您的设备:

  1. 在IFTTT上创建一个配方(applet),使用Webhook服务将Google Assistant连接到ngrok隧道。 这允许您定义Google Home将识别的简单关键字词组(例如“Hey Google turn on my device”)。 然后applet将使用您定义的自定义命令(例如“ https://myngroktunnel.ngrok.io/Control.cgi?mydevice=on ”)调用webhook - 例如ngrok - 其中myngroktunnel是您的ngrok隧道地址(参见下面的#2)和Control.cgi是你放在微控制器上的CGI脚本(见下面的#3)。

  2. 您需要在微控制器上安装并运行ngrok:这将通过ngrok隧道将IFTTT小程序连接到您的微控制器,并为您提供一个可公开访问的URL,将请求转发给您的微控制器。 您通常会将ngrok隧道转发到微控制器上的特定端口,在该端口上运行带有CGI脚本的Web服务器(例如Apache)来控制您的设备。 网上还有其他安全隧道服务:ngrok只是其中之一。 因此,您不必托管自己的Web服务,但必须使用隧道来访问公共服务。

  3. 您放在微控制器上的Web服务器具有控制您设备的CGI脚本(例如,假设您有一个Control.cgi脚本可以打开或关闭您的设备,给定一个命令字符串,如mydevice = on,例如钩子在IFTTT小程序中是“/Control.cgi?mycommand=on”

当然,微控制器上的RTOS能够运行ngrok和web服务器 - 这就是为什么很多人选择使用像Raspberry Pi这样的单板计算机或运行Linux形式的Orange Pi来托管和控制他们的设备。 由于您的设备的RTOS不是Linux,我建议使用一个Linux设备,然后通过LAN将请求转发到您的RTOS设备。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM