Феномен Blynk и его альтернативы

Любой домашний разработчик микроэлектроники, рано или поздно сталкивается с необходимостью управления своим, созданным своими руками, устройством посредством некоего пульта, которым будет удобно переключать режимы работы или же просто просматривать текущее состояние. Вообще, словосочетание «домашний разработчик микроэлектроники» еще лет 15 тому назад, вызывало бы жуткий хохот, ведь в то время и помыслить никто не мог, что дома кто-то будет возиться с миниатюрными платами, заниматься прошивками, да и вообще. А оказалось, что единичные энтузиасты превратились в сонмы увлеченных людей, а само дело получило массовый оборот.

Но годы прошли и упертые компании создали настоящую нишу, целый рынок, в котором варятся миллионы увлеченных непрофессионалов, с упоением собирающих очередной «девайс на ардуинке». Вот именно у таких энтузиастов, платящих длинные баксы производителям шилдов да датчиков, и возникает потребность в управлении своими умными устройствами при помощи пульта. И как ни странно их потребность была удовлетворена наиболее изящным из возможных способов. На свет появился Blynk.

Приложение Blynk

Что дает Blynk любителю домашней автоматизации? Ответ на поставленный вопрос — двоякий. С одной стороны — совсем не много, а вот с другой, немного превращается чуть ли не в половину «стоимости» всего реализованного проекта. Blynk позволяет превратить обычный смартфон или планшет, под управлением Android или iOS, в настоящий пульт управления самостоятельно разрабатываемой электроники. Blynk очень удачно вписался в экоструктуру Arduino и появился в самый подходящий момент.

По сути, Blynk есть ни что иное, как приложение под мобильное устройство, позволяющее в форме графического конструирования создавать полнофункциональные приложения для связи их с устройствами на платформе Arduino и совместимыми (по правде сказать, скоро совместимых платформ станет куда больше). Основной фишкой Blynk я смело могу назвать простоту, с которой создается как само приложение, так и то, как реализуется связь с программным кодом в устройстве.

Для начала работы, впрочем, и для ее продолжения, достаточно только установить приложение Blynk на ваш мобильный или планшет. Далее, просто водите пальцем по экрану, размещаете такие элементы, как кнопки, слайдеры, переключатели, лампочки, графопостроители и прочее, прочее, прочее. У каждого элемента есть возможность по настройке немногочисленных параметров, но основа кроется в привязке элементов управления или отображения к пинам физического устройства. А сами пины, могут быть как всамделишными, физическими, а могут быть и виртуальными. Но я бы рекомендовал работать именно с виртуальными, поскольку логику их обработки можно настраивать куда гибче, нежели у физических.

На стороне устройства достаточно только подключить библиотеку, настроить связку между исходным кодом и регистрационным кодом установленного приложения, поместить в цикл обработчик событий, да… Да в общем-то и все. Если приложение привязано только к физическим пинам, то больше и делать ничего не надо.

Вот так вот просто, вы получаете удобный пульт управления своим устройством, способный не только отправлять команды на него, но и отображать все, что потребуется на своем экранчике. Разработчики даже не стали заморачиваться на продвинутую и подробную документацию. Все собрано в виде единого документа на одной странице сайта Blynk. Ну, что же, за простоту реализации разработчикам я посылаю полноценный «респект»!

Откуда взялся Blynk?

Появление Blynk произошло не по чистой случайности. Я бы даже отметил, что появление Blynk на свет — есть ни что иное, как образцовый, счастливый случай удачного краудфандинга. Некий Паша Байдурин, надеюсь, что фамилию не исковеркал, завел кампанию на Kikstarter со скромной суммой сбора всего в 10.000$. В итоге, кампания набрала сумму в пятеро большую, что позволило развернуться на полную катушку. Сбор средств стартовал в середине января 2015 и уже к концу месяца набрал требуемый объем средств. Вот именно таким способом мозги и побеждают бабло, мотайте на ус.

За чуть меньше, чем год, а я пишу обзор в декабре 2016, Blynk успел подрасти, обзавестись всеми необходимыми атрибутами и, я надеюсь, смог побороть проблему роста и превратился в полноценную корпорацию. По крайней мере, теперь Blynk предлагается не только для физических, но и для юридических лиц. Модели монетизации для разных типов пользователей различаются, но об этом ниже.

Уникальность бизнес модели

Так чем же еще уникален Blynk, кроме как возможностью создать приложение для телефона за пять минут и связать его с Arduino за дополнительные пять? А уникален он примененной бизнес моделью. В мире программного обеспечения приняты стандартные условия использования продуктов: Freeware (бесплатно), Shareware (условно бесплатно, с тестовым периодом), Donationware (заплати, если понравилось), платные продукты. Допускаются различные комбинации, например, для частного использования продукт может быть бесплатен, а корпоративный сектор обязан заплатить за каждую копию. Впрочем, существуют и другие типы лицензий, например, множество OpenSource, когда продукт рассматривается как некий кирпичик исходного кода доступного всем. Но не будем углубляться в дебри и посмотрим пристально на Blynk.

Интерфейс в приложении Blynk на смартфоне

По умолчанию обычному частному пользователю, скачавшему Blynk из маркета, выдается лимитированный набор, нет, не элементов, а заряда батареи. Оный заряд тратится на использование элементов интерфейса для создания своего приложения. Допустим, изначально вам доступна величина в 1000 единиц заряда. Каждая кнопка, установленная в проекте, обойдется вам в 200 единиц, а что-то посложнее, к примеру, построитель графика, выйдет уже в 400. Таким образом, строя свое приложение из элементов вы тратите энергию, выделенную вам изначально. Как только энергия истощится, добавить новые элементы в приложение будет уже нельзя. Придется либо докупать энергию за настоящие деньги, а операция происходит чрезвычайно просто, как и все остальное в Blynk, либо удалять элементы из приложения. При удалении, энергия, затраченная на установку, возвращается обратно в полном объеме.

Тем самым разработчики позволяют новому пользователю оценить возможности Blynk и создать как минимум одно более-менее функциональное приложение. А дальше – хочешь плати, не хочешь, разбирай то, что наваял и используй повторно. Уникальность ситуации заключается в том, что пользователю предлагается покупать не приложение, не подписку на него, не ограничение по трафику, а элементы интерфейса его приложения! Пополнение заряда батареи Blynk стоит не дорого, и его можно отнести к микроплатежам. Поэтому расставание с кровно заработанным происходит незаметно и безболезненно.

Но все же оцените идею. Представьте, что вы используете MS Word и вам предлагается писать тексты не более десяти страниц. А чтобы написать одиннадцатую, потребуется либо прикупить еще виртуальной бумаги, либо возвести краткость в благодетель и сократить свой текст до минимума. А после печати и вовсе его весь стереть. Несмотря на абсурдность реализации примера, с Blynk все работает. И работает отлично.

Для корпоративных же пользователей, чья работа непосредственно связана с выпуском приложений в коммерческих или около коммерческих целях, предлагается немного другая схема оплаты за труд разработчиков в Blynk. Корпораты получают stand alone приложение, работающее не в «песочнице» Blynk, а отдельно. Blynk там все равно будет, скрытый за фасадом. А платить придется за подписку, в течение которой приложение останется работоспособным.

Представьте, что вы производите ультразвуковые увлажнители воздуха. Вы уже вдоволь украсили каждую из своих моделей синими светодиодами и всерьез подумываете, как бы прикрутить туда еще и IoT. Blynk предоставляет вам почти готовое решение. Прикручиваете к увлажнителю, нечто на подобие ESP8266, а пользователям предлагаете скачать приложение. Voilà! Все работает, все довольны. Ровно до тех пор, пока вы не решите выпустить новую, усовершенствованную линейку увлажнителей, щеголяющую не только синими, но и фиолетовыми светодиодами. И вполне разумно полагаете, что за старое приложение можно уже не платить. Денег оно потребляет, а потребителю пора прийти за новым увлажнителем, ибо у вас дети, им надо поступать в колледж.

Программируемый срок службы потребительских товаров — заветная мечта любого производителя. Решить которую, при помощи Blynk, очень легко. Как, впрочем, и все, что касается Blynk.

Что взамен?

Но не все индивидуумы готовы платить деньги, особенно за то, что можно сделать бесплатно. И народная мысль моментально ориентируется, энтузиасты приступают к раскопкам альтернативных вариантов бесплатного использования аналога функций Blynk. И как бы странно оно не звучало, я из их числа.

Веб-сервер

Самым простым способом реализовать удаленное управление я бы назвал использование Web-сервера на вашем устройстве. Такие современные чипы как EPS8266 и многие другие позволяют подключаться к IP-сетям, в том числе локальным сетям в квартире и даже с выходом в Internet. А свободного места в памяти контроллера достаточно для размещения полноценного сервера.

Соответственно на подобном устройстве можно развернуть несложный web-сервер, оптимизированный под экраны мобильных устройств. Вызывать же его можно через ярлык на рабочем столе вашего смартфона. Да, в большинстве случаев, и устройство и мобильный должны находиться в пределах одной сети, но часто-ли вам приходит в голову включить ваш увлажнитель дома, когда вы сами находитесь в Гималаях, карабкаясь с веревками на очередную вершину?

При использовании варианта с веб-сервером потребуется обрабатывать ответы от клиента, да выводить элементы управления в виде HTML. Получится может быть не так красиво и быстро, как при помощи Blynk, но зато совершенно бесплатно.

Cayenne

Мое знакомство с Cayenne от MyDevices произошло не то чтобы без сучка и задоринки, но пришлось консультироваться с разработчиками. Дело в том, что изначально Cayenne самостоятельно подключался к сети, будь то подключение по WiFi или же по проводной сети. А мне, как истинному энтузиасту, хотелось подключаться к моей сети Wi-Fi самостоятельно, при помощи своего кода. Но, поскольку проект очень живой, то решение нашлось весьма быстро и более того, оно, скорее всего, появится в официальном репозитории команды.

Добавление элементов на панель управления в Caynne (браузер)

Что было сделано? При помощи специалистов Cayenne был перегружен метод CayenneWiFiClient, в который добавился конструктор для создания объекта Cayenne с передачей в него только идентификатора аутентификации на сервисе Cayenne. Соединение с интернет в таком случае требуется создать самостоятельно.

Необходимо модернизировать штатную библиотеку Cayenne и положить измененный файл в каталог с вашим скетчем:

#ifndef _CAYENNEESP8266WIFICLIENT_h
#define _CAYENNEESP8266WIFICLIENT_h

#include "CayenneClient.h"

class CayenneWiFiClient : public CayenneClient
{
public:
 /**
 * Begins Cayenne session
 * @param token Authentication token from Cayenne site
 * @param ssid WiFi network id
 * @param pass WiFi network password
 */
 void begin(const char* token, const char* ssid, const char* pass)
 {
 Blynk.begin(token, ssid, pass, CAYENNE_DOMAIN, CAYENNE_PORT);
 }

/* void config(const char* auth,
 const char* domain = CAYENNE_DOMAIN,
 uint16_t    port   = CAYENNE_PORT)
    {
        Base::begin(auth);
        this->conn.begin(domain, port);
    }*/
void config(const char* auth)
{
    Blynk.config(auth, CAYENNE_DOMAIN, CAYENNE_PORT);
}

};

CayenneWiFiClient Cayenne;

#endif

И собственно сам скетч:

#include <ESP8266WiFi.h>
#define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space
#include "CayenneDefines.h"
#include "BlynkSimpleEsp8266.h"
#include "CayenneESP8266WiFiClient.h"
#define VIRTUAL_PIN V0
#define ledPin D4  // the onboard LED

char token[] = "YourCayenneSecurityToke";
const char* ssid = "YourWiFiNetwork";
const char* password = "YourWiFiNetworkKeyPhrase";
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("YaHoo...");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }
  Cayenne.config(token);
  pinMode(ledPin, OUTPUT);
}
CAYENNE_IN(VIRTUAL_PIN){
  int value = getValue.asInt(); // Get value as integer
  Serial.print("Value received V1P: ");
  Serial.print(value);
  Serial.println("");
  if (value==1){
    digitalWrite(ledPin, LOW);
  }else{
    digitalWrite(ledPin, HIGH);
  }
}
void loop() {
  // put your main code here, to run repeatedly:
  Cayenne.run();
  delay(100);
  //Serial.print(".");
}

Если из вышеописанного ничего не понятно, то попробую объяснить. Во-первых, Cayenne опирается на Blynk… Да, Cayenne использует Blynk, только не то приложение, что я описал несколькими абзацами выше, а фреймворк Blynk, выпущенный под лицензией MIT. Таким образом получается, что и приложение Blynk, и Cayenne, так или иначе, выполняют одну и туже функцию. В действительности же оно так и есть.

Готовая панель управления в Cayenne при просмотре через браузер

Разница между проектами в следующем: Blynk делает упор на мобильное приложение и простоту разработки приложения, Blynk уже сейчас активно монетизируется. Cayenne же помимо мобильного приложения предлагает еще и полнофункциональную панель управления на своем Web-сайте. И пока не собирает деньги со своих пользователей. Концепция работы в Cayenne идентична концепции Blynk. В приложении или через веб-браузер, пользователь создает проект, добавляет кнопки, лампочки и прочие показометры, которые можно связать с виртуальным или реальным пином вашего, конкретного, устройства. Дополнительно у Cayenne имеется механизм триггеров и событий. Триггеры обрабатывают события, получаемые от устройств. А событийная модель опирается на календарное расписание.

Связь устройства и приложения осуществляется так же, как и у Blynk, посредством добавления небольших кусочков программного кода для обработки бизнес-логики зашитой в ваше устройство. Но первоначально проект затачивался на применение минимального количества программирования на стороне устройства клиента. Все так или иначе должно быть подхвачено библиотеками Cayenne. Именно по этой причине в Cayenne можно найти множество плат и вариантов подключения к сети, представлены, в том числе, и различные сенсоры конкретных производителей. С одной стороны, разнообразие снижает необходимость в программировании скетчей, с другой, понижает возможности использования универсальных устройств.

Интерфейс рабочей панели Cayenne на планшете

Именно по этой причине у меня и возникло затруднение в том, как можно подключить Cayenne к уже подключенному Wi-Fi соединению. И мне пришлось объяснять разработчикам, для чего мне это потребовалось. Возможно, что система была задумана для самого начального уровня подготовки оконечных разработчиков, о чем косвенно говорит количество примеров скетчей, вылезающих при каждом действии.

Немного удивил построитель на веб-сайте. К его логике нужно привыкать. Сначала добавляем устройство, получаем код идентификации, затем подключаем его на устройстве и пробуем подключиться к серверам Cayenne. Если подключение нам удалось, к подключенному устройству можно будет подключать виджиты, кнопки, табло и прочие средства визуализации.

Подводя итог после тестирования Cayenne, могу отметить я так и не смог определиться, понравилась ли мне система или нет. С одной стороны, да, все, что от нее требуется, все на месте. С другой стороны, меня постоянно не покидало ощущение, что тут что-то недоделано. Оно и понятно, система новая и план работ по реализации всех функций еще наверняка не завершен. Еще больше беспокойства вызывает «завлекалочка» Try it for Free, без какой-либо публикации, а что будет, когда «тестовый» период завершится? По крайней мере в настоящий момент (декабрь 2016), Cayenne можно пользоваться в своих целях без какой-либо платы, тренироваться, создавать свои приложения. И самое главное — никаких ограничений в плане запаса энергии в батарейке.

Virtuino

В отличие от Blynk или Cayenne, разработкой Virtuino занимается один единственный человек. И несмотря на сильно ограниченные ресурсы, результат получился не хуже, а может быть даже и лучше, нежели описано выше. Итак, Virtuino — плод усердий греческого разработчика, ознакомиться с которым можно как на отдельной страничке (на греческом языке), так и прямиком на странице загрузки приложения Virtuino из маркета. Для спешащих в бой, даю прямую ссылку на tutorial по подключению Virtuino, поскольку поначалу процедура может быть не тривиальной.

Как и Blynk, Virtuino подразумевает использование только мобильного приложения для создания пользовательского интерфейса. Как и Cayenne с Blynk, Virtuino использует технологию приложения в приложении. Это означает, что ваши наработки остаются в «песочнице» Virtuino и не могут существовать отдельно от Virtuino. Но у Virtuino присутствует и отличие от двух конкурентов. Virtuino не использует промежуточный сервер.

Интерфейс приложения Virtuino на планшете

Остановлюсь немного подробнее именно на этом факте, поскольку для меня он является ключевым. Blynk и Cayenne используют серверную часть и работают только через нее. Нельзя обратиться к устройству без подключения к Интернет, по крайней мере для подключений, не касающихся Bluetooth и USB подключения. А если соединение нестабильное, то ваш скетч будет затормаживаться на сетевых соединениях. Для каких-то применений, замедление исполнения инструкций может быть весьма критично. Причем, и Blynk и Cayenne могут работать из-под сурового NAT, то это означает, что ваше устройство будет периодически опрашивать, буквально в каждом цикле, сервер в Интернет. При плохой связи исполнение скетча может пойти вообще не так, как задумано изначально.

В Virtuino разработчик может пойти двумя путями. Во-первых, он может воспользоваться сервисом ThingSpeak, в качестве того самого, промежуточного сервера. А во-вторых, коммуникация между приложением и устройством осуществляется при помощи веб-сервера, поднятого на самом устройстве! Да, в этом случае, доступ извне вашей локальной сети к устройству, скорее всего, будет невозможен. С другой стороны, он мало кому и нужен. Но зато никаких задержек и проблем с внешним соединением. Все реализовано прозрачно до невозможности, вот чего не хватает грандам IoT. При работе с Cayenne тебя постоянно не покидает ощущение, что в любой момент может быть введена плата за использование сервиса, а у Blynk будут подняты расценки и ваш, уже оплаченный, набор окажется неработоспособным. С Virtuino вы продолжите пользоваться приложением и будите управлять им устройством. Во всяком случае приложение можно и не обновлять.

Как и у Cayenne в Virtuino реализована жесткая возможность по подключению к сети Wi-Fi средствами Virtuino без возможности использовать уже установленное соединение. Наличие двух одинаковых подходов к реализации наводит на невеселые мысли. По какой-то невероятной причине, разработчики значительно ограничивают возможность пользователей их продуктов. Если с Cayenne мне удалось решить вопрос про использование моего собственного подключения к сети, то в Virtuino я потерпел фиаско. Даже при помощи разработчика мне не удалось подключить мой ESP8266 к сети и использовать Virtuino. Дело в том числе и в том, что Virtuino поддерживает ESP8266 только как внешний модуль Wi-Fi для Arduino, а не как самостоятельную плату. А я полностью перешел в своих устройствах на ESP8266 в виду их выдающихся характеристик.

Да, в погоне за облегчением жизни потребителя, некоторые разработчики загоняет его, потребителя, в очень узкие рамки и не позволяют за них выходить. На примере 1С, мы помним, чем гибче и открытие платформа, тем больший успех ждет ее на рынке. Где все те «парусы», «галактики» и «абакусы»? Тем не менее, я связался с разработчиком и выяснил его ближайшие планы. Первым делом будут реализованы настраиваемые кнопки и индикаторы. Эта работа должна быть завершена к моменту публикации статьи, а затем настанет черед добавления новых плат к штатной библиотеке. Надеюсь, что в библиотеке появится нативная поддержка ESP8266 для Arduino.

В целом же Virtuino произвел на меня очень благоприятное впечатление, в первую очередь тем, что присутствует возможность не использовать промежуточный сервер. Но ограниченные ресурсы одного человека не позволяют реализовать сразу все задумки, например, добавить англоязычную версию сайта или же слепить универсальный вариант своей библиотеки, а заодно положить ее на GitHub. С нетерпением ждем дальнейшей разработки и новостей от Illias-а.

Выводы

Меня очень радует тот факт, что начали появляться реализации реальной конвергенции мобильных устройств и устройств из мира IoT. Пока у нас не будет возможности с легкостью общаться с нашими устройствами, по возможности через единый или универсальный интерфейс, тотального марша IoT по планете наблюдаться не будет. Человек уж такая скотина, которая ленится привыкать к чему-то новому и наличие с десятка различных интерфейсов по управлению IoT-устройствами будет вызывать нескончаемую экзистенциальную боль в суставах конечного потребителя.

Конечно, рассчитывать на тотальную унификацию не стоит. Помните историю с умными домами? Когда весь бум сошел на нет? А все из-за несовместимости систем между собой и отсутствию четкого, единого стандарта. Подобный риск существует и с IoT. В принципе, как-то мы обходились без умных розеток, холодильников и стиральных машин, а добавление новых «умных» функций не добавляет много ценности к устройствам. Поэтому будем внимательно следить за назревающей битвой, возможно, что на наших глазах победит один из рассматриваемых выше способов коммуникации между человеком и устройством. Поглядим, посмотрим.

Полезные ссылки:
Приложение Blynk
Cayenne
GitHub с Blynk (Blynkkk) под лицензией Mit
Tutorial по Virtuino
ThingSpeak


Опубликовано автором в следующих категориях:
DIY Soft

Феномен Blynk и его альтернативы: Один комментарий

  1. AntonK

    Спасибо за обзор. За подсказку с Virtuino благодарю - как-то не замечал ранее этот сервис...
    Cayene, скорее всего, будут монетизировать, добавляя новые возможности для "промышленного" использования (напр., сервис ThingSpeak уже не полностью бесплатный, хотя сохранённого бесплатного режима для большинства энтузиастов вполне хватает).

Добавить комментарий