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

Kitsum

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

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

  • Посещение

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

    234

Сообщения, опубликованные пользователем Kitsum


  1. 2 минуты назад, pasha413 сказал:

    Еще вопрос, а можно как-то менять сортировку индикаторов

    На данный момент сортировка списка не предусмотрена, но могу сказать, что построение списка идет в обратную сторону от его объявления. Это значит, что последний добавленный датчик станет первым в списке при формировании json строки со структурой дерева сенсоров. Кстати, именно поэтому при описании таких датчиков как BME280, где несколько сенсоров в одном корпусе, у последнего сенсора в описании добавляется функция инициализации. Но я не буду забивать сейчас Вам голову этой ерундой, я все опишу позже или озвучу в видео. Вернемся к сортировке. Список, построенный в порядке обратном объявлению, будет передан в web интерфейс, там на основе его парсинга, будет построен объект с соответствующей структурой и одним циклом разобран на составляющие из которых и появятся индикаторы на страницах. В каком порядке java будет отдавать каждую из частей мне неизвестно, если честно, я даже не задавался этим вопросом. Но если такая необходимость выбора последовательности расположения индикаторов будет иметь место, то можно её добавить.

    20 минут назад, pasha413 сказал:

    И есть ли возможность объявлять выводы i2c и управляющие из вебинтерфейса

    Да, такая возможность есть, по крайней меря, я не вижу серьезных проблем в её реализации кроме одной - количество свободных портов esp8266 очень ограничено, хоть внешне так и не скажешь, особенно смотря на плату Node MCU. Часть портов завязаны с flash, другая часть используется да старта микроконтроллера и выбора режима работы, один порт под умный светодиод (как не крути, а на большинстве модулей он уже распаян), три порта выделены под управление нагрузкой, два порта под i2c шину и один порт держим в уме под 1wire. А в итоге остается свободным один порт, может еще где-то найдется, пока не припомню.

    30 минут назад, pasha413 сказал:

    Мажордомо сам добавил в вебинтерфейс

    К сожалению, с этой системой я не знаком. Если нужно добавить её, то над этим можно подумать.

    • Thanks 1

  2. 6 часов назад, pasha413 сказал:

    после перепрошивки снова проблема со шрифтами

    На данный момент я предполагаю, что проблема проявляется при изменении кодировки в файлах проекта. Изначально все файлы, в том числе и web сервера, имеют кодировку utf-8. Данные между контроллером и web интерфейсом также передаются в этой кодировке. Arduino IDE также работает с utf-8. Возможно, где-то в этой цепочке произошла смена кодировки. Над этим стоит подумать.

    6 часов назад, pasha413 сказал:

    по адресу http://espws.local/api/sensors/structure страница недоступна

    Это говорит о том, что у Вашего компьютера или иного устройства нет поддержки MDNS протокола, но не беда. Место espws.local наберите ip выданный контроллеру. На странице Вы должны увидеть json строку по данным с которой web интерфейс добавляет сенсоры. Вы можете скопировать текст в "кривой" кодировки и воспользоваться услугами любого онлайн анализатора кодировки. Надеюсь он подскажет в какую сторону копать.

    6 часов назад, pasha413 сказал:

    если идет объявление датчика то он будет показан на странице. даже если он не подключен. это надо учитывать.

    Безусловно будут отображены все объявленные датчики т.к на данный момент данные о структуре списка устройств объекта sensors забираются у микроконтроллера всего один раз при открытии/обновлении страницы.

    Я обновил архив, там есть небольшие изменения в web сервере, теперь он добавляет заголовок кодировки utf-8 при ответе клиенту через API. Проверьте как у Вас это будет работать.

    3 часа назад, Gleb сказал:

    Установил сегодня v2.0 Beta,  решил настроить ThingSpeak, но так и не получилось. Насколько я понял, ввести нужно тоько Write API Key и настроить канал  через личний кабинет. У кого-то работает?

    Да, у меня работает, и Вы абсолютно правы. Вам необходимо создать канал в своем профиле, далее перейти в раздел API Keys и скопировать ключ Write API Key. этот ключ необходимо указать в соответствующем поле в web интерфейсе. Данные должны начать поступать в течении 5 минут. Какие данные будут отправляться зависит только от Вас. Пример используемый по умолчанию и описанный в файле services.h отправляет данные об освещенности, температуре, влажности и давлении на поля field1-4 соответственно. Статус отправки запроса отображается в консоли.

    • Like 2

  3. 3 часа назад, pasha413 сказал:

    странно но после очередной прошивки все пошло

    Проблема ушла? Каким браузером Вы пользуетесь? Что вы видите при обращении по адресу http://espws.local/api/sensors/structure ?

    3 часа назад, pasha413 сказал:

    добавил датчик bme280, а как сделать чтоб он был в помещении?

    Посмотрите содержимое файла users_bme280_x2.h, он представляет из себя описание двух групп сенсоров для web интерфейса. Условно, первая группа расположена вне помещения, а вторая в самом помещение.

    Для добавления сенсора используется метод add из объекта sensors

    sensors.add(...);

    Второй параметр представляет из себя описание расположения сенсора

    1. device::out - для внешних датчиков (используется по умолчанию)
    2. device::in - для внутренних датчиков

    Используйте нужное Вам значение.

    • Thanks 1

  4. @MOHAX Добавил поддержку нижнего подчеркивания в имена сетей. Скачайте новый архив и загрузите файл index.htm.gz в файловую систему web сервера.

    @vavandemidov У меня есть пачка абсолютно новых модулей ESP-12. Постараюсь завтра провести эксперимент и загрузить программу на один из них, а заодно снять все это на видео. Посмотрим, возможно в процессе появятся какие-то идеи.

    2 часа назад, vavandemidov сказал:

    С папкой src или ее содержимым что-нибудь надо делать?

    Можете удалить её. На данный момент её содержимое не используется в проекте. Была идея, основываясь на опыте разработчика библиотеки для датчиков BME280, набросать свои библиотеки для разных сенсоров, описанных в проекте. Все это помогло бы привести набор библиотек к одному общему виду и добавить необходимый функционал. Но пока оставляем это как идею.


  5. @vavandemidov Тогда все становится на свои места.

    1. При прошивке через NodeMCU Flasher Вы пытаетесь загрузить образ файловой системы по адресу с которого начинается программа микроконтроллера. Это фатальная ошибка, работать ничего не будет.
    2. При прошивке через Arduino IDE у меня возникает ряд вопросов с настройками используемой Вами платы.

    Чтобы подобные ситуации впредь не возникали, все бинарные файлы были удалены из исходников. Все датчики также выключены по умолчанию, дабы стимулировать желание внести изменение в код и загрузить программу через Arduino IDE.

    Как надо делать:

    1. Используйте среду Arduino IDE с поддержкой esp8266 версии 2.4.0 или выше.
    2. В настройках используемой платы выберите свой модуль, но предполагается, что используется NodeMCU 1.0 (ESP-12E Module).
    3. Размер Flash обязательно должен быть выставлен как 4M (3M SPIFFS), при этой настройке под файловую систему будет выделен "раздел" объемом 3M.
    4. Выберите COM порт к которому подключен микроконтроллер.
    5. Все остальные настройки оставляем по умолчанию, они должны совпадать.
    6. Компилируем и загружаем образ файловой системы, меню  "Инструменты/ESP8266 Sketch Data Upload", долго и упорно ждем окончания загрузки. При этом Serial монитор должен быть закрыт, иначе получим соответствующую ошибку.
    7. В последнюю очередь компилируем и загружаем саму программу в микроконтроллер, меню "Скетч/Загрузка".
    8. Откройте Serial монитор на скорости 115200, нажмите на кнопку Reset и посмотрите на вывод

    После всего этого можете вносить собственные изменения в программу.

    Пока что дать других рекомендаций я не могу, разве что все внимательно перепроверить и пройтись по всем перечисленным пунктам. По возможности я постараюсь снять видео с описанием, что и как делать, а заодно описать часть кода.

    Возможно еще кто-то изъявит желание отписаться о своих результатах.

    PS: Увидеть отчет о работе загрузчика я смог только на скорости 74880, а сама программа пишет в Serial на скорости 115200, что опять вызывает ряд вопросов, но не суть... Пройдитесь внимательно по всем описанным пунктам.

    PSS: Нашел полное описание для адресного пространства на официальном сайте https://www.espressif.com/en/support/explore/get-started/esp8266/getting-started-guide раздел 4.1.это на тот случай если Вам удобнее подготавливать контроллер и загружать программу самостоятельно через Flasher и подобные программы.


  6. @vavandemidov Доброе время суток.

    • firmware - прошивка микроконтроллера
    • spiffs - образ файловой системы со всеми файлами web сервера

    Я удалю их чтобы никого не смущать.

    Отключите все датчики и перезапустите микроконтроллер. Если все в порядке, то подключенные датчики не соответствуют выбранным библиотекам. А лучше опишите, как и в каком порядке Вы прошиваете микроконтроллер.


  7. @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

     


  8. Обновление от 27.02.2018 (v2.0 Beta)

    Друзья, всем доброе время суток. Немного не хватает времени и технических возможностей подготовить все как положено до конца месяца, в связи с этим прошу отнестись с пониманием. Основная статья будет переписана в течении нескольких дней после публикации этого сообщения. Все исходники, по доброй традиции, опубликованы в первом сообщении темы.

    Краткий список изменений

    Требования

    1. Arduino IDE c поддержкой esp8266 v2.4.0+
    2. Любой модуль на базе ESP8266 c Flash 4MB (3MB выделяем под SPIFFS)

    ESP8266_WS_V2.0_IDE1.pngESP8266_WS_V2.0_IDE2.png

    Код для микроконтроллера структурирован и разбит на модули, что делает его более простым для понимания и внесения изменений

    1. config.h - работа с файлом конфигурации хранящимся во flash памяти микроконтроллера в формате json. Реализована возможность быстрого добавления пользовательских параметров. Поиск, чтение, запись этих параметров, а также специализированные функции для работы с WEB интерфейсом – обновление и запись группы параметров, переданных в формате json и формирование списка параметров и их значений с фильтрацией паролей для их скрытия при передаче в WEB интерфейс (в WEB интерфейсе реализована ответная часть).
    2. cron.h - планировщик заданий основной целью которого является выполнение пользовательских заданий с установленным интервалом времени. Задания представляют из себя функции описанные пользователем. На данный момент они не должны принимать или возвращать никаких значений, обязаны выполнять всю работу самостоятельно или с помощью глобальных объектов. Интервал выполнения задания выставляется в миллисекундах или с помощью макросов, представляющих из себя человекочитаемые имена, за которыми скрываются часто используемые отрезки времени в миллисекундах. Доступен дополнительный функционал в виде поиска задания в журнале, сброс его интервала вызова, выставление нового интервала, остановка выполнения и проверка активности задания.
    3. gpio.h - не является модулем. Содержит примеры реализации работы с GPIO для самых часто упоминаемых пользователями задач – управление нагрузкой по превышению установленных через WEB интерфейс приделов температуры и влажности, а также управление нагрузкой при расхождении расчетных значений абсолютной влажности между показаниями двух датчиков.
    4. sensors.h - тестовый вариант модуля для реализации автоматического сбора данных с пользовательских датчиков. Очень тесно завязан с планировщиком заданий и http сервером. Преследует только одну цель – избавить пользователя от внесения изменений в большую часть кода при составления собственного набора датчиков, в том числе не описанных в проекте, работающих на других шинах данных или с другими библиотеками. Также позволяет создавать программные сенсоры для вывода расчетных данных, например, абсолютная влажность или любой иной информации представленной в числовом виде. Это могут быть данные об уровне сигнала, напряжения питания или значение с аналогово порта. Помимо добавления сенсоров доступен поиск по списку всех сенсоров, проверка и изменения статуса (актуально только для i2c шины), получение последнего собранного значение с одного или группы сенсоров, аналогичная процедура для логов (активируются для каждого сенсора отдельно) и формирование списка в формате json из всех сенсоров с описанием всех необходимых характеристик.
    5. services.h - не является модулем. Содержит примеры реализации передачи показаний на внешние ресурсы на примере связи с MQTT брокером, а также передача данных через Rest API на такие ресурсы как "ThingSpeak" или "Народный мониторинг".
    6. tools.h - содержит набор вспомогательных утилит.
    7. webserver.h - Основная рабочая лошадка. Представляет из себя http сервер с реализацией API для обмена данными с WEB интерфейсом проекта, а также работающий с файлами во flash памяти микроконтроллера. Тесно связан со всеми модулями. Описание всего функционала заслуживает отдельного раздела.
    8. wifi.h - модуль описывает режимы работы Wi-Fi а также переключение между ними. Добавлена поддержка работы со скрытыми беспроводными сетями.

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

    1. users_auto.h - не является модулем. Содержит пример с реализацией выбора используемых датчиков с помощью подобия виртуальных переключателей ON/OFF. Также является примером как добавлять датчики в систему с использованием лямбда функций. Не совместим с users_bme280_x2.h
    2. users_bme280_x2.h - не является модулем. Содержи пример реализации работы с двумя датчиками BME280 на I2C шине. В отличие от users_auto.h, при добавлении нового датчика используются обычные функции. Не совместим с users_auto.h

    Изменения в WEB интерфейсе

    1. WEB интерфейс больше не запрашивает дублирующие файлы с внешних ресурсов, все необходимое для работы хранится на микроконтроллере.
    2. Список индикаторов на главной странице строится автоматически в зависимости от данных предоставленных объектом sensors через API.
    3. Добавлена поддержка двух групп датчиков – внешних и внутренних. Группа внешних сенсоров считается основной и отображается по умолчанию. Если зафиксировано наличие внутренней группы, то в меню будет добавлен переключает с индикацией выбранной группы.
    4. Исправлен баг с блокировкой доступа к панели управления из-за паразитных cookies различных систем аналитики.
    5. Изменен алгоритм работы системы защиты доступа к панели управления – реакция на брутфорс пароля или cookies, метод генерации соли и т.п. Также клиент получает соответствующее уведомление при блокировке доступа.
    6. В разделе основных настроек добавлена возможность изменять имя контроллера для MDNS протокола. Изменения вступят в силу в течении 10 минут или после перезапуска микроконтроллера. Найти устройство можно по этому имени в зоне ".local", по умолчанию "espws.local".
    7. Также в основных настройках добавлен пункт подтверждения пароля для домашней беспроводной сети. Его отсутствие было историческим упущением, но справедливость наконец восторжествовала.
    8. Раздел "Система" был расширен и теперь включает в себя всю информацию о текущем подключении. Также добавлена возможность динамического обновления некоторых данных, в список входят: уровень сигнала, напряжение питания и объем свободной памяти.
    9. В разделе обновления прошивки микроконтроллера ужесточена проверка контрольной суммы загружаемого файла, теперь нельзя загрузить программу без этих расчетов. Ранее просто выводилось предупреждение. Также увеличен список расшифровок ответа микроконтроллера в ходе обновления микропрограммы.
    10. В разделе "Файловая система" отображается корректный объем доступной flash памяти для внутренней файловой системы.
    11. Добавлен раздел для внешнего коллектора данных “ThingSpeak”. Пока доступен только ввод ключа для работы с API.
    12. По Вашим просьбам был добавлен раздел "Контроль состояния GPIO". Это пробный вариант конфигурации взаимодействия ESP8266 с внешней нагрузкой через WEB интерфейс. На данный момент в разделе присутствуют два параметра выставляющие границу включения внешней нагрузки при превышении установленных значений температуры или влажности.
    13. Доработана система оповещений.
    14. Мелкие правки и исправления ошибок в коде web интерфейса.

    В связи с тем, что старая реализация графика была нацелена на конкретные данные, унификация его кода на данный момент невозможна. График работает, но принимает строго указанные значения. Данная проблема будет решена позже.

    PS: Еще раз прошу отнестись с понимание и обратить внимание, что это тестовая версия. Спасибо.

    • Like 5

  9. @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);

    Еще раз спасибо за помощь.

    • Like 1

  10. @vavandemidov Если не секрет, то какую версию Arduino IDE и какой релиз ESP8266 Вы используете? Вносили ли Вы изменения в список поддерживаемых платформ или обновляли/откатывали их версии? Пробовали ли Вы использовать последние версии всего пара программ?

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


  11. В 07.02.2018 в 15:42, AlexDerBK сказал:

    убрал уже все имена и пароли о своей локальной сети, а оно все равно к ней конектится????

    Дело в том, что контроллер способен хранить информацию о сети в отдельной области памяти и Вы даже можете залить пустой скетч и при этом будет происходить автоматическое подключение и переподключение к известной сети. За это отвечают следующие функции.

    WiFi.setAutoConnect(true);
    WiFi.setAutoReconnect(true);

    В зависимости от требуемого поведения, выставляются необходимые логические значения

    В 07.02.2018 в 15:42, AlexDerBK сказал:

    Если периодически меняются показания с 20.0 , 20.1, то показывает 20 или 20.1. А так как цифры центрируются на индикаторе, получается мельтешение.

    По умолчанию опрос датчиков и обновление информации происходит с интервалом в 5 секунд, а, следовательно, и многократного переключения за одну анимацию быть не может. Исключением являются те случаи, когда разница показаний слишком велика и происходит 2-х секундная анимация в ходе которой идет перебор значения в промежутке между старыми и новыми показаниями. Такое возможно только в случае специального влияния на датчики, например, принудительный нагрев. Но и в таком случае центровка значений будет не тем, на что обратишь внимание в ходе всей анимации. Возможно описание в виде мельтешения здесь не уместно, и Вы имели в виду что-то другое. Я проверил у себя и переход через целое значение не вызывает какое-либо не стандартное поведение.

    В 08.02.2018 в 05:25, AlexDerBK сказал:

    Можно по подробнее про сторожевой таймер. Мне кажется,  в нем собака зарылась.  Как узнать, что он срабатывает. Светодиод как моргал, так и моргает, а связи нет.

    Имеется встроенный сторожевой таймер, настроенный на 1.2 секунды (если память не подводит) и сбрасывающий контроллер в случае если не выполняются внутренние инструкции. На сколько мне известно, отключить его нельзя. Но и проблема явно не в нем. Второй - программный сторожевой таймер используется в самом скетче и, как показала практика, совершенно бесполезен и не приносит никакой пользы, как собственно и вреда. В новой версии программы он уже полностью искоренен из-за переосмысления причины зависания контроллера при перезагрузке (об этом писалось ранее, лечится перемычкой) и оптимизации кода проводившейся в предыдущий версиях и в основном связанных с работой web интерфейса, а также практически законченных в будущей версии.

    Что касаемо постоянной индикации режима работы, то это говорит только о том, что контроллер не висит. Если контроллер перезагружается, то индикация будет сбоить: пропадать, сбиваться или светодиод будет гореть постоянно. В зависимости от состояния порта на момент сбоя и характер самого сбоя.

    Я бы посоветовал запомнить MAC адрес esp8266 и при следующем сбое, зайти на маршрутизатор и посмотреть подключен ли контроллер, какой ему выдан IP адрес и попробовал бы как проходит PING до данного адреса, а также отвечает ли web сервер по имени и по IP адресу.

    • Thanks 1

  12. @AlexDerBK доброе время суток

    1 час назад, AlexDerBK сказал:

    Связь с метеостанцией не держится больше суток. В другом проекте такая же ерунда.

    Возможно дело не в программе. О каком втором проекте идет речь?

    1 час назад, AlexDerBK сказал:

    Но там я смог перевести его на режим точки доступа и он работает. На этом же проекте, так как имя моего роутера содержит нижнее подчеркивание, пришлось прописать его в скетча.

    Спасибо за уточнение. Я пересмотрю поддержку спецсимволов при настройке домашней сети.

    1 час назад, AlexDerBK сказал:

    И еще, если показания температуры после запятой имеют 0, то он пропадает и цифры пляшут.

    Не могли бы Вы сделать снимок экрана чтобы было более понятно, о чем идет речь?


  13. @AlexDerBK думаю, что сходу эту задачу, силами микроконтроллера, не решить. Надо определиться с тем, как проходить авторизацию, удерживать сессию и передавать файл. Использовать OAuth или достаточно правильно сформировать заголовки в multipart/form-data?... А также подводные камни, например, устаревание сертификата при использовании https (не думаю, что Яндекс захочет общаться через http) соединения, а прописывать новый придется каждый раз самому и ручками. В итоге код передачи файла будет в десятки раз больше и сложнее чем код относящийся к метеостанции. Для каких целей это нужно? Обычно для сбора и анализа данных с iot устройств используют различные шлюзы вроде ThingSpeak или Народного мониторинга, а также MQTT брокеры.

    • Thanks 1

  14. @dimon721 доброе время суток

    Я бы предложил Вам воспользоваться данной библиотекой https://github.com/milesburton/Arduino-Temperature-Control-Library На основе стандартных примеров Вы можете добавить датчики DS18B20, по аналогии, как это было сделано с датчиками на i2c шине. Поддержка этих датчиков будет добавлена чуть позже. Уже есть идеи, как реализовать отображение и понятное (для человека) распознавание этих датчиков в web интерфейсе.


  15. @valdemar посчитать объем полезной нагрузки в ключах можно разделив размер eeprom микроконтроллера в байтах на длину используемого ключа. На данный момент мне известны ключи с длинной в 4 и 6 байт. Условившись, что из 6 байтовых ключей будут использованы только первые 4 байта, получаем порядка 1000 ключей для ATmega2560 c 4кб eeprom. Часть памяти придется зарезервировать под значение представляющее количество записанных ключей. Если избавиться от этого значения и не заносить весь перечень ключей в RAM, перебирая ключи непосредственно в eeprom, получим 1024 ключа.


  16. @zenone тогда давайте посмотрим на ответ сервера.

    Найдите строку инициализирующую отправку данных на сервер.

    httpClient.GET();

    замените её на

    int status = httpClient.GET();
    if (status > 0) Serial.printf("code: %d\nanswer: %s\n", status, httpClient.getString().c_str());
    else Serial.println("No answer");

    Оставьте открытым Serial монитор и посмотрите, дойдет ли запрос до сервера и как ответит сервер. К сожалению, нахожусь на работе и самостоятельно проверить работоспособность кода не могу, но думаю, что должно работать.

    @ololonly попробуйте пробросить порт до другого узла сети. Для эксперимента, можно поднять Apache на компьютере и посмотреть, что будет на выходе.


  17. @valdemar доброе время суток. Осмелюсь предложить Вам провести эксперимент:

    1. Поднимите сервер Apache на любой машине в Вашей сети
    2. Создайте на сервере страницу с одним символом 0 или 1, без html разметки и т.п, просто один символ
    3. В любой доступный Вам контроллер залейте стандартный скетч работы с Ethernet идущий в комплекте с Arduino IDE - Web client. Только измените адрес запрашиваемой страницы на адрес Вашего сервера с Apache.
    4. Посмотрите с какой скоростью прилетает ответ т.к эта скорость, по сути, и будет временем отклика при работе с MySQL

    Уверен, что отклик будет удовлетворительный. На мой взгляд, работа с SD картой не целесообразна т.к велика вероятность выхода её из строя, процесс поиска информации (при большом количестве ключей) будет очень медленным и чем позже записан ключ тем дольше ждать, а сам процесс удаленного обновления данных на SD карте содержит ряд подводных камней.

    PS: Я буду настаивать на проведение Вами этого эксперимент.


  18. Доброе время суток. Добрался до компьютера, спасибо за Ваше терпение.

    В 18.01.2018 в 13:15, ololonly сказал:

    Могу зайти в него с любых устройств сети, кроме, собственно своего личного компьютера.

    Если проблема повторится, то откройте в браузере режим разработчика (Ctrl + Shift + i для Chrome) и зайдите на страницу метеостанции. Посмотрите коды ответа и количество переданного трафика, а также предупреждения самого браузера. Соберите как можно больше информации.

    В 18.01.2018 в 22:16, zenone сказал:

    но вот данные на мониторинг идут с перебоями, то есть могут придти 1раз за 3 часа, а могут 1 раз в сутки, что может быть, было у кого нибудь такое? как лечить?

    Проверьте как формируется график на самой метеостанции. Не сбрасывается ли он? Я проверил на своей домашней метеостанции, она использует последнюю опубликованную прошивку за исключением некоторых фиксов веб интерфейса. Данные отправляются стабильно. Вот выписка из лога "народного мониторинга".

    Ashampoo_Snap_2018.01.21_21h34m40s_002_Chrome Legacy Window.png

    Я постараюсь учесть Вашу проблему в будущей версии и добавить статусы отправки данных на внешние ресурсы.

    В 20.01.2018 в 11:00, see сказал:

    кто нибудь подключил дисплей tft spi 240х320 к данному проекту ? прошу поделиться

    Если у Вас уже имеется опыт работы с данным дисплеем, то организовать отображение данных можно в функции readSensors основываясь на стандартных примерах из библиотеки.

    В 20.01.2018 в 13:54, ololonly сказал:

    А возможно как-то заходить на веб-интерфейс платы с внешней сети?

    У меня, статичный IP, на роутере настроил переадресацию порта, но почему-то на плату не хочет заходить.

    У меня больше вопросов чем ответов. Давайте сделаем так... В данный момент у меня маршрутизатор фирмы MikroTik. Проброс портов настроил через NAT по правилу dstnat для tcp трафика на внешнем интерфейсе по измененному порту т.к 80 постоянно сканируется. Далее через netmap отправляю трафик на внутренний адрес микроконтроллера, но уже по 80 порту. Делал на скорую руку удаленно, но суть ясна по фото.

    esp8266_nat.jpg

    В знак подтверждения оставляю адрес на виду, он динамический и через некоторое время, после публикации поста, изменится. Порт 7О8O. Вбивайте самостоятельно т.к символы изменены и не являются тем, что Вы видите на самом деле. Также хочу отметить, что микроконтроллер способен поддерживать ограниченное количество соединений, а также ему необходимо выполнять возложенные нами на него задачи и все это скажется на производительности. Скорее всего контроллер упадет после нескольких средне-активных пользователей. Еще хочу отметить, что текущая версия web сервера очень медленна и с этим связанны определенные трудности, его производительность уже увеличена в будущей версии, но все обкатывается на другом микроконтроллере, так что все приближенно к боевым условиям.

    В 19.01.2018 в 21:11, Forester сказал:

    А если заполнить массив не нулями а примерно средними значениями? Ну, например, для давления 730 мм.рт.ст.... Тогда, наверное, масштабирование будет адекватным с самого начала построения графика?

    На самом деле предсказать какие-то средние значения очень проблематично и выглядеть это будет в виде прямой линии за последние 24 часа по всем показаниям и только с последней позиции начнутся живые данные. Текущий график четко отображает время старта микроконтроллера и на самом деле я уже забыл, как оно выглядит т.к уже длительное время, заходя на страницу микроконтроллера, вижу заполненный массив (график). Я предложу Вам подождать сутки, посмотреть на график, а затем определиться, как часто Вы планируете сбрасывать микроконтроллер и насколько критично заполнение 0-ми при отсутствии данных. Возможно вашу проблему можно решить силами библиотеки от highcharts.com используемой для построения этого графика?


  19. @RusD доброе время суток.

    В указанной Вами библиотеке имеется файл OLEDDisplay.h в котором содержатся константы с описанием размера дисплея.

    // Display settings
    #define DISPLAY_WIDTH 128
    #define DISPLAY_HEIGHT 64

    Попробуйте поиграться с этими значениями.

    • Thanks 1

  20. @valdemar доброе время суток. Внешняя SD карта станет если не самым слабым, то одним из таковых звеньев цепи. На мой взгляд, нужно отталкиваться от тех моментов которых избежать невозможно и попытаться выжать из них побольше плюсов.

    1. Если все 1046 участков будут оборудованы замками, то зачем в каждый из них прописывать все доступные ключи? Полагаю, что вход на участок доступен только собственникам участка. Как Вы уже упомянули, это минимум 2 ключа. В eeprom микроконтроллера atmega328 равен 1024 байтам, по 4 байта на ключ. Итого 255 ключей + 4 байта для дополнительной информации. Если ключи соседей не должны открывать замки друг у друга, то 255 ключей более чем достаточно на одного владельца участка.
    2. Если все замки будут подключены в общую сеть, то как Вы планируете её организовывать или она уже есть? Какую площадь занимает сеть?
    3. Если замки и так будут в сети, то опять же на мой взгляд, нет смысла вязаться с EEPROM, если только для хранения спец ключей - мастер, аварийный или для обслуживающего персонала. Вы также планируете вести учет, но с прописанными ключами в памяти замка, что помешает собственнику участка откинуть сеть и использовать уже прописанные ключи?
    4. Думаю, что при времени отклика порядка 2 секунд, можно хранить ключи на центральном сервере.

  21. 23 часа назад, wildray сказал:

    Ну дайте уже хоть приблизительную дату этой RC 2.0!!! Третий пост уже упоминания Вас о ней - штудирую все страницы :)

    Не хотелось бы загадывать т.к в ходе тестов появляются разного рода баги. Хотелось бы разобраться с ними до конца января, но надо быть реалистами т.к на проект тратится свободное от работы и личной жизни время. Также я стараюсь учесть пожелания, которые оставляли в теме и в личных сообщениях. Поэтому сроки скорее всего немного растянутся.

    17 часов назад, Forester сказал:

    По-моему, помимо отсутствия автоматического реконнекта к роутеру после перезагрузки последнего, еще проблема с давлением на BME280. За несколько часов абсолютно не отклонилось от величины 740 мм.рт.ст. Вроде как, не бывает такого. В narodmon то же самое отправляет. 

    P.S. Прошу прощения. С давлением разобрался. Вроде бы, всё в порядке. просто первое показание записалось как "0". Отсюда соответственное масштабирование графика было. В narodmon можно удалить это ошибочное показание. А как быть с графиком в веб-интерфейсе ESP? У меня там тоже первое значение давления равно нулю. И график поэтому в неправильном масштабе (прямая линия).

    P.S.S. Да, с BME280 проблема: первое показание равно нулю. Нужно исключить его в коде.

    В данной версии прошивки реализовано автоматическое переподключение к известным контроллеру сетям. Если сеть скрыта, то при сканировании, контроллер её не увидит. Данная проблема уже решена в будущей версии и контроллер способен находить домашнюю сеть даже при скрытом SSID.

    Что касаемо графика в web интерфейсе микроконтроллера, то тут имеются следующие нюансы:

    1. Изначально график рассчитан на отображение показаний за последние сутки с интервалом измерения 10 минут, что равняется 144 точкам. Могу ошибаться, но на хранение показаний с 4 датчиков будет потрачено порядка 2.3kb оперативной памяти.
    2. В лог записываются не текущие, а последние полученные показания с датчика.
    3. График автоматически масштабируется (каждый массив данных в отдельности), это значит, что на визуализацию влияет минимальное и максимальное значения за выбранный период времени.
    4. Изначально все 144 позиции графика пусты, а точнее заполнены нолями.

    Следовательно, при старте весь лог заполнен значением 0 и происходит добавление первого элемента. При этом, на визуализации этот момент похож на резкий скачек всех значений с 0 до них самих. Также эти пустые значения участвуют в масштабировании т.к они часть графика. После наполнения памяти данными (ждем 24 часа) каждый элемент графика будет отображен в масштабе соответствующему минимальным и максимальным элементам из списка "живых" значений.

    Именно поэтому Вы видите давление в виде сплошной линии, но при этом, если пройтись по точкам графика будут видны различия в показаниях и также видно, что они настолько незначительны, что не способны повлиять на масштаб этого элемента относительно значения 0. По завершению наполнения 0 выпадет из массива данных и ситуация будет совершенно иной.

    Это не является багом, так и задумывалось. Подразумевалось, что это будет интуитивно понятно после того, как пользователь доберется до системы масштабирования в web интерфейсе. Чтобы график не содержал пустых элементов в первые сутки работы микроконтроллера, необходимо строить его из динамического числа точек. То есть, с начало будет график из одной точки, через десять минут из двух и т.д пока не  будет получены все 144 точки. При этом первые сутки график будет строиться слева на право, а после заполнения всего массива данных график начнет движение с право налево. С небольшим эффектом сжимающейся пружины. Конечно на практике он всегда строится слева на право, но пользователь этого никогда не видит и при этом человеческое восприятие не играет ему на руку.

    11 час назад, Forester сказал:

    Может быть, в проекте приживется идея с индикацией скорости изменения атм. давления?

    Как всегда, вопрос в том, как это визуализировать.

    5 часов назад, RusD сказал:

    А в дальнейшем не планируется добавить поддержку дисплеев как опцию?

    Добавить поддержку дисплее не сложно. В текущей версии прошивки Вы можете обновлять информацию на дисплее каждый раз когда вызывается функция readSensors(). Добавить Ваш код можно прямо в неё.


  22. Друзья. Спасибо Вам за проявленный интерес к проекту. Хочу еще раз напомнить, что следующее обновление будет очень большим, своего рода v2.0 для всего проекта. В связи с этим, практически все исправления в теме станут не актуальны как в плане доработки, так и в плане их использования для собственных наработок.

    • Like 2
    • Thanks 2
×
×
  • Создать...