Добавил сенсор ccs811

This commit is contained in:
Dmitry Borisenko
2021-01-04 01:49:57 +01:00
parent e822414187
commit a4ae02736c
3 changed files with 129 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
#pragma once
#include <Arduino.h>
#include "Adafruit_CCS811.h"
#include "Global.h"
#include "GyverFilters.h"
class SensorCcs811;
typedef std::vector<SensorCcs811> MySensorCcs811Vector;
struct paramsCcs811 {
String key;
String addr;
unsigned long interval;
float c;
};
class SensorCcs811 {
public:
SensorCcs811(const paramsCcs811& paramsCo2, const paramsCcs811& paramsPpm);
~SensorCcs811();
Adafruit_CCS811* ccs811;
void loop();
void read();
private:
paramsCcs811 _paramsCo2;
paramsCcs811 _paramsPpm;
unsigned long prevMillis;
unsigned long difference;
};
extern MySensorCcs811Vector* mySensorCcs811;
extern void ccs811Sensor();

View File

@@ -22,6 +22,7 @@ lib_deps_external =
beegee-tokyo/DHT sensor library for ESPx beegee-tokyo/DHT sensor library for ESPx
adafruit/Adafruit BMP280 Library adafruit/Adafruit BMP280 Library
adafruit/Adafruit BME280 Library adafruit/Adafruit BME280 Library
adafruit/Adafruit CCS811 Library
milesburton/DallasTemperature milesburton/DallasTemperature
lib_deps_internal = lib_deps_internal =
ESP Async WebServer ESP Async WebServer

View File

@@ -0,0 +1,89 @@
#include "items/vSensorCcs811.h"
#include <Arduino.h>
#include "BufferExecute.h"
#include "Class/LineParsing.h"
#include "Global.h"
SensorCcs811::SensorCcs811(const paramsCcs811& paramsCo2, const paramsCcs811& paramsPpm) {
_paramsCo2 = paramsCcs811(paramsCo2);
_paramsPpm = paramsCcs811(paramsPpm);
ccs811 = new Adafruit_CCS811();
if (!ccs811->begin()) SerialPrint("E", "Sensor CCS", "Wire not connected");
}
SensorCcs811::~SensorCcs811() {}
void SensorCcs811::loop() {
difference = millis() - prevMillis;
if (difference >= _paramsPpm.interval) {
prevMillis = millis();
read();
}
}
void SensorCcs811::read() {
float co2;
float ppm;
if (ccs811->available()) {
if (!ccs811->readData()) {
co2 = ccs811->geteCO2();
ppm = ccs811->getTVOC();
co2 = co2 * _paramsCo2.c;
ppm = ppm * _paramsPpm.c;
eventGen2(_paramsCo2.key, String(co2));
jsonWriteStr(configLiveJson, _paramsCo2.key, String(co2));
publishStatus(_paramsCo2.key, String(co2));
SerialPrint("I", "Sensor", "'" + _paramsCo2.key + "' data: " + String(co2));
eventGen2(_paramsPpm.key, String(ppm));
jsonWriteStr(configLiveJson, _paramsPpm.key, String(ppm));
publishStatus(_paramsPpm.key, String(ppm));
SerialPrint("I", "Sensor", "'" + _paramsPpm.key + "' data: " + String(ppm));
} else {
SerialPrint("E", "Sensor CCS", "Error");
}
}
}
MySensorCcs811Vector* mySensorCcs811 = nullptr;
void ccs811Sensor() {
myLineParsing.update();
String key = myLineParsing.gkey();
String addr = myLineParsing.gaddr();
String interval = myLineParsing.gint();
String c = myLineParsing.gc();
myLineParsing.clear();
static int enterCnt = -1;
enterCnt++;
static paramsCcs811 paramsCo2;
static paramsCcs811 paramsPpm;
if (enterCnt == 0) {
paramsCo2.key = key;
paramsCo2.interval = interval.toInt() * 1000;
paramsCo2.c = c.toFloat();
}
if (enterCnt == 1) {
paramsPpm.key = key;
paramsPpm.addr = addr;
paramsPpm.interval = interval.toInt() * 1000;
paramsPpm.c = c.toFloat();
static bool firstTime = true;
if (firstTime) mySensorCcs811 = new MySensorCcs811Vector();
firstTime = false;
mySensorCcs811->push_back(SensorCcs811(paramsCo2, paramsPpm));
enterCnt = -1;
}
}