Скрыть объявление
Управляйте вашими ESP8266 и другими устройствами прямо с телефона из любой точки мира, где есть интернет!
Подробности и обсуждение IoT Manager в этой теме. Официальный сайт приложения и документация IoTmanager.ru
Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

IoT Manager: виджет отображает descr, но не показывает значение

Тема в разделе "IoT Manager – мобильное приложение", создана пользователем Browny, 18 фев 2017.

  1. Browny

    Browny Новичок

    Сообщения:
    20
    Симпатии:
    3
    Всех приветствую!
    Модифицирую прошивку автора Theo Arends (Sonoff-MQTT-OTA-Arduino) с гитхаба.
    Прикрутил реле - всё нормально. Дошло дело до датчиков, возникла проблема: виджет виден (видно его descr), а значение из status может 2-3 минуты не отображаться, в то время, как по mqtt данные идут (видно в т.ч. в логе IoT manager'а).

    Конфиг виджета такой:
    topic: /IoTmanager/DVES_06FD8A/config
    Код (Text):
    1. {"id":11,"page":"LivingRoom","pageId":10,"topic":"/IoTmanager/DVES_06FD8A/sensor6","widget":"display-value","class1":"item no-border","class2":"balanced","style2":"font-size:14px;float:left","descr":"Влажность","class3":"balanced","style3":"font-size:14px;font-weight:bold;float:right;color:#52FF00;inactive_color:#52FF00;digits_count:6"}
    Статус отдаю так:
    topic: /IoTmanager/DVES_06FD8A/sensor6/status
    payload: {"status":"46.1"}

    Конфиг виджета отдаётся всегда за запрос "request" по страницам. Всего сейчас виджетов три: реле (toggle), температура (display-value), влажность (display-value). Информационные виджеты имеют идентичную настройку, за исключением идентификаторов.
    Отображается descr (сразу), работает vibro, alert - а символы, отображающие значение (в т.ч. фоновые) включаются нестабильно, через определённое время - когда у одного виджета, когда у другого... Пока не могу понять причину... Есть мнения?

    Спасибо!
     
  2. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    1.037
    Симпатии:
    117
    @Browny так проблемы в получении, скорее всего, а не в отображении. Может у автора тайм-аут на обновление стоит?
     
  3. Browny

    Browny Новичок

    Сообщения:
    20
    Симпатии:
    3
    Сергей_Ф, дело в том, что я мониторю mqtt сообщения одновременно в MQTT Spy и логах IoT manager'а. Видно, что на топик /IoTmanager/DVES_06FD8A/sensor6/status приходит сообщение {"status":"46.1"}. Виджет также к тому времени уже загружен, т.к. значение descr отображается сразу при обновлении page. Интервал 10 секунд. Предположить ошибочный парсинг виджета тоже не могу, т.к. через продолжительное время виджет всё же начинает отображать данные, причём обновляет их с правильным интервалом (10 секунд). Нормально работает до следующего обновления всей страницы.
     
  4. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    нет
    было бы неплохо посмотреть лог
    это один из первых виджетов, возможно в нем есть проблемы с обновлением данных при получении (т.е. данные он получает, но рендер не делает)
    Попробуйте, как вариант, status отдавать и в config тоже, т.е.
    Код (Text):
    1. {"id":11,"status":"46.1","page":"LivingRoom","pageId":10,"topic":"/IoTmanager/DVES_06FD8A/sensor6","widget":"display-value","class1":"item no-border","class2":"balanced","style2":"font-size:14px;float:left","descr":"Влажность","class3":"balanced","style3":"font-size:14px;font-weight:bold;float:right;color:#52FF00;inactive_color:#52FF00;digits_count:6"}
     
  5. Browny

    Browny Новичок

    Сообщения:
    20
    Симпатии:
    3
    @Victor, спасибо! Попробую в ближайшее время. Пока же могу сказать, что steel и anydata отображают данные своевременно. Вернул display-value и снова воспроизвёл задержку.
    Могу также присоединить странное отображение steel, хотя, возможно, имеет смысл вынести это в отдельный топик.
    Телефон: Redmi 3, MIUI Global 7.2, Android 5.1.1
    Виджет:
    Код (Text):
    1. "widget":"steel","class1":"item no-border","style2":"font-size:14px;float:left","descr":"Температура","class3":"balanced","style3":"font-size:14px;font-weight:bold;float:right","widgetConfig":{"width":"auto","height":100,"type":"Linear","titleString":"Температура,t","unitString":"temp C","threshold":40}
    Скрин:
    Screenshot_2017-02-18-21-25-10_ru.esp8266.iotmanager.png
     
  6. Browny

    Browny Новичок

    Сообщения:
    20
    Симпатии:
    3
    @Victor, если позиция в JSON при парсинге не принимается во внимание и "0.0" не является игнорируемым значением (думаю, так и есть), то не сработало :( Отдал статус:
    Код (Text):
    1. "\"widget\":\"display-value\",\"status\":\"0.0\",
    Тот же результат. Примерно через две минуты всё же обновилось значение у одного из двух виджетов.
    Лог предоставлю чуть позже, там много - думаю, надо его почистить и сгенерировать фрагмент, относящийся к ситуации.
    Тем не менее, за информацию о передаче статуса в момент конфига - огромное спасибо, учту.
    За приложение огромное спасибо, пожалуйста, не бросайте его разработку! Вещь крайне перспективная и удобная!
     
  7. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    уберите все стили и классы как здесь
     
  8. Browny

    Browny Новичок

    Сообщения:
    20
    Симпатии:
    3
    @Victor, спасибо, это решило вопрос с отображением steel.
     
  9. vgkcom

    vgkcom Новичок

    Сообщения:
    18
    Симпатии:
    0
    Добрый день! Подскажите пожалуйста новичку как передать значение виджету steel, и в какой функции этот код встатвить.

    создал так, на экране отображается, а как передать значения незнаю

    // widget3
    JsonObject& root3 = jsonBuffer.createObject();
    sTopic[3] = prefix + "/" + deviceID + "/steel";
    root3["id"] = 3;
    root3["descr"] ="Steel 1";
    root3["widget"] ="steel";
    root3["width"] ="auto";
    root3["height"] =50;
    root3["type"] = "Linear";
    root3["titleString"] = "Thermometer 1";
    root3["unitString"] = "temp C";
    root3["threshold"] = 90;
    root3.printTo(thing_config[3]);
     
    Последнее редактирование: 20 мар 2017
  10. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    Просто отправьте в нужный топик числовой status, как в этом примере iot-manager-demo/linear.js at master · 4refr0nt/iot-manager-demo · GitHub
    т.е. внутри JSON именно число (это 123 ), а не строка, например так {"status":123}
     
  11. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.182
    Симпатии:
    368
    в последней версии 1.5.5 подправил display-value, отпишитесь, пожалуйста, как сейчас у вас
     
  12. vgkcom

    vgkcom Новичок

    Сообщения:
    18
    Симпатии:
    0
    Спасибо большое за ответ, но мне трудно разобраться и понять алгоритм действий. Я работаю в среде Arduino IDE с JS не знаком.
    Написал запрос - client.publish(sub.topic + '/steel', JSON.stringify({"status":123})); выдает ошибку

    Arduino: 1.6.4 (Windows 8.1), Плата"NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)"
    MQTT_simple-btn_widget_demo.ino: In function 'void callback(const MQTT::publish&)':
    MQTT_simple-btn_widget_demo:222: error: invalid use of member function (did you forget the '()' ?)
    MQTT_simple-btn_widget_demo:222: error: 'JSON' was not declared in this scope
    MQTT_simple-btn_widget_demo:222: error: expected '}' before ':' token
    MQTT_simple-btn_widget_demo:222: error: expected ')' before ':' token
    MQTT_simple-btn_widget_demo:222: error: expected ';' before '}' token
    MQTT_simple-btn_widget_demo.ino: At global scope:
    MQTT_simple-btn_widget_demo:222: error: expected unqualified-id before ')' token
    MQTT_simple-btn_widget_demo:223: error: expected declaration before '}' token
    Multiple libraries were found for "PubSubClient.h"

    По моему я не правильно обращаюсь к топику, подскажите пожалуйста как нужно. И где можно почитать документацию. По виджетам вроде понятно, а по конфигурации как обратится информации найти не могу. За ранее большое спасибо.

    Готов материально помочь проекту.
     
    Последнее редактирование: 21 мар 2017

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