Jump to content
iT4iT.CLUB

All Activity

This stream auto-updates     

  1. Earlier
  2. Спасибо большое за объяснение. Всё заработало. Точка росы появилась. Я немного опишу, как я это сделал. Вдруг есть на форуме люди, которые тоже как и я "на вы" с программированием. Сначала саму формула расчета точки росы вставил ниже формулы расчета абсолютной влажности во вкладке tools.h примечание: компилятор ругался на какие-то ошибки в строке 183. Быстро погуглив, нашел решение. Там где необходимы пробелы расставил именно пробелы, там где tab, именно tab. Говорят, что при копировании части кода из форума, эти вещи могут некорректно вставиться или по простому "не надо тащить всякий хлам в код" цитата... После добавил визуализацию во вкладку users_auto.h. Вставил следующую часть кода. И там же добавил сенсор. Вот собственно и всё. После давил отправку показаний на народный мониторинг и thingspeak. Всё это делал во вкладке services.h Там всё интуитивно понятно. Даже я разобрался сразу. Только для thingspeak максимальное количество датчиков 8, для народного мониторинга можно больше. Но чаще можно отправлять данные в thingspeak и там можно добавлять красивую стрелочную анимацию показаний и делать расчеты и анализ в matlab, соответственно зная или немного разбираясь в языке программирования matlab. Еще пара слов про датчик CO2. Работает он не очень корректно. Данные часто убегают в космос. Не думаю что в моей местности часто имеют место какие-то резкие выбросы CO2 и воздух настолько загрязнен. Думаю дело в калибрации датчика по температуре. Посмотрим как поведет себя датчик в холода, когда займет свое место на улице. К сенсору освещенности вопросов нет. Спасибо за помощь. Всем удачи!
  3. Доброе время суток @den48rus Идеологически все файлы имена которых начинаются с префикса users_ считаются примерами. По факту Вы можете использовать только один из таких файлов в данном проекте. Каждый из файлов описывает ту или иную ситуацию использования микроконтроллера со своими датчиками и различными расчетами. После того, как определитесь какой пример Вам больше подходит, то в коде основного файла оставляете только этот файл подключенным через оператор #include, а все остальные users_ файлы необходимо закомментировать. Тут все еще проще. Формула, в нашем случае, это просто функция, а следовательно она должна быть в области видимости того блока который её вызывает. Самый простой вариант, это разместить ее в том же файле где ее вызывают. Иногда бывает необходимость доступа к функции или объекту из нескольких точек в проекте, тогда можете разместить свой код, например, в tools.h Вот пример размещение функции расчета абсолютной влажности которая потом используется в пользовательских сенсорах и не только. Да, Вы уже имеете доступ к журналу за последние сутки, можете производить расчеты и делать выводы. А вот как это отображать, стоит подумать... По умолчанию предполагалось, что все сенсоры предоставляют данные в числовом виде, от этого и соответствующий вид сенсоров. В таком случае Вы должны или придумать числовое представление: 0 - стабильно, -99 - к дождю, а 99 в засухе. Или придумать свой виджет. Вы даже можете сделать отдельную страничку для этого, в общем есть над чем подумать. PS: прошу прощение за долгие ответы, не всегда имею возможность отписаться.
  4. Всем добрый день. Продолжаю мучать метеостанцию... Никак не могу добавить расчет точки росы. Добавлять формулу расчета и другие параметры надо во вкладку users_auto.h ?? Далее. Но куда вставить формулу?? Я далек от программирования... Не могли бы вы пошагово объяснить?
  5. https://youtu.be/18yeKmep-P8 Отличная идея для метеостанции) как вам?! Можно ли реализовать это на веб странице?! Или как доп модуль.
  6. Здравствуйте, можно ли с этого места по подробней. Никак не могу организовать добавление записей в базу данных на сервер в интернете. Все получается в локальной сети, а вот на хостинге не получается. Все сайты, подобные "народному мониторингу ", используют специальный ключ, что бы принимать данные с определенной платы ардуино. Как это можно реализовать на своем сайте в интернете?
  7. @makkirus рад, что Вы получили данные, но в предоставленном логе присутствуют ошибки. Это как минимум разрыв соединения с MySQL сервером и отсутствие прав на запись логов. Но это уже не связано с демоном.
  8. Доброе время суток. У меня на практике получилось использовать экранированный медный ethernet кабель UTP 5E, общей длинной около 7 метров. Это были два отрезка для подключения двух датчиков BME280, один в помещении, другой на улице. Использовал по одной паре на каждый из контактов датчика - SDA, SCL, VCC и GND. Можно сажать датчики друг за другом, не обязательно тянуть до каждого свой кабель, в моем случае это была необходимость для выноса одного датчика на улицу. Главное ограничение, это общая емкость линии, если память не подводит, то она не должна превышать 400pF. Также стоит помнить, что на всех Китайских I2C модулях распаяны подтягивающие резисторы, соответственно их количество растет пропорционально количеству модулей, а это не очень хорошо, хотя вполне работоспособно. Но имейте в виду, что это может сказаться на работоспособности и тогда будет необходимо убрать все подтяжки на модулях и поставить два резистора на стороне микроконтроллера. Идея интересная, нужно экспериментировать особенно с ультрафиолетом и тем пройдет ли он через пластиковую линзу, если пройдет то какой - А или В... По умолчанию датчик CCS811 уже измеряет VOC. Обратите внимание на метод читающий показания с датчика. ccs811.read(&eco2, &etvoc, &errstat, &raw); В примере мы возвращали значение eco2, просто начните возвращать etvoc, и не забудьте поменять описание для сенсора в web. Я полагаю, что Вы используете эту библиотеку https://github.com/adafruit/DHT-sensor-library, попробуйте сделать следующие действия. Подключите библиотеку, освободите (программно тоже) один из портов микроконтроллера для подключения датчика, объявите датчик DHT22 и описание для web. #include "DHT.h" DHT dht(10, DHT22); // Замените 10-ый порт на свободный knob_t *T = new knob_t(-40, 125, ".1", "Температура", "°C"); knob_t *H = new knob_t( 0, 100, ".01", "Влажность", "%"); Далее в блоке с описанием сенсоров, например в функции sensors_config произведем инициализацию датчика и объявим сенсор температуры и влажности. dht.begin(); sensors.add(T, "out_temperature", [&](){ return dht.readTemperature(); }); sensors.add(H, "out_humidity", [&](){ return dht.readHumidity(); }); В теории должно заработать. Проект слишком дырявый чтобы выкидывать его как что-то серьезное на github.
  9. Вы правы, не было в системе модуля. Теперь все ок. Данные в базе есть. Для отладки запустил с параметром window и вот что на экране в консоли. Результат такой: sudo -u mqtt-agent /media/mqttMySqlClient.py window 2019-07-23 00:57:03 connecting to MQTT broker... 2019-07-23 00:57:03 mysql connected 2019-07-23 00:57:03 mqtt connected client id: mqttMySqlClient 2019-07-23 00:57:03 mqtt subscribe on "#" 2019-07-23 00:57:03 mqtt subscribe on "$SYS/#" 2019-07-23 00:57:03 mysql disconnect 2019-07-23 00:57:03 connecting to MQTT broker... 2019-07-23 00:57:03 mqtt connected client id: mqttMySqlClient 2019-07-23 00:57:03 mqtt subscribe on "#" 2019-07-23 00:57:03 mqtt subscribe on "$SYS/#" 2019-07-23 00:57:03 mysql [2006] 2019-07-23 00:57:03 mysql [2006] 2019-07-23 00:57:03 mysql [2006] 2019-07-23 00:57:03 mysql [2006] 2019-07-23 00:57:03 mysql ping fail [2006] 2019-07-23 00:57:03 unexpected termination of the program Traceback (most recent call last): File "/media/mqttMySqlClient.py", line 305, in <module> start() File "/media/mqttMySqlClient.py", line 188, in start alert('\nunexpected termination of the program', True) File "/media/mqttMySqlClient.py", line 46, in alert with open(mysql_log_file, 'a+') as log: IOError: [Errno 13] Permission denied: '/var/log/mqttMySqlClient.log' esp-master@mqtt:~$
  10. Доброе время суток @makkirus Ошибка явно указывает на то, что интерпретатор не знает ничего о библиотеки paho-mqtt, возможно ее попросту нет. Внимательно проверьте, все ли пункты инструкции Вы выполнили. Например под Linux Ubuntu посмотреть установлена библиотека или нет можно следующей командой. pip list | grep paho-mqtt В ответе Вы должны получить что-то подобное paho-mqtt (1.4.0) А для отладки запускайте демона с параметром window mqttMySqlClient.py window Если Вы все правильно сделали, то результат должен быть примерно таким
  11. Отличная статья! Огромное спасибо! Помогите решить проблему У меня при старте демона возникает проблема: Traceback (most recent call last): File "/media/mqttMySqlClient.py", line 9, in <module> import paho.mqtt.client as mqtt # https://pypi.python.org/pypi/paho-mqtt ImportError: No module named paho.mqtt.client Пожалуйста, подскажите как её решить?
  12. скетч ардуины, принимающей данные с орегонов INT_oregon-arduino_wind_rain_1_3_4_temp_slave1_7-7-19.zip
  13. Добрый день! У меня все внешние датчики подключаются к ESP через ардуины про мини, подключенные по шине i2c как slave. Данные от датчиков Орегон считываются одной из таких ардуин с приемником на 433МГц. Принимаю данные от 1-го датчика ветра WGR800, 1-го датчика осадков PCR800 и трёх термогигрометров THGR810. Данные всех пяти датчиков принимаются со статусом питания, если его не читать, можно еще добавить два термогигрометр. Полный скетч в приложении. Там еще добавлен экран nextion. Его можно не подключать, без него работает нормально. скетч до конца не отработан. Проверен вебсервер ESP и народный мониторинг. MQTT знаю, что работает, но на всех датчиках еще не проверил. INT_Meteo_D_4slaves_nextion4x16_mqtt_10-7-19.zip
  14. CCS811 измеряет не только СО2 , но и другие летучие в-ва, которые косвенно то же будут влиять на показания СО2, отсюда точность по СО2 может уплывать. Его удобно использовать для мониторинга качества воздуха в помещении и организации проветривания. MH-Z19 - инфракрасный датчик только для СО2, к летучим органическим в-вам он нечувствителен, он у меня стоит в теплице для "научного мониторинга"
  15. Интересно, обо датчика измеряют CO2, но разница в размерах и цене огромная...
  16. это я невнимательно посмотрел, на алиэкспрессе увидел неправильный перевод описания датчика CCS8111. Там было указано угарный газ (CO). я себе для мониторинга CO2 поставил MH-Z19, поэтому с CCS8111 не знакомился.
  17. Всем доброго времени суток. Подскажите пожалуйста, может кто успешно прикрутил 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; В итоге данные показываются, но только после того как из интерфейса - Система - Перезагрузка. После этого данные выводятся и больше не обновляются. Если модуль отключить от питания и снова включить то все по нулям, пока не перезагрузить снова софтварно. Заранее спасибо
  18. Ну если есть датчик, почему же не контролировать? Тем более в коде от @Kitsumэтот датчик прописан и остаётся только поменять OFF на ON. И во вторых это датчик углекислого газа и органических летучих соединений.
  19. а угарный газ где есть необходимость контроллировать? в котельной?
  20. Всем добрый день. На днях получил все необходимые датчики и корпус. Собрал всё. Проблем не возникло. Только на датчике CCS8111 контакт WAK надо подключить к GND на плате. После нескольких часов работы показания датчика улетели на максимум и так пробыли до рестарта ESP... Как вы думаете, с чем может быть проблема?? И еще, как можно допилить код для взятия показания VOC??? Немного про корпус для датчиков из Китая, вот немного фоток: Сам корпус серого цвета. посмотрим как поведет себя на улице
  21. @Kitsum Огромнейшее спасибо за проект! Валялась у меня как раз голая ESP-12F, вчера обвязал ее резисторами и прошил, все прекрасно взлетело. Под рукой был BMP180 и судя по коду BME280 перекрывает кучу датчиков. Выключил - обновил по воздуху - показания стали сниматься BMP180. Потестирую пару дней и перекину в текущую метеостанцию, в которой трудится ESP-01. В общем еще раз огромное спасибо! Вопрос, возможно уже поднимался в теме, но я ее всю еще не прочитал - почему бы исходники не двинуть в гитхаб? В теме 27 траниц, много всего полезного и дополнительного кода от других людей, думаю, есть тоже. Уверен, многие бы делали пул-реквесты с новыми фишками/датчиками, как например выше расчет точки росы или blynk
  22. Добрый день! Отключил логи датчиков в "sensors.add" и ESPшка вздохнула полной грудью (тем более когда много датчиков треки всё равно не строятся). Теперь при трёх параметрах от BME280 , трёх программных датчиках и 64 параметров от 4-х slave ардуин занято памяти 55952, свободно 25964. Теперь возможности прошивки соответствуют железу, которое собрал. Конечно, 70 диаграмм на одной странице - это каша. Можно ли как-то сделать не 2 закладки как сейчас "out" и "in" , а хотя бы 4-5. Заранее благодарен за ответ.
  23. Подключить можно, но нет смысла, т.к. датчики по i2c не рекомендуется подключать проводом длиннее 1,5 метров- могут глючить. А вот DS18B20 аполне можно подключать длинными проводами. Народ в сети заявлял об удачном подключении витой парой до 100 метров. Не проверял, но надежнее использовать экранированный кабель. УФ датчик еще не добавил себе, но буду делать вместе с датчиком освещенности температуры воздуха и грунта, влажности, пыли. У меня только все внешние данные передаются через NRF24 и орегоновские датчики ветра и осадков и температуры по своему протоколы на 433МГц.
  24. Пробовал вставлять куски кода по совету @post125, всё прошивается, но показания и круглая диаграмма на странице не отображается. Я думаю, это из-за того, что у меня подключен только один датчик. BMP280, с него берется только температура и давление. Поэтому не отображается точка росы. Нужные датчики приедут со дня на день. Как вы думаете, нормально ли будет подключить все датчики витой парой, в смысле использовать одну пару для питания всех датчиков, подключить их параллельно, а оставшиеся пары использовать для данных. Как раз 3 пары на 3 датчика. И еще мысли, идеи: можно подключить DS18B20 в герметичном корпусе и закопать его в землю на глубину 50 см( или больше, меньше...), тем самым измерять температура почвы, промерзание почвы, может будет полезно садоводам. Можно подключить UV датчик и поставить его на крышу, закрыв его светопрозрачным колпаком от обычного датчика движения. Тем самым получать показания уровня ультрафиолета... Как вы думаете?
  25. Благодарю за ответ. Включение консоли отгрызает еще порядка 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.
  26. Доброе время суток. Вы уверены, что это именно проблема с оперативной памятью? В консоль выводится какая-либо информация по ОЗУ? Если нет, то добавьте для теста, в Setup следующий код. cron.add(cton::time_10s, [&](){ Serial.printf("free ram: %u\r\n", ESP.getFreeHeap()); }); После этого запустить контроллер с прописанными 30-ю и более датчиками. Понаблюдайте за этим значением. Уточните, что вы имеете в виду под "полностью отрубается web ...", при заходе на страницу вы получаете ошибку, что запрашиваемая страница не найдена или что-то появляется? Я предполагаю, что проблема не с ОЗУ, а с тем, что все данные с датчиков, в том числе их структура и логи, передаются через объекты String, а не потоковым выводом. Думаю, что просто данных слишком много и все не поместилось. А т.к. данные представлены в формате json, который имеет строгий синтаксис, то при разборе вылетает ошибка, в следствии чего не создаются сенсоры в web интерфейсе и т.д. Если я прав, то стоит пересмотреть как способ формирование ответов сервера на API запросы, так и варианты хранения данных. @den48rus Если Вам еще нужна помощь, то сообщите какие изменения Вы уже вносили, какие пользовательские файлы используете и какие датчики?
  1. Load more activity
×
×
  • Create New...