Jump to content
iT4iT.CLUB

All Activity

This stream auto-updates     

  1. Today
  2. скетч ардуины, принимающей данные с орегонов INT_oregon-arduino_wind_rain_1_3_4_temp_slave1_7-7-19.zip
  3. Добрый день! У меня все внешние датчики подключаются к ESP через ардуины про мини, подключенные по шине i2c как slave. Данные от датчиков Орегон считываются одной из таких ардуин с приемником на 433МГц. Принимаю данные от 1-го датчика ветра WGR800, 1-го датчика осадков PCR800 и трёх термогигрометров THGR810. Данные всех пяти датчиков принимаются со статусом питания, если его не читать, можно еще добавить два термогигрометр. Полный скетч в приложении. Там еще добавлен экран nextion. Его можно не подключать, без него работает нормально. скетч до конца не отработан. Проверен вебсервер ESP и народный мониторинг. MQTT знаю, что работает, но на всех датчиках еще не проверил. INT_Meteo_D_4slaves_nextion4x16_mqtt_10-7-19.zip
  4. Earlier
  5. CCS811 измеряет не только СО2 , но и другие летучие в-ва, которые косвенно то же будут влиять на показания СО2, отсюда точность по СО2 может уплывать. Его удобно использовать для мониторинга качества воздуха в помещении и организации проветривания. MH-Z19 - инфракрасный датчик только для СО2, к летучим органическим в-вам он нечувствителен, он у меня стоит в теплице для "научного мониторинга"
  6. Интересно, обо датчика измеряют CO2, но разница в размерах и цене огромная...
  7. это я невнимательно посмотрел, на алиэкспрессе увидел неправильный перевод описания датчика CCS8111. Там было указано угарный газ (CO). я себе для мониторинга CO2 поставил MH-Z19, поэтому с CCS8111 не знакомился.
  8. Всем доброго времени суток. Подскажите пожалуйста, может кто успешно прикрутил DHT22 к проекту, что-то у меня не взлетает нормально. Под рукой нет пока BME280, в пути, а за окном висит уже DHT22, дома BMP180. Хотел все на новой прошивке завести, частично получилось. Вот что накалякал в users_auto.h #if SENSOR_DHT22 #include <DHT.h> #include <DHT_U.h> #define DHTTYPE DHT22; sensors_event_t event_t, event_h ; sensor_t dht_sensor; uint32_t delayMS; #endif /*.....*/ void sensors_config() { /*...*/ #elif SENSOR_DHT22 DHT_Unified DHT(10, DHT22); // 10 pin на ESP-12f pinMode(10, INPUT); DHT.begin(); delayMS = dht_sensor.min_delay / 1000; DHT.humidity().getEvent(&event_h); DHT.temperature().getEvent(&event_t); sensors.add(new knob_t( 0, 100, ".01", "В-ть улица","%"), "out_humidity1", [&](){ return event_h.relative_humidity;}, true ); sensors.add(new knob_t( -40, 80, ".1", "Т-ра улица", "°C"), "out_temperature1", [&](){ return event_t.temperature; }, true ); #endif; В итоге данные показываются, но только после того как из интерфейса - Система - Перезагрузка. После этого данные выводятся и больше не обновляются. Если модуль отключить от питания и снова включить то все по нулям, пока не перезагрузить снова софтварно. Заранее спасибо
  9. Ну если есть датчик, почему же не контролировать? Тем более в коде от @Kitsumэтот датчик прописан и остаётся только поменять OFF на ON. И во вторых это датчик углекислого газа и органических летучих соединений.
  10. а угарный газ где есть необходимость контроллировать? в котельной?
  11. Всем добрый день. На днях получил все необходимые датчики и корпус. Собрал всё. Проблем не возникло. Только на датчике CCS8111 контакт WAK надо подключить к GND на плате. После нескольких часов работы показания датчика улетели на максимум и так пробыли до рестарта ESP... Как вы думаете, с чем может быть проблема?? И еще, как можно допилить код для взятия показания VOC??? Немного про корпус для датчиков из Китая, вот немного фоток: Сам корпус серого цвета. посмотрим как поведет себя на улице
  12. @Kitsum Огромнейшее спасибо за проект! Валялась у меня как раз голая ESP-12F, вчера обвязал ее резисторами и прошил, все прекрасно взлетело. Под рукой был BMP180 и судя по коду BME280 перекрывает кучу датчиков. Выключил - обновил по воздуху - показания стали сниматься BMP180. Потестирую пару дней и перекину в текущую метеостанцию, в которой трудится ESP-01. В общем еще раз огромное спасибо! Вопрос, возможно уже поднимался в теме, но я ее всю еще не прочитал - почему бы исходники не двинуть в гитхаб? В теме 27 траниц, много всего полезного и дополнительного кода от других людей, думаю, есть тоже. Уверен, многие бы делали пул-реквесты с новыми фишками/датчиками, как например выше расчет точки росы или blynk
  13. Добрый день! Отключил логи датчиков в "sensors.add" и ESPшка вздохнула полной грудью (тем более когда много датчиков треки всё равно не строятся). Теперь при трёх параметрах от BME280 , трёх программных датчиках и 64 параметров от 4-х slave ардуин занято памяти 55952, свободно 25964. Теперь возможности прошивки соответствуют железу, которое собрал. Конечно, 70 диаграмм на одной странице - это каша. Можно ли как-то сделать не 2 закладки как сейчас "out" и "in" , а хотя бы 4-5. Заранее благодарен за ответ.
  14. Подключить можно, но нет смысла, т.к. датчики по i2c не рекомендуется подключать проводом длиннее 1,5 метров- могут глючить. А вот DS18B20 аполне можно подключать длинными проводами. Народ в сети заявлял об удачном подключении витой парой до 100 метров. Не проверял, но надежнее использовать экранированный кабель. УФ датчик еще не добавил себе, но буду делать вместе с датчиком освещенности температуры воздуха и грунта, влажности, пыли. У меня только все внешние данные передаются через NRF24 и орегоновские датчики ветра и осадков и температуры по своему протоколы на 433МГц.
  15. Пробовал вставлять куски кода по совету @post125, всё прошивается, но показания и круглая диаграмма на странице не отображается. Я думаю, это из-за того, что у меня подключен только один датчик. BMP280, с него берется только температура и давление. Поэтому не отображается точка росы. Нужные датчики приедут со дня на день. Как вы думаете, нормально ли будет подключить все датчики витой парой, в смысле использовать одну пару для питания всех датчиков, подключить их параллельно, а оставшиеся пары использовать для данных. Как раз 3 пары на 3 датчика. И еще мысли, идеи: можно подключить DS18B20 в герметичном корпусе и закопать его в землю на глубину 50 см( или больше, меньше...), тем самым измерять температура почвы, промерзание почвы, может будет полезно садоводам. Можно подключить UV датчик и поставить его на крышу, закрыв его светопрозрачным колпаком от обычного датчика движения. Тем самым получать показания уровня ультрафиолета... Как вы думаете?
  16. Благодарю за ответ. Включение консоли отгрызает еще порядка 2,5к ОЗУ. Загрузил, пишет: free ram: 11496 при попытке открыть веб странцу пишет: free ram: 10672 http: 10.185.19.74 /index.htm, 304 http: 10.185.19.74 /jquery.min.js.gz, 304 http: 10.185.19.74 /jquery.knob.min.js.gz, 304 http: 10.185.19.74 /md5.js.gz, 304 http: 10.185.19.74 /highcharts.js.gz, 304 http: 10.185.19.74 /favicon.ico, 304 free ram: 11496 веб страница, естественно не открывается, на синем фоне крутится стандартное колесо из белых точек. я не знаю чего не хватает, нет квалификации, чтобы что-то утверждать, но , как выяснил, при занятой памяти более 69к, веб страница уже не открывается. Все датчики со slave ардуин добавляются идентично: sensors.add(S3_0, device::out, 0x01, "out_3_0", out_3_0, true); sensors.add(S3_1, device::out, 0x01, "out_3_1", out_3_1, true); sensors.add(S3_2, device::out, 0x01, "out_3_2", out_3_2, true); sensors.add(S3_3, device::out, 0x01, "out_3_3", out_3_3, true); sensors.add(S3_4, device::out, 0x01, "out_3_4", out_3_4, true); sensors.add(S3_5, device::out, 0x01, "out_3_5", out_3_5, true); sensors.add(S3_6, device::out, 0x01, "out_3_6", out_3_6, true); и так далее наверное, в моей ситуации 29 параметров со slave ардуин + 3 програмных + 3 с BME280 и без консоли - это предел для ESP8266.
  17. Доброе время суток. Вы уверены, что это именно проблема с оперативной памятью? В консоль выводится какая-либо информация по ОЗУ? Если нет, то добавьте для теста, в Setup следующий код. cron.add(cton::time_10s, [&](){ Serial.printf("free ram: %u\r\n", ESP.getFreeHeap()); }); После этого запустить контроллер с прописанными 30-ю и более датчиками. Понаблюдайте за этим значением. Уточните, что вы имеете в виду под "полностью отрубается web ...", при заходе на страницу вы получаете ошибку, что запрашиваемая страница не найдена или что-то появляется? Я предполагаю, что проблема не с ОЗУ, а с тем, что все данные с датчиков, в том числе их структура и логи, передаются через объекты String, а не потоковым выводом. Думаю, что просто данных слишком много и все не поместилось. А т.к. данные представлены в формате json, который имеет строгий синтаксис, то при разборе вылетает ошибка, в следствии чего не создаются сенсоры в web интерфейсе и т.д. Если я прав, то стоит пересмотреть как способ формирование ответов сервера на API запросы, так и варианты хранения данных. @den48rus Если Вам еще нужна помощь, то сообщите какие изменения Вы уже вносили, какие пользовательские файлы используете и какие датчики?
  18. Добрый день! Дерзну ответить. У меня сделано так: 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. заливаете прошивку и точка росы должна появиться в веб-интерфейсе
  19. @Вадим Гречухин не могли бы вы поделить как это сделать?? Заранее спасибо. @Kitsum если вам не трудно, можно по подробнее: куда и как надо вставлять эти куски кода. Просто я не программист ни разу, трудновато мне это дается. Спасибо.
  20. Добрый день! Совсем упёрся в нехватку оперативной памяти ESP8266 - вместе с температурой, влажностью и давлением от BME280 , напряжением ESP, размером занятой памяти и уровнем WiFi могу добавить только 29 параметров передаваемых от slave ардуин. С добавление 30-го параметра полностью отрубается web-интерфейс. Можно ли для экономии памяти в круговых диаграммах выводить только часть данных, а полностью все данные отправлять по MQTT? Может, еще что-то можно частично отключить, чтобы высвободить оперативную память? Заранее благодарен за ответ.
  21. Доброе время суток. Заранее спасибо, что помогаете друг другу! Да, все это возможно. Например, для расчета точки росы Вам понадобятся показания температуры и влажности, а также функция которая и будет производить расчет. Вот её упрощенный вариант. /* Функция расчета точки росы */ float dewPoint(float t, float h) { float a = 17.271; float b = 237.7; float temp = (a * t) / (b + t) + log(h * 0.01); return (b * temp) / (a - temp); } Теперь можно объявить новый сенсор, но для начала опишем настройки для визуализации. knob_t *DP = new knob_t(-40, 125, ".1", "Точка росы", "°C"); Ну и сам сенсор, но помните, что он берет данные от других датчиков, которые должны быть объявлены. У меня они имеют идентификаторы out_temperature и out_humidity для температуры и влажности соответственно. sensors.add(DP, device::out, "out_dewPoint", [&](){ return dewPoint( sensors.get("out_temperature"), sensors.get("out_humidity") ); }); Вот в принципе и все не сложные операции. Для индикации изменения давления "к дождю" необходимо придумать какую-нибудь формулу, скорее всего уже есть наработки в интернете. Вопрос в том, какие параметры потребуются для этого. Лично мне в голову приходит мысль смотреть в логи с датчика давления и влажности, а также рассчитывать абсолютную влажность по ним и смотреть на тенденцию изменения абсолютной и относительной влажности. Для индикации можно использовать значение в процентах или придумать свою условную шкалу, но в любом случае придется рассчитать её приделы. В общем, нужна формула. Для LCD дисплея 20х4 Вам понадобится i2c конвертер, возможно он уже распаян на нем, в противном случае у Вас не хватит свободных портов для подключения. Далее все еще проще, скорее всего у Вас уже имеется библиотека для работы с ним, и наверное это она https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library Подключаем библиотеку и объявляем дисплей (например в основном .ino файле), убедитесь, что i2c адрес для дисплея никем не занят. #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 20, 4); Производим инициализацию дисплея, например, в конце функции setup. lcd.begin(); lcd.backlight(); Теперь создадим в планировщике задачу которая будет обновлять данные на дисплее каждые 30 секунд, опишем её сразу после инициализации дисплея. cron.add(cron::time_30s, [&](){ lcd.clear(); lcd.printf("Temperature %.1f C", sensors.get("out_temperature")); }); Первой строкой мы очищаем дисплей, а второй выводим данные. Естественно, что Вы можете изменять позицию курсора. Сразу отмечу, что я не проверял этот код, я просто опираюсь на описания библиотеки (LiquidCrystal_I2C.h) и её "родителя" (print.h) которые посмотрел на GitHub https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/blob/master/LiquidCrystal_I2C.h https://github.com/esp8266/Arduino/blob/master/cores/esp8266/Print.h Но общий смысл должен быть понятен. Что касаемо Blink, то мне с ним не приходилось сталкиваться, дать какие-то рекомендации со своей стороны затрудняюсь, нужно изучать API сервиса. Но я рад, что есть люди @Вадим Гречухин которые это уже реализовали. Перед установкой датчиков стоит обработать все открытые и подвергающиеся воздействия окружающей среды элементы диэлектрическим лаком. Сами сенсоры на время обработки лаком стоит закрыть чем ни будь чтобы не вывести их из строя. Обязательно убедитесь в их работоспособности после этих операций. Я старался размещать датчики сенсорами вниз, особенно фото датчики чтобы уменьшить количество оседаемой на них пыли, у меня её много т.к. проживаю чуть ли не в интимной близости от дороги. Ну а в будке, как мне кажется, лучше размещать их в средней части, на небольшом удалении друг от друга чтобы они не могли влиять на показания соседей. Все это мое субъективное мнение, основанное только на личном опыте. Далеко не факт, что он верный. Из достоверных источников известно точно, что сама будка должна быть расположена в теневой зоне на высоте пары метров от земли и не иметь вблизи других строений. В моем случае нарушены все эти правила т.к будка закреплена на мачте параболической антенны далеко даже не на первом этаже многоэтажного дома на расстояние 20 сантиметров от стены этого дома да еще и на солнечной стороне. В общем все это влияет на показания, но самое критичное это солнечная сторона, старайтесь найти место в тени на весь световой день. Скорее всего сенсоры вышли из строя. У меня аналогичная ситуация произошла с датчиком влажности и датчиком загрязнения воздуха после того как весной (в очередной раз) будка была повреждена и перестала выполнять свои прямые обязанности по защите датчиков. Судя по повреждениям, во время оттепели что-то прилетает с верхних этажей и уничтожает крайний конусный элемент будки. Следом после этого датчики заливает водой... Имейте это в виду при выборе места установки.
  22. Они там есть, только скрыты. Для того чтобы они были доступны через web-интерфейс необходимо раскомментировать в файле users_auto.h несколько строк. На рисунке показано какие. После это в на странице появится Жмём "полудомик" и получаем По поводу Blynk... Прикручивал сам, автор и так много сделал.. Каждый уже как бы пляшет от того что предоставлено в массы.
  23. Всем добрый вечер. @Kitsum спасибо большое за подробную инструкцию и скетч для метеостанции. Собрал 2. Одна на чипе CH340, другую на CP2102. Все работает прекрасно. Только для второй использовал настройку: "плата - Node MCU 0.9 ESP-12". Датчика BME280 у меня пока еще нет, но есть BMP280. От него работает только температура и давление. Хочу спросить, можно ли добавить расчет точки росы, индикацию изменения давления (типа " к дождю" и т.п.), добавить поддержу сервиса Blynk, добавить дисплей 2004. Вопрос не по программной части: как правильно расположить датчики в корпусе на улице? Сейчас ко мне едет из Китая такой корпус: планирую поставить BME280, BH1750 и CCS811. Как было бы правильно их с вашей точки зрения расположить. У меня сейчас уже год работают 2 метеостанции, одна в России, другая в Болгарии. Обе были куплены через сайт народного мониторинга. Но работают они плохо. Обе с датчиками AM2302, BMP085 (по моему такой...). Одна станция через пару месяцев работы стала показывать 99% влажность. Другая 99% влажность показывает только ночью. Датчики стоят на северных сторонах домов в распредкоробках, с отверстиями для вентиляции. Есть интересный момент, они предают на сайт еще и напряжение на ESP и уровень сигнала Wi-Fi. Можно ли и в вашу метеостанцию добавить отображение этих данных. Спасибо.
  24. @Nickson2006 доброе время суток. Скорее всего Вы не залили файлы из каталога data во flash память. Просмотрите еще раз инструкцию, после прошивки скетча необходимо залить файлы с помощью дополнительного плагина для Arduino IDE.
  25. Добрый вечер. Прошил свою NodeMCU в точности как указанно в инструкции. Arduino IDE ошибок при прошивке не выдавал. Точка поднялась, но при попытке зайти в web интерфейс ошибка 404. Но если в строке написать "http://192.168.4.1/api/sensors" то вижу следующие {"out_temperature":0.00,"out_humidity":0.00,"out_pressure":0.00,"out_light":0.00,"out_absoluteHumidity":0.00} Куда копать? Пробовал с 4 разных устройств. PS Arduino IDE v1.8.5 ESP8266, версия 2.4.2
  26. Спасибо, работает. А то не понимашь, то ли на облака смотреть, то ли на показания (облака , кстати, весьма симпатичные)
  27. @post125 доброе время суток. Все очень просто, по умолчанию никаких облаков нет, они подгружаются скриптом через 2 секунды после полной загрузки страницы. Ищите строку setTimeout(loadSky, 2000); Эта строка находится внутри функции sensorsStructure, которая в свою очередь отвечает за первоначальную отрисовку всех сенсоров. Просто замените эту строку на это $(".loading").fadeOut(2000); Это уберет анимацию загрузки страницы. После этих не хитрых операций Вы можете удалить фай cloud.css.gz и его распакованный вариант cloud.css (если он имеется) из флеш памяти микроконтроллера.
  1. Load more activity
×
×
  • Create New...