Devilisimo
Пользователи-
Публикации
29 -
Зарегистрирован
-
Посещение
-
Дней в лидерах
2
Тип публикации
Профили
Форум
Блоги
Календарь
Файлы
Все публикации пользователя Devilisimo
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
@Kitsum Снова прошу совета у более опытного Автора. D5 и D3 кнопки, при подтяжке программно кнопки не работают, у них есть некое сопротивление. Если идти по классическому варианту - подтянуть сопротивлением 10кОм на 3,3В, то какое-то время работает, но загрузка через USB не работает "error: espcomm_upload_mem failed". Подскажите как сделать правильно. Мой код для понимания.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Да, спасибо. Сам понял свою ошибку. Не нужно переименовывать: out_pressure - in_temperature. И тогда будет счастье. Эти имена действительно завязаны с web-страницей.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
@Kitsum Вопрос у меня совсем не к оформлению, меня все устраивает)) Вопрос почему только данные освещенности отображаются на графике, мне нужны хотя бы стандартные - давление, влажность и температура. Может проблема в именование датчиков? Как их правильно назвать, что данные поттягивались?- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
@Kitsum Соответственно хотел спросить такой вопрос. На суточном графике нет отображения всех параметров. Что на это влияет? Графики по каждому отдельно параметру отображаются без проблем.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
В проекте было активировано по сути два датчика - CCS811 и BME. Пробовал разное количество и комбинации. Конфигурация как таковая и до этого была, просто не были прописаны настройки . Settings Про Nano Вы совершенно правы. После добавления расширенных настроек все датчики стали исправно работать. В интернете читал про необходимость активации функций датчика, возможно это помогает.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Добрый день. Очень долго мучался с данной проблемой, прям спать не мог. Почему-то решение пришло неожиданно, после проверки датчиков на nano. Добавил конфигурацию датчиков и все снова заработало, не знаю с чем бы это могло быть связано. До этого почему-то работало в упрощенном режиме без проблем. 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);- 859 ответов
-
- 1
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Спасибо за совет. Пытаюсь вернуться к датчику BME280. Столкнулся с неопреодолимым сопротивлением. Показания на нулях. Датчик CCS811 и дисплей на шине работает исправно. Пробовал разные датчики, в т.ч. BH1750. Пробовал сброс и перепрошивку на старую, рабочую точно, версию. Не понимаю что происходит. {"out_light":-2.00,"CCS811_ppm":692.00,"CCS811_ppb":44.00,"BME280_in_temperature":0.00,"BME280_in_humidity":0.00,"BME280_in_pressure":0.00,"rssi":-62.00} Уже просто замкнутый круг.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Добрый день спасибо за Ваши советы, но я хотел бы уточнить.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Не совсем понимаю для чего это делать нужно. Я использую GPIO-0 и 14 для кнопок, они подтянуты функцией INPUT_PULLUP. На GPIO-15 почему-то кнопка не заработала, хотя как реле он работает. GPIO-12 и 13 я использую для управления реле, изначальная функция отключена. На GPIO-2 (D4) подключен датчик DHT22 , иногда почему-то показания падают на нули. Все работает почти стабильно, правда пришлось увеличить время опроса датчиков до 10с., но это не так важно. Функционал станции: датчики наружные BME280 и BH1750, показания буду отправлять на народный мониторинг; внутри датчик DHT22 и CCS811; по показаниям СО и TVOC при соблюдении внутренней температуры и влажности будет открываться окно для проветривания; с кнопок можно так же можно открыть/закрыть и через команду mqtt, например с телефона. Соответственно вопрос, как влияет функция индикации и что нужно подправить в изначальном коде, что бы не было мучительно больно?- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Kitsum Уважаемый автор. Благодарю за развернутые ответы. Прошу подсказать про Вашу функцию "индикация состояния". Если я правильно понимаю, то она задействует пины 0 и 2? Какие еще пины задействованы "неявно"? /* Индикация состояния контроллера */ class smartBlink { public: /* доступные порты */ typedef enum { gpio0 = 0, gpio2 = 2, // NodeMCU } port_t;- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
@Kitsum Прошу помощь советом. Данный код для опроса управления GPIO. При планомерной работе все хорошо. Если включить подряд несколько выходов, подать команду. Происходит срабатывание только последнего выхода в списке команд. Может чем-то поможете.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Kitsum подскажите пожалуйста. Прошил модуль nodemcu_integer_0.9.5_20150318 через nodemcu firmware programmer. Скетч заливается успешно и даже как-то работает. Но залить файлы в память не удается, ошибка SPIFFS Create Failed! В чем может быть причина? Прошивки AT20SDK93 и подобные не работают, сыпятся ошибки.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Добрый день. Заказал на али плату Wavgat D1 mini, так понимаю это аналог Wemos D1 mini? Загрузить ничего на него не получается и файлы в флеш прошить тоже. Может подскажете что-то, раз имели практику работы.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
post125 библиотека: https://github.com/olikraus/U8g2_Arduino/archive/master.zip Kitsum Я разобрался c данной проблемой, ниже выкладываю код, вероятно он не идеален, но работает. Пока сделал функции для управления реле. В мыслях есть создание функций для управление нагрузкой через ШИМ на основе мосфетов. Какие модули можете посоветовать? https://ru.aliexpress.com/item/Milight-LS4-0-1-10/32852443849.html?spm=a2g0s.13010208.99999999.259.101e3c00l1IpCP https://ru.aliexpress.com/item/Mosfet-MOS/32878055897.html?spm=a2g0s.13010208.99999999.271.101e3c00l1IpCP https://ru.aliexpress.com/item/High-Current-MOSFET-Switch-Module-DC-Fan-Motor-LED-Strip-Driver-Steples/32661148624.html?spm=a2g0s.13010208.99999999.265.101e3c00l1IpCP // Универсальная подписка на выключатель в формате "switch/'имя нашего esp'/switch'№gpio'" void subgpio(byte gpio){ String strpath; strpath += "switch/"; strpath += conf.param("mqtt_path"); strpath += "/switch"; strpath += String(gpio); mqttAPI.subscribe(strpath.c_str()); } //Проверка выключателей по подписке boolean callswitch(String topic, String msg, byte gpio){ boolean sw; if (conf.param("mqtt_path").length()) { String strpath; strpath += "switch/"; strpath += conf.param("mqtt_path"); strpath += "/switch"; strpath += String(gpio); mqttPublish("switch/on",strpath); String sending; if ((topic == strpath) and ((msg == "on") or (msg == "ON") or (msg == "On"))) { sw = true; sending += "sw_status_"; sending += String(gpio); sending += "_send_GPIO"; mqttPublish("switch/on",sending); } else if ((topic == strpath) and ((msg == "off") or (msg == "OFF")) and sw == true) sw = false; } return sw; }- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
ESP8266_WS_V2.0_iT4IT.CLUB.7z Если кому-то интересно выкладываю свою версию, она пока сырая, но работает. Начал строить свой "умный" дом, броккер установил на малинку, рулим всем через Node-red. Очень удобно. Пока допиливаю управление gpio через mqtt. Хотел спросить у автора - так понимаю реализована функция, что если нет вай-фая, то переходит в режим точки доступа. Соответственно все данные по старому подключению стираются? Если дома отключился свет или еще что-то. Если мы хотим только через одно подключение делать все, то надо жестко его будет прописать?- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Все супер, заработало. Еще нужна небольшая подсказка. Хочу сделать универсальную подписку: switch2 = "switch/" + conf.param("mqtt_path") + "sw2"; mqttAPI.subscribe(switch2); Ругается: no matching function for call to 'PubSubClient::subscribe(String&)' Какого типа должна быть переменная?- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Сделал по Вашем рекомендациям. void callback(char* topic, byte* payload, unsigned int length) { String msg = "M="; for (unsigned int i = 0; i < length; i++) msg += (char)payload[i]; char measurementa [12]; msg.toCharArray(measurementa, 12); u8g2.setFont(u8g2_font_inb19_mf); u8g2.drawStr((128 - u8g2.getStrWidth(measurementa))/2, u8g2.getAscent() - u8g2.getDescent(), measurementa); u8g2.sendBuffer(); #ifdef console console.println(F("services: callback data from MQTT server")); #endif } Пока сделал тупо для вывода на экран. Ничего не получилось, хотя данные на броккер отправляются. /* Список топиков на которые необходимо оформить подписку */ mqttAPI.subscribe("Odincovo/TVOC"); mqttAPI.subscribe("Odincovo/BME280_out_temp"); Еще вопрос как будут разделены данные при подписке на несколько топиков. /* Список топиков на которые необходимо оформить подписку */ mqttAPI.subscribe("weather_station/lcd/topic_name"); Почему Вы указываете название топика с двумя "/", т.е. может я как-то не так указываю адрес, хотя не телефоне все отображается?- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Добрый день. Все же не до конца понимаю. client.subscribe - функция по чтению или подписке на данные. Как сделать универсально для запроса данных. Сделал по Вашему научению так: void callback(char* topic, byte* payload, unsigned int length) { #ifdef console console.println(F("services: callback data from MQTT server")); #endif } void readDataFromMQTT() { // баг при прямой передаче значения (c_str) из конфига в setServer (не забыть поправить!) String server = conf.param("mqtt_server"); mqttAPI.setServer(server.c_str(), 14728); //1883 mqttAPI.connect(WiFi.hostname().c_str(), (conf.param("mqtt_login").length() ? conf.param("mqtt_login").c_str() : 0), (conf.param("mqtt_pass").length() ? conf.param("mqtt_pass").c_str() : 0) ); mqttAPI.setCallback(callback); if (!mqttAPI.connected() and wifi.transferDataPossible()) { if(mqttAPI.connect(WiFi.hostname().c_str())) { mqttAPI.subscribe("Odincovo/TVOC"); } } } cron.add(cron::time_5m, sendDataToMQTT); // Отправка данных MQTT брокеру cron.add(cron::time_5m, readDataFromMQTT); // Получение данных MQTT брокеру Нужно ли каждый раз передавать настройки сервера и сети? Можно ли сделать функцию числовую float readDataFromMQTT(string topic) Что чтение будет это понятно, не могу понять как вытащить данные и передать дальше?- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Прошу помощи по второму вопросу. Как реализовать функцию чтения данных с сервера MQTT, для дальнейшего вывода на дисплей.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Беру свои слова обратно. Работает виноват китайский дисплей - SCL и SDA перепутаны.- 859 ответов
-
- 1
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Добрый день. Появились еще глупые вопросы. Решил подключить к станции дисплей SSD1306 128x64 I2C. Позаимствовал часть кода создал функцию. void draw() { u8g2.clearBuffer(); // test const char pi[] {"HI pipi"}; u8g2.setFont(u8g2_font_6x12_mf); x = (128 - u8g2.getStrWidth(pi)) / 2; y = y + 2 + u8g2.getAscent() - u8g2.getDescent(); u8g2.drawStr(x, y, pi); // Cycle other meauserments String measurement {"..."}; const char degree {176}; // Switch every 3 seconds switch((millis() / 3000) % 3) { case 0: { measurement = "T: " + String(sensors.get("out_temperature")) + degree + "C"; } break; case 1: { measurement = "H: " + String(sensors.get("out_humidity")) + "%"; } break; default: { measurement = "P: " + String( sensors.get("out_pressure")) + " mmHg"; } } char measurementa [12]; measurement.toCharArray(measurementa, 12); u8g2.setFont(u8g2_font_9x18_mf); x = (128 - u8g2.getStrWidth(measurementa))/2; y = 64 + u8g2.getDescent(); u8g2.drawStr(x, y, measurementa); u8g2.sendBuffer(); } добавил // Init display u8g2.begin(); /* Добавление в планировщик заданий отрисовкe данных */ cron.add(cron::time_1m, draw); // Вывод на экран // GPIO Defines #define I2C_SDA 5 // D1 #define I2C_SCL 4 // D2 // Use U8g2 for i2c OLED Lib #include <SPI.h> #include <U8g2lib.h> U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, I2C_SCL, I2C_SDA, U8X8_PIN_NONE); Ну и как Вы наверное уже догадались у меня ничего не выходит на экран. Прошу по возможности помочь советом.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Да, так все работает. Хотел уточнить по настройке mqtt // баг при прямой передаче значения (c_str) из конфига в setServer (не забыть поправить!) String server = conf.param("mqtt_server"); mqttAPI.setServer(server.c_str(), 1883); mqttAPI.connect(WiFi.hostname().c_str(), (conf.param("mqtt_login").length() ? conf.param("mqtt_login").c_str() : 0), (conf.param("mqtt_pass").length() ? conf.param("mqtt_pass").c_str() : 0) ); Решил воспользоваться сервером https://www.cloudmqtt.com/ Хотел уточнить что нужно исправить и где указать порт, так понимаю в программе порт 1883?- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Добрый день. Хотел спросить у автора. У Вас описана реализация датчика ccs811. Начал с ним работать и выяснил неприятный момент, даже два. Сначала он вообще не стал работать и утащил за собой bme680, при этом bme280 исправно давал данные. Начал копать и нашел тонкость - нужно добавить код: #if SENSOR_CCS811 #include <ccs811.h> //CCS811 ccs811; - так не работает CCS811 ccs811(D3); // nWAKE to D3 #endif Сначала я обрадовался, т.к. все заработало. Но потом показания пропадают примерно через минуту, так повторяется каждый раз при перезагрузке. Может Вы уже столкнулись и решили проблемы работы с данным датчиком? Чтение данных взято из Вашего примера: /* датчики CO2 CCS811 */ #if SENSOR_CCS811 sensors.add(C, device::in, 0x5A, "CCS811_ppm", [&](){ ccs811.begin(); ccs811.start(CCS811_MODE_1SEC); }, [&](){ uint16_t eco2, etvoc, errstat, raw; ccs811.read(&eco2, &etvoc, &errstat, &raw); return eco2; }, true); #endif В инструкции написано: Connect the WAKE pin to ground. Так работает.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Еще раз благодарю за развернутый ответ. В связи с экспериментами с датчиками качества воздуха, в частности сейчас пробую BME680, встал вопрос как сделать строку с меняющимся значением не числовым. Например: knob_t *GAS = new knob_t( 0, 300, ".1", "Gas", CalculateIAQ(bme680.gas_resistance / 1000.0)); Компилятор ругается: 'CalculateIAQ' was not declared in this scope Хотя создал процедуру. String CalculateIAQ(float score){ String IAQ_text = "IAQ "; score = (100-score)*5; if (score >= 301) IAQ_text += "Hazardous"; else if (score >= 201 && score <= 300 ) IAQ_text += "Very Unhealthy"; else if (score >= 176 && score <= 200 ) IAQ_text += "Unhealthy"; else if (score >= 151 && score <= 175 ) IAQ_text += "Unhealthy for Sensitive Groups"; else if (score >= 51 && score <= 150 ) IAQ_text += "Moderate"; else if (score >= 00 && score <= 50 ) IAQ_text += "Good"; return IAQ_text; } Порекомендуйте красивое решение.- 859 ответов
-
- web server
- mqtt
- (и ещё 8)
-
Метеостанция на ESP8266 от it4it.club
Devilisimo ответил в тему пользователя Kitsum в Espressif Systems
Прошу подсказать автора о настройках страниц. Хотелось бы сделать несколько вкладок для разных комнат. Сейчас есть переключение наружные/внутренние датчики. В каком месте это настраивается?- 859 ответов
-
- web server
- mqtt
- (и ещё 8)