黄昏至黎明开关和计时器开关都是使照明自动进行的便捷方法。如果您可以将两者结合起来,甚至将它们连接到互联网上,以获得真正的智能照明系统,那不是很好吗?
Raspberry Pi,一个继电器,一个光传感器和一些您只需花很少的钱就可以实现这些代码。
您需要的东西
光感应智能开关的组件很容易获得。您将需要:
光感智能开关的工作原理
通过使用继电器的方式相同作为我们的自动车库门开启器项目,您可以对Raspberry Pi进行编程,以在固定时间打开和关闭照明电路。在混合物中添加一个亮度传感器,意味着Pi可以检测环境光水平,并选择仅在真正需要时才打开灯光。
因为Pi是可以连接的微型计算机连接到网络,您也可以将其设置为通过互联网进行控制。您的智能灯将具有三个输入来确定它们何时亮起:
步骤1:将Raspberry Pi连接到中继器
如果您不熟悉GPIO,请先阅读有关Raspberry Pi GPIO引脚的所有知识。
首先,检查继电器板上是否有将VCC和JD-VCC引脚连接在一起的跳线。
步骤2:连接光度传感器
TSL2561是一种光传感器,可以检测红外,全光谱,和人类可见的光。它可以向Raspberry Pi发送非常精确的数字读数。传感器报告的光线水平范围为0.1(无光照)至40,000(明亮的太阳)。
TSL2561板使用i2c协议与Raspberry Pi通讯。 I2C仅需要两个连接,一个用于时钟,以使两个设备保持同步,另一个用于传输数据。当然,勒克斯传感器也需要一定的功率,因此总共要进行四个连接:
Step 3: Configure and Install Dependencies
在进行进一步操作之前,您需要检查Raspberry Pi上是否已启用I2C(默认情况下处于禁用状态)。在终端中输入以下内容:
sudo raspi-config
选择接口选项> P5 I2C,,然后选择是。
点击 Enter ,然后选择 Finish 退出配置屏幕。重新启动您的Pi才能使更改生效:
sudo reboot
Pi能够与传感器板通信需要一些依赖关系。键入以下命令:
sudo apt-get updatesudo apt-get install -y python-smbussudo apt-get install -y i2c-tools
您可以通过键入以下命令检查一切是否正常:
sudo i2cdetect -y 1
如果已安装依存关系并且lux传感器已正确连接,则会看到类似以下的响应这:
在这里,实用程序报告它在I2C地址39上找到了一个I2C设备(勒克司传感器)。
您还没有完全完成依赖项。您还将需要一些库。首先,在以下文件夹中创建一个文件夹,以保留与该项目相关的所有内容:
mkdir ~/lightingcd ~/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.gitgit clone https://github.com/adafruit/Adafruit_Python_PureIO.git
最后,通过创建一个新文件来创建测试脚本:
nano test.py
在此代码中粘贴(礼貌
完成后,运行测试脚本。
#!/usr/bin/env python# -*- coding: utf-8 -*-from __future__ import absolute_import, division, print_function, unicode_literalsfrom tsl2561 import TSL2561if __name__ == "__main__": tsl = TSL2561(debug=True) print(tsl.lux())
按 Ctrl + X 保存,并按照屏幕上的说明退出。
完成后,运行测试脚本:
python test.py
如果所有内容均已安装且正常运行,您将获得一个电话号码。该数字是传感器的照度读数。尝试阻挡或移动传感器,使其获得更多或更少的光线。然后再次运行测试脚本,看看数字如何变化。
第4步:创建自动化脚本
Raspberry Pi在天黑时会打开灯,但也要切换他们在某些时候离开。例如,您可能希望在晚上天黑时打开灯,然后在午夜关闭以节省电。他们可以在清晨再次亮起,然后在天亮时自行关闭。
要管理具有多个计时区域的日程表,有两种不同的脚本。如果您想在黑暗中打开灯,则每分钟就会运行一个( onzone.py )。另一个( offzone.py )将在您希望灯熄灭的时间内每分钟运行一次,而与灯光水平无关。
脚本将计划使用cron运行工作 。通过选择每个脚本在白天和晚上的哪个小时运行,可以轻松设置灯光自动点亮的时间。您可以根据需要设置任意的打开和关闭时间段。
以及用于自动控制灯光的脚本,还有第三个脚本可以管理覆盖情况。这样一来,无论环境光线如何,您都可以远程打开灯光。
此Python脚本将在您希望灯光昏暗的一天中的每一分钟运行。通过将以下命令复制并粘贴到终端中来下载脚本:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
每次运行onzone.py时,它将从传感器获取lux值,以查看其是否暗淡。如果是,它将检查灯光是否亮起或熄灭。如果它们关闭,它将打开它们。如果不是很暗,脚本将查看指示灯是否亮着。如果是的话,除非它们被覆盖,否则它将关闭它们。
脚本使用名为 lowlux 的变量来确定在什么地方足够暗以打开灯。您可以通过更改onzone.py顶部附近的以下行中的值来将其更改为适合您自己的安装的方式:
lowlux = 50
该脚本将在每天要点亮灯的每一分钟运行除非他们已被覆盖,否则请远离。下载脚本:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
此脚本不关心它的亮或暗。它的工作只是简单地将灯关掉(除非已被覆盖)。
此脚本创建了一个简单的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浏览器中键入以下内容,将IP地址替换为您自己的Raspberry Pi的地址:
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)连接器代替常规开关,如下所示:
最后,您可以将lux传感器安装在可以捕获环境光水平的位置。请注意,如果TSL2561在直射的阳光下会报告为饱和,因此,如果可能的话,最好将其保持在阴暗处。
更多Raspberry Pi项目供您尝试
通过在Web浏览器中键入命令来远程覆盖新的智能照明设置非常麻烦。更好的方法是连接Amazon Echo之类的东西,以使事情变得更容易。结合使用IFTTT上的Alexa服务和Webhooks服务是添加语音控制的简单方法。
请参阅我们的使用IFTTT的指南来帮助您入门。
另一种选择是使用Siri快捷方式。一个带有菜单的快捷方式可以查询灯的状态,并使用覆盖功能将其打开和关闭。
如果您喜欢这个项目,请务必查看这些怪异的Raspberry Pi项目以获取更多创意。
标签: IFTTT Raspberry Pi 智能照明