Devilisimo
-
Публикации
29 -
Зарегистрирован
-
Посещение
-
Дней в лидерах
2
Сообщения, опубликованные пользователем Devilisimo
-
-
Еще хотел спросить у автора, где находятся настройки для построения графиков, как добавить туда дополнительные переменные?
-
Добрый день.
Еще раз выражу свое восхищение данным проектом.
Если кто-то сможет, прошу подсказки. Добавил в данный проект датчик CO2 mh-z19, вроде все скомпилировалось, но данные не приходят с датчика.
Скрытый текст#ifndef USERS_H
#define USERS_H
#define MH_Z19_RX 13 // D7
#define MH_Z19_TX 12 // D6#include <BME280I2C.h> // https://github.com/finitespace/BME280
// SoftSerial for MH-Z19
#include <SoftwareSerial.h> // https://github.com/plerup/espsoftwareserial
//#include <MHZ19.h>
SoftwareSerial co2Serial(MH_Z19_RX, MH_Z19_TX); // define MH-Z19BME280I2C::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);
/* Параметры индикаторов web интерфейса для плагина Knob
Мин Макс Шаг Заголовок Ед. измер.
|---------------------|----|------|------|--------------|---------| */
knob_t *T = new knob_t( -40, 50, ".1", "Температура", "°C");
knob_t *P = new knob_t( 0, 900, ".1", "Давление", "mm");
knob_t *H = new knob_t( 0, 100, ".1", "Влажность", "%");
knob_t *AH = new knob_t( 0, 100, ".1", "Влажность", "г/м³");
knob_t *PPM = new knob_t(-400, 5000, ".1", "CO2", "ppm");/* Функции, описывающие инициализацию датчиков */
void out_init() { BME_OUT.begin(); }
void in_init() { BME_IN.begin(); }/* Функции, описывающие как получить от внешнего датчика те или иные данные */
float out_temp() { return BME_OUT.temp(BME280::TempUnit_Celsius); }
float out_hum() { return BME_OUT.hum(); }
float out_pres() { return BME_OUT.pres(BME280::PresUnit_torr); }/* Функции, описывающие как получить от внутреннего датчика те или иные данные */
float in_temp() { return BME_IN.temp(BME280::TempUnit_Celsius); }
float in_hum() { return BME_IN.hum(); }
float in_pres() { return BME_IN.pres(BME280::PresUnit_torr); }float readCO2()
{byte cmd[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
// command to ask for data
byte response[9]; // for answerco2Serial.write(cmd, 9); //request PPM CO2
// The serial stream can get out of sync. The response starts with 0xff, try to resync.
while (co2Serial.available() > 0 && (unsigned char)co2Serial.peek() != 0xFF) {
co2Serial.read();
}memset(response, 0, 9);
co2Serial.readBytes(response, 9);if (response[1] != 0x86)
{
//Serial.println("Invalid response from co2 sensor!");
return -1;
}byte crc = 0;
for (int i = 1; i < 8; i++) {
crc += response;
}
crc = 255 - crc + 1;if (response[8] == crc) {
int responseHigh = (int) response[2];
int responseLow = (int) response[3];
int ppm = (256 * responseHigh) + responseLow;
return ppm;
} else {
//Serial.println("CRC error!");
return -1;
}
}/* Добавление датчиков в систему */
void sensors_config() {
co2Serial.begin(9600); //Init sensor MH-Z19(14)
Wire.begin(4, 5);
sensors.add(AH, device::out, "out_absoluteHumidity", [&](){ return absoluteHumidity(out_temp(), out_hum()); }
);
sensors.add(new knob_t(-100, 0, "1", "RSSI", "dbm"), device::in, "rssi",[&](){
return wifi.isConnected() ? WiFi.RSSI() : 0;
});
sensors.add(PPM, device::in, "CO2 ppm",[&](){
return readCO2();
});
/* Внешний датчик */
sensors.add(P, device::out, 0x76, "out_pressure", out_pres, true);
sensors.add(H, device::out, 0x76, "out_humidity", out_hum, true);
sensors.add(T, device::out, 0x76, "out_temperature", out_init, out_temp, true);
/* Внутренний датчик */
sensors.add(P, device::in, 0x77, "in_pressure", in_pres, true);
sensors.add(H, device::in, 0x77, "in_humidity", in_hum, true);
sensors.add(T, device::in, 0x77, "in_temperature", in_init, in_temp, true);
}#endif
Метеостанция на ESP8266 от it4it.club
в Espressif Systems
Опубликовано: · Изменено пользователем Devilisimo
изменение · Жалоба на ответ
Спасибо за подробный ответ.
Все сделал по рекомендациям. В режиме разработчика, ответ есть:
{"in_temperature":22.50,"in_humidity":0.00,"in_pressure":744.82,"out_temperature":22.06,"out_humidity":43.84,"out_pressure":744.59,"co2_ppm":510.00,"rssi":-63.00,"out_absoluteHumidity":8.55}
Отображения нет на графике, подскажите куда копать.
Хотя беру свои слова обратно, отображение появилось после нескольких обновлений страницы!!!
Спасибо.