Comments (12)
Добрый день,
Думаю, это из-за того что у вас на чипе в SPIFFS уже сохранены настройки в которых нет ключа address.
Как вариант, добавьте временно сброс до заводских настроек первой строкой в setup, а после сброса удалите
void setup() {
factoryReset();
from kuhomon.
Фантастика! Без этой подсказки - я бы еще долго кувыркался. Успехов!
from kuhomon.
Спасибо, и вам
from kuhomon.
Подскажите, пожалуйста, в какую библиотеку входит функция factoryReset()?
from kuhomon.
Она прямо в коде main.cpp
https://github.com/kumekay/kuhomon/blob/master/src/main.cpp#L104-L109
from kuhomon.
Спасибо!
Извините за дилетантские вопросы. Инерция мышления - должен был сам проверить прежде, чем задавать вопрос.
from kuhomon.
В метеостанции на основе скрипта kumekay с датчиком температуры и влажности DHT22, датчиком содержания CO2 MH-Z19 и отправкой данных на Blynk зависают показания MH-Z19, при этом, значения температуры и влажности отправляются на сервер Блинка нормально. После перезагрузки устройства информация с MH-Z19 снова нормально отправляется на Блинк и читается на экране 128*64 какое-то время, затем снова показания с MH-Z19 "замерзают".
Детали - тут.
Тема на esp8266.ru висит с пятницы, но до сих пор - ни одного ответа по существу.
Помогите, пожалуйста, в очередной раз!
from kuhomon.
Вам нужно дожидаться начала пакета данных от сенсора. Либо скопируйте из моего кода
https://github.com/kumekay/kuhomon/blob/master/src/main.cpp#L123-L128
либо используйте
Serial.readBytesUntil() (https://www.arduino.cc/reference/en/language/functions/communication/serial/readbytesuntil/)
from kuhomon.
Использовал вашу функцию readCO2() в целом. К сожалению, положительного результата не добился - метеостанция работает не более 3 часов без перезагрузки. На мой взгляд, условие поиска старта пакета по сути похоже на проверку контр. суммы.
Протестировал другие подходы - безрезультатно.
И еще. Рекомендованный период обращения к датчику MH Z-19 - не менее 10 сек. Организовал цикл, в котором считывание данных с DHT - 1 сек, а с MH Z-19 - 20 сек - не помогло.
Что думаете?
from kuhomon.
Думаю, что где-то течет память. Может в моем коде (что вероятнее), может в библиотеках. Нужно будет повнимательнее мне глянуть
from kuhomon.
Прошу прощения, но я заблуждался, поверив то, что решение найдено после 24 часов работы простого скетча, в котором разнесено считывание с датчика и отправка на сервер, датчик
подключен непосредственно к UART без библиотеки SoftwareSerial.h и добавлено условие поиска старта пакета считывания данных с датчика. Оказалось, что сутки работы - это мало, чтобы делать однозначный вывод.
Метеостанция kumekay, с этими решениями проработала без малого 2 суток.
Сейчас отформатировал память модуля и загрузил простой скетч, который раньше проработал сутки. После нескольких ресетов (откл/вкл питания) скетч работает 6 часов. Перед этим после каждого ресета скетч работал 0,5...1 час. Буду ждать очередного зависания, но то, что проблема не в коде метеостанции - это очевидно. К тому же, судя по скринам в статье, метеостанция беспрерывно проработала по крайней мере 10 суток.
Ниже код загруженного скетча. Вас в нем ничего не настораживает?
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(13, 15); // GPIO15 (TX) and GPIO13 (RX)
#define mySerial Serial
char auth[] = "b0bf3e0d02f648c6b7aff07028хххххх";
//static byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //команда чтения
//byte response[9];
byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
unsigned char response[7];
byte crc = 0;
int co2, ppm;
int i = 0;
//kuh
void readCO2() {
// CO2
bool header_found {false};
// char tries {0};
mySerial.write(cmd, 9);
memset(response, 0, 7);
// Looking for packet start
while(mySerial.available() && (!header_found)) {
if(mySerial.read() == 0xff ) {
if(mySerial.read() == 0x86 ) header_found = true;
}
}
if (header_found) {
mySerial.readBytes(response, 7);
byte crc = 0x86;
for (char i = 0; i < 6; i++) {
crc+=response[i];
}
crc = 0xff - crc;
crc++;
if ( !(response[6] == crc) ) {
Serial.println("CO2: CRC error: " + String(crc) + " / "+ String(response[6]));
} else {
unsigned int responseHigh = (unsigned int) response[0];
unsigned int responseLow = (unsigned int) response[1];
unsigned int ppm = (256*responseHigh) + responseLow;
co2 = ppm;
Serial.println("CO2:" + String(co2));
}
} else {
Serial.println("CO2: Header not found");
}
}
/* void readCO2()
{
while (mySerial.available())mySerial.read();//очистка буфера UART перед запросом
memset(response, 0, 9);// очистка ответа
mySerial.write(cmd,9);// запрос
mySerial.readBytes(response, 9);//чтение 9 байт сенсора
//расчет CRC
crc = 0;
for (int i = 1; i <= 7; i++)
{
crc += response[i];
}
crc = ((~crc)+1);
{
//проверка CRC
if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) )
{
Serial.println("CRC error");
} else
{
ppm = (((unsigned int) response[2])<<8) + response[3];
Blynk.virtualWrite(V4, ppm);
Serial.println("CO2: " + String(ppm) + "ppm");
}
}
} */
void setup()
{
mySerial.begin(9600);
Serial.begin(9600);
Blynk.begin(auth, "ххххххххх", "ххххххххх", "blynk-cloud.com", 8442);
}
void loop(){
Blynk.run();
i++;
Serial.println("time: " + String(i) + " *10s");
if (i>=60) i = 0;
readCO2();
Blynk.virtualWrite(V4, co2);
delay(10000);
}
from kuhomon.
Код выглядит в порядке. Может что-то из библиотек?
from kuhomon.
Related Issues (16)
- BMP085 library
- Обсуждение и доработки проекта HOT 2
- Проверенные комплектующие и магазины HOT 1
- Релехи HOT 4
- Fritzing - проблемы с компонентами HOT 2
- MH-Z19B 'CO2: Header not found' HOT 4
- blynk сдох, оффлайн мода нет HOT 2
- плата висит в состоянии Loading... HOT 12
- bme-280 и датчик пыли GP2Y1014AU0F HOT 11
- Код для модификации с одним bme280 вместо пары bmp280+si702 HOT 18
- BME280 в README.md HOT 1
- Добавить на главном экране иконки доступности блинка и подключения к wifi HOT 1
- Отображать все значения на одном экране HOT 2
- Add offline support (show data on screen without WiFi) HOT 4
- Fix factory reset during setup() HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kuhomon.