Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Предложение MQTT Dash для Android

Тема в разделе "Android приложения (разработка и готовые решения)", создана пользователем ByTE, 20 окт 2016.

Метки:
  1. Pavlo

    Pavlo Новичок

    Сообщения:
    88
    Симпатии:
    2
    Решение, которое я нахожу - это люди 1 раз в секунду публицируют текущее состояние светодиода.
    Т.е., в даном случае, статус обновится максимум через секунду.

    Я вот тут подумал... А было бы здорово, если бы при старте приложения на мобильном устройстве (допустим того же "MQTT Dash"), можно было бы автоматически оповещать какие-либо топики о том, что "эй-я-новый-клиент-дай-состояния-которые-я-должен-отобразить".
    И в ответ, допустим моя бы ESP-шка, которая подписана на топик "эй-я-тут", публиковала бы повторно текущее состояние светодиода.
     
  2. ByTE

    ByTE Читатель

    Сообщения:
    59
    Симпатии:
    18
    Да, трюк есть. Отправлять сообщения с флагом retained. Тогда при подключении клиент получит последнее актуальное сообщение.
     
    Pavlo нравится это.
  3. Pavlo

    Pavlo Новичок

    Сообщения:
    88
    Симпатии:
    2
    Эх, не стать мне изобретателем колеса :D
    Спасибо огромное!

    Оффтоп:
    Если кому то будет интересно, то нашел вот такую русскоязычную документацию Использование MQTT-клиента микроброкера IBM Lotus Expeditor для публикации сообщений
    Раскрыть Спойлер
    Сигнатура метода для публикации сообщения - int publish(String, MqttPayload, byte, Boolean). Ниже подробно рассматриваются эти четыре параметра:
    • String. Тип параметра темы - строковой (string), и эта строка используется брокером для сопоставления публикации и интересов подписчиков (указываемых при помощи описанного ранее синтаксиса подписки на темы).
    • MqttPayload. Второй параметр - это объект MqttPayload. Объект MqttPayload содержит и данные приложения, и любые заголовки протокола для этой публикации. Предусмотрен сдвиг (offset), чтобы приложения могли определить, где в MqttPayload начинаются данные. Это обеспечивает доступ к нижележащему байтовому массиву без создания дополнительных копий после записи данных в сети. Кроме того, обеспечивается доступ для прямого манипулирования полезными данными после создания объекта и до передачи.
    • Byte. Третий параметр, byte, - это качество сервиса (Quality of Service, QoS) для этой публикации. У QoS три допустимых значения: 0, 1 или 2:
      • QoS, равное 0, означает, что публикатор и брокер пытаются выполнить однократную доставку сообщения, но не предпринимают шаги, кроме предусмотренных TCP/IP, чтобы убедиться в том, что сообщение доставлено. Этот уровень иногда называют "выстрелил и забыл", так как сообщение отправляется адресату без проверки получения.
      • При QoS, равном 1, доставка сообщения брокеру проверяется; однако его разрешается доставлять более одного раза.
      • Значение QoS, равное 2, приказывает MQTT доставлять сообщения один и только один раз.
      Каждое увеличение уровня QoS приводит к дополнительной нагрузке на процессор и сеть. Выбор QoS может повлиять на общие возможности масштабирования вашего решения по обмену сообщениями, а также создаёт дополнительную нагрузку на клиент, связанную с хранением недоставленных сообщений. Следовательно, нужно правильно выбрать соответствующий уровень QoS для каждого опубликованного сообщения. Как правило, следует использовать более низкие значения QoS, если только не требуется более жёсткая гарантия доставки сообщений. Значение QoS, указанное для сообщения, определяет качество сервиса для публикации между клиентом и брокером. Кроме того, это значение устанавливает максимальный уровень QoS, который брокер использует для доставки этого сообщения своим подписчикам.
      Подписчики могут указать максимальное значение QoS для доставки сообщений на основе темы, поэтому сообщение, опубликованное с уровнем QoS 2, может быть и не доставлено подписчикам. Подписчик может запросить пониженный уровень QoS для получаемых им сообщений. Хотя может показаться странным, что публикатор не полностью управляет качеством сервиса своих сообщений, в результате увеличивается гибкость для потребителей сообщений. Когда опубликованное сообщение отправляется подписчику, брокер доставляет публикацию либо с максимальным значением QoS, указанным подписчиком во время процесса подписки, либо со значением QoS опубликованного сообщения, если оно ниже. Например, сообщение, опубликованное с QoS = 2 для подписчика, указавшего QoS = 1 для данной темы, доставляется с QoS = 1. Сообщение с QoS = 0, опубликованное для того же подписчика по этой же теме, отправляется подписчику с QoS = 0.
    • Boolean. Четвёртый параметр, булев флаг (Boolean flag), определяет, является ли эта публикация задержанной. Задержанная публикация удерживается в брокере как последнее полученное сообщение по данной теме. Задержанные публикации позволяют следующим подписчикам получать самые последние сообщения по какой-либо теме, как только они на неё подпишутся, даже если подключение произойдёт после того, как сообщение будет опубликовано. Эта возможность очень полезна для наполнения данными отображающего информацию приложения сразу после его запуска и последующего обновления этой информации при её изменении. Если значение этого флага - false, сообщение получат только подписчики, в данный момент подписанные на эту тему. В примере, приведённом в листинге 2, используется незадержанная публикация.

     
  4. traverrr

    traverrr Новичок

    Сообщения:
    1
    Симпатии:
    0
    Господа, а как выцепить в mqtt dash из стринга несколько параметров?
    Строка:
    {"tec": { "a":0}, "info": { "num" : "001", "value": 10, "status": 1"}}
    А нужно из нее показания value и status.
     
  5. ByTE

    ByTE Читатель

    Сообщения:
    59
    Симпатии:
    18
    Если оба значения нужны в одной метрике, то использовать JavaScript. Парсить JSON, доставать значения и делать с ними что-то или показывать.
    А если для каждого значения своя метрика, то использовать JSONPath: $.info.value в одной метрике и $.info.status в другой.
     
  6. telobezumnoe

    telobezumnoe Новичок

    Сообщения:
    15
    Симпатии:
    3
    @ByTE не подскажете, есть ли возможность публиковать данные сразу в несколько топиков? а вообще сэкономило бы место на экране возможность на одной плитке добавлять несколько топиков для публикации в них каких каких либо действий, или указывать значение и топик(и) в каждом из меню выпадающего списка. на пример режим охрана в списке мультивыбора (отправляет данные в топик на включение камеры наблюдения и в то же время на отключение подачи воды, или выключение света) конечно это можно все прописать в скетчах, но для этого надо шить все устройства.
    з.ы. еще вопрос по поводу rgb, в десятичном виде я получаю число, но не совсем понятно как его интерпретировать, в основном используют вид rgb(255,255,255) можно как то подобным образом распарсить данные передаваемые вашим виджетом?
     
    Последнее редактирование: 13 апр 2017
  7. ByTE

    ByTE Читатель

    Сообщения:
    59
    Симпатии:
    18
    JavaScript в обработчике ON TAP

    В Java это "Color.parseColor()". В других языках - не знаю.
     
    telobezumnoe нравится это.
  8. Encrypt

    Encrypt Новичок

    Сообщения:
    45
    Симпатии:
    0
    Что-то застыл проэкт...:(
     
  9. ByTE

    ByTE Читатель

    Сообщения:
    59
    Симпатии:
    18
    Не правда ) Просто работа идет медленно, т. к. свободного времени нет!
    С Праздником всех!!!
     
    Adbokat нравится это.
  10. Луша

    Луша Новичок

    Сообщения:
    4
    Симпатии:
    0
    Помогите как настроить управление RGB.
    Принимаю такую строку.
    json {"system":{"hostname":"Test","uptime":830,"rssi":-61,"freemem":30568},"sensors":{},"pwm":{"0":255,"1":223,"2":255}}
    Какие нужно сделать настрой, что бы принимать и отправлять цвет.
     
  11. ByTE

    ByTE Читатель

    Сообщения:
    59
    Симпатии:
    18
    В данном случае для отображения можно использовать JavaScript - в On Receive парсить JSON, доставать значения каждого канала RGB, и сконвертировать в HEX.
    Для отправки из скрипта можно построить JSON и отправить его, но значение может быть задано только из скрипта. Выбор цвета пользователем реализовать не получится.
     
  12. Луша

    Луша Новичок

    Сообщения:
    4
    Симпатии:
    0
    А для чего тогда поле ввода цвета? И подскажите какие именно скрипты нужно подставить. или хотя бы где про это можно почитать?
     
    Последнее редактирование: 14 май 2017
  13. Encrypt

    Encrypt Новичок

    Сообщения:
    45
    Симпатии:
    0
    Как можно сделать метрику в 5ть строк, и разного цвета каждая строка?
     
  14. ByTE

    ByTE Читатель

    Сообщения:
    59
    Симпатии:
    18
    Для отображения и отправки цвета. В общепринятом формате HEX, а не в том, что у вас.
    К сожалению никак.
     
  15. Pavlo

    Pavlo Новичок

    Сообщения:
    88
    Симпатии:
    2
    Подскажите, а что-то похожее для iphone планируется?
    Или может кто-то подскажет толковую аппсу?

    И еще, планируется ли функция таймера?
     
    Adbokat нравится это.
  16. Encrypt

    Encrypt Новичок

    Сообщения:
    45
    Симпатии:
    0
    ОК, подкину несколько идей:

    + вынесение отдельных метрик в виджеты, для быстрого доступа.
    + нотификаци по событиям(иконка в статусной строке, иногда со звуком), на случай грабежа, пожара, потопа лучше хоть как-то уведомить.
    + расширить возможность форматирования текста в метрике, кол-во строк, стиль, цвет. Вобще было бы здорово применять html/css чтобы угодить сразу всем). Также менять размер каждой метрики отдельно, ширина/высота.
    + группировать несколько кнопок(метрик) в более компактном виде. Для для 2х,3х клавишного включателя в комнате (однотипные квадратные метрики по каждому чиху, не дают покоя%)
    + отладочный лог, для удобного просмотра и тестов, входящих/исходяших данных прямо со смартфона.
     
  17. Pavlo

    Pavlo Новичок

    Сообщения:
    88
    Симпатии:
    2
    А есть какой то элемент для жалюзей?

    Хорошо бы иметь элемент, который при нажатии "раскрывался", скажем вниз, и появлялся вертикальный слайдер и, скажем еще 3 кнопки "вверх"/"вниз"/"стоп".
     
    Последнее редактирование: 2 авг 2017
  18. AlexeyK

    AlexeyK Новичок

    Сообщения:
    2
    Симпатии:
    1
    А есть ли такое приложение для iPhone iPad?
     
    Adbokat нравится это.
  19. Луша

    Луша Новичок

    Сообщения:
    4
    Симпатии:
    0
    Подскажите, как настроить голосовое управление.
     
  20. telobezumnoe

    telobezumnoe Новичок

    Сообщения:
    15
    Симпатии:
    3
    получилось это сделать по помощи таскера, там есть плагин для mqtt и плагин autovoice, на нужное словосочитание публикует значение в необходимый топик, или же озвучивает полученные данные из топика
     

Поделиться этой страницей