IoT Manager

IoT Manager — мобильное приложение для DIY устройств

IoT Manager может обмениваться командами и данными с любыми устройствами, поддерживающими MQTT. Я продемонстрирую вам взаимодействие с ESP8266, причем сразу с двумя модулями. В этот раз я не буду поднимать локальный MQTT брокер (в одной из предыдущих статей мы поднимали mosquito на OpenWRT), а воспользуемся бесплатным аккаунтом (до 10 клиентов) CloudMQTT.com. Подробности под катом.

IoT Manager — это гибридное (не нативное) приложение, созданное с помощью Ionic Framework, на HTML5 и AngularJS, обмен с брокером реализован на Paho, который обеспечивает полное соответствие стандарту MQTT. Отличает это приложение от других: расширенные возможности отладки, отправка push уведомлений через OneSignal HTTPS REST API и html-based настройка внешнего вида виджетов.

IoT Manager on Google Play

Быстрый старт

Push уведомления

Настройки IoT Manager

Дополнительные возможности IoT Manager

Планы на будущее

Ссылки по теме

Быстрый старт

Начать лучше с регистрации бесплатного аккаунта на CloudMQTT.com, но вы можете использовать любой MQTT брокер (главное, чтобы была возможность подключения через WebSockets), в том числе и установленный в вашей локальный сети.

Примечание: если вы хотите управлять устройствами из любой точки земного шара, для CloudMQTT дополнительно делать ничего не нужно, а вот в случае использования брокера в вашей локальный сети вам придется пробросить WebSockets порт брокера во внешний мир на вашем маршрутизаторе, но описание этого выходит за рамки данной статьи.

Предупреждение. Пожалуйста, не используйте имена пользователей и пароли из скриншотов в этой статье. Я сам ими реально не пользуюсь, сделал только для этой статьи. Если хотя бы два читателя одновременно запустят примеры с этими данными, то возникнет путаница и вы толком не сможете разобраться как все работает.

После регистрации на CloudMQTT.com идем в Control Panel. Здесь нам нужно создать брокер кнопочкой Create, даем произвольное название брокеру, выбираем датацентр (Европа или США), тарифный план не трогаем (по умолчанию — бесплатный Cute Cat). Я создал сразу два: TEST в Европе и TEST2 в США.

СloudMQTT

СloudMQTT

Жмем на кнопку Details.

CloudMQTT

CloudMQTT

Здесь нас интересует только имя хоста m11.cloudmqtt.com и WebSockets порт 30927 (для мобильного приложения), то же имя хоста и порт 10927 берем для скетча Arduino IDE нашего DIY устройства. Имя пользователя и пароль, в этом разделе, указаны для юзера облачного хоста, под которым крутится брокер mosquito, и вам их лучше не использовать в клиентах в целях безопасности. Нужно создать нового пользователя. Я сделал пользователя test с паролем test. Далее ему нужно дать права на чтение и запись на все топики (ставим просто #). В итоге должно получиться так:

CloudMQTT

CloudMQTT

В дальнейшем, после того, как все заработает, можете прописать права более детально. Можно сделать разных юзеров для мобильного приложения и IoT девайсов.

Идем далее. На этом шаге я бы посоветовал вам установить и настроить mqtt-spy, чтобы видеть все, что происходит на нашем брокере, но этот шаг не является обязательным.

Устанавливаем IoT Manager на ваш смартфон/планшет. IoT Manager не начнет работать до тех пор, пока вы не сделаете настройки подключения:

IoT Manager

IoT Manager

Если вы все сделали правильно, то увидите сообщение об успешном подключении к брокеру и вас перебросит на главный экран приложения:

IoT Manager

IoT Manager

Пусть вас не смущает No data — это нормально до тех пор, пока не запущены ваши IoT устройства, так как именно в них прописаны все настройки. Главное сейчас — это зеленый индикатор (в верхнем правом углу) успешного соединения с CloudMQTT.

Далее скачиваем с https://gist.github.com/4refr0nt/ IoTmanager.ino или IoTmanager2.ino или оба скетча, если у вас под рукой две платы ESP8266. Исправляем в скетче WiFi SSID и пароль на ваши, вводим адрес вашего mqtt брокера, порт 10927 (не WebSockets), пользователя и пароль (test, test). В скетче Arduino IDE указывается адрес хоста, а не его имя. Чтобы узнать IP адрес любого хоста по его имени, можно в командной строке выполнить ping имя_вашего_cloudmqtt_хоста, и вы увидите необходимый вам адрес.

С помощью ESP8266 Arduino IDE заливаем все это в ESP8266.

Profit!

Примечание 1. Эти скетчи были набросаны мною по-быстрому и отнюдь не идеальны. В реальных проектах вам может потребоваться сохранение состояний GPIO, вы захотите подключить реальные датчики, а не бесполезный фоторезистор на ADC, оптимизировать код. Я не стал этого делать, чтобы не загромождать код, моей задачей было показать возможности приложения. Если у вас возникнет желание поделиться своими наработками — публикуйте свои работы на нашем форуме, это очень поможет новичкам и будет вполне интересно и для более опытных.

Примечание 2. Железо и прошивки ваших IoT девайсов могут быть любыми, не обязательно ESP8266. Это вполне может быть Arduino с Ethernet или WiFi шилдом, RaspberryPi или другое устройство. При использовании ESP8266 прошивка на борту может быть любой, лишь бы поддерживала MQTT для датчиков и/или HTTPS для push уведомлений. Мне, да и многим нашим читателям, было бы очень интересно увидеть различные примеры. Публикуйте свои работы на нашем форуме

IoT Manager

IoT Manager

Push уведомления

Еще один вариант использования приложения: push уведомления. На видео и демо скетчах push уведомление приходит на смартфон каждые 10 секунд, если значение ADC, подключенного к фоторезистору, более 100 (для этого на видео я накрываю всю плату светонепроницаемой коробкой). Если вы управляете своим устройством без использования IoT Manager, а каким-то другим способом, но не имеете возможности отправлять push уведомления — IoT Manager вам поможет. Никаких настроек приложения не требуется, брокер не используется. Необходимо только, хотя бы один раз, запустить приложение. При первом запуске приложения происходит автоматическая регистрация вашего смартфона на сервисе OneSignal.com, ему присваивается уникальный идентификатор, который вы можете увидеть на странице статистики. Далее, в своих IoT устройствах, вы можете настроить отправку специально сформированного HTTPS POST запроса, при выполнении заданных вами условий, и сможете получать push уведомления на все смартфоны и планшеты, на которых установлен IoT Manager и id которых вам известны. Прием push уведомления на смартфон происходит вне зависимости от того, запущено мобильное приложение или нет. Прием push уведомлений можно приостановить/возобновить в настройках IoT Manager.

Настройки приложения

IoT Manager

IoT Manager

  • Enable events logging — включает/отключает логгирование событий, которые можно потом посмотреть в журнале
  • Enable Toast messages — включает/отключает отображение всплывающих сообщений (тостов), которые уведомляют вас о важных событиях
  • Enable Push notifications — включает/отключает прием PUSH уведомлений. PUSH уведомления могут генерироваться вашими IoT устройствами и их получение не зависит от того, запущено ли приложение.
  • Reconnect after connection lost — включает/отключает автоматическое переподключение к брокеру при проблемах связи
  • Show connection status — включает/отключает индикатор текущего состояния подключения к брокеру в верхнем правом углу на всех страницах приложения
  • End-user mode — включает/отключает режим конечного пользователя. Этот специальный режим можно включить, когда вы закончили отладку и установили приложение человеку, далекому от брокеров, портов и логов — большинство страниц приложения, предназначенных для отладки вашей системы, будут скрыты, как и настройки подключения к брокеру. Останутся лишь главная панель управления, разделы настройки и помощи.

Дополнительные возможности

IoT Manager

IoT Manager

IoT Manager

IoT Manager

View log. Если в настройках включен режим логгирования, то здесь вы увидите все события, которые происходят (точнее, последние 100 записей). Это и публикация данных в топики, поступление данных от устройств и остальные события. Логи будут незаменимы для отладки, особенно если вы не пользуетесь mqtt-spy.

IoT Manager

IoT Manager

Subscribed — это список топиков, на которые вы подписаны. Для отладки.

IoT Manager

IoT Manager

Publish — дает возможность опубликовать данные в произвольный топик. Для отладки.

IoT Manager

IoT Manager

Statistics — простой подсчет принятых/отправленных сообщений. Также на этой странице вы можете увидеть ID вашего девайса (необходим для отправки push уведомлений с ваших IoT устройств). Вы можете отправить ID к себе на почту для дальнейшего использования.

Примечание. Нет смысла пытаться использовать ID из скриншота — он недействителен.

Планы на будущее

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

Если удастся монетизировать приложение более 100$, то опубликую в Apple AppStore версию для IOS (у Apple нужно ежегодно оплачивать аккаунт). Встраивать рекламу или делать приложение платным я считаю нецелесообразным, так что если у вас появится желание финансово поддержать проект, то это будет только приветствоваться.

Ссылки

Желтая плата с ESP8266 из видео на Aliexpress
Обсуждение этой статьи и IoT Manager на нашем форуме
Обсуждение Arduino IDE для ESP8266 на нашем форуме
Обсуждение mqtt-spy на нашем форуме
Обсуждение CloudMQTT.com на нашем форуме
Обсуждение mosquito на нашем форуме