Як створити світлочутливий інтелектуальний комутатор з Raspberry Pi та IFTTT
Вимикачі на заході сонця і на світанку, а також таймери - це зручний спосіб автоматизувати освітлення. Хіба не було б чудово, якби ви могли об'єднати їх або навіть підключити їх до Інтернету для дійсно розумної системи освітлення?
- Що вам потрібно
- Як працює світлочутливий інтелектуальний перемикач
- Крок 1: З'єднайте Raspberry Pi до релі
- Крок 2: Підключіть датчик яскравості
- Крок 3. Налаштування і встановлення залежностей
- Крок 4. Створення сценаріїв автоматизації
- Скрипт 1: Зона ON
- Скрипт 2: Зона вимикання
- Скрипт 3: перевизначити сервер
- Крок 5: складіть розклад сценаріїв
- Крок 6: Перевірте реле
- Крок 7: підключи свої вогні
- Більше проектів Raspberry Pi для вас
Raspberry Pi, реле, датчик освітленості і штрих коду - все, що вам потрібно для досягнення цієї автоматичної нірвани освітлення на шнурку.
Що вам потрібно
Компоненти для вашого світлочутливого інтелектуального перемикача легко знайти. Вам знадобитися:
- Будь-яка модель Raspberry Pi працює під управлінням Raspbian.
- Релейна плата, легко знайти на Амазоні.
- Датчик яскравості Adafruit TSL2561.
- Перемички.
- Деякі вогні для автоматизації!
Як працює світлочутливий інтелектуальний перемикач
Використовуючи реле так само, як і наш проект автоматичного відкривання гаражних воріт, ви можете запрограмувати Raspberry Pi на включення і вимикання ланцюга освітлення в певний час. Додавання датчика яскравості до мікса означає, що Pi може визначати рівень навколишнього освітлення і вмикати світло тільки тоді, коли це дійсно необхідно.
Оскільки Pi - це крихітний комп'ютер, який можна з'єднати до мережі, ви також можете налаштувати його на управління через Інтернет. Ваші розумні джерела світла матимуть три входи для визначення моменту їх включення:
- Запрограмований розклад.
- Рівень розсіяного світла.
- Сигнал перевизначення передається по мережі.
Крок 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 буде запускатися кожну хвилину дня, коли ви хочете, щоб світло вмикалося, якщо темно. Завантажте скрипт, скопіювавши і вставивши цю команду в термінал:
Кожен раз, коли запускається onzone.py, він отримує значення люкс від датчика, щоб побачити, чи темно воно. Якщо це так, то він перевірить, чи включені вогні. Якщо вони вимкнені, він увімкне їх. Якщо не темно, скрипт побачить, чи увімкнені вогні. Якщо вони є, він відключить їх, якщо вони не були перевизначені.
Сценарій використовує змінну lowlux, щоб вирішити, в якій точці досить темно, щоб увімкнути світло. Ви можете змінити його на щось відповідне для вашої власної установки, змінивши значення в цьому рядку у верхній частині onzone.py:
lowlux = 50
Скрипт 2: Зона вимикання
Цей сценарій буде запускатися кожну хвилину дня, коли ви хочете, щоб індикатори не світилися, якщо вони не були перевизначені. Завантажте скрипт:
Цей сценарій не дбає про те, наскільки він світлий або темний. Його робота полягає в тому, щоб просто вимкнути світло, якщо вони ввімкнені (якщо вони не були перевизначені).
Скрипт 3: перевизначити сервер
Цей скрипт створює простий веб-сервіс, який може приймати команди для виконання таких дій:
- Увімкніть світло на декілька хвилин незалежно від рівня освітленості.
- Вимкнути світло.
- Дізнайтеся, чи увімкнені вогні зараз або вимкнено.
- Дізнайтеся, як довго повинні світитися лампи, якщо вони були відключені.
Завантажте скрипт:
Перш ніж перейти до наступного кроку, запустіть скрипт 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. для більшої кількості ідей.