added CO2 and VOC sensor
This commit is contained in:
69
VOC_sensor.cpp
Normal file
69
VOC_sensor.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
#include "VOC_sensor.h"
|
||||
|
||||
Adafruit_SGP30 sgp;
|
||||
uint8_t VOC_samples = 3600 / g_pms_report_period;
|
||||
#define VOC_MIN 0
|
||||
#define VOC_MAX 10000
|
||||
#define VOC_INTERVAL 120000 //ms
|
||||
|
||||
uint32_t lastVOCtime = 0;
|
||||
//sensors
|
||||
AQSSensor SGP30_tvoc("TVOC", SGP30_TVOC, "ppb", device_name, VOC_samples, VOC_MIN, VOC_MAX);
|
||||
AQSSensor SGP30_eco2("eCO2", SGP30_eCO2, "ppm", device_name, VOC_samples, VOC_MIN, VOC_MAX);
|
||||
AQSSensor SGP30_rawh2("Raw_H2", SGP30_rawH2, "#", device_name, VOC_samples, VOC_MIN, VOC_MAX);
|
||||
AQSSensor SGP30_rawethanol("Raw_Ethanol", SGP30_rawEthanol, "#", device_name, VOC_samples, VOC_MIN, VOC_MAX);
|
||||
|
||||
void initVOCsensor(void)
|
||||
{
|
||||
Serial.println("VOCSensor: Init SGP30: ");
|
||||
|
||||
if (!sgp.begin())
|
||||
{
|
||||
Serial.println("VOCSensor: Init Failed (SGP30 not found)");
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.printf("VOCSensor: serial =0x%X%X%X\n", sgp.serialnumber[0], sgp.serialnumber[1], sgp.serialnumber[2]);
|
||||
addSensorToList(&SGP30_tvoc);
|
||||
addSensorToList(&SGP30_eco2);
|
||||
addSensorToList(&SGP30_rawh2);
|
||||
addSensorToList(&SGP30_rawethanol);
|
||||
|
||||
sgp.IAQmeasure();
|
||||
sgp.IAQmeasureRaw();
|
||||
|
||||
Serial.println("VOCSensor: Init OK");
|
||||
}
|
||||
}
|
||||
|
||||
void handleVOCsensor(void)
|
||||
{
|
||||
uint32_t timenow = millis();
|
||||
if ((timenow - lastVOCtime > VOC_INTERVAL) || !lastVOCtime)
|
||||
{
|
||||
if (!sgp.IAQmeasure())
|
||||
{
|
||||
Serial.println("VOCSensor: Measurement failed");
|
||||
return;
|
||||
}
|
||||
SGP30_tvoc.set(sgp.TVOC);
|
||||
SGP30_eco2.set(sgp.eCO2);
|
||||
|
||||
SGP30_tvoc.publish();
|
||||
SGP30_eco2.publish();
|
||||
|
||||
if (!sgp.IAQmeasureRaw())
|
||||
{
|
||||
Serial.println("VOCSensor: Raw Measurement failed");
|
||||
return;
|
||||
}
|
||||
|
||||
SGP30_rawethanol.set(sgp.rawEthanol);
|
||||
SGP30_rawh2.set(sgp.rawH2);
|
||||
|
||||
SGP30_rawethanol.publish();
|
||||
SGP30_rawh2.publish();
|
||||
|
||||
lastVOCtime = timenow;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user