Как создать светочувствительный интеллектуальный коммутатор с Raspberry Pi и IFTTT

Выключатели на закате и на рассвете, а также таймеры — это удобный способ автоматизировать освещение. Разве не было бы замечательно, если бы вы могли объединить их или даже подключить их к Интернету для действительно умной системы освещения?

Raspberry Pi, реле, датчик освещенности и штрих кода — все, что вам нужно для достижения этой автоматической нирваны освещения на шнурке.

Что вам нужно

Компоненты для вашего светочувствительного интеллектуального переключателя легко найти. Тебе понадобиться:

  • Любая модель Raspberry Pi работает под управлением Raspbian.
  • Релейная плата, легко найденная на Амазоне.
  • Датчик яркости Adafruit TSL2561.
  • Перемычки.
  • Некоторые огни для автоматизации!

, Вы можете запрограммировать Raspberry Pi на включение и выключение цепи освещения в определенное время. Добавление датчика яркости к миксу означает, что Pi может определять уровень окружающего освещения и выбирать включение света только тогда, когда это действительно необходимо.

Поскольку Pi — это крошечный компьютер, который можно подключить к сети, вы также можете настроить его на управление через Интернет. Ваши умные источники света будут иметь три входа для определения момента их включения:

  1. Запрограммированное расписание.
  2. Уровень рассеянного света.
  3. Сигнал переопределения передается по сети.

Шаг 1: Подключите Raspberry Pi к реле

Если вы новичок в использовании GPIO, начните с прочтения всего, что вам нужно знать о выводах Raspberry Pi GPIO.

Сначала проверьте, есть ли на вашей плате реле перемычка, соединяющая контакты VCC и JD-VCC. Если это так, удалите его.

Перемычка с релейной платы JD-VCC на VCC

Когда все отключено, подключите релейную плату к вашему Pi следующим образом:

  • Контакт Pi 2 (5 В) к JD-VCC на плате реле.
  • Pi контакт 6 (GND) к GND на плате реле.
  • Pi Pin 15 (GPIO 22) к IN1 на плате реле
  • Pi контакт 17 (3,3 В) для VCC на плате реле.

Raspberry Pi Zero W подключен к релейной плате

Шаг 2: Подключите датчик яркости

TSL2561 — это датчик света, который может обнаруживать инфракрасный, полный спектр и видимый человеком свет. Он может отправить очень точное цифровое чтение Raspberry Pi. Датчик сообщает об уровне освещенности по шкале от 0,1 (без света) до 40000 (яркое солнце).

Плата TSL2561 общается с Raspberry Pi по протоколу i2c. I2C требуется только два соединения: одно для синхронизации, чтобы синхронизировать два устройства, и одно для передачи данных. Конечно, датчик люкс также нуждается в некотором питании, поэтому необходимо выполнить всего четыре соединения:

  • Подключите Pi Pin 1 (3,3 В) к Vin (или VCC) на датчике люкс
  • Подключите Pi Pin 3 (SDA) к SDA на датчике люкс
  • Подключите Pi Pin 5 (SCL) к SCL на датчике люкс
  • Подключите Pi Pin 9 (GND) к GND на датчике люкс

Raspberry Pi Zero W подключен к датчику TSL2561 lux

Шаг 3. Настройка и установка зависимостей

Прежде чем идти дальше, вам нужно убедиться, что I2C включен на Raspberry Pi (по умолчанию он отключен). Введите в терминал следующее:

sudo raspi-config

Выбрать Параметры сопряжения> P5 I2C, тогда выбирай да.

Параметры взаимодействия в утилите raspi-config

Удар Войти затем выберите Конец выйти из экрана конфигурации. Перезагрузите 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

Если ваши зависимости установлены и ваш датчик люкс подключен правильно, вы увидите ответ, подобный следующему:

Утилита IC-Detect сообщает адрес датчика люкс

Здесь утилита сообщает, что обнаружила устройство I2C (датчик люкс) по адресу 39 I2C.

Вы еще не закончили с зависимостями. Вам тоже понадобится несколько библиотек. Сначала создайте папку, в которой будет храниться все, что связано с этим проектом:

mkdir ~/lighting
cd ~/lighting

Затем загрузите бутылку, легкую платформу, которая создаст простой веб-сервер на вашем Pi. Вы будете использовать его для управления своими огнями из Интернета.

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: Зона выключения

Этот сценарий будет запускаться каждую минуту дня, когда вы хотите, чтобы индикаторы не светились, если они не были переопределены. Загрузите скрипт:

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

Этот сценарий не заботится о том, насколько он светлый или темный. Его работа состоит в том, чтобы просто выключить свет, если они включены (если они не были переопределены).

Сценарий 3: переопределить сервер

Этот скрипт создает простой веб-сервис, который может принимать команды для выполнения следующих действий:

  1. Включите свет на несколько минут независимо от уровня освещенности.
  2. Выключить свет.
  3. Узнайте, включены ли огни в настоящее время или выключен.
  4. Узнайте, как долго должны светиться лампы, если они были отключены.

Загрузите скрипт:

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:

sudo nano /etc/rc.local

Вставьте эту строку внизу файла, затем сохраните и выйдите:

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

Наконец, перезагрузите Raspberry Pi, чтобы вы могли убедиться, что серверный скрипт загружается как надо

sudo reboot

Шаг 6: Проверьте реле

Перед подключением источников света проверьте, что все работает, используя функцию переопределения. Введите следующее в веб-браузер в той же сети, что и ваш Pi, заменив 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, прежде чем подключать свет к реле. Используйте нормально разомкнутые (НЕТ) разъемы на плате реле вместо обычного переключателя, например:

Вставка реле в цепь освещения

Наконец, вы можете установить датчик Lux в месте, где он будет отражать уровень освещенности. Обратите внимание, что TSL2561 будет сообщать о насыщенности, если он сталкивается с прямыми яркими солнечными лучами, поэтому лучше по возможности держать его в тени.

Больше проектов Raspberry Pi для вас, чтобы попробовать

Удаленно переопределить новую настройку интеллектуального освещения, введя команды в веб-браузере, довольно громоздко. Лучший способ — подключить что-то вроде Amazon Echo, чтобы упростить процесс. Объединение сервиса Alexa и сервиса Webhooks на IFTTT — это простой способ добавить голосовое управление.

См. Наше руководство по использованию IFTTT, чтобы помочь вам начать работу.

IFTTT Applet для подключения интеллектуальных источников света к Alexa

Другой вариант — использовать Siri Shortcuts. Один ярлык с меню может запрашивать состояние источников света и использовать функции переопределения для их включения и выключения.

Если вам понравился этот проект, не забудьте проверить эти странные проекты Raspberry Pi

для большего количества идей.

Ссылка на основную публикацию
Adblock
detector