Як створити світлочутливий інтелектуальний комутатор з 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. Якщо це так, видаліть його.

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


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

Крок 2: Підключіть датчик яскравості

TSL2561 - це датчик світла, який може виявляти інфрачервоне, повне спектр і видиме людиною світло. Він може відправити дуже точне цифрове читання Raspberry Pi. Датчик повідомляє про рівень освітленості за шкалою від 0,1 (без світла) до 40000 (яскраве сонце).

Плата TSL2561 спілкується з Raspberry Pi за протоколом i2c. I2C потрібно лише два з "єднання: один для синхронізації, щоб синхронізувати два пристрої, і один для передачі даних. Звичайно, датчик люкс також потребує певного харчування, тому необхідно виконати всього чотири з'єднання:

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

Крок 3. Налаштування і встановлення залежностей

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

sudo raspi-config

Виберіть «Параметри інтерфейсу» > «P5 I2C», потім виберіть «Так».

Натисніть 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 (датчик люкс) за адресою 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, щоб допомогти вам почати.

Інший варіант - використовувати Siri Shortcuts. Один ярлик з меню може запитувати стан світла і використовувати функції перевизначення для їх включення та вимикання.

Якщо вам сподобався цей проект, обов'язково ознайомтеся з цими дивними проектами дивних проектів Raspberry Pi. для більшої кількості ідей.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND