Здесь размещено описание системы домашней автоматизации WebHomePi. Такому названию система обязана в первую очередь фреймворку WebIOPi, на котором, собственно, она и построена. Другими словами, WebHomePi – это WebIOPi, адаптированная для управления и мониторинга в доме.
Аппаратная часть WebHomePi. В настоящее время для WebHomePi разработано несколько новых версий кросс-платы, которые полностью совместимы с первой версией, но вместе с тем стали значительно компактнее и рассчитаны на установку в стандартный корпус на DIN-рейку D9MG. Новые версии кросс-плат разработаны модератором и одним из самым активных участников нашего форума Zoolu. Хотелось бы выразить огромную благодарность Антону как от себя, так и от всех участников форума за проделанную работу по разработке и создаю новой кросс-платы. Структурная схема аппаратной части WebHomePi показана на рис.1.
Конструктивно кросс-плата, помещенная в корпус D9MG, состоит из следующих функциональных узлов:
микрокомпьютер Raspberry Pi (B+, 2, 3)
блок питания 12 /5 В с импульсным стабилизатором
часы реального времени DS1307
датчик давления и температуры BMP085
дисплей на базе контроллера HD44780 с интерфейсом I2C
преобразователь UART / RS485 с гальванически изолированным выходом
3 кнопоки управления
8 гальванически изолированных входов (12...24 В)
8 релейных выходов (до 230 В / 5 А)
Через интерфейсные разъемы к кросс-плате можно подключить:
8 датчиков DS18B20 (шина 1-wire)
2 датчика DHT22 (два отдельных входа)
датчик температуры и влажности SHT21 (шина I2C)
датчик освещенности TSL2561 (шина I2C)
акселерометр ММА7660 (шина I2C)
Все перечисленные выше узлы и датчики относятся к централизованному сегменту WebHomePi. Остальные устройства, подключаемые к кросс-плате по шине RS485 являются распределенным сегментом системы. В частности, это:
метеостанция
радиомодуль
контроллеры
Программная часть WebHomePi построена, как уже отмечалост выше, на базе фреймворка WebIOPi. и «обратно совместима» с предыдущей версией кросс-платы. Единственным нюансом является необходимость установки модуля преобразователя UART/RS485. Однако, можно использовать и адаптер USB/RS485, внеся соответствующие изменения в конфигурационный файл.
Интерфейс WebHomePi. Для визуализации показаний датчиков использована библиотекаJust Gage. По сравнению с подобными библиотеками визуализации, например Google Gauge, эта библиотека является независимой от внешних ресурсов и может работать в закрытой от доступа в интернет сети. Фактически, это и явилось главным аргументом в пользу выбора Just Gage.
Web-интерфейс WebHomePi представляет собой восемь страниц:
«Датчики» (главная)
«Входы/выходы GPIO»
«Радиомодуль»
«Метеостанция»
«Контроллеры»
«Графики»
«Настройки»
«Журнал событий»
Первые две страницы относятся к централизованному сегменту WebHomePi, следующие три – к распределенному сегменту (работающему по интерфейсу RS485) и последние три – общие для системы в целом.
Страница «Датчики». Здесь отображаются показания мониторинга различных датчиков – температуры DS18B20, температуры и влажности DHT22, температуры и влажности SHT21, освещенности TSL2561, атмосферного давления BMP085 (BMP180), а также температура и загрузка процессора Raspberry Pi (рис.2). Выбор для подключения к WebHomePi того или иного датчика выполняется на странице «Настройки».
Рис. 2
Страница «Входы/выходы GPIO». На этой странице контролируется состояние дискретных входов и выходов Raspberry Pi и выполняется управление исполнительными реле как в ручном режиме, так и по различным сценариям, таким как управление выходами по температуре, освещенности, времени, срабатывании входов (рис.3).
Предусмотрена возможность отправки оповещений через e-mail при изменение любого из дискретных входов. Управление сценариями и ввод параметров выполняется на странице «Настройки».
Рис. 3
Страница «Радиомодуль». С помощью радиомодуля, который подключается к WebHomePi по интерфейсу RS485, можно принимать информацию о срабатывании различных радиодатчиков (движения, протечки, пожара и т.д), а так же управлять девайсами, например, такими кондиционер, вентилятор, светодиодная RGB подсветка (рис.4).
Учитывая, что страница довольно большая, она открывается в свернутом виде, где отображаются только контролируемые радиодатчики. Интерфейсы для управления девайсами открываются по клику на соответствующие кнопки «Закрыть/Открыть». Подробное описание радиомодуля смотрите здесь
Рис. 4
Страница «Метеостанция». Метеостанция – это устройство, подключаемое по интерфейсу RS485, которое позволяет собирать показания температуры и влажности с одного датчика DHT22 и пяти датчиков DHT11 с отображением их на собственном дисплее и передачей данных на Raspberry Pi с отображением в web-интерфейсе (рис.5). Подробное описание метеостанции смотрите здесь
Рис. 5
Страница «Контроллеры». Контроллер так же подключается по интерфейсу RS485 и позволяет контролировать состояние четырех дискретных входов, управлять четырьмя нагрузками до 1 кВт с помощью реле, а также контролировать параметры температуры и влажности с помощью датчика DHT22 (рис.6).
В контроллере предусмотрен режим местного управления непосредственно на месте его установки и дисплей для отображения состояния выходов, входов, параметров температуры и влажности. С помощью одного web-интерфейса можно просматривать состояние нескольких таких контроллеров, выбрав сетевой адрес требуемого устройства. Подробное описание контроллера RS485 смотрите здесь
Рис. 6
Страница «Графики». На этой странице отображаются графики изменения параметров с различных датчиков. Внизу для каждого графика размещается кнопка для очистки данных из журнала логирования (рис.7).
Все графики являются «самомасштабируемыми» при построении, а так же легко масштабируются при необходимости их детального просмотра с выборкой до минут и секунд. На странице отображаются только графики тех параметров, которые активированы на странице «Настройки».
Рис. 7
Страница «Настройки». С помощью этой страницы можно выполнить следующие настройки WebHomePi :
привязать к выходам 1 и 2 управление от термодатчиков DS18B20 №1 и №2
привязать к выходам 3 и 4 управление от таймера
привязать к выходу 5 управление от датчика освещенности TSL2561
привязать к выходам 7 и 8 управление от дискретных входов 7 и 8
выбрать подключение необходимых датчиков (для DS18B20 задать их id)
активировать отправку e-mail при срабатывании любого из дискретных входов
указать параметры получателя/отправителя e-mail (см. ниже)
определить отображаемые закладки меню
считать/записать параметры конфигурации
очистить журнал событий
выполнить перезагрузку
Параметры e-mail:
Получатель – e-mail, на который отправляется сообщение
Отправитель – e-mail, с которого отправляется сообщение
SMTP сервер – SMTP сервер отправителя
Логин – логин e-mail отправителя
Пароль – пароль e-mail отправителя
В текстовые поля input_1_close, input_1_open вводятся сообщения, которые будут в отправляемом e-mail соответственно при замыкании и размыкании входа №1. Аналогично вводятся сообщения и для остальных входов. Текст должен вводится без пробелов (для отделения слов используется нижнее подчеркивание).
Активируется функция отправки e-mail установкой чекбокса в разделе «События» напротив выбранного входа.
Рис. 8
Страница «Журнал событий». В журнале регистрируются все события, которые происходили в системе (рис.9). Причем, фиксируется не только время срабатывания определенного реле, но и причина, по которой это событие происходило. Например, запись 12-03-2017 16:19:49 , Relay 2 OFF / Temperature 29.6 говорит о том, что отключение реле №2 в указанное время произошло по команде от датчика DS18B20 вследствие повышения температуры до установленного верхнего значения - 29.6 °С.
Рис. 9
На рис. 10 и 11 показано размещение кросс-платы в корпусе D9MG.
Рис. 10
Рис. 11
Установка программного обеспечения Web Home Pi:
1. Отформатировать SD карту (емкостью не менее 4 Гб) в программе SDFormatter.
2. На отформатированную карту с помощью программы Win32DiskImager записать образ SD карты.
3. С помощью программы IPScan определить IP адрес Raspberry Pi в локальной сети (например, 192.168.1.11).
4. Выполнить вход на Raspberry Pi через web-браузер по IP адресу с указанием порта 8000(например, 192.168.1.11:8000). Введите логин –webiopi, пароль -raspberry. Указанные логин и пароль затем можно изменить.
5. Открыть страницу конфигурации системы и выполнить все необходимые пользовательские настройки – подключаемые датчики, сценарии, режимы работы выходов и т.д.После конфигурации пользовательских настроек и перезагрузки система домашней автоматизации Web Home Pi готова к работе.
Обновление программного обеспечения Web Home Pi:
1. Запустить терминальную программуPutty и настроить доступ к Raspberry Pi – ваш IP (например, 192.168.1.11), порт – 22, имя пользователя – pi, пароль – raspberry.
2. Запустить программу WinSCPи настроить доступ к Raspberry Pi – ваш IP, порт – 22, имя пользователя – root, пароль – admin. Эта программа - менеджер файлов, для копирования файлов и папок на диск Raspberry Pi.
3. Заменить в директории home/pi папку myproject. Если необходимо сохранить предыдущие данные логов и графиков, предварительно сделайте архивы нужных файлов в папке home/pi/myprojec/html/logs, а затем восстановите их после обновления.
4. Выполнить перезагрузку Raspberry Pi командой sudo reboot. .
To have IP adress RPi have to be connected to wifi. So to do that You could add to instruction easy way to do that: 1. open internet configuration file by "sudo nano /etc/wpa_supplicant/wpa_supplicant.conf" 2. add lines: "network={ ssid="your wifi network name" psk="your password" }" You need to check it carefully, any mistake will cause no wifi conection but You can edit this file anytime 3. save file by crtl+x and then Y to confirm 4. "sudo reboot now" 5. After that use IPScan to find ip adress and connect via putty or WinSCP or web browser.
For me it works. I didnt use any ethernet cable. Only my TV and keyboard to enter those commands.
Спасибо за любезно предоставленные обновления!!! Я ими с радостью воспользовался. Однако, вынужден отметить, что для успешного копирования файлов при помощи WinSCP пришлось вначале немного поработать в Putty, изменив права доступа к нужным папкам с 755 на 777. При помощи команд chmod 777 webiopi , chmod 777 html и chmod 777 python. P.S. - сам виноват - заходил в программу WinSCP используя логин/пароль - pi/raspberry вместо root/admin.