Google Home 已经出来一段时间了,有很多人想知道:如何使用它来控制他们现有的 Arduino 或者 Raspberry Pi 等智能设备。 现在我已经搭建好了我的设置,我以为我会和你分享我相当简单的设置。
虽然,我正在使用 Raspberry Pi Zero 来控制五个插座电源板,但本指南更为通用。 它将引导您,了解如何使用任何 Raspberry Pi 设备来控制电子继电器,使用的是 Node.js 和 IFTTT Web 服务。
视频 Demo:
https://www.youtube.com/watch?v=mCTjZTCaTzM
你需要的材料有:
其余的都是软件,如果您是 Raspberry Pi 的新手,请注意,您可能需要一些额外的硬件,如 Usb 线或 WiFi芯片才能启动并运行。
所以,为了使本指南尽可能用户友好,我将分享一些相关的链接出来。
主要的内容是关于::在 WiFi 或以太网(最好是WiFi)上设置您的 Raspberry Pi,并配置您的路由器,以便您可以从外部提供服务。;使用 raspberry-gpio-python 来控制继电器。
对于较新的爱好者,您需要先设置您的 Raspberry Pi。
如果你想要在 Raspberry Pi 设置 WiFi,您需要:设置您的本地 WiFi
代码使用的是 Node.js 来实现的,因此你还需要:在 Raspberry Pi 安装最新的 Node.js
配置路由器,使端口 80 重定向到您的 Raspberry Pi 的MAC地址。 (对不起,由于这将取决于你使用的路由器,因此并没有真正的通用指南)
我更习惯使用 SSH 来连接到 Raspberry Pi 上,因此你也可以查看这篇文章:SSH 登录 Raspberry Pi
在开始这个过程中,很多事情都会出错。 保持耐心,并使用搜索引擎 Google。 社区支持的是非常好的,有可能是别人以前遇到过你的问题!
在 Rasberry Pi 上,有很多使用继电器的指南。
基本上,您将需要从您的 Raspberry Pi 的 5v 输出引脚来提供电源,并选择要用于发送 On/Off 信号的控制引脚以触发继电器。
不同型号的 Raspberry Pi 不同的引脚。如下图所示,我建议根据您的型号,选择相应的黄色针脚。
访问 GitHubhttps://github.com/krpeacock/google_home_starter 来下载此项目的启动程序应用程序,并按照 README 将其配置并运行在您自己的设备上。
如果您有兴趣看到稍微复杂的项目版,您还可以访问 https://github.com/krpeacock/power_strip/tree/strip 查看我的更多的 React 项目。
这里的主要步骤是,构建一个能够处理 POST 请求的 Node + Express 服务器。
我的代码如下所示:
app.post('/api/switches/:id', function(req, res){
var foundSwitch = getSwitch(req.params.id);
foundSwitch.toggle();
saveState();
console.log("postSwitch "+JSON.stringify(foundSwitch));
res.json(foundSwitch);
})
我向 /api/switches/:id 创建了一个 post 请求,其中的 id 形式形如 sw1、sw2 等等。在识别了 swithc 之后,我调用一个 toggle() 方法来运行我的 Python 脚本,并改变我的继电器的状态。
我为打开、关闭功能编写了各种 Python 脚本,并指定哪个 GPIO 引脚连接到每个开关。 例如,sw1_on.py 看起来像:
import RPi.GPIO as GPIO<br/>GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
然后通过请求 node 模块中的 Python Shell,我就可以执行相应的脚本:
const PythonShell = require('python-shell');
PythonShell.run('./public/python/scripts/sw1_on.py')
回头来看,这对于非开发者来说,可能有点棘手。未来,我可能需要把一些启动代码放在计划上。
如果你已经设法达到了目标,这个信息可能是你到这里的唯一原因。 没关系! 这是很酷的一点。
您的服务器正在运行,可以控制继电器。它能使得 POST 请求可以改变继电器的状态。 现在您需要的是,让您的 Google Home 向您的设备发送 POST 请求。 最后,您还将需要添加一些授权,使陌生人无法控制您的设备,但现在我们只是希望能控制设备。
您需要的步骤有:
现在这里是重要的一点。 识别您的 IP 地址(或域,如果您设置该级别的抽象),并将其输入到URL部分。 如果你在我的启动项目中遵循我的过程过来。那么,它将会是这样的地址:
http://ipaddressgoeshere/API/switches/sw1?password=yourpasswordhere
现在,你已经做完了! 您的 Google Home 现在知道:如何通过 HTTP 与智能设备进行通信。
由于这是一个开头,在技术上,您可以继续说“Turn the lamp on”打开和关闭。但是,我更喜欢为每个开关添加重复的添加 on 和 off 命令,以使所有的东西变得更舒适。
观光\评论区