[Перевод] ZigBee и Intel Edison: практика автоматизации переговорных комнат
Мы создали интеллектуальную систему бронирования переговорных комнат (Smart Conference Room System, SCR) для того, чтобы помочь всем желающим с этими проблемами справиться.
Общий обзор
С помощью нашей разработки можно, в режиме реального времени, оценивать обстановку в переговорной. Система способна определить, есть ли в комнате люди, и, если их нет, оповестить сервер о том, что расписание бронирования можно изменить. Это помогает эффективно и удобно использовать ресурсы организации.
Система построена на основе следующих аппаратных компонентов:
- Плата Intel Edison.
- Плата расширения Arduino.
- Модуль XBee ZB S2 ZigBee.
- Android-смартфон.
- Push-сервер.
- Датчик освещённости ZigBee.
- Инфракрасный датчик присутствия ZigBee.
- Интеллектуальная розетка ZigBee.
- Сигнализация ZigBee.
ZigBee — это спецификация набора высокоуровневых коммуникационных протоколов, которые используются для создания персональных сетей, в основе которых — небольшие маломощные цифровые передатчики. Протоколы ZigBee базируются на стандарте IEEE 802.15.4 и предназначены для использования во встраиваемых устройствах, которые требуют низкого энергопотребления и способны нормально работать при невысоких скоростях передачи данных. Сеть, построенная на основе ZigBee, будет весьма экономичной в плане потребления энергии. Для того, чтобы пройти сертификацию ZigBee, устройство должно работать от батарей не менее двух лет. Типичные применения таких устройств — это домашняя автоматизация. Например, интеллектуальные датчики присутствия, системы освещения, терморегуляторы.
Arduino — это открытая программно-аппаратная платформа, вокруг которой сформировалось сообщество производителей оборудования и разработчиков. Обычная сфера применения этой платформы — разработка устройств, которые умеют определять состояние окружающей среды и взаимодействовать с ней.
Важный аспект платформы Arduino — это стандартизированные коннекторы, которые позволяют подключать к основному блоку с микроконтроллером множество взаимозаменяемых модулей расширения, известных как шилды (shields). Плата Intel Edison также поддерживает Arduino. Это делает Edison совместимым с тысячами модулей для Arduino, например, с XBee ZigBee.
XBee — это название марки семейства радиомодулей от Digi International, выпускаемых в стандартных форм-факторах. XBee ZB поддерживает протокол ZigBee PRO для создания сетей с ячеистой топологией.
С программной точки зрения система состоит из следующих частей:
- Серверное ПО.
- Приложение для Android-смартфона.
- Прошивка для Intel Edison.
Вот как, в самых общих чертах, выглядит работа Smart Conference Room System.
Схема работы SCR
Аппаратное обеспечение
Остановимся подробнее на аппаратном обеспечении, на котором основан наш проект.
Intel Edison с коммутационной платой Arduino — это ядро системы. Так как Edison совместим с Arduino, устройства, которые могут работать с Arduino, подходят и для Edison. Например, это радиомодуль XBee ZB S2, который подключается к Edison с помощью платы расширения Arduino.
Intel Edison и радиомодуль XBee
В качестве Push-сервера мы использовали Windows-планшет Fujitsu STYLISTIC Q702 с процессором Intel Core i5–3427U (частота 1.80 ГГц), оснащённый 4 Гб оперативной памяти.
Планшет Fujitsu STYLISTIC Q702
Для того, чтобы с нашей системой было удобнее работать, мы создали для неё мобильное Android-приложение. Его испытания проводились на смартфоне Lenovo K900. Он оснащён процессором Intel Atom Z2580 (частота 2 ГГц) и 2 Гб оперативной памяти.
Смартфон Lenovo K900
Роль координатора ZigBee играет радиомодуль XBee ZB S2, выполненный в форм-факторе платы расширения для Arduino и соответствующий требованиям протокола ZigBee. Он управляет подключёнными к нему ZigBee-датчиками.
Радиомодуль XBee ZB S2
В проекте задействован датчик освещённости Netvox Z311X. Он соответствует требованиям стандарта ZigBee и отвечает за измерение уровня освещённости в помещении.
Датчик освещённости
В качестве датчика присутствия используется инфракрасный сенсор Netvox ZB11D. Он так же поддерживает работу по протоколу ZigBee и играет роль конечного сетевого устройства.
Датчик присутствия
В системе используется модуль сигнализации Netvox Z602A. Это устройство совмещает в себе средства звукового и светового оповещения и применяется в экстренных ситуациях. Модуль основан на стандарте ZigBee HA.
Сигнализация
Интеллектуальная ZigBee-розетка, применяемая в проекте, это Netvox Z809AG. Устройство совмещает функции учёта электроэнергии и управления электрическими цепями. С его помощью можно включать и выключать питание различных электроприборов в комнате.
Интеллектуальная розетка
Аппаратная инфраструктура
Вот как выглядят связи между аппаратным обеспечением, задействованным в проекте.
Схема устройства системы
Аппаратную архитектуру системы можно разбить на следующие четыре части:
- Смартфон.
- Push-сервер.
- Шлюз на базе Intel Edison.
- Набор ZigBee-датчиков.
Эти аппаратные блоки ориентированы на три основные функции SCR.
- Наблюдение за комнатой и оценка ситуации. ZigBee-датчики освещённости и присутствия, в режиме реального времени, поставляют сведения о ситуации в комнате шлюзу на базе Intel Edison. Для связи датчиков и шлюза используется сеть ZigBee. Edison анализирует показания, определяет, есть ли кто-нибудь в комнате, а затем отправляет свои выводы push-серверу по Wi-Fi.
- Бронирование комнаты и интеллектуальное расписание. Сотрудники могут резервировать переговорные, которые, по оценке системы, свободны. Делается это с помощью Android-смартфона. Если доступных переговорных нет, сотрудник может выбрать занятую комнату и включить режим ожидания освобождения переговорной. Как только система, в частности — Intel Edison, сочтёт, что выбранная комната свободна, сообщение об этом поступит на сервер, который отправит уведомление приложению на смартфоне.
- Удалённый доступ и управление. Приложения могут запрашивать сведения о состоянии зарезервированной комнаты по Wi-Fi через push-сервер для того, чтобы управлять устройствами в комнате, например, включать и выключать свет, и получать, в режиме реального времени, сведения с ZigBee-датчиков.
Программное обеспечение
Как мы уже говорили, многие ресурсы организаций, такие, как переговорные комнаты, используются не самым эффективным образом. Особенно это относится к большим компаниям. Например, сотрудник А, с помощью корпоративного веб-сайта, зарезервировал комнату для совещаний с 8.00 до 10.00. Встреча окончилась в 9.00, то есть, с этого момента помещение свободно, им вполне может воспользоваться кто-то ещё. Предположим, что в это же время сотрудник В, пользуясь тем же сайтом, ищет свободную комнату. Но ту, которую резервировал сотрудник А, он выбрать не может, ведь в базе данных она значится как занятая, хотя по факту свободна. Поэтому сотруднику В придётся искать другой вариант, а освобождённая комната будет пустовать.
На рисунке ниже показана структурная схема используемого программного решения.
Архитектура программного решения
Push-сервер
В качестве push-сервера мы использовали GlassFish 4.0. Вот, как выглядит архитектура сервера.
Архитектура сервера
Системная диаграмма сервера показана ниже. Когда Edison, пользуясь сведениями с ZigBee-датчиков, определит, что состояние помещения изменилось со «свободно» на «занято», или наоборот, он оповестит об этом сервер. Сервер, в свою очередь, изменит соответствующую запись в базе данных, а затем, если комната пуста, отправит сообщение Android-приложению.
Рабочий процесс Push-сервера
Intel Edison и ZigBee
В Arduino интерфейс между Intel Edison и координатором XBee эмулируется в виде последовательного порта. Приложение, запущенное на Intel Edison, работает как ZigBee-шлюз. С его помощью мы можем отправлять команды ZigBee-датчикам и принимать ответы от них.
Координатор ZigBee, кроме того, отвечает за передачу сведений с датчиков push-серверу.
Устройство стека ZigBee в Arduino
Мы спроектировали и реализовали в среде Arduino простой стек ZigBee, который используется для взаимодействия с датчиками. Плата работает в режиме координатора, который наблюдает за состоянием датчиков, и, если такая возможность предусмотрена, позволяет управлять ими.
Классы стека ZigBee
Класс |
Функция |
XBeeAddress |
Базовый класс адреса устройства ZigBee |
XBeeAddress64 |
64-битный IEEE-адрес устройства ZigBee |
XBeeAddress16 |
16-битный сетевой адрес устройства ZigBee |
Payload |
Полезная нагрузка командного кадра ZigBee |
ExplicitAddressCommand |
Командный кадр ZigBee, используемый в спецификации домашней автоматики |
ExplicitAddressCommandResponse |
Ответ на команду на явно заданный адрес |
XBeeSensor |
Базовый класс ZigBee-датчика |
XBeeLightSensor |
Датчик освещённости ZigBee |
XBeeInfraSensor |
Датчик присутствия ZigBee |
XBeeAlarm |
Сигнализация ZigBee |
Основные функции ArduinoXBee
Главный класс ArduinoXBee — это XBeeCoordinator. Этот класс отвечает за управление ZigBee-датчиками. Его основные задачи заключаются в сборе сведений с датчиков и в отправке им команд для удалённого управления их поведением. Вот описание функций, применяемых для работы с датчиками.
Int getLightValue (XBeeLightSensor lightSensor). Эта функция используется для получения сведений с датчика освещённости. На её вход подаётся объект датчика освещённости, на выходе получаем целое число в диапазоне от 0 до 65535.
bool getInfraValue (XBeeInfraSensor infraSensor). Функция получает показания заданного датчика присутствия. При вызове ей передаётся объект датчика присутствия, а возвращает она логическое значение. True указывает на то, что в комнате кто-то есть, False — на то, что комната пуста.
void turnOnAlarm (XBeeAlarm alarm) и void turnOffAlarm (XBeeAlarm alarm). Эти функции, соответственно, включают и выключают сигнализацию. При их вызове используется объект, символизирующий нужное устройство, они ничего не возвращают.
void turnOnSwitch (XBeeSmartPlug plug) и void turnOffSwitch (XBeeSmartPlug plug). Эти функции позволяют включать и отключать подачу электричества интеллектуальными розетками. При вызове функций им передают объект, соответствующий розетке, они не возвращают ничего.
Приложение для Android
Когда пользователь запускает приложение, у него есть возможность создать новое расписание или управлять существующим, а именно — удалить его. Создавая новое расписание, пользователь может выполнять поиск переговорных по времени и расположению. Если комната свободна, её можно тут же зарезервировать. Если комната занята, пользователь может выбрать вариант ожидания освобождения комнаты. Как только датчики ZigBee зафиксируют освобождение комнаты в пределах заданного временного диапазона, push-сервер отправит уведомление приложению, и пользователь, который это уведомление получит, может зарезервировать комнату.
Системная диаграмма работы с Android-приложением
Пользовательский интерфейс Android-приложения
Приложение для Android мы назвали «Smart Conference Room System». Пользуясь им, сотрудник организации может забронировать переговорную и управлять зарезервированными комнатами. Вот, как выглядит главный экран приложения.
Главный экран приложения
Здесь команды, расположенные слева, применяются для создания новых расписаний, управления существующими, для работы с учётной записью и настройками.
Используя команду My Scheduling, пользователи могут бронировать переговорные (синий цвет используется для указания на то, что комната свободна, серый — на то, что уже забронирована). Если комната не свободна, пользователь может включить режим ожидания её освобождения.
Бронирование комнаты
Пользователи могут проверять состояние комнат, которые они забронировали, или тех, освобождения которых ожидают. Синим цветом выводятся успешно забронированные комнаты, серым — те, освобождения которых ожидает сотрудник. Здесь же можно управлять своим расписанием.
Управление расписанием
Когда система обнаруживает, что некая комната освободилась, она рассылает уведомления всем пользователям, которые ждут её освобождения. Вот, как выглядит такое уведомление.
Уведомление об освобождении комнаты
Тот, кто отреагирует первым, может забронировать только что освободившуюся комнату. Остальные снова попадут в список ожидающих.
Выводы
Мы разработали интеллектуальную систему управления комнатами для переговоров, в основе которой — простой ZigBee-стек для Arduino. Система может определять, в режиме реального времени, свободна комната или занята. Это позволяет упростить бронирование помещений, сделать его удобнее, повысить эффективность использования переговорных комнат.
Многое уже сделано, но мы, однако, всё ещё сталкиваемся с некоторыми сложностями. Это касается разных аспектов работы системы. Так, если говорить о её внутреннем устройстве, о стеке, на котором она основана, это ограничения функций API стека и всего комплекса. Кроме того, нужно улучшить стабильность работы системы и другие аспекты её функционирования. Мы планируем создание следующей версии Smart Conference Room System, которая будет более функциональной, стабильной и удобной, а значит позволит лучше решать её основную задачу: оптимизацию использования переговорных комнат в организациях.