如何使用树莓派和IFTTT构建光感应智能开关

电子说

1.3w人已加入

描述

黄昏至黎明开关和计时器开关都是使灯光自动化的便捷方法。如果您可以将两者结合起来,甚至将它们连接到互联网上,以获得真正的智能照明系统,那不是很好吗?

Raspberry Pi,一个继电器,一个光传感器和一些仅需代码即可实现此自动照明必杀技。

所需条件

用于光感应智能开关的组件易于采购。您将需要:

任何运行Raspbian的模型Raspberry Pi。

在亚马逊上很容易找到的中继板。

Adafruit TSL2561发光度传感器

跳线。

一些灯可以自动运行!

光感应智能开关的工作原理

使用继电器的方式与我们自动车库门开启器项目的方式相同,您可以对Raspberry Pi进行编程,以在固定时间打开和关闭照明电路。在混合物中添加一个亮度传感器,意味着Pi可以检测环境光水平,并选择仅在真正需要时才打开灯光。

因为Pi是可以连接的微型计算机连接到网络,您也可以将其设置为通过互联网进行控制。您的智能灯将具有三个输入来确定它们何时亮起:

已编程的时间表。

环境光水平。

超驰信号

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

如果您不熟悉使用GPIO,请先阅读所需的所有内容了解Raspberry Pi的GPIO引脚。

首先,检查您的中继板上是否有将VCC和JD-VCC引脚连接在一起的跳线。

关闭所有电源,然后按如下所示将中继板连接到您的Pi:

将Pi针2(5v)连接到继电器板上的JD-VCC。

Pi针6(GND)到继电器板上的GND。

Pi针15(GPIO) 22)到中继板上的IN1

Pi引脚17(3.3v)到中继板上的VCC。

第2步:连接光度传感器

TSL2561是一种光传感器,可以检测红外光,全光谱和人类可见光。它可以向Raspberry Pi发送非常精确的数字读数。传感器报告的光线水平范围为0.1(无光照)至40,000(明亮的太阳)。

TSL2561板使用i2c协议与Raspberry Pi通讯。 I2C仅需要两个连接,一个用于时钟,以使两个设备保持同步,另一个用于传输数据。当然,勒克斯传感器也需要一定的功率,因此总共需要进行四个连接:

将Pi引脚1(3.3v)连接到勒克斯传感器上的Vin(或VCC)li》

将Pi针3(SDA)连接到流明传感器上的SDA

将Pi针5(SCL)连接到勒克斯传感器上的SCL

将Pi针9( GND)到lux传感器上的GND

第3步:配置和安装依赖项

在进行进一步操作之前,则需要检查Raspberry Pi上是否已启用I2C(默认情况下已禁用)。在终端中输入以下内容:

sudo raspi-config

选择 Interface Options》 P5 I2C,,然后选择 Yes 。。 》

智能开关

点击 Enter ,然后选择 Finish 退出配置屏幕。重新启动Pi,以使更改生效:

sudo reboot

Pi能够与传感器板通信需要一些依赖项。键入以下命令:

sudo apt-get update

sudo apt-get install -y python-smbus

sudo apt-get install -y i2c-tools

您可以通过键入以下内容来检查一切是否正常:

sudo i2cdetect -y 1

如果您的依赖项是已安装并且您的勒克斯传感器正确连接,您将看到类似以下的响应:

智能开关

在此处,该实用程序正在报告已找到I2C设备(勒克斯传感器)位于I2C地址39。

您还没有完全解决依赖关系。您还将需要一些库。首先,创建一个文件夹,以将与此项目相关的所有内容保存在:

mkdir ~/lighting

cd ~/lighting

下一步,下载bottle,这是一个轻量级的框架,可以在Pi上创建一个简单的Web服务器。您将使用它来控制来自网络的灯光。

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

您需要的其他库位于Github上,因此,如果您的Raspberry Pi还没有安装了Git,现在将其添加:

sudo apt-get install git

现在克隆两个库,如下所示:

git clone https://github.com/adafruit/Adafruit_Python_GPIO.git

git clone https://github.com/adafruit/Adafruit_Python_PureIO.git

最后,通过创建一个新文件来创建测试脚本:

nano test.py

粘贴以下代码(由Adafruit提供):

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from __future__ import absolute_import, division, print_function, unicode_literals

from tsl2561 import TSL2561

if __name__ == “__main__”:

tsl = TSL2561(debug=True)

print(tsl.lux())

按屏幕上的说明按 Ctrl + X 保存。

完成后,运行测试脚本:

python test.py

如果一切都已安装并且可以正常工作,您将获得一个电话号码。该数字是传感器的照度读数。尝试阻挡或移动传感器,使其获得更多或更少的光线。然后再次运行测试脚本,并查看数字的变化。

步骤4:创建自动化脚本

Raspberry Pi在天黑时会打开灯光,但也会切换他们在某些时候离开。例如,您可能希望在晚上天黑时打开灯,然后在午夜关闭以节省电。他们可以在清晨再次亮起,然后在天亮时自行关闭。

要管理具有多个计时区域的日程表,有两种不同的脚本。如果您想在黑暗中打开灯,则每分钟就会运行一个( onzone.py )。另一个( offzone.py )会在您希望熄灭的时间内每分钟运行一次,而不管照明强度如何。

智能开关

脚本将计划使用cron作业运行。通过选择每个脚本在白天和晚上的哪个小时运行,可以轻松设置灯光自动点亮的时间。您可以根据需要设置任意的打开和关闭时间段。

以及用于自动控制灯光的脚本,还有第三个脚本可以管理覆盖情况。这样一来,无论环境光线如何,您都可以远程打开灯光。

脚本1:ON区域

此Python脚本将在您需要的每一分钟运行如果天黑了,灯会亮。通过将此命令复制并粘贴到终端中来下载脚本:

wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py

每次运行onzone.py时,它将从传感器获取一个勒克斯值,以查看是否是黑暗的。如果是,它将检查灯光是否亮起或熄灭。如果它们关闭,它将打开它们。如果不是很暗,脚本将查看指示灯是否亮着。如果是的话,除非它们被覆盖,否则它将关闭它们。

脚本使用名为 lowlux 的变量来确定在什么地方足够暗以打开灯。您可以通过更改onzone.py顶部附近的以下行中的值来将其更改为适合您自己的安装的方式:

lowlux = 50 脚本2:OFF区域

该脚本将在每天要关闭的灯光下运行,除非它们已被覆盖。下载脚本:

wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py

此脚本不在乎它的亮或暗。它的工作只是简单地将灯关掉(除非已被覆盖)。

脚本3:覆盖服务器

此脚本创建了一个简单的Web服务,该服务可以接受命令以执行以下操作:

无论环境光线水平如何,都将灯打开几分钟。

将灯关闭。

找出当前灯是开还是关。

找出当灯被覆盖时应保持多长时间。

下载脚本:

wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py

在继续下一步之前,请运行offzone.py脚本,如下所示:

python offzone.py

这将创建脚本用来跟踪所有内容的控制文件。

步骤5:安排脚本

您的Raspberry Pi可以使用cron运行自动化脚本。设置时间表如下:

sudo crontab -e

将这两行粘贴到文本编辑器中:

* 7,8,9,17,18,19,20,21,22,23 * * * python /home/pi/lighting/onzone.py 》 NULL

* 0,1,2,3,4,5,6,10,11,12,13,14,15,16 * * * python /home/pi/lighting/offzone.py 》 NULL

注意:如果您登录Raspberry Pi的用户名不是默认的 pi ,请相应地更改路径。

列出所有您希望在天黑时灯亮的时间。在第一行。所有要熄灭的时间都在第二行。

现在将替代脚本设置为在Pi启动时自动运行:

sudo nano /etc/rc.local

将此行粘贴在文件底部,然后保存并退出:

nohup python /home/pi/lighting/lightserver.py &

最后,重新启动Raspberry Pi,以便可以检查服务器脚本是否以以下方式加载:它应该

sudo reboot 第6步:测试继电器

在连接灯之前,请使用替代功能测试一切是否正常。在与Pi相同的网络上的Web浏览器中键入以下内容,用您自己的Raspberry Pi的地址替换IP地址:

11.22.33.44:1234/overrideon/3

如果一切正常,您可以会听到继电器的喀哒声,浏览器会回答灯已打开三分钟。

继电器闭合时,您可以测试其他倍率功能。这将告诉您由于覆盖而使指示灯保持点亮状态还有多分钟:

11.22.33.44:1234/getoverrideremaining

这应该告诉您指示灯点亮:

11.22.33.44:1234/lightstatus

最后,您可以使用以下命令再次将其关闭:

11.22.33.44:1234/overrideoff

继电器将在打开时发出咔嗒声。

第7步:连接灯光

在将灯光连接到继电器之前,请先关闭并拔下Raspberry Pi。使用继电器板上的常开(NO)连接器代替常规开关,如下所示:

智能开关

最后,您可以安装勒克斯传感器在可以捕获环境光水平的地方。请注意,如果TSL2561在直射的阳光下会报告为饱和,因此,如果可能的话,最好将其保持在阴暗处。

更多Raspberry Pi项目供您尝试

通过在Web浏览器中键入命令来远程覆盖新的智能照明设置非常麻烦。更好的方法是连接Amazon Echo之类的东西,以使事情变得更容易。将IFTTT上的Alexa服务和Webhooks服务结合在一起是添加语音控制的简单方法。

请参阅我们的使用IFTTT的指南来帮助您入门。

智能开关

另一种选择是使用Siri快捷方式。一个带有菜单的快捷方式可以查询灯的状态,并使用覆盖功能将其打开和关闭。

责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分