Перейти к публикации
iT4iT.CLUB

Таблица лидеров


Популярные публикации

Отображаются публикации с наибольшей репутацией на 07.01.2021 во всех областях

  1. 1 балл
    Доброе время суток. @Stefan Это очень странное поведение. Если есть возможность, то попробуйте подключиться к контроллеру с "левых" устройств, не в ходящих в Ваше домашнее окружение. Проверьте как работает тестовый скетч для режима STA и подключитесь в качестве клиента к Вашей домашней сети или опишите в программе метеостанции к чему подключаться контроллеру. В основном файле программы есть такие строки: conf.add("client_ssid"); conf.add("client_pass"); conf.add("client_bmac"); Первые два параметра отвечают за имя домашней WiFi сети и пароль, последний за MAC адрес и требуется если сеть скрыта, в противном случае его заполнять не обязательно. conf.add("client_ssid", "имя сети"); conf.add("client_pass", "пароль от сети"); conf.add("client_bmac", "MAC можно не указывать"); Также есть вероятность, что Ваши устройства не могут работать в едином стандарте с AP микроконтроллера. Если память не подводит, то контроллер должен использовать 802.11n. Попробуйте пока так поэкспериментировать. @IvAn Я не буду давать Вам советы в реализации кода для данного проекта т.к мой код сам нуждается в переработке, но опишу своё видение. Проверяйте состояние соединения как со стороны микроконтроллера, так и со стороны MQTT клиента Подключаемся к серверу только при наличии подключения к точке доступа Если восстанавливаем соединение, то не забываем восстановить подписки Публикуем сообщения только если отработал п.1 Я думаю, и это только мое личное мнение, что функция "callback" не должна заниматься обработкой команд. Её цель - принять и понять, что нужно сделать, а дальше сообщить об этом основному коду. Вдруг вы будите получать сообщения со скоростью пулеметной очереди... Не знаю, будет ли Вам полезно, но посмотрите на этот код https://it4it.club/files/file/8-prostoy-dvuhkanalnyy-schetchik-vody-na-esp8266/ Обратите внимание, что в данном проекте, html код бесполезен без jQuery. Именно в последнем кроется логина обработки всех событий, в том числе и появление меню. Я опишу, на что Вам стоит обратить внимание. В файле index.htm есть такой кусочек разметки, он отвечает за меню <div class="menu"> <div id="sensors" class="list1"></div> <div id="graph"></div> <div id="settings"></div> </div> Как мы видим, имеется объект с идентификатором settings, который отображает нам иконку настроек. Этому объекту соответствует небольшой кусочек кода в css. описанный чуть выше и говорящий браузеру сформировать фон объекта в виде изображения. .menu #settings { background-image: url('data:image/png;base64, ... '); } Часть кода элемента я скрыл т.к он представляет из себя строку закодированную в base64 формате, а оригинал строки является бинарным файлов. Это сделано, чтобы не хранить изображение отдельно в flash памяти и загрузить его вместе с загрузкой файла index.htm. Это уловка чтобы получить большую производительность в работе web интерфейса данного проекта т.к браузер загружает разные файлы в отдельных потоках, а контроллер не способен отдавать параллельно несколько файлов. Из-за этого мы отдаем все критически нужное в одном потоке. Конечно есть механизмы решающие и эти задачи, но я пришел к ним уже на контроллере esp32. Теперь, когда у нас есть кнопка и ее оформление, можно вешать на неё события. В нашем случае это событие клика мышью и реализовано через библиотеку jQuery. Ищем следующий код. $("#settings").click(function() { /* ... */ }); Содержимое нас не сильно интересует т.к начиная с этого этапа нам необходимо реализовывать свою логику. По сути, самый простой вариант, это отобразить заранее подготовленное меню, но находящееся в скрытом состоянии. Например, опять наше меню настроек. Оно скрыто из-за параметра hidden, но это не единственный способ. <div class="settings" hidden> <!-- ... --> </div> Для этого в описанную ране функцию click можно добавить следующий код $(".settings").show(); Конечно, все это очень поверхностно, но теперь вы хотя бы имеете представление как работает текущий код и в какую сторону копать. Если Вы решите углубиться в этом направлении интерфейса, то обратите внимание на безопасность. В текущем проекте, все узкие места прикрыты авторизацией на стороне микроконтроллера т.к код web интерфейса легко посмотреть и изменить. Чтобы отдать управляющую команду или получить информацию от контроллера нужно быть авторизованным пользователем.
×
×
  • Создать...