Обновленная статья: https://viktorkirilov.me/post/home-automation-raspberry-pi/
https://youtu.be/wh0OoLUTeM8
С детства я увлекался электроникой и различными механизмами. Раньше я делал различные небольшие проекты с Arduino, такие как ручной тормоз для моего игрового руля, специальный светодиодный тахометр для моей машины (см. мой репозиторий на GitHub), светодиоды с голосовым управлением и так далее. Недавно я купил Raspberry PI 3 и, несмотря на всю шумиху вокруг Интернета вещей, решил начать автоматизировать свой дом.
Поскольку я хорошо знаком с javascript и его экосистемой, я решил создать собственное приложение для телефона с помощью react native
и подключить его через websockets
к бэкэнду NodeJS
. Я использую записи ImmutableJS для обеспечения согласованности структуры данных и производительности приложения. Данные передаются между клиентом и сервером через строки JSON, которые при получении обеими сторонами преобразуются обратно в неизменяемые записи. Я выделил общие модули (между клиентом и сервером) в отдельные локальные пакеты npm — home-records и home-config. Для управления GPIO (контакты малины) я использовал библиотеку pi-blaster
вместе с wiringPi
. Поскольку я не смог найти коды для своего AC, я записал их самостоятельно и добавил в файл конфигурации lirc
. Duckdns
cron используется в качестве динамического DNS, поскольку мой IP-адрес периодически меняется, и мне не придется каждый раз перекомпилировать все приложение или менять конфигурацию. Сервер передает изменения всем подключенным пользователям в режиме реального времени. Приложение телефона находится в папке /phone-app , сервер — в папке /server . Почему бы тебе не взглянуть?
Raspberry Pi 3
— управляющий блок. Устройства высокой мощности, такие как светодиодные ленты, питаются от внешнего 12V 5A power supply
(общее заземление с ПИ). Управление переменным током осуществляется с помощью инфракрасного светодиода длиной волны 950 нм. Система отопления подключена через реле (включение и выключение) и сервопривод термостата, поскольку я избегал разборки. И белая светодиодная лента, и лента RGB подключены через логические транзисторы IRLZ34N
к PI. Еще есть ИК-приемник, на случай, если захочу еще что-нибудь записать. Температура измеряется датчиком температуры DS18B20.
Проводка выглядит так:
Я открыт для любых идей о различных модулях. Если у вас есть какие-то идеи, я буду благодарен, если вы добавите их в систему отслеживания проблем и пометите как Idea
.