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

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


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

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

  1. 1 балл
    Доброе время суток. Вы уверены, что это именно проблема с оперативной памятью? В консоль выводится какая-либо информация по ОЗУ? Если нет, то добавьте для теста, в Setup следующий код. cron.add(cton::time_10s, [&](){ Serial.printf("free ram: %u\r\n", ESP.getFreeHeap()); }); После этого запустить контроллер с прописанными 30-ю и более датчиками. Понаблюдайте за этим значением. Уточните, что вы имеете в виду под "полностью отрубается web ...", при заходе на страницу вы получаете ошибку, что запрашиваемая страница не найдена или что-то появляется? Я предполагаю, что проблема не с ОЗУ, а с тем, что все данные с датчиков, в том числе их структура и логи, передаются через объекты String, а не потоковым выводом. Думаю, что просто данных слишком много и все не поместилось. А т.к. данные представлены в формате json, который имеет строгий синтаксис, то при разборе вылетает ошибка, в следствии чего не создаются сенсоры в web интерфейсе и т.д. Если я прав, то стоит пересмотреть как способ формирование ответов сервера на API запросы, так и варианты хранения данных. @den48rus Если Вам еще нужна помощь, то сообщите какие изменения Вы уже вносили, какие пользовательские файлы используете и какие датчики?
  2. 1 балл
    Добрый день! Дерзну ответить. У меня сделано так: 1. В файле с датчиками (по умолчанию "users_bme280_x2.h") после строки "knob_t *H = new knob_t( 0, 100, ".01", "Влажность", "%");" вставляете: knob_t *DP = new knob_t(-50, 100, ".01", "точка_росы", "°C"); (это будет круговая диаграмма с точкой росы) 2. перед строкой "void sensors_config() {" вставляете: float dewPointFast(float celsius, float humidity) { float a = 17.271; float b = 237.7; float temp = (a * celsius) / (b + celsius) + log(humidity*0.01); float Td = (b * temp) / (a - temp); return Td; } (это функция расчета точки росы) 3. после строки " sensors.add(T, device::out, 0x76, "out_temperature", out_init, out_temp, true);" вставляете : sensors.add(DP, device::out, "dewpoint", [&](){ return dewPointFast(out_temp(), out_hum()); }, true); (это добавление програмного датчика точки росы для уличного датчика) 4. заливаете прошивку и точка росы должна появиться в веб-интерфейсе
×
×
  • Создать...