Как я попробовал Balena Cloud
Всем привет!
Сегодня речь пойдет о сервисе для управления IoT-устройствами под названием Balena Cloud. Многим видимо покажется знакомым название Balena так как существует очень популярная утилита для подготовки загрузочных флешек под названием balenaEtcher.
Этой программой я и сам пользуюсь уже давно.
Причем тут IoT - спросите вы и будете правы. Это все дело случая.
Предыстория
Понадобилось мне позавчера подготовить загрузочную флешку со свежей версией Lubuntu. Ожидая окончания процесса загрузки я заинтересовался рекламой которая в этот момент крутилась в окне balenaEtcher.
Там было описание штуки под названием balenaSound которая может превратить Raspberry PI в Bluetooth-адаптер для старых аудиосистем которые поддерживают только AUX.
Мне стало интересно и я кликнул по рекламе (да, такое тоже бывает =)). В открывшейся статье предлагалось залить на малинку balenaOS. Это минималистичная ОС которая умеет запускать docker-контейнеры и коннектиться к облаку Balena для получения команд из панели управления.
Вообще это конечно оверкилл - использовать полноценный компьютер с ОС на борту и запущенными на нем docker-контейнерами только для получения звука по Bluetooth и передачи его через аналоговый mini-jack.
Но у меня уже несколько месяцев лежал без дела Raspberry PI 3B+. Поэтому я решил попробовать.
Ключ на старт
Регаемся на balena-cloud.com. На бесплатном тарифе можно подключать до 10 устройств.
Кликаем по Add Device. Выбираем там ваше устройство, версию прошивки и вариант его подключения к интернету - Ethernet или WiFi (потребуется указать реквизиты доступа).
Скачиваем прошивку и прошиваем ее на microSD при помощи balenaEtcher
Вставляем карту в малинку, включаем ее и надеемся что в скором времени она появится на дашборде в Balena Cloud.
Если все ок то жмем Add release и выбираем один из вариантов отправки проекта на устройство - через Balena CLI или при помощи git.
Мне ставить какой-то дополнительный софт не хотелось, поэтому я выбрал git и добавил свой публичный ключ в появившемся модальном окне.
Также важный момент - на этом этапе нам предлагается скопировать команды для git.
Там указан адрес remote-репозитория на который необходимо будет запушить проект.
Будет что-то вида balena100500@git.balena-cloud.com:balena100500/example.gitТеперь нужно выбрать проект который мы хотим задеплоить на устройстве.
Я склонировал https://github.com/balena-io-projects/balena-sound, добавил туда remote-репозиторий из предыдущего шага и сделал пуш
1 | git clone https://github.com/balena-io-projects/balena-sound |
После того как пуш-прошел в консоли весело забегали строчки отображающие процесс сборки докер-контейнеров проекта.
В конце я увидел ASCII-единорога и отправился в дашборд смотреть как там поживает малинка. Устройство было в статусе uploading и отображало статус-бар загрузки.
Через пару минут оно перешло в статус online.
Вот на этом моменте я взял в руки телефон и подключился с него к малинке по Bluetooth. Название устройства было вида balenaSound 1234.
К малинке подключил наушники и на телефоне включил первый подвернувшийся подкаст. Звук пошел =)
Удивительно, но все завелось без танцев с бубном и костылей.
Также появилась возможность управлять докер-контейнерами на устройстве и подключаться к нему через терминал прямо из панели управления.
Скорость загрузки
На этом этапе я решил отключить Raspberry PI, затем включить снова и замерить время через которое телефон подключится к устройству по Bluetooth.
Оказалось что это долго - целых полторы минуты!
В проекте по дефолту используется аж 3 докер контейнера - один для bluetooth-аудио, один для airplay и еще один для spotify. От последних двух было решено отказаться.
Я форкнул репозиторий на гитхабе, убрал из конфига лишние контейнеры и отправил пропатченый проект на малинку. В итоге время холодного старта уменьшилось до приемлемых 30 секунд.
Выводы
Я давно хотел попробовать что-то связанное с IoT, да все руки не доходили. А тут совершенно случайно попробовал и мне даже понравилось. Правда пока не знаю что можно более интересное на малинке запустить, но главное что разобрался с тем как это делается.
Раньше эта малинка трудилась в офисе будучи подключенной к старому музыкальному центру. На ней был установлен Raspbian и для того чтобы переключить песню необходимо было зайти на нее по VNC. Это было не очень удобно.
Затем я попробовал вариант с плеером Mopidy который имеет свой веб-интерфейс. Но в итоге оказалось что это еще более неудобно. Потому пользовались первым вариантом.
Если бы тогда я знал что можно потратить 10 минут и поднять такую удобную штуку в докер-контейнере то я выбрал бы этот вариант.
P.S. Теперь еще осталось куда-то Arduino Nano с кучей датчиков пристроить =)