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

Kitsum

Пользователи
  • Публикации

    424
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    234

Все публикации пользователя Kitsum

  1. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @Forester Постараюсь в ближайшее время восстановить свою метеостанцию, она была разбита во время оттепели упавшим куском льда с верхних этажей дома, и проверить замечания других пользователей и Ваши. А, что касаемо поддержки передачи текста для функции mqttPublish то замените её следующим кодом. bool mqttPublish(String topic, String data) { if (conf.param("mqtt_path").length()) topic = conf.param("mqtt_path") + "/" + topic; return mqttAPI.publish(topic.c_str(), data.c_str(), true); } bool mqttPublish(String topic, float data) { return mqttPublish(topic, String(data)); } Это должно решить Вашу проблему и добавить поддержку как float, так и String типа без изменения основного кода.
  2. Kitsum

    Метеостанция на ESP8266 от it4it.club

    Доброе время суток К сожалению, у меня нет данного датчика и Вы не указали библиотеку, которую хотите внедрить, но в любом случае, не думаю, что могут возникнуть какие-либо серьезные препятствия при добавлении их в проект. Хорошо, что Вы сообщили о прерывании, это немного изменит способ работы с сенсором. И так, давайте рассмотрим теоретическую часть: Подключите используемую библиотеку в пользовательском .h файле или в основном .ino файле Объявите сенсор, как это делается в примере, идущем с используемой библиотекой, опишите прерывание (убедитесь, что порт не занят) Объявите глобальную переменную и при каждом прерывании записывайте переданные данные с датчика в неё Опишите новый сенсор опираясь на пример программного сенсора из файла users_auto.h и в коде, используя оператор return, верните значение, хранимое в описанной ранее, глобальной переменной. Но помните, что возвращаемое значение должно иметь тип float и в случае необходимости произведите нужные преобразования. Все должно взлететь. Что выводиться в Serial монитор при отправке данных?
  3. Kitsum

    Метеостанция на ESP8266 от it4it.club

    Доброе время суток Проверьте в каком состоянии находится датчик, не попадали ли на него осадки. Небольшое упоминание можно посмотреть тут. В файле index.htm имеется функция chenge вызываемая каждые 5 секунд для получения новых данных от микроконтроллера. В её коде я оставил закомментированную строку показывающую как можно изменить цвет индикатора на примере сенсора с идентификатором out_temperature $('.out_temperature').trigger('configure', {"fgColor":"#FF0000"}); Я собирался добавить механизм смены цвета, но угодить всем не получится. У каждого свои датчики и представление о том, как они должны выглядеть. В общем это та ситуация, когда простая вещь ставит в тупик, как по сути и общий график показаний за 24 часа. Для ESP8266 попробуйте такой вариант, он хоть и топорный, но частично решает Вашу задачу. struct markup_t { uint8_t min; uint8_t max; String side; }; const markup_t grid[9] = { {0, 22, "Север"}, {23, 67, "Северо-восток"}, {68, 112, "Восток"}, {113, 157, "Юго-восток"}, {158, 202, "Юг"}, {203, 247, "Юго-запад"}, {248, 292, "Запад"}, {293, 337, "Северо-запад"}, {338, 360, "Север"} }; String direction(uint8_t degree) { for (byte i=0; i<9; i++) { if (degree >= grid[i].min and degree <= grid[i].max) return grid[i].side; } return "error"; } void setup() { Serial.begin(115200); } void loop() { uint8_t degree = random(0, 360); Serial.printf("%d:\t%s\n", degree, direction(degree).c_str()); delay(5000); } Должно получится что-то подобное
  4. Оставляю эту заметку для себя лично т.к память не вечна, а компьютеры под управлением windows 7 продолжают существовать и успешно выполнять возложенные на них обязанности. И так, имеется проблема, при которой svchost съедает оперативную память и центральный процессор. Ну а т.к не все железо способно перейти на новые версии ОС Windows, но при этом отлично выполняет свои обязанности, то приходится лечить этот недуг. Излечивают его несколько обновлений. Конечно, самый оптимальный способ, это ставить их на чистую ОС, но действуем по обстоятельствам. KB3102810 KB3135445 KB3138612 Устанавливаем и забываем о жоре ресурсов.
  5. Версия update 27.01.2020

    3 852 скачивания

    Хотите помочь проекту или спонсировать новый? Yandex.Money PayPal.me Тема проекта Arduino IDE + Project + Libraries + tools: https://yadi.sk/d/jseefFB50NMhAg
  6. Kitsum

    Метеостанция на ESP8266 от it4it.club

    Всем доброе время суток. Мы обзавелись небольшим файловым хранилищем. Постепенно все файлы разных проектов, да и не только, перекочуют туда. Файлы данного проекта можно найти по этой ссылке. Она же теперь указана в первом посте. С Вашей помощью, я надеюсь отловить основные баги и довести проект до более-менее адекватного состояния. Часть из того, что уже упоминалось было поправлено. Под вопросом еще находится работа с Кириллицей, хоть необходимые изменения и были внесены, требуется продолжить тестирование. Пока под вопросом как реализовать вывод логов с тех сенсоров на которых они ведутся. На данный момент имена сенсоров с которых пишутся логи стали кликабельны в web интерфейсе и вызывают отрисовку графика, но только с данными по этому сенсору. Хочу еще раз напомнить, что логи отъедают оперативную память контроллера, а т.к проект любительский то она не сильно то и экономится, в общем, смотрите по обстоятельствам. i2c сканер не завязан с библиотеками датчиков и работает самостоятельно, используется стандартный объект Wire реализующий связь на шине и идущий в комплекте с файлами среды разработки. Возможно на шине действительно ничего нет. Я не заказывал подобные платы, но могу сказать точно, что сам контроллер работает от напряжения 3.3V. Могу предположить, что на Вашем модуле DC-DC преобразователь все-таки распаян. Также хочу отметить, что данное питание можно получить от USB-TTL конвертера который используется на данном модуле. Ну а что касаемо 5V логики, то это только на Ваш страх и риск, но я советую внимательно изучить документацию на Witty Cloud, возможно там все-таки 3.3V. Обязательно все добавлю. На данный момент просто не хватает времени, прошу немного потерпеть. В коде это очень легко делает, но если Вы хотите иметь возможность выбора в web интерфейсе, то на это может потребоваться время т.к это надо как-то графически оформить, а мои таланты по дизайну и верстке хромают. И, что Вы подразумевали под разностью абсолютной влажности? Вы хотите изменять это значение по аналогии с другими портами? Вы можете использовать одновременно 12 и 14 порты микроконтроллера, а точнее тот функционал, который предоставлен в качестве примера. Управление портами совершенно не связано между собой, они даже разнесены в разные функции и прописаны как разные задачи в планировщике. Смело экспериментируйте, но все тесты проводите на слаботочной нагрузке, и все проверяйте по 10, а лучше по 100 раз, мы все люди и нам свойственно ошибаться. Вы вольны указать любое расположение у сенсора. Это делается в его описании (смотрите пример с двумя датчиками BME280): device::out device::in Вообще за этим типом данных скрываются целые числа, но пришлось привести их к такому визуальному (для человека) состоянию т.к если оставить простую возможность указать номер списка в который будет произведено добавление сенсора на web странице, то у пользователя может появится желание указать не 1 или 2, а например, 3 или 100500 и это приведет к сбою и последующим вопросам. А так компилятор попытается проконтролировать, что Вы укажите одно из доступных значений. Исправлено. Максимальная длинна увеличена до 63 знаков. Еще раз напомню, как производится фильтрация данных на web странице. Процесс обработки полей запускается событием нажатия на кнопку сохранить. $(".settings input[type='submit']").click(function() { /* тут весь код обработки форм */ }); Обрабатываются не все существующие поля, а только те, чья группа сейчас открыта (ну или раздел, кому как удобнее). В коде Вы можете найти вызов функций, использующих регулярные выражения для проверки содержимого полей. Сами выражения очень простые, но этого должно быть достаточно для того, чтобы можно было остановить обработку и не отправить на контроллер всякую ерунду. На текущий момент используются следующие функции, названия должны объяснять, что они проверяют function checkLogin(login) { return login.match(/^[a-z0-9_]{3,30}$/i); } function checkPassw(passw) { return passw.match(/^.{5,63}$/); } function checkSSID(ssid) { return ssid.match(/^[a-z0-9_. -]{3,30}$/i); } function checkHostAddr(host) { return host.match(/^((?!(0|127|255))((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|((([a-z0-9\-]{1,10}\.){1,3})?([a-z0-9\-]{2,26})\.)[a-z]{2,6})$/i); } function checkMqttPath(path) { return path.match(/^[a-z0-9_/]{3,200}$/i); } function checkThingSpeakKey(key) { return key.match(/^[A-Z0-9]{16}$/); } function checkNarodmonId(id) { return id.match(/^[A-Z0-9-:]{12,18}$/); } function checkGPIO(val) { return val.match(/^([\-]?[0-9]{1,3})$/); } function checkMDNS(name) { return name.match(/^([a-z0-9]{3,16})$/); } Конечно, это легко обойти, но кроме этого имеется еще ряд защитных механизмов в самой программе микроконтроллера, но это тема для отдельного разговора. Я хотел бы попросить Всех заинтересованных в помощи составления "регулярок" для более адекватной проверки вводимых данных. Можно просто указывать ссылки на те или иные стандарты, в которых указаны нормы для используемых данных. Возможно Вы используете версию прошивки микроконтроллера в которой не задан заголовок с точным указанием кодировки. Обратите внимание на файл webserver.h и на константу #define headerJson F("application/json; charset=utf-8") и на то, где она используется. Дайте знать о Ваших результатах. Сделано.
  7. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @ewanpips Спасибо, что указали на ошибку, директивы условной компиляции добавлялись в последнюю очередь и тут виной только моя невнимательность и спешка. Все будет поправлено уже сегодня вечером. Также будут добавлены примеры для датчиков SSC811 и MAX44009. @Prana_dk Спасибо, что поделились Вашим опытом. Я постараюсь все перепроверить. Если Ваш проект открытый, то не могли бы Вы поделиться ссылкой на него?
  8. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @Prana_dk спасибо за подсказку, мы попробовали добавить явное указание кодировки сразу как проблема появилась, но на сколько я понял со слов @pasha413, проблема осталась. Также если запрос выполнять не силами ajax, а напрямую через браузер, получаем аналогичный результат. Я для тестов в основном использую браузер Google Chrome, а @pasha413 Yandex Browser и если я не ошибаюсь, то они основаны на одном движке и должны обрабатывать запросы одинаково, но опять же у меня проблема ни разу не проявилась. Возможно что-то на поверхности... Если у Вас будут еще мысли по этой проблеме, буду признателен если поделитесь с нами, постараемся все проверить.
  9. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @Prana_dk доброе время суток. На данный момент отправляется заголовок "application/json", а кодировка всех файлов проекта utf-8, этого должно быть достаточно для корректной передачи кириллицы. Также настораживает тот факт, что проблема не постоянная и уходит при повторной компиляции проекта, а в моем случае она и вовсе не проявлялась. Если Вас не затруднит, не могли бы Вы дать пояснения к причинам замены заголовка?
  10. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @ewanpips В таком случае все должно работать, если конечно Вы используете верный (зарегистрированный) ID устройства. Проверьте верен ли используемый идентификатор и посмотрите на ответ сервера, он будет отображен в Serial мониторе.
  11. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @ewanpips доброе время суток. Могу предположить, что после внесенных изменений в датчики Вы не модифицировали функцию описанную в service.h отвечающую за отправку данных на народный мониторинг void sendDataToNarodmon() { /* код отправки данных на сервис "Народный мониторинг" */ } Возможно Вы внесли изменения в имена идентифицирующие сенсоры. В приведенном примере производится отправка данных сенсоров со следующими идентификаторами: out_light out_temperature out_humidity out_pressure Состояние отправки данных на внешние ресурсы отображается в консоли.
  12. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @pasha413 Очистите cookies для доменов 192.168.4.1 и espws.local
  13. Kitsum

    Метеостанция на ESP8266 от it4it.club

    Я использовал порты по умолчанию, но если это разовая операция, то их легко поменять, изменив номера портов указанные при инициализации i2c шины. Но стоит учесть, что эти порты пересекаются с управлением нагрузкой, придется внести соответствующие изменения в файле gpio.h В первую очередь, Вам нужно убедиться, что контроллер запустился при наличии перемычки между GPIO-0 (D3) и 3.3V. Об этом упоминалось тут. Теперь Вам необходимо получить скомпилированную прошивку, для этого в Arduino IDE воспользуйтесь пунктом меню "Скетч/Экспорт бинарного файла" или Ctrl + Shift + U, готовый бинарник появится в корне проекта. Остается только зайти на страницу конфигурации микроконтроллера и в разделе "Обновление прошивки" перетащить полученный файл в указанную область. Что касаемо кодировки, то я предполагаю, что компилятор не смог переварить кириллицу. Почему так произошло мне пока неизвестно, возможно имеют место быть дополнительные факторы. Поэкспериментировал на разных машинах, но все они c одинаковой операционной системой и версиями IDE и ESP, все работает, и кириллица не теряется. Также все отлично выводится в Serial монитор, хотя в сети есть упоминания, что у людей проблемы с печатью кириллицей. Можете попробовать добавить в конце функции Setup вывод структуры сенсоров в терминал и посмотреть на результат. console.println(sensors.list()); Пока что изменил все заголовки для плагина Knob на латинские аналоги. Кстати, при использовании латиницы, Вы можете регулировать порядок добавления индикаторов в web путем изменения последовательности их объявления. Добавление будет произведено в обратном порядке, как упоминалось ранее.
  14. Kitsum

    Метеостанция на ESP8266 от it4it.club

    На данный момент сортировка списка не предусмотрена, но могу сказать, что построение списка идет в обратную сторону от его объявления. Это значит, что последний добавленный датчик станет первым в списке при формировании json строки со структурой дерева сенсоров. Кстати, именно поэтому при описании таких датчиков как BME280, где несколько сенсоров в одном корпусе, у последнего сенсора в описании добавляется функция инициализации. Но я не буду забивать сейчас Вам голову этой ерундой, я все опишу позже или озвучу в видео. Вернемся к сортировке. Список, построенный в порядке обратном объявлению, будет передан в web интерфейс, там на основе его парсинга, будет построен объект с соответствующей структурой и одним циклом разобран на составляющие из которых и появятся индикаторы на страницах. В каком порядке java будет отдавать каждую из частей мне неизвестно, если честно, я даже не задавался этим вопросом. Но если такая необходимость выбора последовательности расположения индикаторов будет иметь место, то можно её добавить. Да, такая возможность есть, по крайней меря, я не вижу серьезных проблем в её реализации кроме одной - количество свободных портов esp8266 очень ограничено, хоть внешне так и не скажешь, особенно смотря на плату Node MCU. Часть портов завязаны с flash, другая часть используется да старта микроконтроллера и выбора режима работы, один порт под умный светодиод (как не крути, а на большинстве модулей он уже распаян), три порта выделены под управление нагрузкой, два порта под i2c шину и один порт держим в уме под 1wire. А в итоге остается свободным один порт, может еще где-то найдется, пока не припомню. К сожалению, с этой системой я не знаком. Если нужно добавить её, то над этим можно подумать.
  15. Kitsum

    Метеостанция на ESP8266 от it4it.club

    На данный момент я предполагаю, что проблема проявляется при изменении кодировки в файлах проекта. Изначально все файлы, в том числе и web сервера, имеют кодировку utf-8. Данные между контроллером и web интерфейсом также передаются в этой кодировке. Arduino IDE также работает с utf-8. Возможно, где-то в этой цепочке произошла смена кодировки. Над этим стоит подумать. Это говорит о том, что у Вашего компьютера или иного устройства нет поддержки MDNS протокола, но не беда. Место espws.local наберите ip выданный контроллеру. На странице Вы должны увидеть json строку по данным с которой web интерфейс добавляет сенсоры. Вы можете скопировать текст в "кривой" кодировки и воспользоваться услугами любого онлайн анализатора кодировки. Надеюсь он подскажет в какую сторону копать. Безусловно будут отображены все объявленные датчики т.к на данный момент данные о структуре списка устройств объекта sensors забираются у микроконтроллера всего один раз при открытии/обновлении страницы. Я обновил архив, там есть небольшие изменения в web сервере, теперь он добавляет заголовок кодировки utf-8 при ответе клиенту через API. Проверьте как у Вас это будет работать. Да, у меня работает, и Вы абсолютно правы. Вам необходимо создать канал в своем профиле, далее перейти в раздел API Keys и скопировать ключ Write API Key. этот ключ необходимо указать в соответствующем поле в web интерфейсе. Данные должны начать поступать в течении 5 минут. Какие данные будут отправляться зависит только от Вас. Пример используемый по умолчанию и описанный в файле services.h отправляет данные об освещенности, температуре, влажности и давлении на поля field1-4 соответственно. Статус отправки запроса отображается в консоли.
  16. Kitsum

    Метеостанция на ESP8266 от it4it.club

    Проблема ушла? Каким браузером Вы пользуетесь? Что вы видите при обращении по адресу http://espws.local/api/sensors/structure ? Посмотрите содержимое файла users_bme280_x2.h, он представляет из себя описание двух групп сенсоров для web интерфейса. Условно, первая группа расположена вне помещения, а вторая в самом помещение. Для добавления сенсора используется метод add из объекта sensors sensors.add(...); Второй параметр представляет из себя описание расположения сенсора device::out - для внешних датчиков (используется по умолчанию) device::in - для внутренних датчиков Используйте нужное Вам значение.
  17. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @MOHAX Добавил поддержку нижнего подчеркивания в имена сетей. Скачайте новый архив и загрузите файл index.htm.gz в файловую систему web сервера. @vavandemidov У меня есть пачка абсолютно новых модулей ESP-12. Постараюсь завтра провести эксперимент и загрузить программу на один из них, а заодно снять все это на видео. Посмотрим, возможно в процессе появятся какие-то идеи. Можете удалить её. На данный момент её содержимое не используется в проекте. Была идея, основываясь на опыте разработчика библиотеки для датчиков BME280, набросать свои библиотеки для разных сенсоров, описанных в проекте. Все это помогло бы привести набор библиотек к одному общему виду и добавить необходимый функционал. Но пока оставляем это как идею.
  18. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @vavandemidov Тогда все становится на свои места. При прошивке через NodeMCU Flasher Вы пытаетесь загрузить образ файловой системы по адресу с которого начинается программа микроконтроллера. Это фатальная ошибка, работать ничего не будет. При прошивке через Arduino IDE у меня возникает ряд вопросов с настройками используемой Вами платы. Чтобы подобные ситуации впредь не возникали, все бинарные файлы были удалены из исходников. Все датчики также выключены по умолчанию, дабы стимулировать желание внести изменение в код и загрузить программу через Arduino IDE. Как надо делать: Используйте среду Arduino IDE с поддержкой esp8266 версии 2.4.0 или выше. В настройках используемой платы выберите свой модуль, но предполагается, что используется NodeMCU 1.0 (ESP-12E Module). Размер Flash обязательно должен быть выставлен как 4M (3M SPIFFS), при этой настройке под файловую систему будет выделен "раздел" объемом 3M. Выберите COM порт к которому подключен микроконтроллер. Все остальные настройки оставляем по умолчанию, они должны совпадать. Компилируем и загружаем образ файловой системы, меню "Инструменты/ESP8266 Sketch Data Upload", долго и упорно ждем окончания загрузки. При этом Serial монитор должен быть закрыт, иначе получим соответствующую ошибку. В последнюю очередь компилируем и загружаем саму программу в микроконтроллер, меню "Скетч/Загрузка". Откройте Serial монитор на скорости 115200, нажмите на кнопку Reset и посмотрите на вывод После всего этого можете вносить собственные изменения в программу. Пока что дать других рекомендаций я не могу, разве что все внимательно перепроверить и пройтись по всем перечисленным пунктам. По возможности я постараюсь снять видео с описанием, что и как делать, а заодно описать часть кода. Возможно еще кто-то изъявит желание отписаться о своих результатах. PS: Увидеть отчет о работе загрузчика я смог только на скорости 74880, а сама программа пишет в Serial на скорости 115200, что опять вызывает ряд вопросов, но не суть... Пройдитесь внимательно по всем описанным пунктам. PSS: Нашел полное описание для адресного пространства на официальном сайте https://www.espressif.com/en/support/explore/get-started/esp8266/getting-started-guide раздел 4.1.это на тот случай если Вам удобнее подготавливать контроллер и загружать программу самостоятельно через Flasher и подобные программы.
  19. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @vavandemidov Доброе время суток. firmware - прошивка микроконтроллера spiffs - образ файловой системы со всеми файлами web сервера Я удалю их чтобы никого не смущать. Отключите все датчики и перезапустите микроконтроллер. Если все в порядке, то подключенные датчики не соответствуют выбранным библиотекам. А лучше опишите, как и в каком порядке Вы прошиваете микроконтроллер.
  20. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @ewanpips Доброе время суток. Данная ошибка говорит об отсутствии у класса, отвечающего за реализацию поддержки MDNS протокола, метода notifyAPChange. Последний, в свою очередь, нужен для запуска цепочки событий при смене параметров сети. Я могу предположить, что у Вас более старая версия этой библиотека. Рекомендую Вам проверить в менеджере плат версию esp8266 которую Вы используете в Arduino IDE. На данный момент я использую версию 2.4.0 На всякий случай я скидываю свою текущую Portable версию Arduino IDE которой пользуюсь сам, с установленной поддержкой esp8266 v2.4.0. В комплекте также идет скетч о 27.02.2018 и набор несколько используемых библиотек. Для эксперимента можете проверить её. Yandex Disk: https://yadi.sk/d/oXaQdiTi3Sq7WZ
  21. Kitsum

    Метеостанция на ESP8266 от it4it.club

    Обновление от 27.02.2018 (v2.0 Beta) Друзья, всем доброе время суток. Немного не хватает времени и технических возможностей подготовить все как положено до конца месяца, в связи с этим прошу отнестись с пониманием. Основная статья будет переписана в течении нескольких дней после публикации этого сообщения. Все исходники, по доброй традиции, опубликованы в первом сообщении темы. Краткий список изменений Требования Arduino IDE c поддержкой esp8266 v2.4.0+ Любой модуль на базе ESP8266 c Flash 4MB (3MB выделяем под SPIFFS) Код для микроконтроллера структурирован и разбит на модули, что делает его более простым для понимания и внесения изменений config.h - работа с файлом конфигурации хранящимся во flash памяти микроконтроллера в формате json. Реализована возможность быстрого добавления пользовательских параметров. Поиск, чтение, запись этих параметров, а также специализированные функции для работы с WEB интерфейсом – обновление и запись группы параметров, переданных в формате json и формирование списка параметров и их значений с фильтрацией паролей для их скрытия при передаче в WEB интерфейс (в WEB интерфейсе реализована ответная часть). cron.h - планировщик заданий основной целью которого является выполнение пользовательских заданий с установленным интервалом времени. Задания представляют из себя функции описанные пользователем. На данный момент они не должны принимать или возвращать никаких значений, обязаны выполнять всю работу самостоятельно или с помощью глобальных объектов. Интервал выполнения задания выставляется в миллисекундах или с помощью макросов, представляющих из себя человекочитаемые имена, за которыми скрываются часто используемые отрезки времени в миллисекундах. Доступен дополнительный функционал в виде поиска задания в журнале, сброс его интервала вызова, выставление нового интервала, остановка выполнения и проверка активности задания. gpio.h - не является модулем. Содержит примеры реализации работы с GPIO для самых часто упоминаемых пользователями задач – управление нагрузкой по превышению установленных через WEB интерфейс приделов температуры и влажности, а также управление нагрузкой при расхождении расчетных значений абсолютной влажности между показаниями двух датчиков. sensors.h - тестовый вариант модуля для реализации автоматического сбора данных с пользовательских датчиков. Очень тесно завязан с планировщиком заданий и http сервером. Преследует только одну цель – избавить пользователя от внесения изменений в большую часть кода при составления собственного набора датчиков, в том числе не описанных в проекте, работающих на других шинах данных или с другими библиотеками. Также позволяет создавать программные сенсоры для вывода расчетных данных, например, абсолютная влажность или любой иной информации представленной в числовом виде. Это могут быть данные об уровне сигнала, напряжения питания или значение с аналогово порта. Помимо добавления сенсоров доступен поиск по списку всех сенсоров, проверка и изменения статуса (актуально только для i2c шины), получение последнего собранного значение с одного или группы сенсоров, аналогичная процедура для логов (активируются для каждого сенсора отдельно) и формирование списка в формате json из всех сенсоров с описанием всех необходимых характеристик. services.h - не является модулем. Содержит примеры реализации передачи показаний на внешние ресурсы на примере связи с MQTT брокером, а также передача данных через Rest API на такие ресурсы как "ThingSpeak" или "Народный мониторинг". tools.h - содержит набор вспомогательных утилит. webserver.h - Основная рабочая лошадка. Представляет из себя http сервер с реализацией API для обмена данными с WEB интерфейсом проекта, а также работающий с файлами во flash памяти микроконтроллера. Тесно связан со всеми модулями. Описание всего функционала заслуживает отдельного раздела. wifi.h - модуль описывает режимы работы Wi-Fi а также переключение между ними. Добавлена поддержка работы со скрытыми беспроводными сетями. В связи с тем, что целью было охватить все желаемые пользователями датчики, код был унифицирован и теперь поддерживает работу с любыми источниками данных. Примеры пользовательской конфигурации расположены в следующих файлах. users_auto.h - не является модулем. Содержит пример с реализацией выбора используемых датчиков с помощью подобия виртуальных переключателей ON/OFF. Также является примером как добавлять датчики в систему с использованием лямбда функций. Не совместим с users_bme280_x2.h users_bme280_x2.h - не является модулем. Содержи пример реализации работы с двумя датчиками BME280 на I2C шине. В отличие от users_auto.h, при добавлении нового датчика используются обычные функции. Не совместим с users_auto.h Изменения в WEB интерфейсе WEB интерфейс больше не запрашивает дублирующие файлы с внешних ресурсов, все необходимое для работы хранится на микроконтроллере. Список индикаторов на главной странице строится автоматически в зависимости от данных предоставленных объектом sensors через API. Добавлена поддержка двух групп датчиков – внешних и внутренних. Группа внешних сенсоров считается основной и отображается по умолчанию. Если зафиксировано наличие внутренней группы, то в меню будет добавлен переключает с индикацией выбранной группы. Исправлен баг с блокировкой доступа к панели управления из-за паразитных cookies различных систем аналитики. Изменен алгоритм работы системы защиты доступа к панели управления – реакция на брутфорс пароля или cookies, метод генерации соли и т.п. Также клиент получает соответствующее уведомление при блокировке доступа. В разделе основных настроек добавлена возможность изменять имя контроллера для MDNS протокола. Изменения вступят в силу в течении 10 минут или после перезапуска микроконтроллера. Найти устройство можно по этому имени в зоне ".local", по умолчанию "espws.local". Также в основных настройках добавлен пункт подтверждения пароля для домашней беспроводной сети. Его отсутствие было историческим упущением, но справедливость наконец восторжествовала. Раздел "Система" был расширен и теперь включает в себя всю информацию о текущем подключении. Также добавлена возможность динамического обновления некоторых данных, в список входят: уровень сигнала, напряжение питания и объем свободной памяти. В разделе обновления прошивки микроконтроллера ужесточена проверка контрольной суммы загружаемого файла, теперь нельзя загрузить программу без этих расчетов. Ранее просто выводилось предупреждение. Также увеличен список расшифровок ответа микроконтроллера в ходе обновления микропрограммы. В разделе "Файловая система" отображается корректный объем доступной flash памяти для внутренней файловой системы. Добавлен раздел для внешнего коллектора данных “ThingSpeak”. Пока доступен только ввод ключа для работы с API. По Вашим просьбам был добавлен раздел "Контроль состояния GPIO". Это пробный вариант конфигурации взаимодействия ESP8266 с внешней нагрузкой через WEB интерфейс. На данный момент в разделе присутствуют два параметра выставляющие границу включения внешней нагрузки при превышении установленных значений температуры или влажности. Доработана система оповещений. Мелкие правки и исправления ошибок в коде web интерфейса. В связи с тем, что старая реализация графика была нацелена на конкретные данные, унификация его кода на данный момент невозможна. График работает, но принимает строго указанные значения. Данная проблема будет решена позже. PS: Еще раз прошу отнестись с понимание и обратить внимание, что это тестовая версия. Спасибо.
  22. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @vavandemidov Спасибо за мысль о версии библиотеки. Вы попали в точку, моя версия оказалась более старой. Я внес исправления и обновил архив, можете забрать его и проверить. Сама проблема заключалась в том, что разработчик ввел перечисление для адреса сенсора описав его в файле BME280I2C.h enum I2CAddr { I2CAddr_0x76 = 0x76, I2CAddr_0x77 = 0x77 }; Работать это будет следующим образом #include <BME280I2C.h> BME280I2C::Settings settings_out( BME280::OSR_X1, BME280::OSR_X1, BME280::OSR_X1, BME280::Mode_Forced, BME280::StandbyTime_1000ms, BME280::Filter_Off, BME280::SpiEnable_False, BME280I2C::I2CAddr_0x76 ), settings_in( BME280::OSR_X1, BME280::OSR_X1, BME280::OSR_X1, BME280::Mode_Forced, BME280::StandbyTime_1000ms, BME280::Filter_Off, BME280::SpiEnable_False, BME280I2C::I2CAddr_0x77 ); BME280I2C BME_OUT(settings_out), BME_IN(settings_in); Еще раз спасибо за помощь.
  23. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @vavandemidov Если не секрет, то какую версию Arduino IDE и какой релиз ESP8266 Вы используете? Вносили ли Вы изменения в список поддерживаемых платформ или обновляли/откатывали их версии? Пробовали ли Вы использовать последние версии всего пара программ? У меня есть большая уверенность, что, если я возьму последнюю версию IDE с сайта разработчика, добавлю в неё последний официальный релиз ESP8266 и скину это все на форум в виде Portable версии, чтобы она не пересекалась с уже имеющимися у Вас продуктами. То она без проблем скомпилирует программу. Если данный тест Вам интересен, то вечером скину подготовленный архив.
  24. Kitsum

    Метеостанция на ESP8266 от it4it.club

    @vavandemidov Пробуйте привести адрес датчика к запрашиваемому типу (uint8_t)0x76 (uint8_t)0x77 У меня данной проблемы нет, все прекрасно компилируется. Версия IDE 1.8.3
×
×
  • Создать...