Санкт-Петербургский государственный университет
Математическое обеспечение и администрирование информационных
систем
Системное программирование
Твердый Евгений Андреевич
Реализация протокола беспроводного управления
устройствами домашней автоматизации на USB
адаптере для компьютера
Бакалаврская работа
Научный руководитель
д.ф. – м.н., профессор Терехов А. Н.
Рецензент:
Генеральный директор ООО «Прогресс-РФОНОФФ»
Мячин М. А.
Санкт-Петербург
2016 г.
SAINT-PETERSBURG STATE UNIVERSITY
Software and Administration of Information Systems
Software Engineering
Tvedyy Evgeny
An implementation of wireless control devices home
automation to USB adapter for PC
Bachelor’s Thesis
Scientific supervisor:
professor Andrey Terekhov
Reviewer:
CEO RFONOFF Michail Myachin
Saint Petersburg
2016
I2
1. Введение
4
2. Описание предметной области
6
2.1 Система nooLite
6
2.2 Система KOPOU
8
2.3 Система Thinking-Home
10
3. Постановка задачи
11
4. Реализация
12
4.1 Модернизация интерфейса взаимодействия пользователя
с системой Thinking Home
12
4.2 Полная поддержка всех команд протокола nooLite
15
4.3 Разработка прошивки для адаптера KOPOU
16
4.4 Разработка плагина для взаимодействия системы
Thinking-Home и адаптера KOPOU
18
5. Апробация
19
6. Заключение
20
Литература
21
I3
1. Введение
Системы автоматизации набирают все большую популярность в
секторе частного строительства. На данный момент есть несколько
вариантов передачи команд от управляющего устройства на
исполнительные, условно их можно разделить:
•
Проводные
•
Беспроводные
В случае с проводным вариантом передачи, нет возможности
добавить автоматизацию в квартиру с уже готовым ремонтом, кроме того,
такие системы очень дорогие в проектировании и реализации, в связи с
чем для этих целей все чаще стали применяться системы беспроводного
управления.
Команды в таких системах передаются по радиоканалу, как
правило, это частоты 433мгц или 868мгц. Преимущество оборудования
работающего на частоте 433мгц в низкой стоимости и отсутствии
необходимости проходить регистрацию, так как данная частота является
доступной для устройств бытового назначения.
Данная работа направлена на создание целостной системы для
управления базовыми устройствами домашней автоматизации,
используемыми в компании ООО «Прогресс РФОНОФФ». Эта компания
занимается активным продвижением беспроводных систем домашней
автоматизации на российский рынок.
На данный момент из числа устройств, работающих на частоте
433мгц, можно выделить всего несколько компаний, производящих
действительно качественное оборудование, остальные устройства
работают нестабильно или имеют высокий процент брака.
«Прогресс РФОНОФФ» работает с несколькими компаниями,
разрабатывающими устройства, на этой частоте. Из них можно выделить
две основных. Одна из них имеет большое количество устройств,
позволяющих решить большинство задач домашней автоматизации, но
законченного программного обеспечения, позволяющего управлять
конечными устройствами через браузер с любого гаджета, нет. Вторая
I4
компания не имеет и адаптера для компьютера, с помощью которого
можно будет управлять удаленными устройствами.
В данной работе будет рассмотрен процесс разработки
программного обеспечения для USB устройства, позволяющего
отправлять команды в радио эфир согласно предоставленному протоколу
обмена данными. Для работы с USB устройством будет разработан
драйвер, позволяющий взаимодействовать через систему домашней
автоматизации Thinking Home, которая является рекомендованной к
использованию первой из двух основных компаний партнеров производителей оборудования.
I5
2. Описание предметной области
2.1 Система nooLite
Это первая из двух основных партнеров «Прогресс РФОНОФФ».
Производится Белорусской компанией Ноотехника, работает на частоте
433.92 МГц и позволяет управлять нагрузкой на расстоянии до 50м в
открытом пространстве. Система состоит из передатчиков и приемников.
В качестве передатчиков выступают сенсорные панели - выключатели,
радио-брелоки, адаптер для компьютера, Ethernet - шлюз. Приемниками
являются силовые блоки, которые непосредственно исполняют команды.
Из множества силовых блоков можно выделить два принципиально
различных типа:
•
Блок для управления высоковольтной нагрузкой (0 - 220В)
•
Блок для управления трехцветными светодиодными лентами (3 x
0-10В)
Рис. 1. Основные устройства nooLite.
I6
Каждый передатчик имеет свой уникальный адрес (один из 65536
возможных), приемник может сохранить в своей памяти до 32х адресов,
при этом все передатчики для него равноправны. Для того, чтобы
записать в силовой блок адрес передатчика, его нужно перевести в режим
привязки и отправить команду привязки.
Блоки первого типа могут принимать команды включения,
отключения, управления уровнем яркости, запоминания текущего
состояния (сценарий) и последующий его вызов. Для блоков второго типа
применяются иные команды управления яркостью, так как эти устройства
имеют несколько раздельных каналов, в остальном набор команд
идентичен.
Автоматизация на данный момент достигается только за счет
прямой связи датчиков движения с силовыми блоками. Такая комбинация
позволяет включать свет в проходных помещениях в темное время суток.
Кроме того, есть возможность задавать включение заданных силовых
блоков на определенную яркость по таймерам при помощи Ethernetшлюза.
Ethernet-шлюз имеет приложение для мобильных платформ iOS и
Android, позволяющее включать / выключать до 32 групп света и
задавать таймеры для автоматического управления освещения.
Связь с USB адаптером nooLite, предназначенным для отправки
команд исполнительным устройствам, осуществляется
как с Human
Interface Device (HID).
Рис. 2. USB адаптер для управления системой nooLite с ПК
I7
2.2 Система KOPOU
Вторая компания, с оборудованием которой работает «Прогресс
РФОНОФФ». Производится в Китае, завод производитель является
ответвлением от завода Livolo, который производит электрофурнитуру с
очень выгодным соотношением цена / качество. Однако, компания
Livolo не готова к сотрудничеству в плане изменения конструктивных
особенностей своей продукции или предоставления материалов,
позволяющих расширить линейку устройств адаптерами, выпускаемыми в
небольших объемах.
Данная система рассчитана на установку в квартире с уже готовым
ремонтом или с электрикой, которая будет выполнена по стандартной
схеме. Устройства представляют собой одно / двух / трех кнопочные
сенсорные панели, которые могут выполнять функции выключателя,
проходного переключателя, диммера или пульта управления жалюзи /
рольставнями / шторками бассейна и другими похожими механизмами.
Устройства устанавливаются в стандартную монтажную коробку и
подключаются в разрыв фазового кабеля с напряжением 220В. Согласно
спецификации, энергопотребление в режиме ожидания составляет не
более 5ти ватт, что позволяет устанавливать их даже для управления
светодиодными лампами, не вызывая их мерцания в выключенном
состоянии.
Рис. 3. Основные устройства системы KOPOU
I8
Для дистанционного управления устройствами этой системы
используются радиопульты, передающие информацию на частоте
433.92Мгц.
Протокол радиообмена позволяет различать 16 управляющих
команд для каждого канала. На данный момент используется только 12:
1.
Включить
2.
Выключить
3.
Изменить состояние на противоположное
4.
Начать плавное увеличение яркости
5.
Начать плавное уменьшение яркости
6.
Остановить изменение яркости
7.
Установить яркость 10%
8.
Установить яркость 30%
9.
Установить яркость 70%
10.
Поднять жалюзи
11.
Опустить жалюзи
12.
Остановить жалюзи
В настоящее время нет возможности автоматизировать управление
устройствами системы KOPOU, однако, китайские коллеги предоставили
спецификацию протокола, и теперь возможна разработка устройств для
передачи команд, например, с ПК.
I9
2.3 Система Thinking-Home
Программный продукт (.NET Windows Service), с помощью которого
можно организовать на компьютере управляющий центр «умного дома».
Основное назначение системы - управление домом по сценариям.
Сценарии - это небольшие программы, управляющие домашними
устройствами по событиям и взаимодействующие с интернет сервисами.
Событие - это нажатие на кнопку, сигнал с таймера, срабатывание
датчика или сообщение от внешнего сервиса, например, появление новой
записи в twitter. Они пишутся и редактируются непосредственно в WEB
интерфейсе системы на языке JavaScript. Внутри сценариев доступен API
для управления домом, который может быть расширен с помощью
плагинов.
Система основана на механизме плагинов (работает при помощи
MEF). Плагины - скомпилированные DLL, написанные на C# или другом
.NET языке. Весь функционал системы находится именно в них, сам
сервис содержит только инфраструктуру для их работы. Он обеспечивает
загрузку плагинов и их жизненный цикл, также представляет им средства
для логирования, для работы с внутренней БД, для взаимодействия друг
с другом.
У системы имеется веб интерфейс, доступный с любого компьютера,
смартфона, планшета, он отображает информацию, нужную пользователю
в повседневной жизни, такую как прогноз
погоды или расписание
автобусов. Кроме того, через веб интерфейс можно удалено управлять
домом и настраивать систему.
I10
3. Постановка задачи
Цель данной работы создать программное обеспечение,
позволяющее максимально использовать ресурсы оборудования
используемого в компании ООО «РФОНОФФ».
Необходимо разработать:
•
Прототип устройства, передающего радиосигнал на частоте 433.92
МГц
•
Прошивку, формирующую сигнал согласно протоколу,
предоставленному компанией KOPOU
•
Плагин для системы Thinking Home, позволяющий работать с
адаптерами KOPOU
Необходимо расширить:
•
Функционал плагина nooLite
•
Возможности интерфейса взаимодействия пользователя с системой
Thinking-Home
I11
4. Реализация
4.1 Модернизация интерфейса
взаимодействия пользователя с
системой Thinking Home
Первоначальная задумка системы Thinking-Home - взаимодействие
элементов умного дома по сценариям, поэтому непосредственное
взаимодействие с пользователем было отодвинуто на второй план. Сейчас
необходимо модернизировать интерфейс взаимодействия пользователя с
системой.
Пользователь может взаимодействовать с системой косвенно,
производя действия, вызывающие выполнения некоторых сценариев
(например, нажимая на физическую кнопку, подключенную через адаптер)
и напрямую, указывая, какие действия должен выполнить тот или другой
модуль, через веб интерфейс.
Рис. 4. Старый интерфейс Thinking-Home
Веб интерфейс был выполнен в виде одного рабочего стола с иконками
(тайлами), каждую из которых можно было привязать к определенному
I12
сценарию и при нажатии выполнится то или иное действие. Этого
достаточно, если все действия можно автоматизировать, но нередко
возникает необходимость изменить состояние какого-либо устройства
(например, включить люстру, закрыть жалюзи, включить вентилятор) и
для большой квартиры или дома одного рабочего стола становится
недостаточно, кроме того, иногда необходимо более точно настроить
атмосферу под себя, задав разный уровень яркости на различных
источниках освещения в пределах одной комнаты, сделать это вообще не
представлялось возможным, если только не создать заранее для каждого
светильника несколько кнопок с различными уровнями яркости.
В результате, было принято решение изменить веб интерфейс
системы следующим образом: разделить зону управления на рабочие
столы, соответствующие комнатам, каждый из которых содержит области,
в которых расположены виджеты, позволяющие управлять элементами в
этой комнате.
Рис. 5. WEB интерфейс Thinking-Home
Серверная часть реализована на C#, клиентская на Java Script,
корректность отображения всех элементов тестировалась на браузерах
I13
Google Chrome и Apple Safari как на десктопах, так и на мобильных
устройствах.
I14
4.2 Полная поддержка всех команд
протокола nooLite
Система nooLite имеет USB адаптер, позволяющий
взаимодействовать с исполнительными устройствами через ПК. Данный
адаптер определяется компьютером как HID (Human Interface Device).
Система Thinking-Home является рекомендованной для использования с
устройствами этого производителя, для взаимодействия с устройствами
производства компании Ноотехника реализована специальная
библиотека NooLiteDotNet, эта библиотека оформлена в виде NuGet
пакета и добавлена в плагин для системы Thinking-Home - NooLitePlugin.
Данный плагин позволяет управлять яркостью силовых блоков,
сопряженных с USB адаптером, однако управление яркостью это лишь
одна из 19 команд описанных в документации к данному адаптеру.
Для реализации остальных функций в указанные библиотеку и
плагин были добавлены функции, позволяющие полноценно управлять
светодиодными лентами, вызывать и записывать сценарии, а также
выполнять привязку и отвязку силовых блоков к адаптеру через
интерфейсы системы Thinking-Home.
Исходный код библиотеки NooLiteDotNet и плагина NooLitePlugin
находятся в открытом доступе на гит хабе, поэтому внесенные изменения
были предоставлены разработчику этих двух плагинов и внесены в
следующие выпуски библиотеки и плагина.
Изменение формата интерфейса Thinking-Home позволило сделать
удобный интерфейс для управления. Он состоит из следующих виджетов:
•
Переключатель, позволяющий включить / выключить прибор
•
Кнопка, предназначенная для вызова и записи сценария
•
Ползунок, для установки уровня яркости
Также был дополнительно написан плагин, эмулирующий Ethernetшлюз компании Ноотехника и позволяющий использовать официальное
приложение для управления устройствами не только через шлюз, но и с
помощью адаптера, подключенного к компьютеру, если не нужны
дополнительные функции, доступные только через Web интерфейс.
I15
4.3 Разработка прошивки для
адаптера KOPOU
Для реализации возможности управления устройствами компании
KOPOU был собран прототип на базе платы ARDUINO с платой
расширения, на которую установлен радиопередатчик на частоте 433.92
Мгц. Программное обеспечение для адаптера написано на языке C++. В
специальной среде для написания кода, выполняемого на платах Arduino
- Arduino Studio.
Рис. 6. Формат посылки
Протокол подразумевает передачу данных на данной частоте путем
последовательного включения и отключения передатчика на заданные
промежутки времени.
•
START CODE - необходим для определения приемником начала
посылки.
•
ID-CODE-H и ID-CODE-L - два байта в которых передается адрес
передатчика.
•
USER-KEY-CODE - 8 бит, 4 из которых предназначены для
хранения контрольной суммы, а 4 для передачи пользовательской
команды.
Рис. 7. Стартовый код
Первоначально отправляется стартовый код, который обозначается
последовательным включением и отключением передатчика на 420
I16
секунд. После чего начинается побитовая передача полезной информации
начиная со старшего бита.
Логический ноль обозначается включением передатчика и отключением
на 360, а единица в обратной последовательности.
Рис. 8. Логический ноль.
Рис. 9. Логическая единица.
Для взаимодействия между адаптером и прикладным программным
обеспечением на компьютере используется виртуальный
последовательный порт, через который передаются 2 байта идентификатор команды и номер канала на адаптере. Количество каналов
на адаптере программно ограничено и составляет 64 - этого достаточно
для организации управления светом и шторами в доме площадью около
200 квадратных метров.
I17
4.4 Разработка плагина для
взаимодействия системы ThinkingHome и адаптера KOPOU
Теперь, когда у нас есть адаптер, позволяющий отправлять данные
в радиоэфир на частоте 433.92Мгц, согласно протоколу KOPOU,
необходимо разработать программное обеспечение, которое будет
взаимодействовать с адаптером. Для этой цели, аналогично системе
nooLite, была написана библиотека на языке C#, отправляющая данные
на адаптер через виртуальный последовательный порт.
Рис. 10. Плагин для работы с системой KOPOU
Также в качестве отдельного плагина был разработан плагин,
позволяющий добавлять управляющие элементы системы на рабочие
столы.
I18
5. Апробация
Была проведена апробация полученных решений на примере
квартиры с установленными системами nooLite, KOPOU в качестве
исполнительных устройств и Thinking-Home в качестве управляющего
программного обеспечения.
В данной инсталляции системы отвечают за следующие функции:
NooLite:
•
Управление освещением
•
Управление вентиляцией
•
Управление теплым полом
•
Получение информации от датчиков движения, температуры,
влажности
KOPOU:
•
Управление освещением
•
Управление жалюзи
В результате тестов на протяжении месяца были выявлены и устранены
незначительные ошибки в коде. После чего система была установлена на
реальном объекте. В её состав вошли устройства nooLite и программное
обеспечение Thinking-Home.
I19
6. Заключение
В результате данной работы был модернизирован интерфейс
системы Thinking Home, что позволило распределять устройства по
зонам, к которым они относятся, и взаимодействовать с ними при помощи
интуитивно понятных элементов. Полностью реализован функционал,
доступный в системе nooLite и добавлена возможность управлять
устройствами компании KOPOU в автоматическом режиме при помощи
скриптов Thinking-Home
и через Web интерфейс с компьютеров и
портативных устройств.
Проведена апробация получившейся системы на тестовых
объектах. Часть системы использована в реальных инсталляциях.
I20
Литература
[1] Real-Time C++: Efficient Object-Oriented and Template Microcontroller
Programming, URL: http://www.amazon.com/Real-Time-Efficient-ObjectOriented-Microcontroller-Programming/dp/3642346871
[2] Embedded C Programming and the Atmel AVR, URL: http://
www.amazon.com/Embedded-C-Programming-Atmel-AVR/dp/1418039594
[3] NooLite PC11xx HID manual URL:http://www.noo.com.by/assets/files/
software/PC11xx_HID_API.pdf
[4] Thinking-home Plugins Creation Guide URL: http://thinking-home.ru/
system
[5] KOPOU protocol specification
I21
Отзывы:
Авторизуйтесь, чтобы оставить отзыв