• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

IoT Manager - сообщаем о багах

Lstt

Member
Виктор, добрый день! Спасибо ещё раз за Ваше приложение! Хотел бы обратить внимание на 2 проблемы, с которыми столкнулся я:
1) Если использовать "StaticJsonBuffer<1024> jsonBuffer", тогда при количестве виджетов 10-12 корректно библиотека не работает, если увеличивать размер буфера, то ESP не загружается при значении больше 4000...
Я изменил код на "DynamicJsonBuffer jsonBuffer" - и 18 виджетов работают отлично..
2) Несмотря на включенную опцию "Отключаться от брокера при переходе приложения в фоновый режим" - на самом деле этого не происходит, и приложение постоянно "кушает" трафик, тем самым сажая батарею...
 

Plamen

New member
Виктор, добрый день! Спасибо ещё раз за Ваше приложение! Хотел бы обратить внимание на 2 проблемы, с которыми столкнулся я:
1) Если использовать "StaticJsonBuffer<1024> jsonBuffer", тогда при количестве виджетов 10-12 корректно библиотека не работает, если увеличивать размер буфера, то ESP не загружается при значении больше 4000...
Я изменил код на "DynamicJsonBuffer jsonBuffer" - и 18 виджетов работают отлично..
2) Несмотря на включенную опцию "Отключаться от брокера при переходе приложения в фоновый режим" - на самом деле этого не происходит, и приложение постоянно "кушает" трафик, тем самым сажая батарею...
Почему бы не попробовать вспомнить все на MQTT сервере, но ESP8266 имеют только простые функции для приема команд и передавать данные на MQTT сервер?
К сожалению там нужен скрипт чтобы прочитать ids от IoTmanager и публиковать меню каждый раз, но если Виктор хочет упростить инициализации ета многих упростит все?
Тогда что ESP8288 не нужно посылать никаких конфигураций, как пример исполни в OpenWRT:

mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager" -m "my_topic"
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/config" -m "{\"id\":\"1\",\"page\":\"garage\",\"descr\":\"Garage Door\",\"widget\":\"toggle\",\"topic\":\"/IoTmanager/my_topic/garagedoor\",\"color\":\"green\"}"
 

Victor

Administrator
Команда форума
Я изменил код на "DynamicJsonBuffer jsonBuffer" - и 18 виджетов работают отлично
отлично, я сам не пробовал такое количество виджетов. Может быть скриншот выложите в качестве примера другим пользователям?
Несмотря на включенную опцию "Отключаться от брокера при переходе приложения в фоновый режим"
да, тут требуется доработка, видимо
 

Plamen

New member
"если использовать mqtt retain? Как быть когда 2 ESP8266?
тогда будем видеть в IoT Manager только последнее подключенное устройство."
Я не согласен, если каждый ESP8266 имеет топик не могут быть спутаны, кто где представлен или читать :)
 

Victor

Administrator
Команда форума
"если использовать mqtt retain? Как быть когда 2 ESP8266?
тогда будем видеть в IoT Manager только последнее подключенное устройство."
Я не согласен, если каждый ESP8266 имеет топик не могут быть спутаны, кто где представлен или читать :)
"/IoTmanager" retain - только последнее подключенное устройство
 

Plamen

New member
Попробуйте следующие команды в OpenWRT, ето работает:

mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager" -m "my_topic"
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/config" -m "{\"id\":\"1\",\"page\":\"garage\",\"descr\":\"Garage Door\",\"widget\":\"toggle\",\"topic\":\"/IoTmanager/my_topic/garagedoor\",\"color\":\"green\"}"
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/config" -m "{\"id\":\"1\",\"page\":\"garage\",\"descr\":\"Garage Light\",\"widget\":\"toggle\",\"topic\":\"/IoTmanager/my_topic/garage_light\",\"color\":\"green\"}"
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/config" -m "{\"id\":\"1\",\"page\":\"living_room\",\"descr\":\"Living Room Light1\",\"widget\":\"toggle\",\"topic\":\"/IoTmanager/my_topic/living_room_1\",\"color\":\"green\"}"
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/config" -m "{\"id\":\"1\",\"page\":\"living_room\",\"descr\":\"Living Room Light2\",\"widget\":\"toggle\",\"topic\":\"/IoTmanager/my_topic/living_room_2\",\"color\":\"green\"}"
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/config" -m "{\"id\":\"1\",\"page\":\"living_room\",\"descr\":\"Living Room Light3\",\"widget\":\"toggle\",\"topic\":\"/IoTmanager/my_topic/living_room_3\",\"color\":\"green\"}"

OpenWRT просто нужен скрипт чтобы прочитать ids от IoTmanager и публиковать меню каждый раз IoTmanager старт :)

Меняет ключи и попробовать (Только это может исходить от ESP8266):
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/garagedoor/status" -m "{\"status\":\"1\"}"
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/garage_light/status" -m "{\"status\":\"1\"}"
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/living_room_1/status" -m "{\"status\":\"1\"}"
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/living_room_2/status" -m "{\"status\":\"1\"}"
mosquitto_pub -r -q 1 -h localhost -u myusername -P mypassword -t "/IoTmanager/my_topic/living_room_3/status" -m "{\"status\":\"1\"}"

На другой терминал смотреть.
mosquitto_sub -h localhost -u myusername -P mypassword -t "#" -v
:)
 
Последнее редактирование:

Lstt

Member
отлично, я сам не пробовал такое количество виджетов. Может быть скриншот выложите в качестве примера другим пользователям?
да, тут требуется доработка, видимо
Выкладываю скриншоты..Виджетов уже 21..)
Ещё ньюанс: cloudmqtt - хороший сервис, но глючит НЕСКОЛЬКО РАЗ В СУТКИ! Пока использую свой, поднятый на Windows, пинг большой, зато ВСЕГДА работает.. Я думаю, половина проблем у пользователей с подключением из-за косяков в работе Cloudmqtt...
Файлы загрузить не могу, выкладываю ссылки на mail:
Файл из Облака Mail.Ru
Файл из Облака Mail.Ru
Файл из Облака Mail.Ru
 
Последнее редактирование:

grigorygn

New member
Ещё ньюанс: cloudmqtt - хороший сервис, но глючит НЕСКОЛЬКО РАЗ В СУТКИ!
Не согласен! Не замечал глюков этого сервиса.
Но заметил вот что: если esp8266 подключен через Linksys wrt54gc, то в течение дня периодически не достучаться до esp. Причем не только одного, но и если их несколько. Если же линксис меняю на TPlink mr3020 (openwrt), то никаких провалов нет, esp всегда на связи.
 

KAlexK

New member

grigorygn

New member
Это странно, так как сервис действительно глючит и по несколько раз в сутки.
Действительно странно, т.к. я глюков последнее время вообще не замечал. Но у меня только несколько выключателей на трех esp модулях и один термометр. У меня сервер EU, m20.cloudmqtt. Реальные глюки были только с линксисом, с тплинком все идеально гладко.

А Wi-Fi-каналы при этом одинаковые?
В смысле?
На роутере рабочий канал ставлю вручную по ситуации в эфире, чтобы не пересекалось с моим основным роутером и соседскими точками (для esp выделил отдельную подсеть со своим рутером :)).
 

AlGem

New member
Подскажите. Вроде в IoT Manager в хелпе должно быть описание виджетов. У меня есть описание только anydata, simple-btn, display-value, fillgauge. На сколько я понял есть еще виджеты, а где про них можно почитать описание? Или может у меня не всё в хелпе отображается?
 

Вложения

Victor

Administrator
Команда форума
Подскажите. Вроде в IoT Manager в хелпе должно быть описание виджетов. У меня есть описание только anydata, simple-btn, display-value, fillgauge. На сколько я понял есть еще виджеты, а где про них можно почитать описание? Или может у меня не всё в хелпе отображается?
К сожалению, на другие виджеты описание пока не готово, есть только примеры
 

Mainscs

Member
Замечательная идея, Victor!!!
Использовать кучу однотипных wifi модулей, которые могут располагаться в разных помещениях без дырок в стенках для проводов. Огромное спасибо автору за доработку виджетов.

Уже больше месяца плотно работаю с тремя модулями esp-07. Работают они сутками для прогона перед установкой на даче. Иногда включаю iot для проверки их работоспособности. Использую cloud.. И европейский и американский. Зависов модулей обнаружить не удалось, сервисов mqtt почему-то тоже, хотя смотрел и дома с нормальным интернетом, и на мобильном..
Конфигурация модулей esp-07:
1. ds18b20 с использованием функции записи и чтения eeprom для сохранения требуемой температуры и режима работы обогревателя.
2. Твердотельные реле ssr 25 da для управления масляным радиатором.
3. Двухцветный светодиод отображает состояние wifi и связи с cloud..
4. Каждый модуль использует 7 виджетов.
Использовал только стандартные библиотеки для термометра.
Обновление температуры в iot производится только при изменении температуры, обновление состояния нагревателя (вкл/выкл) в iot тоже только при изменении его состояния. Это позволяет снизить интернет трафик при использовании мобильной связи.
Обновление eeprom датчика температуры происходит через 10 сек после ИЗМенения параметра автоматически. Например изменения заданной температуры нагрева.
Почему-то сразу решил отказаться от json буфера. Ну не лежит к нему душа.. (Всплывают какие-то Килобайты буфера). Привожу вырезку из функции инициализации InitVar() (sketch v1.5) без использования json. Может кому поможет..
О неточностях iot или моих недопониманиях iot:
1. если использовать не один, а несколько wifi модулей, то конечно всплывает вопрос о максимально допустимом числе страниц в iot.
2. группировке виджетов от конкретного модуля при наличии нескольких модулей на странице, чтобы они не перемешивались при отображении.
3. Остальные неточности уже достаточно подробно обсуждались.
 

Вложения

Последнее редактирование:

Mainscs

Member
PS. Датчик температуры используется в режиме без ожидания завершения преобразования (при инициализации ds18 используется функция sensors.setWaitForConversion(false);).
Т.е. soft не крутится в цикле ожидания времени преобразования, которое может доходить до 1 сек, а идет по циклу основной программы.
Возможно, это позволит устранить некоторые причины некорректной работы системы.
При старте преобразования температуры закусывается системное время. При прохождении функции считывания данных с датчика в основном цикле loop сначала производится проверка - прошло ли время преобразования. Если нет, то производится возврат в основной цикл loop. Если прошла секунда, то данные с датчика считываются, запускается следующее преобразование и запоминается новое системное время.
Подобный пример приведен в библиотеке ds18b20 (DallasTemperature\WaitForConversion).
 

Вложения

Последнее редактирование:
  • Like
Реакции: Lstt
Сверху Снизу