如何使用IFTTT和Raspberry Pi自动化车库门

智能家居产品很酷,但价格昂贵。借助Raspberry Pi和一个或两个组件,可以轻松,廉价地将现有设备连接到互联网。

使车库门具有互联网意识,是学习如何使用智能手机控制现实世界的绝妙介绍。皮。老实说,谁不想让自己感觉像蝙蝠侠,并在驶入车道时自己打开车库?

您需要什么

到自动执行车库门操作,您将需要:

  • 可以带外部触发器的车库门电机。
  • 连接到Internet的Raspberry Pi(任何型号)。本教程假设您的Pi正在运行Raspbian操作系统(如果不是,请参阅我们的文章如何在Raspberry Pi上安装Raspbian)。
  • 中继扩展板,可以在Amazon上找到。
  • Raspberry Pi的2A电源。较低额定值的型号可能无法驱动继电器板和Pi。
  • 四根跨接电缆(对于您要控制的每个额外的门,还要多一根)。
  • 足够Pi和车库门电机之间的两芯电缆。便宜的扬声器线是理想的选择,但是电话或以太网电缆也可以工作。
  • 将这些组件收集在一起后,就该开始了。

    这种自动车库门的工作原理

    大多数车库门电机均可通过外部输入触发以打开或关闭。制造商提供了这些输入,以便安装人员可以在家里的某个地方挂上一个简单的按钮即可打开或关闭门,而无需使用常规遥控器。按下并释放扳机按钮时,它会立即关闭一个电路,告诉电动机启动或停止。

    您将使用继电器代替外部按钮。短暂闭合继电器将闭合电路,就像按下触发按钮一样。在Raspberry Pi上运行的Python脚本将使您可以从家庭网络控制中继,从而控制门。

    步骤1:将Raspberry Pi连接到中继

    您Raspberry Pi与中继板之间至少要建立四个连接。如果您使用的是Pi Zero,则要么需要直接焊接连接,要么将GPIO接头焊接到Pi上,并使用跳线进行连接。推荐使用后一种方法,因为如果您要断开中继板的连接并将Raspberry Pi用于其他用途,则无需拆焊。较大型号的Pis已经具有用于连接插入式跨接电缆的插头。

    如果您不熟悉GPIO,请务必阅读我们的文章,了解有关Raspberry Pi GPIO引脚的所有知识。

    在连接所有组件之前,请检查继电器板上是否有将VCC和JD-VCC引脚连接在一起的跳线。如果有,则将其卸下,因为您需要分别为VCC和JD-VCC供电。

    在所有设备掉电的情况下,按照以下步骤将中继板连接到您的Pi:

  • 将Pi针1或Pin 17(3.3V导轨)连接到继电器板上的VCC。
  • 将Pi引脚6(GND)连接到继电器板上的GND。
  • 最后,将Pi引脚7(GPIO 4)连接到继电器板上的IN1。这是切换继电器的连接。
  • 如果您有多个车库门,或者要添加对电动门的控制,则应在机箱上的IN2,IN3等之间添加额外的连接。 Pi上的中继板和其他免费的GPIO输入/输出引脚。

    步骤2:在Raspberry Pi上安装依赖项

    Raspbian预先安装了Python,但您需要添加GPIO库。在Pi的终端窗口中键入以下内容:

    sudo apt-get updatesudo apt-get -y install python-rpi.gpio

    现在在您的主目录中新建一个文件夹,以放置将用于控制继电器的Python脚本:

    mkdir ~/garagedoorcd ~/garagedoor

    最后,下载bottle,一个轻量级的框架,它将在您的Pi上创建一个简单的Web服务器:

    wget https://bottlepy.org/bottle.py

    步骤3:创建控制脚本

    这是一个非常简单的Python脚本,用于控制通过HTTP中继板:

    # Python Script To Control Garage Door# Load librariesimport RPi.GPIO as GPIOimport timefrom bottle import route, run, template# Set up the GPIO pinsGPIO.setmode(GPIO.BOARD)GPIO.setup(7, GPIO.OUT)GPIO.setup(11, GPIO.OUT)GPIO.output(7, True)   GPIO.output(11, True)# Handle http requests to the root address@route('/')def index(): return 'Go away.'# Handle http requests to /garagedoor@route('/garagedoor/:doornum')def garagedoor(doornum=0): if doornum == '0': return 'No door number specified' elif doornum == '1': GPIO.output(7, False) time.sleep(.8) GPIO.output(7, True) return 'Door number 1 cycled.' elif doornum == '2': GPIO.output(11, False) time.sleep(.8) GPIO.output(11, True) return 'Door number 2 cycled'run(host='0.0.0.0', port=1234)

    在Raspberry Pi上,使用nano创建一个新的Python文件:

    nano door.py

    将上面的脚本复制并粘贴到空文档中。退出并使用 CTRL + X 保存,然后使用 Y 输入进行确认。

    现在通过运行来测试脚本它:

    python door.py

    如果一切正常,您将看到以下消息:

    如果您收到任何错误消息,请检查所有内容是否正确粘贴到文件中,并且

    假设没有错误,请在同一端口上的另一台计算机上运行Web浏览器,而不会在同一端口上运行其他Web服务器(例如Apache)(它将干扰脚本创建的服务器)。网络,然后在地址栏中输入您的Pi的IP地址,后跟一个冒号和1234。例如,如果您的Raspberry Pi的IP地址为11.22.33.44,则应输入 11.22.33.44:1234

    如果一切正常,您将看到一条消息,告诉您要离开!

    现在,在 / garagedoor / 1 之后添加IP地址和端口号,例如: 11.22.33.44:1234/garaged oor / 1

    Enter ,您将听到板上的第一个继电器在关闭并再次打开时单击两次。如果将1更改为2并重新加载页面,则会听到第二个继电器循环。

    步骤4:将继电器连接到门电机

    请参阅车库门电机手册,以查找可以在何处连接外部控制器。将两芯电缆连接到电缆上,然后将电缆的另一端连接到继电器板的螺钉端子上。

    每个继电器有三个端子-如图所示,使用常开对

    再次从网络浏览器中测试所有内容(您可以刷新页面)。如果一切顺利,中继将单击几次,您的车库门应开始打开。

    第5步:将脚本设置为自动加载

    如果您的Raspberry Pi重新启动,出于任何原因,例如断电,您的Python脚本将停止运行。要在启动时加载它,请将以下行添加到您的 /etc/sc.local 文件中(如果以其他用户身份登录到Pi,请将 Pi 更改为您的用户名):

    nohup python /home/pi/garagedoor/door.py &

    使用常规的文本编辑器执行此操作,完成后保存文件。

    请注意安全性注意事项

    此示例Python脚本没有任何安全性-任何可以通过其IP地址访问Raspberry Pi的人都可以打开和关闭车库门。很容易想到,仅仅因为没人知道您的脚本在那里,没人会找到它,但是通过模糊性的安全性一次又一次被证明是一个坏主意。

    完整的身份验证系统已经超出了范围本教程的内容,但是一种简单的安全解决方案是不要让您的Pi在家庭网络之外访问。

    这里有一些保护Raspberry Pi的提示。

    控制您的Raspberry Pi使用IFTTT或Siri的车库门

    如果确实选择从开放的互联网访问Pi,则可以通过“如果这样那么(IFTTT)"服务控制车库门。例如,当您向Amazon Echo发出触发短语时,可以将Alexa和Webhooks IFTTT服务结合使用来打开车库门。

    如果您驾驶具有IFTTT连接服务的汽车,则可以创建当您的汽车驶近您的房屋时,便会打开一个小门,就像蝙蝠侠一样。

    想知道更多吗?

    请参阅我们的可下载指南,以像专业人士一样使用IFTTT。

    另一种触发新的可感知互联网的车库门的方法是使用Siri快捷方式。在小部件中放置一个非常简单的快捷方式意味着您可以省去携带烦人的键,而只需轻扫即可打开车库并点击iPhone。

    车库之外:更多DIY智能家居项目

    中继板可以切换电源电压,因此可以控制大多数家用电器。该项目可以作为向几乎所有带电源的设备添加智能设备的基础。咖啡机,照明设备,空调-都可以通过Raspberry Pi和一些继电器实现自动化。

    对自动吊扇感兴趣的更多方法感兴趣。

    标签: DIY项目教程 家庭自动化 IFTTT Raspberry Pi