Actions on google 谷歌智能家居与我的物联网设备集成(需要澄清)

Actions on google 谷歌智能家居与我的物联网设备集成(需要澄清),actions-on-google,google-home,Actions On Google,Google Home,我想澄清一下谷歌智能家居是如何工作的。 我正在寻找集成我目前的终端设备控制与谷歌智能家居灯 我的终端设备正在运行一个利用RTOS的非常小的微控制器(Linux不可用) 以下是我的看法(请更正或评论) 据我所知,这要求我拥有自己的云服务 哪个将与我当前的终端设备通信 然后,我的云服务将与谷歌云服务对话 我的云服务定义了与多个终端设备通信的协议 谷歌智能家居定义了与我的云服务对话的协议 问题 在没有自己的云服务的情况下,有什么方法可以做到这一点吗 这是一个相当基本的总结-是的 关键的一点是,向G

我想澄清一下谷歌智能家居是如何工作的。 我正在寻找集成我目前的终端设备控制与谷歌智能家居灯

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

以下是我的看法(请更正或评论)

  • 据我所知,这要求我拥有自己的云服务 哪个将与我当前的终端设备通信
  • 然后,我的云服务将与谷歌云服务对话
  • 我的云服务定义了与多个终端设备通信的协议
  • 谷歌智能家居定义了与我的云服务对话的协议
问题

  • 在没有自己的云服务的情况下,有什么方法可以做到这一点吗

  • 这是一个相当基本的总结-是的

    关键的一点是,向Google Home发出命令并不会让它在您的本地网络上发送消息。谷歌从他们的网络发布任何命令,而不是从你的设备

    这看起来可能是一个小细节,但它不需要是一个由你控制的“云服务”,谷歌可以与之对话。它确实需要是一个可公开访问的HTTPS端点。这可能是一个云服务(在大多数情况下都是),一个公共的非云服务器,或者甚至只是一个公共URL,它有一个到您的私有网络的隧道(比如ngrok)


    最后一个问题是你如何使用自己的云服务——你可以在本地机器上设置控件,并使用一个隧道

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

  • 在IFTTT上创建一个配方(小程序),使用Webhook服务将Google Assistant连接到ngrok隧道。这允许您定义一个谷歌主页可以识别的简单关键词短语(如“嘿,谷歌打开我的设备”)。然后,小程序将使用自定义命令(如“”)调用webhook(如ngrok),其中myngroktunnel是您的ngrok隧道地址(见下文#2),Control.cgi是您放置在微控制器上的cgi脚本(见下文#3)

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

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


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

    更大规模地考虑这一点(多个家庭中有1000台设备)没有我自己的云服务。我需要每个设备都有一个公共URL。一旦这些公共URL上线,谷歌服务如何知道它们?你需要某种中央服务器,可以用来帮助向各个设备发出请求。每个执行请求都将包含一个唯一的设备id,你可以使用该id识别哪个终端设备e你需要。但是,人们期望中央服务器也能处理查询请求,并将设备状态返回给助手。你应该有某种服务来存储设备状态并处理助手请求。这可以通过Firebase函数和实时数据库以轻量级的方式完成。这有点垃圾家庭设备无法直接与本地网络端点通信。这将减少大量中间件。