• Система автоматизации с открытым исходным кодом на базе 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);
 
Сверху Снизу