| Имя: "Умный дом" (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, в окружении которой разработан пользовательский Web-интерфейс "Умный дом", а также реализован опрос и контроль устройствами посредством ZigBee концентратора.
Система OpenSCADA имеет несколько способов формирования пользовательских интерфейсов визуализации, начиная от интегрированных инструментов разработки типовых интерфейсов контроля различных областей автоматизации и заканчивая низкоуровневыми механизмами библиотек и интерфейсов графических концептов.
В лице интегрированных интерфейсов OpenSCADA содержит:
К низкоуровневым механизмам построения пользовательских интерфейсов можно отнести любые другие графические библиотеки, в которых есть инструменты быстрой разработки пользовательских интерфейсов. При этом кооперация с OpenSCADA производится как с источником данных и интерфейсом унифицированного управления оборудованием по различным протоколам.
Для предоставления возможности свободного формирования пользовательских Web - интерфейсов, непосредственно в окружении OpenSCADA, предусмотрен модуль «UI.WebUser». В целом OpenSCADA содержит все основные функции типового Web-сервера, а именно:
Следовательно, для построения произвольного пользовательского интерфейса контроля достаточно иметь инсталлированную систему  OpenSCADA с модулями: Transport.Sockets?, Transport.SSL, Protocol.HTTP и UI.WebUser.
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) с временем, категорией, уровнем и сообщением нарушения, которая также записывается в отдельный файл отчёта, в последствии доступный по ссылке для отдельного открытия.

Action source page doesn't exist yet(/Using / Smart House / matrials?)