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

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

Vbifyz1

New member
Огромное спасибо. Успехов в развитии и терпения с чайниками, как я. Я рад что уже отключил рекламу, готов отключить повторно, не каждый автор так бережно относится к юзерам.
 

ravend

Member
Огромное спасибо. Успехов в развитии и терпения с чайниками, как я. Я рад что уже отключил рекламу, готов отключить повторно, не каждый автор так бережно относится к юзерам.
Спасибо за пожелание!
(повторно отключать рекламу для одного и того же аккаунта гугл плеймаркета не потребуется, даже если Вы будете переустанавливать приложение, или установите его на второе(третье...) устройство с тем же аккаунтом гугл).
Если Вы ещё этого не сделали, пожалуйста, поставьте хорошую оценку в плеймаркете.
 

Vbifyz1

New member
Еще совет/просьба - сделать отдельное окно для величин.Вольт, ампер, кг., кВт. Пока мне не подсказали я не смог догадаться как это писать. ЯВЫ ТО НЕ ЗНАЮ.
 

ravend

Member
Еще совет/просьба - сделать отдельное окно для величин.Вольт, ампер, кг., кВт. Пока мне не подсказали я не смог догадаться как это писать. ЯВЫ ТО НЕ ЗНАЮ.
Непосредственно для этого, поле очень не хотелось бы добавлять в программу, захламляя форму (механизм доработки значения на JavaScript более мощный), я подумаю как упростить (сделать более доступным для "непосвещенных" в я.п.), возможно будет встроен некий "хелп" (возможно даже интерактивный) с различными примерами, непосредственно рядом с полем OnShow().
 

ravend

Member
Вот "хелп" точно нужен. Я пока про графики еще не спрашивал ....
Чтобы сейчас, что-то показал виджет График, нужна соответствующая реализация со стороны железа, а именно подготовить данные в формате массив JSON, сам виджет, ничего кроме отобразить точки из этого массива не умеет.
Примеры и некоторые инструкции я давал в этой теме выше, другой информации нет, т.к. больше нечего сказать, виджет сам по себе простейший (но требует подготовленных данных "из вне").
 

Vbifyz1

New member
А вот IoT MQTT Dashboard как то рисует графики ??? Там без подготовки железа было. Я может не все понимаю, но если сделать какой то буфер для данных на некоторый период времени то можно любые данные отрисовать.
 

ravend

Member
А вот IoT MQTT Dashboard как то рисует графики ??? Там без подготовки железа было. Я может не все понимаю, но если сделать какой то буфер для данных на некоторый период времени то можно любые данные отрисовать.
В этом клиенте применяется чёрная магия. А если серьёзно, то, этот клиент должен находится онлайн постоянно, когда нужно строить график, при отсутствии сети он оставит пробел в графике. Т.е. всё время нужно находится онлайн, чтобы построить полностью корректный график, отсюда минусы - жор энергии на постоянный онлайн, и совсем не факт, что сеть (интернет) не будет пропадать.
 

Vbifyz1

New member
Так это и правильно, хочешь получать реальный график, будь в онлайне. Я считаю это правильнее для MQTT чем строить графики по данным подготовленным где то. Включил, посмотрел. Можно дополнительный красный рубильник! Если мне надо статистику, графики за длительный период, думаю проще использовать базы данных и специально обученные графические построители.
А тогда встречный вопрос, что ваша аппа не в онлайне работает ??? А как тогда ???
 

ravend

Member
Так это и правильно, хочешь получать реальный график, будь в онлайне. Я считаю это правильнее для MQTT чем строить графики по данным подготовленным где то. Включил, посмотрел. Можно дополнительный красный рубильник! Если мне надо статистику, графики за длительный период, думаю проще использовать базы данных и специально обученные графические построители.
Можете привести пример, для чего Вам нужны графики, построенные в реальном времен, и правильно построенные, только если клиент находится всегда онлайн?
Спрашиваю потому, что хочу понять, что можно с этим сделать с учетом дальнейшего развития программы?
 

Vbifyz1

New member
Да конечно. Вообще то сейчас у меня модули шлют все данные в InfluxDB с выводом графиков в Grafana. Но иногда необходимо посмотреть на реальный процесс в онлайн и удобнее сделать это сразу через MQTT, или если например будут проблемы доступа к моему серверу, или при отладке процессов. Да даже просто убедиться что MQTT работает - по графику все прекрасно видно.
 

ravend

Member
Да конечно. Вообще то сейчас у меня модули шлют все данные в InfluxDB с выводом графиков в Grafana. Но иногда необходимо посмотреть на реальный процесс в онлайн и удобнее сделать это сразу через MQTT, или если например будут проблемы доступа к моему серверу, или при отладке процессов. Да даже просто убедиться что MQTT работает - по графику все прекрасно видно.
Возможно это совсем неявно, но Linear MQTT Dashboard не позиционируется, как инструмент для отладки, такие функции планируются, но будут позже, после ввода наиболее популярных функций. Например, мне самому иногда очень не хватает функции, при которой я бы смог оценить, какие данный, когда(во сколько) и по каким топикам приходя, - лог данных "в эфире", приходится пользоваться сторонним софтом, но это всё нужно только на этапе отладки. Пока на ввод таких функций, к сожалению не хватает времени.
 

Vbifyz1

New member
По мне так MQTT это протокол связи в реальном времени. Было бы замечательно подсвечивать или выделять как то метрики имеющие время жизни не более 1 минуты. Все остальное старьё, может там уже и модуль сгорел ..... и соответственно рисовать старые графики не есть задача MQTT. ИМХО. Хотя могут быть варианты применения, но надо четко всегда понимать когда были данные, а может из прошлого года ??
Вот реальный пример - хочу удаленно включить свет. Включил, ползунок уполз, а свет горит ??? А может он уже год как горит ??? А у меня косяк в системе и данные показывают что не горит ....
Вопчем реал тайм нужно не для отладки, а для реальной жизни.
 

ShaMan

New member
Вот немного доработал пример для вывода Uptime
в формате Часы:Мин:Сек

h=Math.floor(value/3600);
m=Math.floor((value-h*3600)/60);
s=Math.floor(value-(h*3600+m*60));
value=""+h+":"+(m<10?"0"+m:m)+":"+(s<10?"0"+s:s);
 

Вложения

ravend

Member
По мне так MQTT это протокол связи в реальном времени.
Сам протокол, да, примитивный и в основном подходит для сообщений реального времени, но поверх него и есть цель построить приложение, которое не будет иметь явные ограничения из-за отсутствия непрерывной связи с сервером. Это решается подготовкой данных самим оборудованием (в будущем дополнительными сервисами) и публикацией на сервер MQTT с признаком retined в готовом к отображению клиентом виде, с учетом возможностей интерпретировать более сложные данные самим клиентом (например, содержимое графика).
 

ravend

Member
Вот немного доработал пример для вывода Uptime
в формате Часы:Мин:Сек

h=Math.floor(value/3600);
m=Math.floor((value-h*3600)/60);
s=Math.floor(value-(h*3600+m*60));
value=""+h+":"+(m<10?"0"+m:m)+":"+(s<10?"0"+s:s);
Спасибо! Вы первый (после меня :)), кто опубликовал полезное решение для преобразования значения средствами JavaScript для данного клиента!
 

Vbifyz1

New member
Возможно это совсем неявно, но Linear MQTT Dashboard не позиционируется, как инструмент для отладки, .
Я хотел обратить внимание на другое видение MQTT. Для варианта "умная дача" или "умная деревня", где нет никакого интернета кроме 3G, это единственный адекватный способ управления устройствами. Ему нет альтернативы и этим надо пользоваться, мне так кажется. Исходя из этих потребностей я и высказываю свои идеи. И главное тут видеть обратную связь с удаленным объектом.
 

ravend

Member
Я хотел обратить внимание на другое видение MQTT. Для варианта "умная дача" или "умная деревня", где нет никакого интернета кроме 3G, это единственный адекватный способ управления устройствами. Ему нет альтернативы и этим надо пользоваться, мне так кажется. Исходя из этих потребностей я и высказываю свои идеи. И главное тут видеть обратную связь с удаленным объектом.
Для того, чтобы понять, есть ли связь с удаленным оборудованием и живое ли оно (не зависло), я использую следующий подход:
У меня оборудование имеет постоянно тикающее значение, а именно часы, как эти часы реализованы в устройстве, - не важно (это может быть RTC или синхронизируемое через NTP, у меня NTP). Есть виджет (value) который показывает это значение, само значение времени на удаленном устройстве мало полезно, но полезно (визуально) сравнить его со временем телефона, и я сразу понимаю, что железка находится в рабочем состоянии и связь с ней есть. Этот пример, не выдуманный, я на самом деле так поступаю.
Я ранее уже задумывался, как это можно автоматизировать, т.к. периодически заглядывать в программу (посмотреть на виджет с часами удаленного устройства), только для того, чтобы понять, не отвалилось ли оно, - не нормально.
Резюмирую:
- наличие функций, для определения живое ли оборудование по ту сторону MQTT - удобно иметь в повседневной эксплуатации.
- наличие функций для просмотра, что пришло, по каким топикам, во сколько - только для отладки.
- строить график по значениям, приходящим в реальном времени _при_этом_программа-клиент_должна_находиться_всегда_онлайн_ чтобы график был корректным (а не примерным) - ...даже классифицировать не могу, считаю это не нужным.
Я правильно понял, и оценил проблему?
Прошу высказать своё мнение всех, кто заинтересован в дальнейшем развитии программы.
 
Последнее редактирование:

Vbifyz1

New member
По графикам ничего не скажу, мне вообще то они не нужны.
По часам - все верно. Именно для этого я и просил функции преобразования времени и UpTime ( модули ресетятся в 12 и 24 часа и показания всех трех часов должны совпадать)
Может можно на основании показания времени модуля и времени в телефоне изменять подсветку параметров модуля, чтобы сразу видеть их жизненную позицию ???
А по остальному спорить не буду, автор есть автор, у всех свое видение, наше дело кидать идеи ....
 

solopov

New member
Идея с часами как пинг живо ли устройство интересна, но надо еще ntp (если rtc нет) поддерживать.
Я бы предложил еще один виджет (ух сколько хотелок) ping по сути клиент шлет по мqtt таймстамп получает его в ответ. Если дельта (можно настройку сделать) в пределах, то время зеленое, иначе - красное.
А время можно внутри устройства испрользовать, можно и не испрользовать
 
Сверху Снизу