Перед тем как начать рассматривать установку программного обеспечения для системы домашней автоматизации, несколько слов об аппаратной части проекта. Разработка аппаратного обеспечения (кросс-платы) для системы домашней автоматизации была вызвана стремлением упорядочить разрозненные элементы централизованного сегмента в единое целое и в тоже время сделать его и отдельным устройством, и «ядром» всей системы. Кроме того, это связано и с идеологией построения самой системы – для небольших объектов вполне может быть достаточно только централизованного сегмента, а для больших объектов система дополнительно «усиливается» распределенным сегментом – т.е. сетью удаленных контроллеров, подключаемых по шине RS485 или по радиоканалу.
Размещенные на сайте ранее материалы позволяют в полной степени «вдохнуть жизнь» в кросс-плату, но для полной реализации её возможностей разработана специализированная программная сборка. Наряду с наработками, о которых уже рассказывалось, так же предусматривается возможность создания пользователем несложных сценариев через интерфейс конфигурирования системы – т.е. без вмешательства во внутренние программные коды исполняемых скриптов и алгоритмов.
На текущий момент на базе кросс-платы реализованы и поддерживаются следующие функции:
управление 8 релейными выходами;
контроль 8 дискретных входов;
шина 1-wire для подключения DS18B20;
шина I2C для подключения DS1307, BMP085; TSL2561, SHT21, MPL115A2, MMA7660
два входа для подключения датчиков температуры и влажности DHT22;
возможность реализации на реле №1 и №2 двух независимых термостатов по командам датчиков температуры (с точностью до десятых долей градуса как в области положительных, так и отрицательных температур);
возможность реализации на реле №3 и №4 двух независимых суточных таймеров (шаг установки – 1 минута);
возможность реализации на реле №5 измерителя освещенности (люксметра);
возможность реализации на реле №7 и №8 двух независимых каналов управления по изменению состояния входов №7 и №8;
отправку сообщений на е-mail при замыкании/размыкании любого из дискретных входов;
построение графиков изменений во времени параметров, получаемых от датчиков;
ведение журналов (ретроспективы) событий на входах и выходах по времени и с «конкретизацией» причин событий, а так же возможность удаленного просмотра и очистки журналов;
самостоятельное конфигурирование пользователем системы через web-интерфейс (создание описанных выше сценариев) непосредственно в процессе работы без перезагрузки сервера.
В принципе, для небольшого объема автоматизации указанных функций вполне достаточно. Однако, возможности системы можно значительно расширить с помощью контроллеров, подключаемых по шине RS485 (это так называемый распределенный сегмент системы). Используя эти контроллеры можно организовать дополнительный сбор показаний температуры и влажности с датчиков DHT11 и DHT22, беспроводное управление кондиционером и освещением, состояние беспроводных датчиков, управление дополнительными нагрузками и контроль дополнительных дискретных входов. Всю необходимую информацию для самостоятельной сборки данных контроллеров, а так же их описание, вы можете найти здесь.
Как можно заметить, по сравнению с предыдущей версией, на текущий момент система домашней автоматизации получила много дополнительных функций. Например, возможность организации охранной и аварийно-предупредительной сигнализации с оповещением на e-mail (соответственно, после получения e-mail можно настроить сообщение об этом на SMS – многие сотовые операторы поддерживают такую функцию). Термостаты, таймеры и люксметр позволят реализовать сценарии управления нагрузками по температуре, по установленному времени и по освещенности.
Далее рассмотрим web-интерфейс. Отмечу, что все web-страницы самомасштабируемые - т.е. автоматически подстраиваются под размер окна браузера. На главной странице предусмотрены три дополнительные вкладки - «Метеостанция», «Радиоуправление» и «Выходы и входы GPIO» с кнопками их развертывания и свертывания. Это позволяет оперативно переключаться между вкладками и в тоже время не загромождать страницу лишней информацией. По умолчанию при открытии web-интерфейса все вкладки свернуты. Периодически изменяющие цвет полоски (красный/зеленый) показывают, что идет обмен данными по шине RS485 Raspberry Pi с метеостанцией и радиомодулем. (рис.1)
Рис.1
На первой вкладке «Метеостанция» выводится информация собственно с самой метеостанции (1 датчик DHT22 и 5 датчиков DHT11), температура и загрузка процессора Raspberry Pi, атмосферное давление (датчик BMP085), показания с двух дополнительных датчиков DHT22, а так же показания с датчика освещенности TSL2561 (рис.2)
Рис.2
На второй вкладке «Радиоуправление» отображается интерфейс управления освещением (4 канала), управления кондиционером (режим охлаждения и режим обогрева в диапазоне +20… +24 °С), состояние радиодатчиков тревоги с кнопкой сброса сигнала тревоги, а так же состояние радиодатчиков положения окон и дверей (рис.3)
Рис.3
Третья вкладка «Выходы и входы GPIO» отображает мнемосхему выходов (реле) и входов GPIO. Кнопки управления выходами являются одновременно и элементами сигнализации состояния выходов – включенное состояние реле отображается красным цветом, отключенное – зеленым.
Кроме того, на этой вкладке указывается информация о «привязке» релейных выходов и дискретных входов к выбранным сценариям – работе по таймеру, термостату или люксметру с указанием диапазонов времени, температуры и освещенности, отправку e-mail при замыкании/размыкании входа и т.д. Если рядом с входом или выходом такая информация отсутствует, это говорит о том, что управление и контроль могут выполняться пользователем только через web-интерфейс. Данные температуры для работы термостатов берутся с двух дополнительных датчиков DS18B20, люксметра – с датчика TSL2561, текущее время – с часов DS1307 (рис.4)
Рис.4
Так же на этой вкладке размещены две кнопки для просмотра журналов событий (ретроспективы) по выходам и входам GPIO. В журналах отображается время изменения состояния того или иного входа/выхода и причина, по которой данное событие произошло. Например, если реле сработало от команды термостата, то в журнале выходов будет указано, при какой точно температуре произошло это срабатывание. Аналогично при срабатывании реле от таймера, люксметра или изменения состояния входа будет зафиксирована причина. Если причина в журнале не указана, значит, управление реле было инициировано пользователем через web-интерфейс (рис.5):
Рис.5
Четырехканальные контроллеры вынесены на отдельную страницу «Контроллеры», так как таких контроллеров может быть несколько штук. Посредством таких контроллеров через RS485 можно управлять четырьмя релейными выходами, контролировать состояние четырех дискретных входов и получать данные температуры и влажности от датчика DHT22 (рис.6):
Рис.6
На странице «Графики» отображаются графики изменения во времени показаний различных датчиков (рис.7). С принципами формирования и визуализации графиков можно в этой статье – Построение графиков.
Рис.6
Страница «Конфигурация» предназначена для настройки системы – на ней пользователь может самостоятельно «привязать» к определенным реле термостаты, таймеры, установить температуру и время включения и отключения реле, настроить отправку сообщений на e-mail, очистить журналы событий по входам и выходам. Что бы корректно ввести данные на странице «Конфигурация», необходимо предварительно прочитать конфигурационный файл кнопкой «Считать» внести необходимые изменения и только затем записать данные в файл кнопкой «Записать».
Рис.8
Установка и настройка ПО для системы домашней автоматизации (из образа):
1. Отформатировать SD карту (емкостью не менее 4 Гб) в программе SDFormatter. При форматировании в разделе «Option»указать тип формата «Quick» и формат сборки «On».
2. На отформатированную карту с помощью программы imageUSBустановить образ системы домашней автоматизации.
3. С помощью программы IPScanопределить IP адрес Raspberry Pi в локальной сети (например, 192.168.1.11)
4. Выполнить вход на Raspberry Pi по адресу: ваш IP:8000 (логин – webiopi, пароль - raspberry). Логин и пароль затем можно будет изменить.
5. В данном интерфейсе уже есть возможность управления 8-мю выходами и контроль 8-ми входов, реализованных непосредственно на портах GPIO Raspberry Pi. Для реализации остальных функций необходимо подключить дополнительные датчики и устройства (см. п.6…п.8)
6. Подключить к Raspberry Pi датчики DS18B20, BMP085, TSL2561, DHT22.
7. Запустить программу Putty и настроить доступ к Raspberry Pi – ваш IP, порт – 22, имя пользователя – pi, пароль – raspberry. Открыть файл конфигурации webIOPi:
sudo nano /etc/webiopi/config
Раскомментировать в разделе «Scripts» скриты script_gpio.py и script_sensor.py, а в разделе «Devices» устройства tmp0, tmp1, bmp, light0. Обратите внимание, что для датчиков tmp (DS18B20) необходимо указать их серийные номера.
8. Подключить в порт USB Raspberry Pi адаптер USB/RS485, а к нему, в свою очередь контроллеры, работающие по шине RS485 (метеостанция, радиомодуль)
9. Открыть файл конфигурации webIOPi:
sudo nano /etc/webiopi/config
Раскомментировать в разделе «Scripts» скрипт script_modbus.py, а в разделе «Devices» устройство serial0
10. Выполнить настройку отправки e-mail при срабатывании входов. Для этого с помощью программы WinSCP открыть в текстовом редакторе скрипт script_gpio и изменить его в разделе «Макросы e-mail»следующим образом:
значение mail_from – адрес, с которого будут отправляться сообщения
значение mail_to – адрес, на который будут приходить сообщения
значение mail_text – текст отправляемого письма
значение mail_subj – тема отправляемого письма
значение attach_file – путь к прикрепляемому к письму файлу (при необходимости)
значение smtp_server – адрес smtp сервера
значение smtp_port – порт smtp сервера
значение smtp_user – smtp отправителя (адрес)
значение smtp_pwd – пароль отправителя
Более подробно о настройке скрипта отправки e-mail и формировании SMS оповещений можно почитать здесь.
11. Выполнить перезагрузку WebIOPi командой:
sudo /etc/init.d/webiopi restart
12. В пункте меню «Конфигурация» web-интерфейса выполнить требуемые для пользователя установки, очистить журналы событий, очистить данные графиков. Система домашней автоматизации готова к работе.
В связи с тем, что периодически устраняются различные недостатки, выявленные в процессе работы системы домашней автоматизации, программное обеспечение постоянно совершенствуется. Это касается в первую очередь прошивок контроллеров и скриптов Python. Поэтому, после скачивания образа SD карты перед его настройкой, настоятельно рекомендуется заменить скрипты в папке:
home/pi/myproject/python
на прилагаемые скрипты из архива. Информация в архиве периодически обновляется (в настоящее время ).
В этом же архиве можно найти папку html, в которой web-интерфейс в отличие от описанного выше в этой статье, реализован в виде отдельных страниц. Кроме того, на главную страницу добавлены показания датчиков вне зависимости от того, используются они «в связке» с портами GPIO или нет (рис. 9). Поэтому, выбирать вид интерфейса («раскрывающийся» или в виде отдельных страниц) каждый пользователь может на своё усмотрение.
Рис.9
ВНИМАНИЕ! В связи с разработкой новой версии системы домашней автоматизации WebHomePi, техническая поддержка рассмотренной здесь версии в настоящее времяне осуществляется. Вместе с тем вы можете обновить данную версию до WebHomePi просто выполнив замену определенных файлов. Все подробности, как выполнить обновление, читайтев описании WebHomePi.
Все заменил, только не понял где взять файл config, и куда его прилепить? новый интерфейс выводится, но журнал событий не показывает , ошибка 404 вроде, что делать, куда копать дальше?
Лично я не проверял, но судя по отзывам на форуме, все должно работать и на RPi3 В любом случае после установки, если страница не открывается, нужно через отладку в терминале посмотреть причину этой проблемы.
Спасибо, моя плюха, все загрузилось и работает, пока пробую тестировать. Жду нового интерфейса, надеюсь что он будет так-же в виде образа, а то не силен в линексе.
Нет, образ уже давно выложен. Просто нет смысла после каждого изменения обновлять образ размером 4 Гб. Нужно будет только доустановить на скачанный образ библиотеку smsbus - см. здесь и заменить файл config, а так же папки html и python - и получите новый интерфейс с дополнительными возможностями.
Win32DiskImage записывает файлы с расширением .img, а образ системы домашней автоматизации на яндекс диске имеет расширение .bin. Как записать данный файл на флэшку, еслиWin32DiskImage его не видит.