Google Home 智能音箱 + Raspberry Pi 控制插线板

Google Home 已经出来一段时间了,有很多人想知道:如何使用它来控制他们现有的 Arduino 或者 Raspberry Pi 等智能设备。 现在我已经搭建好了我的设置,我以为我会和你分享我相当简单的设置。

虽然,我正在使用 Raspberry Pi Zero 来控制五个插座电源板,但本指南更为通用。 它将引导您,了解如何使用任何 Raspberry Pi 设备来控制电子继电器,使用的是 Node.js 和 IFTTT Web 服务。

视频 Demo:

https://www.youtube.com/watch?v=mCTjZTCaTzM

步骤1:材料准备

你需要的材料有:

  • Google Home
  • 任何型号的 Raspberry Pi
  • GPIO 线
  • 5v 2通道继电器模块

其余的都是软件,如果您是 Raspberry Pi 的新手,请注意,您可能需要一些额外的硬件,如 Usb 线或 WiFi芯片才能启动并运行。

步骤2:板载软件设置

所以,为了使本指南尽可能用户友好,我将分享一些相关的链接出来。

主要的内容是关于::在 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。 社区支持的是非常好的,有可能是别人以前遇到过你的问题!

步骤3:制作电路

在 Rasberry Pi 上,有很多使用继电器的指南。

基本上,您将需要从您的 Raspberry Pi 的 5v 输出引脚来提供电源,并选择要用于发送 On/Off 信号的控制引脚以触发继电器。

不同型号的 Raspberry Pi 不同的引脚。如下图所示,我建议根据您的型号,选择相应的黄色针脚。

Raspberry Pi 引脚图
Raspberry Pi 引脚图

步骤4:创建您的服务器

访问 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')

回头来看,这对于非开发者来说,可能有点棘手。未来,我可能需要把一些启动代码放在计划上。

步骤5:连接到 Google 首页

如果你已经设法达到了目标,这个信息可能是你到这里的唯一原因。 没关系! 这是很酷的一点。

您的服务器正在运行,可以控制继电器。它能使得 POST 请求可以改变继电器的状态。 现在您需要的是,让您的 Google Home 向您的设备发送 POST 请求。 最后,您还将需要添加一些授权,使陌生人无法控制您的设备,但现在我们只是希望能控制设备。

您需要的步骤有:

  1. 访问 https://ifttt.com 并将其连接到您的Google帐户。
  2. 访问 https://ifttt.com/create,然后点击 + 这个链接。
  3. 搜索 Google Assistant
  4. 选择 Google Assistant
  5. 选择“Say a simple phrase”作为您的触发器
  6. 告诉 Google 应该触发什么行动。
  7. 我更喜欢使用我想要控制的设备,所以我说“turn my lamp on”
  8. 指定回应,“"Turning your lamp on"”
  9. 单击“Create Trigger”并继续
  10. 点击 + 该链接
  11. 搜索“Maker”
  12. 选择灰色图标的那个(而不是 WeMo Maker)
  13. 选择“Make a web request”

现在这里是重要的一点。 识别您的 IP 地址(或域,如果您设置该级别的抽象),并将其输入到URL部分。 如果你在我的启动项目中遵循我的过程过来。那么,它将会是这样的地址:

http://ipaddressgoeshere/API/switches/sw1?password=yourpasswordhere
  1. 将 HTTP 方法设置为 POST
  2. Content Type 应为text / plain
  3. Body 可以留空
  4. 创建您的操作并选择 Finish。

步骤6:小结

现在,你已经做完了! 您的 Google Home 现在知道:如何通过 HTTP 与智能设备进行通信。

由于这是一个开头,在技术上,您可以继续说“Turn the lamp on”打开和关闭。但是,我更喜欢为每个开关添加重复的添加 on 和 off 命令,以使所有的东西变得更舒适。

原文链接:Google Home + Raspberry Pi Power Strip

尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.