Имя: "Умный дом" (HouseSpirit) Начат: 28 03(марта) 2011г Завершен: 12 06(июня) 2011г Расположение: г.Ханты-Мансийск, Россия Участники: Олег Сидашов, Роман Савоченко Описание: Реализация проекта автоматизации жилого дома - "Умный дом" (HouseSpirit). Материалы: страница (доступ ограничен) |
Объектом автоматизации является жилой дом, оснащённый оборудованием, подлежащим автоматизации. Система предназначена для автоматизации действий, выполняемых пользователем или обслуживающим персоналом для обеспечения безопасности, комфорта, удобства проживания на объекте автоматизации – в жилом помещении (комната, квартира, частный дом), а также на прилегающей к нему территории (земельный участок, двор, сад).
Система предназначена для решения следующих задач:
Целями создания системы являются:
Площадь объекта автоматизации ≈ 300 м2. Температура воздуха в помещениях, предназначенных для установки сервера, датчиков и исполнительных механизмов: от 10 до 25 градусов Цельсия. Температура воздуха вне помещениях, где устанавливаются датчики и исполнительные механизмы: от - 30 до 30 °С.
Уровни загрязненности, влажности, освещенности, шума и ионизирующих излучений соответствуют санитарно-эпидемиологическим требованиям к жилым зданиям и помещениям (САНПИН 2.1.2.1002-00).
На объекте присутствует электромагнитное излучение, индуцируемое бытовыми приборами, а также средствами электронно-вычислительной техники (Bluetooth, Wi-Fi, GSM).
Система “Умный дом. Сервер управления” представляет собой программно-аппаратный модуль, являющийся основным управляющим центром объекта автоматизации. Сервер принимает и обрабатывает сигналы от различных датчиков, формирует и передает сигналы управления исполнительным устройствами, осуществляет связь с пользователем через сеть GSM. Управление системой пользователями осуществляется через веб-интерфейс.
Система “Умный дом. Сервер управления” включает следующие подсистемы:
Структурная схема системы домовой автоматики приведена на рис.1.
Для управления различным оборудованием жилого дома был разработан концентратор и выстроена беспроводная сеть ZigBee из устройств управления оборудованием. Общий контроль оборудованием, а также предоставление пользовательского Web-интерфейса и иные способы уведомления осуществляются выделенным сервером домовой автоматики. Концентратор сети ZigBee при этом подключается к серверу посредством интерфейса RS-232 и протокола ModBus/RTU. Нарушения в области контроля автоматики высылаются пользователю в виде SMS-уведомлений через подключенный GSM-модем.
Контроллер беспроводной связи имеет следующие технические характеристики:
GSM-модуль обладает следующими техническими характеристиками (Siemens TC65):
Аппаратная часть сервера:
В качестве программного окружения, для выполнения функции автоматизации жилых помещений - "Умный дом" использовано открытую SCADA систему OpenSCADA, в окружении которой разработан пользовательский Web-интерфейс "Умный дом", а также реализован опрос и контроль устройствами посредством ZigBee концентратора.
Система OpenSCADA имеет несколько способов формирования пользовательских интерфейсов визуализации, начиная от интегрированных инструментов разработки типовых интерфейсов контроля различных областей автоматизации и заканчивая низкоуровневыми механизмами библиотек и интерфейсов графических концептов.
В лице интегрированных интерфейсов OpenSCADA содержит:
К низкоуровневым механизмам построения пользовательских интерфейсов можно отнести любые другие графические библиотеки, в которых есть инструменты быстрой разработки пользовательских интерфейсов. При этом кооперация с OpenSCADA производится как с источником данных и интерфейсом унифицированного управления оборудованием по различным протоколам.
Для предоставления возможности свободного формирования пользовательских Web - интерфейсов, непосредственно в окружении OpenSCADA, предусмотрен модуль «UI.WebUser». В целом OpenSCADA содержит все основные функции типового Web-сервера, а именно:
Следовательно, для построения произвольного пользовательского интерфейса контроля достаточно иметь инсталлированную систему OpenSCADA с модулями: Transport.Sockets, Transport.SSL, Protocol.HTTP и UI.WebUser.
С целью уменьшения нагрузки на полностью динамическое формирование пользовательского интерфейса, а также для упрощения последующего расширения и модификации стиля Web-интерфейс был поделён на статическую и динамическую части.
Статическая часть представляет из себя набор шаблонных HTML-файлов, с метками размещения динамики, и ресурсные файлы: CSS, JavaScript и изображения. В целом, статическая часть представлена файлами, которые описаны в таблице ниже:
Файл | Описание |
HTML-шаблоны (HouseSpirit/Web/*) | |
main.html | Главный шаблон пользовательского интерфейса. Содержит общий интерфейс пользователя с меткой расположения содержимого страниц « |
auth.html | Шаблон интерфейса авторизации с меткой расположения содержимого « Создан для использования модулем протокола HTTP (/sub_Protocol/mod_HTTP). |
access.html | Шаблон контроля доступа. |
temperature.html | Шаблон управления микроклиматом. |
light.html | Шаблон управления освещением. |
water.html | Шаблон управления водопроводной подсистемой. |
tech.html | Шаблон управления электронной и бытовой техникой. |
friend.html | Шаблон управления пользовательскими устройствами. |
user.html | Шаблон диспетчера пользователей. |
devices.html | Шаблон диспетчера устройств. |
loginError.html | Страница сообщения ошибки аутентификации или её отсутствия. |
mess.html | Шаблон сообщений активных аварийных ситуаций. |
report.html | Шаблон формирования отчётов об нарушениях, действиях и системных сообщениях. |
welcome.html | Страница приветствия, отображаемая по умолчанию в поле контента. |
Ресурсы (HouseSpirit/Web/res/*) | |
stylesheet.css | Каскадные таблицы стилей всего пользовательского интерфейса. |
main.js | JavaScript код главного шаблона, для счётчика времени и сеанса. |
devMon.js | JavaScript код реализации динамического AJAX интерфейса мониторинга устройств подсистем. |
access.png, accesson.png | Изображения подсистемы контроля доступа. |
temperature.png, temperatureon.png | Изображения подсистемы управления микроклиматом. |
light.png, lighton.png | Изображения подсистемы управления освещением. |
water.png, wateron.png | Изображения управления водопроводной подсистемой. |
tech.png, techon.png | Изображения подсистемы управления электронной и бытовой техникой. |
friend.png, friendon.png | Изображения подсистемы управления пользовательскими устройствами. |
user.png, useron.png | Изображения диспетчера пользователей. |
devices.png, deviceson.png | Изображения диспетчера устройств. |
report.png, reporton.png | Изображение формирования отчётов о нарушениях, действиях и системных сообщениях. |
help.png, helpon.png | Изображения страницы помощи. |
HouseSpirit.ico | Иконка Web-интерфейса. |
hd_l.png, hd_r.png | Левая и правая части заголовка. |
select_l.png, select_r.png | Изображения фона выбранного элемента меню слева и справа. |
space_l.png, space_r.png | Изображения свободного пункта меню слева и справа. |
status_l.png, status_r.png status_edge.png | Изображения строки статуса. |
Файлы отчётов (HouseSpirit/Web/reports/*) | |
rep_{user}.html | Последний отчёт пользователя user. |
Динамическая часть реализована скриптами OpenSCADA на внутреннем языке JavaLikeCalc, которые описаны в таблице ниже:
В целом алгоритм обработки запросов к страницам следующий (на примере http://localhost:10002/WebUser/temperature?script=devMon):
Менеджер устройств доступен только суперпользователю и формирует форму редактирования (рис.2), добавления и удаления устройств двух типов: бинарный и десятичный.
Создаваемые устройства непосредственно помещаются в список атрибутов параметра конкретно взятой подсистемы контроллера «ZigBee» модуля источника данных "ModBus" (/sub_DAQ/mod_ModBus/cntr_ZegBee/). Формат записи атрибута имеет вид:
Кроме непосредственно датчиков осуществляется конфигурация и формирование нарушений в виде текста процедуры. Программа формирования помещается в атрибут «var» параметра контроллера нарушений /sub_DAQ/mod_JavaLikeCalc/cntr_alarms/prm_rules. Атрибут «var» содержит XML дерево вида:
<ALARMS>
<it id = "temperature.cond1">
if(x<10) err = "Низкая температура: "+x+" < 10";
</it>
</ALARMS>
В соответствии с этим XML-деревом осуществляется формирование нарушений и отправка SMS-уведомлений подписанным пользователям в задаче контроллера /sub_DAQ/mod_JavaLikeCalc/cntr_alarms, которая исполняется с периодом 1 минута.
SMS-уведомления отсылаются через последовательный транспорт /sub_Transport/mod_Serial/out_GSM и посредством пользовательского SMS-протокола (/sub_Protocol/mod_UserProtocol/up_SMS).
Предусмотрена также функция отложенной выдачи управляющего воздействия. Для этого пользователь устанавливает нужное время, в виде: {Min}:{Sec}. Обработка отложенного управления осуществляется в контроллере /sub_DAQ/mod_JavaLikeCalc/cntr_timers посредством установки атрибута «var» параметра «rules» запросами в виде XML дерева:
<TIMERS>
<timer id="temperature.tGhost1" tm="60" user="root">20</timer>
<timer id="temperature.cond1" tm="10" user="root">0</timer>
</TIMERS>
Все подсистемы визуализации обслуживаются скриптом /sub_DAQ/mod_JavaLikeCalc/lib_web/devMon. В этом скрипте осуществляется обработка запросов от скрипта динамической визуализации Web-браузера и передача ему данных об устройствах подсистемы, необходимых для визуализации (рис.3). Данные об устройствах передаются в соответствии с правами доступа вошедшего пользователя.
Конфигурация датчиков читается из параметра, соответствующего подсистеме, контроллера «ZigBee» (/sub_DAQ/mod_ModBus/cntr_ZegBee). Значения читаются и записываются в атрибуты датчиков этих параметров или через контроллер отложенного управления.
Задача контроллера «ZigBee» исполняется с периодом 1 секунда, в процессе чего осуществляется запрос текущих значений всех сконфигурированных датчиков. Запись значений осуществляется по факту модификации независимо от задачи периодического опроса или через контроллер отложенного управления, в случае установки ненулевого времени таймера.
Связь контроллера «ZigBee» осуществляется через последовательный исходящий транспорт /sub_Transport/mod_Serial/out_ZegBee.
Менеджер пользователей (рис.4) предназначен для создания, удаления и редактирования учётных записей обычных пользователей.
Пользователи условно делятся на администраторов и простых пользователей. Идентификация пользователя как администратора, в системе OpenSCADA, осуществляется включением его в группу «WebRoot» (/sub_Security/grp_WebRoot). Обычный пользователь включается в группу «Web» (/sub_Security/grp_Web).
В системе OpenSCADA у каждого пользователя (/sub_Security/usr_test1/) есть текстовое поле описания, которое, в данном случае, служит для хранения его специализированных параметров в виде:
TEL: +380679859815
SMS: true
Report: false
sub_access: --
sub_friend: --
sub_light: --
sub_tech: --
sub_temperature: rw
sub_water: --
В случае с администратором записи прав доступа к подсистемам отсутствуют, но присутствуют общесистемные параметры вроде времени жизни сеанса (/sub_Protocol/mod_HTTP).
Список сообщений формируется, исходя из перечня активных нарушений по их категории «ALARM:House:*» в виде таблицы с временем, категорией, уровнем и сообщением нарушения (рис.5).
В формировании отчёта указывается временной диапазон и выбираются типы сообщений. Предусмотрена генерация сообщений для типов:
Протокол формируется в виде таблицы (рис.6) с временем, категорией, уровнем и сообщением нарушения, которая также записывается в отдельный файл отчёта, в последствии доступный по ссылке для отдельного открытия.
Олег Сидашов: loganmagg@gmail.com
БД проекта представлена в виде файлов БД SQLite, панель оператора:
Архив файлов БД проекта можно загрузить здесь: file:HouseSpirit.tlz
Оплата работы