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

heX

New member
@heX, А приложение сейчас развивается, принимаются ли пожелания по доработкам?
Не знаю.
Я устранил пару ошибок которые мешали мне.
Возможно постараюсь добавить незначительный но требуемый лично мне функционал. Но на этом все (меня связывает и отсутствие лицензии у исходника, и отсутствие свободного времени).
 

dao89

New member
ravend, я вижу после большой паузы, периодически выходят новые версии программы. Но, к сожалению, из версии в версию кочует неприятный баг. Постараюсь по-короче объяснить его суть.
Есть виджет Switch, у которого, к примеру, sub.topic равен status/hellFire, а pub.topic равен set/hellFire, on value равен 'on', off value равен 'off'.
Запускаем программу, к ней, к примеру, прилетает из status/hellFire значение 'off'. Я жму на переключатель, программа посылает в set/hellFire значение 'on' (виджет визуально переключается во включенное состояние), но контроллеру запрещено в данный момент разжигать адское пламя :) и он мгновенно отсылает в status/hellFire значение 'off'. Но вот незадача, виджет визуально так и остается положении 'on', хотя программе явно пришло в ответ от контроллера значение 'off'. Если переключиться между вкладками туда-сюда, то виджет отобразит правильно состояние ('off').
Также было бы здорово, если бы у всех виджетов, была возможность управлять retain флагом (в случае если настройки хранятся не на брокере, а в самих исполнительных устройствах (контроллерах), то навязанный в некоторых виджетах флаг retain доставляет проблемы).
 

heX

New member
навязанный в некоторых виджетах флаг retain доставляет проблемы).
Такая-же проблема.

В mosquito я столкнулся с совершенно идиотским глюком (это вроде фича, но я считаю что поведение по умолчанию должно быть другим):
1. мы публикуем retain переменную.
2. потом публикуем эту переменную с новым значением но без retain флага.
3. отключаемся от сервера.
4. подключаемся...
5. и он выдает _старое_ значение которое осталось от retain посылки! Хотя уже были публикации с новым значением (но без retain флага).
6. и теперь при подключении новых клиентов mosquito всем будет _сразу_ выдавать _старое_ значение (возможно очень старое - mosquito сохраняет retain в БД и они не исчезают даже после перезагрузки).
 

dao89

New member
mosquito сохраняет retain в БД и они не исчезают даже после перезагрузки).
Это отключается в конфиге брокера.
... потом публикуем эту переменную с новым значением но без retain флага.
.... и он выдает _старое_ значение которое осталось от retain посылки!
Это тоже, в принципе, решаемо. Если послать пустое сообщение с retain флагом в топик, то сохраненное на брокере сообщение удалится.

P.S. Так вот и получается, что автор подумал что он лучше всех знает нужен ли retain-флаг в виджетах, а пользователям программы приходится изголяться, чтобы как-то обойти трудности, которые у них возникают из-за такого решения. А ведь добавить опцию во все виджеты - несложно...
 

heX

New member
Это отключается в конфиге брокера.
Да, это отключается (но иногда полезно чтобы даже перезагрузка не сбрасывала состояния).
А вот как включить обновление/удаление retain записи при получении non-retain пакета?

Это тоже, в принципе, решаемо. Если послать пустое сообщение в топик с retain флагом, то сохраненное на брокере сообщение удалится.
Но кто его будет посылать?
(сейчас чищу руками: mosquitto_sub -h $1 -t "#" -v | while read line _; do mosquitto_pub -h $1 -t "$line" -r -n; done)

P.S. Так и придется писать Python скрипт который будет чистить retain сразу после их прибытия.
 
Последнее редактирование:

dao89

New member
heX, посылать его может, к примеру, то устройство, которое "слушает" этот топик. Если конечно есть возможность его перепрограммировать...
P.S. Я кстати как раз на питоне и тестировал механизм удаления retain-сообщений с брокера. Что-то в духе
client.publish('топик_в_котором_хотим_удалить', '', qos=0, retain=True)
должно работать.
P.P.S. Но это всё, в любом случае, костыли. Остается надеяться, что автор услышит просьбу и когда-нибудь таки исправит описанный выше баг и добавит возможность выбора retain во всех виджетах...
 

flash_br

New member
Автор, дружище!!!!!
Ты просто мужик!!!!!!! Сделать такое гибкое и классное приложение на безвозмездных началах это просто супер!!!!!!!!!!
У меня есть просьба, я думаю с ней согласятся многие, постараюсь объяснить:
1. не хватает постфиксов (ну или как их там) при добавлении "value", грубо говоря, если мы выводим число, пусть это будет температура, то хотелось бы добавить "*С", если проценты, то "%" ну и т.д.
2. звуковое оповещение, добавить условие в "value", например val(полученное значение) <лог. оператор> "с чем сравниваем" если true, то воспроизвести стандартный звук оповещения .... к примеру если температура больше какого-то значения, то сделать "бздынь"

Да, есть исходники и имея некоторое время для того, чтобы разобраться в них, можно это сделать и самому, тем более, что исходники я смотрел и в принципе там всё понятно, за что ещё один респект, не многие пишут понятный код, НО хотелось бы всё же видеть это в первоисточнике)))))

сорри за такую шпалеру, то этого оооочень не хватает))))))))))))))
 

RotaryF

New member
Может я пропустил, но
размер виджетов как регулируется?
Например, текстовая строка 40 символов в Value обрезается :(
 

vsvleo

New member
Проект похоже заглох, а жаль.. Так и не нашел в нем возможность парсинга JSON входных данных. Кто-нибудь может подсказать, как в JS извлечь значение из json данных, типа: {"value1":"key1","value2":"key2",....}
 

nikolz

Well-known member
один с поварешкой и семеро с ложкой.
-----------------
хороша каша, но не соленая.
Вы посолите ее
хороша каша, но масла мало
Вы масло положите.
хороша каша, но чая нет.
Налейте чая.
------------------------
Может пора и самим что-то сделать, чтобы каша была вкуснее?
 

vsvleo

New member
один с поварешкой и семеро с ложкой.

Может пора и самим что-то сделать, чтобы каша была вкуснее?
Полностью согласен!.. только зачем тогда этот форум и public приложение, где ТС выслушивает пользователей и что то предпринимает?
 

vlad072

New member
Автор приложение бросил, это очевидно. Но на github исходники оставил, так что есть надежда что кто то уже для себя исправил проблему с навязанными Retain и нерабочими push - уведомлениями в Android 8 +. Никто не в курсе?
 
Сверху Снизу