• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

dao89

New member
2. Сделать виджет combobox (select), который например в базовом примере заменил бы кучу кнопок установки цвета.
Подписываюсь. Если будет возможность сделать этот виджет не-retain, то в моем случае он сможет заменить 5 отдельных кнопок управления люстрой. Не лучшее решение (несколько кнопок сгруппированных в небольшом пространстве было бы лучше), но всё же - какой-то выбор.
Прошу высказаться, нужен ли отдельный сайт, в котором бы были рекомендации, инструкции, "вопросы-ответ", как правильно организовать связь вашего оборудования с клиентом MQTT, ?
Лишним это точно не будет, но как по мне - не стоит сейчас тратить значительные ресурсы (время) на это.
 

dao89

New member
Давно хотел получить удобный способ просмотра когда в какой комнате было последний раз движение. Довольно долго думал как это реализовать... В итоге на маршрутизаторе (на нём же установлен и MQTT-брокер) в cron поставил простой скрипт, который каждые пару минут отправляет текущее время (в виде числа, Unix-time) в топик /time, мои контроллеры (arduino pro mini) соответственно всегда имеют точное время из одного и того же источника. При каждом движении в определенный топик (для каждого датчика - свой) отправляется текущее время в текстовом виде. Ну а в данной программе на каждый датчик соответственно настроен свой виджет Value. Всё - моя давняя задумка решена (как выглядит можно глянуть на скриншоте) :)

P.S. Довольно приятно смотреть на удивление людей, когда к примеру на отдыхе на природе, где связь такая, что файл в 100 кб отправляется чуть ли не пол часа, открываешь программу и видишь где когда было последнее движение, где какая температура, влажность, освещенность :)
 

Вложения

ravend

Member
Вышел очередной релиз.
Исправлена проблема, при которой могло возникать повышенное потребление энергии даже в фоновом режиме работы.

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

Новый виджет - "Набор кнопок" (Buttons set). Настройка данного виджета получилась весьма не удобной, но свою функцию виджет выполняет - несколько кнопок, компактный вид.
Сначала об ограничениях:
- цвет кнопок по отдельности задавать возможности нет.
- настройка внешнего вида (состава кнопок, вид, payload) производится в параметре-строке (визуального редактора нет, возможно будет позже).
- сообщения будут отсылаться только в момент отпускания кнопки (у обычной кнопки есть возможность настроить payload и текст на ней для двух состояний - нажата/отпущена). Ограничение связано с возможно большИм занимаемым местом на экране, при текущей реализации за кнопки можно выполнять прокрутку панели, кнопки при этом ложно срабатывать не будут.
- в строке будет отражено максимум 4 кнопки.
- все кнопки привязаны к одному топику.

Теперь о возможностях:
- неограниченное количество кнопок в одном виджете (лишь бы они уместились все на одном экране).
- можно настроить так, чтобы кнопка не была видна (если в параметре оставить пустоту, - т.е. между двумя запятыми ничего нет)
- представление кнопки можно не задавать, а задать только payload, в этом случае на кнопке будет отображен текст payload
- признак retained может быть установлен по вашему желанию

Примеры строк настройки виджета:
- №1, что то вроде пинпада: 7,8,9,,4,5,6,,1,2,3,,,0
- №2, "переключатель цветов": 0xff000000|red,0x00ff00|green,0x0000ff|blue

Детали настройки:
- количество кнопок зависит от количество значений, разделенных запятыми
- представление (label) кнопки можно задавать после символа вертикальной черты |(пример №2), а можно не задавать (пример №1).
- если включен признак retained, то виджет попытается отразить текущее значение (если оно есть в составе его значений), - кнопка будет выглядеть нажатой.
 
Последнее редактирование:

dao89

New member
@ravend спасибо за набор кнопок! Заменил 6 кнопок управления люстрой одним buttons set'ом: удобнее - занимает меньше места и выглядит лучше.
 

ravend

Member
@ravend спасибо за набор кнопок! Заменил 6 кнопок управления люстрой одним buttons set'ом: удобнее - занимает меньше места и выглядит лучше.
Чуть позже я добавлю настройку, при помощи которой можно будет указывать, сколько кнопок расположить в ряд (сейчас жестко 4 шт.), в Вашем случае можно было бы попытаться разместить все 6 в один ряд, или иначе, по 3 шт, в два ряда, будет выглядеть эстетичней, чем сейчас (4 + 2 кнопки, хотя смотря, какое назначение каждой из шести сейчас).
 

dao89

New member
@ravend было бы отлично: в моем случае все кнопки без проблем бы разместились в один ряд. Тем более, что по факту используется только 5, шестая - таймер - ни разу за три года не пользовался :)
 

solopov

New member
Тогда может опционально сделать возможность указания кнопок в ряду ? Хотя с данным форматом это не очевидно будет. В json было бы проще.
Но вообще супер. Сам пока думаю как graf сделать в своих нуждах легким м использованию.
Еще одно рац. предложение: виджет терминал. По функциям аналог value, , только in и out показываются в окне "терминала". Назначение: простой механизм отправки "служебных" команд + информация о состоянии устройства.

Кстати может быть только у меня, но программа стала себя предлагать для открытия docx и pdf документов, на других пока не заметил
 

ravend

Member
Тогда может опционально сделать возможность указания кнопок в ряду ? Хотя с данным форматом это не очевидно будет. В json было бы проще.
Но вообще супер. Сам пока думаю как graf сделать в своих нуждах легким м использованию.
Еще одно рац. предложение: виджет терминал. По функциям аналог value, , только in и out показываются в окне "терминала". Назначение: простой механизм отправки "служебных" команд + информация о состоянии устройства.

Кстати может быть только у меня, но программа стала себя предлагать для открытия docx и pdf документов, на других пока не заметил
Поясните про "указания кнопок в ряду ?", я не понял.

Позже сделаю (верю в это) визуальный редактор состава и свойств кнопок для виджет buttons set.
C графиком, согласен, сложно, позже будет предложено решение для более простого использования.
Про терминал, пока не планировал его реализацию, возможно в будущем будет и он.

Программа действительно сейчас некорректно предлагает себя для открытия файлов, к которым отношения не должна иметь. Есть проблемы реализации механизма импорта настроек, возможно придется отказаться он этой идеи в пользу более прямолинейного механизма, - выбор файла через диалог (но тогда, например, нельзя будет тапнуть на файл, присланный через skype или на вложение к письму).
 

solopov

New member
Про "указание кнопок в ряду": если в виде json, то было бы как-то так:
{1:[1,2,3], 2:[4,5], 3:[6,7,8]}
Конечно кнопки желательно выровнять по ширине.

Про импорт настроек: думаю импорт по кнопке все же лучше
 

ravend

Member
Про "указание кнопок в ряду": если в виде json, то было бы как-то так:
{1:[1,2,3], 2:[4,5], 3:[6,7,8]}
Конечно кнопки желательно выровнять по ширине.

Про импорт настроек: думаю импорт по кнопке все же лучше
Сейчас можно задать так: 1,2,3,,4,5,,,6,7,8
Единственное, выравнивания действительно нет (первый и третий ряды будут занимать 3/4 ширины строки, второй ряд 1/2).
 
Последнее редактирование:

solopov

New member
Это понятно, но раз вы в паре комментариев выше хотите ввести настройку количества кнопок в ряду, то может быть гибче просто задавать ряд у кнопок (например как выше). Понятно что советовать не зная вершинкой программы дело не благодарное, но вдруг вариант будет полезее
 

Vbifyz1

New member
Здравствуйте. Спасибо за интересный проект. Хотелось бы добавить в него опцию для ленивых - автосканирование метрик и распределение по вкладкам. Лишние проще удалить или исправить, чем вручную вписывать все метрики.
 

dao89

New member
возможно придется отказаться он этой идеи в пользу более прямолинейного механизма, - выбор файла через диалог (но тогда, например, нельзя будет тапнуть на файл, присланный через skype или на вложение к письму).
Можно ведь оставить оба метода. Хотя я лично за выбор файла через диалог. Например "просто тапнуть на вложение в письме", как вы пишите, у меня не получается нормально и сейчас. Нажимаю на вложение, предлагается выбор программы для открытия, - выбираю вашу, программа открывается, но ничего не происходит. Только после скачивания и тапа на скачанный файл и выбора вашей программы - она предлагает обновить настнойки.
 

Vbifyz1

New member
Доброе утро. А можно ли добавить в программу преобразование времени ?
 

Вложения

ravend

Member
Доброе утро. А можно ли добавить в программу преобразование времени ?
Доброе,
преобразовать можно, ничего дорабатывать не нужно.
В поле OnShow() виджета пропишите следующее (лучше скопируйте через буфер обмена):

var dt=new Date(value*1000);
value=dt.toLocaleString();
 

ravend

Member
Здравствуйте. Спасибо за интересный проект. Хотелось бы добавить в него опцию для ленивых - автосканирование метрик и распределение по вкладкам. Лишние проще удалить или исправить, чем вручную вписывать все метрики.
Иметь "сканер" с возможностью создавать виджеты в планах есть, будет позже (не ранее чем через месяц).
 

Vbifyz1

New member
Timestamp - распознается и отражается отлично, а вот секунды не получились.
Во первых они идут с датой, а ее тут не надо. А во вторых и неправильные цыфры ...
 

ravend

Member
Timestamp - распознается и отражается отлично, а вот секунды не получились.
Во первых они идут с датой, а ее тут не надо. А во вторых и неправильные цыфры ...
Пример был дан, в нём демонстрировалось использование JavaScript для преобразования значения, если Вам известен алгоритм, то его можно реализовать используя данный подход, для этого нужно знать JavaScript (либо нагуглить конкретный пример для решения задачи, и немного преобразовать).
Именно для Вашего случая (но без секунд, т.к. в Вашем примере они всё равно вычислялись неверно/или вообще не вычислялись):

h=Math.floor(value/3600);
m=Math.floor((value-h*3600)/60);
value=""+h+":"+(m<10?"0"+m:m);
 
Сверху Снизу