Закончился хакатон, организованный компаниями Mail.Ru Group, Intel и Unwired Devices 30–31 июля 2016 года. Вспомним, как это было.
О проекте
Мы живем в Чистополе, что находится в 140 км. от Казани и занимаемся проектом по автоматизации технологических процессов и производств в агропромышленном комплексе и сельском хозяйстве под кодовым названием «Агрогенез». Совсем недавно первый этап нашего проекта по мониторингу микроклимата в теплицах собрал необходимую сумму на создание серии прототипов устройств мониторинга с датчиками на краудфандинговой платформе Boomstarter.
В один из летних дней, когда студенты чистопольского филиала КНИТУ-КАИ им. А.Н. Туполева «Восток» после успешной сдачи летней сессии помогали мне со сборкой комплектов для спонсоров, на просторах интернета появилось сообщение, что все желающие могут принять участие в хакатоне.
Лето, каникулы, отличный повод чтобы съездить в Москву и рассказать о своем проекте.
Условиями хакатона было использование устройств: Intel Edison и Unwired Development Kit, программных средств Tarantool и Lua. Для нас это были не более чем слова. В один из дней мы устроили мозговой штурм, разобрались на уровне «кирпичиков», как все должно друг с другом взаимодействовать и поставили перед собой цель — собрать решение, аналогичное нашему на представленных на хакатоне устройствах и языках. За каждым человеком в команде закрепили роли, чтобы каждый мог заниматься изучением своего фронта работ. Организаторы обещали помочь во всем разобраться. С тем и поехали.
Начало
Обязательно стоит упомянуть здание, в котором проходил хакатон — это одна из великолепных башен-близнецов Sky Light, с 23 этажа которой открывался панорамный вид на всю Москву. По периметру этажа были расставлены столы, на которых с комфортом смогла разместиться 21 команда. Всем командам были предоставлены розетки для подключения устройств, WiFi доступ, круглосуточная еда и кофе, чтобы ничего не отвлекало от хакатона.
После вступительного слова организаторов всем участникам раздали наборы для прототипирования, а чуть пораньше все получили инструкцию на хакатон
Наша идея была в следующем:
- Получать данные с датчиков Unwired Devices;
- Обрабатывать данные на Intel Edison с использованием Tarantool и реплицировать их на Ubuntu Server;
- Сделать web панель оператора, которая онлайн показывает поступившие данные.
Несмотря на распределённые роли, решили все вместе начать со второго вопроса, а потом распараллелить силы и заняться первым и третьим.
Несколько слов о Tarantool
Мы хотели решить проблему потери данных при пропадании канала связи между модулем передачи данных и сервером. С использованием Tarantool данная задача решается следующим образом: данные на устройстве сбора информации пишутся в базу данных Tarantool на Intel Edison, база данных реплицируется на сервер Ubuntu. Если канал передачи данных пропадает, то данные накапливаются на устройстве передачи данных до тех пор, пока канал не восстановится. Обработанные данные на сервере можно удалить из Tarantool и они удалятся на устройстве сбора информации на Intel Edison. Таким образом, образуется двунаправленный канал передачи данных с буфером обмена с двух сторон, где за обмен данными выступает Tarantool.
Организаторы показали нам, где взять соответствующие дистрибутивы и как настроить репликацию данных между Intel Edison и Ubuntu Server. Надо отметить, что WiFi на роутере, который мы привезли с собой периодически отваливался и репликация была ох как нужна.
Несколько слов об Unwired Devices
Для умного дома и вообще для связки контроллер/датчик/реле характерна следующая модель подключения:
В минимальной конфигурации для простых опытов такими устройствами могут выступать микроконтроллеры Arduino со своими датчиками и реле. В промышленной эксплуатации возрастают требования к надежности работы микроконтроллера, удаленности датчиков и реле от контроллера, да и появляются задачи по обработке данных, шифрованию траффика и т.п., с которыми простой микроконтроллер уже не справляется.
Разработчики Unwired Devices реализовали все, чтобы их устройства могли использоваться в промышленной автоматизации:
- Отказались от проводов в пользу беспроводного вещания на нелицензируемых частотах 868 МГц и 2450МГц и обеспечили полную совместимость с сетями 6LoWPAN и LoRa;
- Предусмотрели энергосбережение для модулей датчиков. Если такой модуль установить в герметичную коробку в поле и опрашивать раз в день, то двух пальчиковых батареек может хватить на год;
- Разработали качественные датчики и реле. Например, емкостной высокочастотный датчик влажности и поверхностной температуры почвы не имеет электрического контакта с почвой и потому, в отличие от распространённых датчиков электропроводности почвы, не подвержен коррозии, а рабочая частота 50 МГц позволяет минимизировать зависимость показаний датчика от солевого состава почвы;
- Создали свой микрокомпьютер, который содержит на борту WiFi-адаптер, 64 МБ DDR2-памяти, 16 МБ флэш-памяти, ядро Linux и позволяет обрабатывать данные, которые поступают с датчиков и отправляются на реле.
Впрочем, для заинтересованных, вся информация доступна на сайте Unwired Devices.
В предоставленной конфигурации устройств, на борту Unwired Device был установлен Intel Edison с предустановленной операционной системой Linux и Tarantool.
Запрос из Tarantool к сети Unwired Device выполнялся в одну строку:
emsg = conn:publish(«devices/UnwiredOne/get», «1»)
После определения IPv6 адреса осталось только обратиться к датчикам по именам.
Возвращаемые данные записывались в базу данных Tarantool на Intel Edison, которая, как мы помним, реплицировалась с базой данных Tarantool на сервере Ubuntu. Осталось дело за малым — достать данные на Ubuntu.
И снова Tarantool
Интерфейс датчиков мы рисовали с помощью технологии ajax, а значит, нужно было периодически обращаться к web-серверу и получать json данные.
Tarantool представляет несколько вариантов формирования таких данных.
Самым правильным является вариант использования Nginx Tarantool Upstream Module, так как в этом случае данные обрабатываются и готовятся в Tarantool и возвращаются сразу в Nginx.
Еще есть вариант – подключить модуль к Apache и работать с Tarantool на удобном языке, будь то Python, Perl, GO или PHP. Вот PHP-то мы и использовали, потому что настолько разобраться в Tarantool за два дня, чтобы готовить на нем json для Nginx – было нам не под силу. Хотя разработчики говорили, что нет ничего проще.
За этим занятием нас встретила ночь.
Команда немного умаялась, и все где-то к полуночи свалились в сон.
На рассвете
Сон был тревожный и продолжался час. Я выпил кофе и сел делать презентацию с нуля. План презентации был такой — написать кто мы и чем занимаемся, какие технологии используем, какие проблемы стоят перед нами, зачем пришли и что сделали на хакатоне, а напоследок дать обратную связь организаторам. К четырем часам утра было 13 страниц и понимание, о чем говорить.
Сон снова забрал, но ненадолго. В Чистополе принято просыпаться вместе с солнцем, но биологические часы сработали не у всех.
Утренние часы были посвящены настройке и тестированию онлайн мониторинга. Мы устраивали эксперименты с горячей и холодной водой, прислоняя стаканы к датчику, показывали результаты организаторам и подгружали вопросами освободившихся экспертов.
Результатом стал перфоманс под названием: «Эдисон и Тарантул наблюдают за температурой».
Мы пили кофе, «Эдисон и Тарантул» исправно следили за изменениями. Так незаметно подошло подведение итогов.
Итоги
С презентациями выступала двадцать одна команда. Мы шли пятыми.
Нам очень приятно и неожиданно было занять призовое место среди, на наш взгляд, достойных команд, но мы горячо поддерживаем решение жюри 😉
Хочется сказать большое спасибо всем, кто нам помогал готовиться и участвовать в хакатоне.
Хочется пожелать: родным и близким – еще больше терпения, участникам — реализации их идей, организаторам — монетизации их детищ, а всем, кто собирался на хакатон, да не собрался — в следующий раз обязательно найти возможность для расширения своих знаний!