• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Очередной MQTT-клиент для android в виде приборной панели списком

ravend

Member
Добрый день!
Прошу ознакомиться и оценить поделку: Приложения на Google Play – Linear MQTT dashboard
Любое количество "виджетов" можно добавить на основной экран, менять их местами, изменять настройки "виджетов" непосредственно с телефона/планшета Android.
Делал для себя, для управления и мониторинга некоторого оборудования на ESP8266 (мой проект на сайте Blynk - Water control system). Как замена Blynk, конечно функционал намного слабее, но зато серверная часть весьма "стандартная" (любой MQTT брокер в интернете или развернут локально) на выбор.

Описание: Home · ravendmaster/linear-mqtt-dashboard-wiki Wiki · GitHub
 
Последнее редактирование:

Lstt

Member
Спасибо за приложение!
На мой взгляд, приложение очень удобное,(особенно для неосвещённых пользователей), в отличии от приложения IoT Manager (без обид для Виктора).
Пожелания - возможно ли добавление виджета слайдер?
Возможен ли дисконнект клиента в фоновом режиме, иначе батарейка закончится за 2-4 часа..
Возможно ли разделение каким либо образом виджетов по группам (1-2-3 этаж, детская спальня и т.д..)?
Со своей стороны обещаю быть постоянным альфа-бета-тестером...
 

ravend

Member
Спасибо за приложение!
Пожелания - возможно ли добавление виджета слайдер?
Возможен ли дисконнект клиента в фоновом режиме, иначе батарейка закончится за 2-4 часа..
Возможно ли разделение каким либо образом виджетов по группам (1-2-3 этаж, детская спальня и т.д..)?
1.Слайдер обязательно будет, сделать его не трудно, просто непосредственно мне он был не нужен.
2.Если предусмотреть дисконнект в неактивном режиме, тогда точно будут недоступны push-уведомления. Я пересмотрю, как это сделано сейчас, и что нибудь придумаю. В крайнем случае в настройках соединения будет добавлена галка "Поддерживать соединение в фоне" (или как-то похоже), которую нужно будет снять.
3.Группы нужны, но я пока думаю, как это лучше реализовать. С одной стороны приложение (по начальной концепции) должно представлять виджеты в виде линейного списка...поэтому табов (закладок) скорей всего не будет. Предлагаю пока пользоваться полурешением - создать текстовый виджет, топик подписки оставить пустым (никаких негативных последствий не будет), в этом случае будет отображаться только наименование, и разместить этот виджет в нужное место, он будет представлять "наименование" группы. К сожалению пока только так.

30 мая, выложу в маркет обновление.
Спасибо, за обратную связь!
 
  • Like
Реакции: Lstt

Civil

New member
@ravend, небольшой офтоп. Поясните, если можно, в чем смысл именно такой клиент-серверной архитектуры и у вас и у Блинка? Я вижу одни минусы - зависимость от наличия соединения или необходимость установки своего сервера, лишнее звено как уменьшение надежности, плохая мобильность устройств и т.д.
P.S. Сама идея линейной панели управления очень неплоха. Рад, что и такой вариант появился.
 

ravend

Member
@Civil
@ravend, небольшой офтоп. Поясните, если можно, в чем смысл именно такой клиент-серверной архитектуры и у вас и у Блинка? Я вижу одни минусы - зависимость от наличия соединения или необходимость установки своего сервера, лишнее звено как уменьшение надежности, плохая мобильность устройств и т.д.
P.S. Сама идея линейной панели управления очень неплоха. Рад, что и такой вариант появился.
Действительно, промежуточное звено в виде брокера(сервера) MQTT надежности не добавляет, но есть плюсы, и по своему опыту я решил остановиться именно на этой модели. Оговорюсь, хотя вариант использования MQTT брокера, расположенного вне вашей территории возможен, но считаю неприемлемым, т.е. нужно поднимать его на своем железе, расположенном в одной с вашей домашней подсетью. У меня, например, рядом с роутером лежит Raspberi Pi 2, ничем кроме MQTT сервисом не занятая (можно применить и более бюджетное оборудование - Orange Pi и т.д.).
Почему "клиент-сервер":
1. Единая точка входа для управления любым количеством устройств из любого места, где есть интернет. Конечно для этого нужно пробросить наружу один порт, и иметь внешний ip, пусть и динамический (я пользуюсь бесплатным DDNS, благо, в роутере предусмотрена регистрация в Dyn.com, это бесплатно. Также наверняка этому можно научить Raspberi Pi, я не пробовал).
2. Уже реализованная авторизация (имя пользователя, пароль)
3. Легко подключать новое устройство (здесь речь конечно же только о DIY-устройствах), нужно всего лишь организовать коммуникацию "нового устройства" с вашим сервером.
4. Сервер является буфером данных, т.е. устройства могут просыпаться по событию или по расписанию, передавать на сервер всё, что нужно, и засыпать, в это время клиент (Ваш телефон) может быть не в сети, и при следующем подключении просто считает с сервера все данные.
5. Ну и наличие стандартных, готовых к работе из "коробки", _взаимозаменяемых_ "клиентских" программ. К тому же у нас есть ещё одна - Liner MQTT Dashboard.

Какая альтернатива? - организовывать на каждом устройстве HTTP-сервер? Пробрасывать порты наружу от каждого устройства. Что с авторизацией? Что с программами-клиентами (нет универсальных, кроме MQTT)? Каждое новое устройство будет требовать "донастройки" домашнего оборудования и клиентской программы (если она изначально не универсальна). Готовые клиенты (не MQTT) работают только со своим железом по никому не известному протоколу, либо через HTTP GET/PUT запросы, - связь не совсем двухсторонняя. И всё равно это не решает проблему по пункту №4
 
Последнее редактирование:

Lstt

Member
Какая альтернатива? - организовывать на каждом устройстве HTTP-сервер? Пробрасывать порты наружу от каждого устройства. Что с авторизацией? Что с программами-клиентами (нет универсальных, кроме MQTT)? Каждое новое устройство будет требовать "донастройки" домашнего оборудования и клиентской программы (если она изначально не универсальна). Готовые клиенты (не MQTT) работают только со своим железом по никому не известному протоколу, либо через HTTP GET/PUT запросы, - связь не совсем двухсторонняя. И всё равно это не решает проблему по пункту №4
Абсолютно согласен..Долго выбирал варианты подключения и организации двусторонней связи и MQTT единственное, на мой взгляд, идеальное решение, по крайней мере, для сенсоров..
 

Civil

New member
@ravend, спасибо за ответ.
Т.к. живу в квартире, то полноценный умный дом не слишком актуален. Основная идея использования 8266 для меня - замена или дополнение дисплеев и органов управления в DIY приборах.
Первый прибор из этой серии сделан на HTML и имеет функционально похожий на Linear MQTT dashboard интерфейс, состоящий из экрана данных и двух экранов настроек. При объеме данных в 5-7кБ он легко обслуживает 2 клиента с автообновлением в 3с.В дальнейшем думаю перейти на AJAX, где объем данных должен уменьшиться порядка на 2.
Преимущество в первую очередь в автономности - устройство может работать как самостоятельно,так и в составе сети и не требует доп. оборудования.
Конечно, хотелось бы иметь программу клиент, которая бы слушала/отправляла данные на заданный порт. Это бы сильно упростило разработку, исключив из нее дизайн интерфейсов и все с ним связанное.
 

ravend

Member
@Lstt В маркет выложил обновление. Добавлены виджеты Заголовок, Слайдер. Добавлена настройка соединения, - оставлять соединение в фоне.
 
  • Like
Реакции: Lstt

Lstt

Member
@Lstt В маркет выложил обновление. Добавлены виджеты Заголовок, Слайдер. Добавлена настройка соединения, - оставлять соединение в фоне.
Cпасибо большое! Позволю высказать ещё несколько пожеланий..
Есть такой интересный клиент - Приложения на Google Play – IoT MQTT Dashboard, в нём есть полезная фича - интервал времени (в строке с параметром) , сколько сек(мин) назад пришли данные..Когда это, к примеру, система отопления, очень интересно иметь актуальный данные...А так не совсем понятно, когда пришло последнее значение в топик
И ещё вопрос - возможно ли как-то кастомизировать визуальные параметры виджетов - размер шрифта, цвет ?
Ещё раз спасибо!
 

ravend

Member
Cпасибо большое! Позволю высказать ещё несколько пожеланий..
Есть такой интересный клиент - Приложения на Google Play – IoT MQTT Dashboard, в нём есть полезная фича - интервал времени (в строке с параметром) , сколько сек(мин) назад пришли данные..Когда это, к примеру, система отопления, очень интересно иметь актуальный данные...А так не совсем понятно, когда пришло последнее значение в топик
И ещё вопрос - возможно ли как-то кастомизировать визуальные параметры виджетов - размер шрифта, цвет ?
Ещё раз спасибо!
Фичу в виде отображения прошедшего времени с момента получения клиентом данных от MQTT брокера я видел у вышеупомянутого клиента. По сути на MQTT сервере должны быть всегда актуальные данные, и когда вы соединитесь (клиентской программой) Вы увидите их. Другой вопрос, что Ваше оборудование (по каким то причинам) не смогло обновить информацию на MQTT сервере. К сожалению протокол MQTT не позволяет внедрять непосредственно в сообщение "штамп времени", но другим сообщением можно эту информацию передать, для этого я предлагаю, вместе с полезными данными отправлять информацию о времени последнего отчета (часы, минуты именно оборудования) отдельным сообщением, но непосредственно в то, время, когда была передана полезная информация, а на панель вывести это время, и Вы сможете видеть, когда информация была передана оборудованием на MQTT сервер. Все данные на MQTT нужно отправлять с признаком Retained, чтобы клиент (на телефоне) смог забрать их с сервера MQTT в любое время.

Сам лог пришедших/отправленных сообщений будет, но не на основном экране.

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

ravend

Member
В плеймаркет выложил очередное обновление.
Что нового:
- Внешний вид кнопок изменен (раньше использовались системные)
- В трее больше нет постоянно висящего значка, показывающего, что приложение работает в фоновом режиме (для пуш-уведомлений), т.к. не всем такое нравится
- Окно с сообщением (пуш-уведомлением) теперь можно смахнуть (раньше можно было его убрать, через заход в само приложение)
- В виджете RGB светодиод можно указать, значение, на которое он будет реагировать (раньше было только "1" вкл, всё остальное выкл.)
- В виджете Переключатель также можно указать, что будет публиковаться при переключении, т.е. два произвольных сообщения
- Виджет кнопка теперь может отправлять сообщения не только при отжатии (типовое поведение кнопок Android), но и при нажатии, т.е. два сообщение, содержание сообщения настраивается
- В режиме редактирования панели, в меню доступно Копирование всех настроек виджета
- В режиме редактирования, на панели, в каждом виджете вместе с именем отображается и основной топик виджета

Пожелания/проблемные ситуации, пожалуйста пишите сюда или на почту разработчика (указана на страничке приложения в плеймаркете Приложения на Google Play – Linear MQTT Dashboard)
 
Последнее редактирование:

ravend

Member
Небольшое, но на мой взгляд очень полезное изменение в Linear MQTT Dashboard, ранее этот функционал практически ничем не покрывался.
Теперь можно постить произвольные(корректировочные) значения, связанные с виджетами Value.

Для чего это.
Пример, у меня на панели есть виджет Value, который отображает показания счетчика расхода воды, но данные в нём не актуальны, воспользовавшись корректировкой можно отправить новое значение на "устройство" (естественно при этом устройство должно обработать это сообщение и внести себе в память новое значение). Теперь значение актуально.

Как это работает.
По долгому нажатию непосредственно на значение, отображаемое виджетом Value, открывается окно с текущим значением, которое можно скорректировать и послать на ваше устройство (через MQTT сервер, естественно).
Адрес топика для отправки нового значения указывается в поле "New value topic" в настройках виджета Value.

Механизм похож на терминал, связанный с конкретным виджетом Value (т.к. топик для "корректировки" указан в настройках виджета).
 

Lstt

Member
Увы! После последнего обновления приложения крашится, даже новая чистая установка не помогает...(
 

ravend

Member
Вышло уже несколько обновлений, в одном из них стала доступна работа с десятичными дробями (decimal) числами. В виджетах Meter и Slider появились для этого специфичные настройки.
Также хочу анонсировать, что в ближайшее время (сегодня - завтра) выйдет релиз, в приложении будет возможность размещать виджеты на нескольких вкладках, переключаться между вкладками одним касанием.
Ваши замечания, пожелания прошу публиковать либо в playmarket (Приложения на Google Play – Linear MQTT Dashboard) либо присылать на почту ravendmaster@gmail.com.
Спасибо за внимание!
 

dao89

New member
@ravend много месяцев сюда не заходил, а тут такое!
В начале года кроме Blynk или IoT Manager'а (в нём мне совершенно не подошла необходимость прописывать весь интерфейс приложения на самих контроллерах) ничего особо не было. Потому для управления своим умным домом я на домашнем маршрутизаторе поднял помимо MQTT брокера ещё и простенький веб-сервер с php и сделал страницу с которой можно управлять умным домом через отправку mqtt сообщений. На телефонах сделал ярлык на эту страницу и таким образом управлял освещением и всем остальным.
Прочитал про ваше приложение и кажется это то, что нужно. Как только попробую - оставлю отзыв.
 

dao89

New member
Установил. Да, это то, что нужно. Не нужно ставить и использовать какие-то там библиотеки для ардуины от автора приложения - приложение можно настроить так, как нужно мне, очень хорошо. Приложение отдельно, микроконтроллеры - отдельно. Но первое что бросилось в глаза - я не нашел возможности экспорта настроек, не настраивать же мне всё заново на телефоне супруги, к примеру...
 

ravend

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