added CO2 and VOC sensor
This commit is contained in:
58
sensor.h
58
sensor.h
@@ -3,21 +3,57 @@
|
||||
#include "Arduino.h"
|
||||
#include "mqtt.h"
|
||||
|
||||
enum sensor_e
|
||||
{
|
||||
//PMS sensors
|
||||
SP_1P0,
|
||||
SP_2P5,
|
||||
SP_10P0,
|
||||
AE_1P0,
|
||||
AE_2P5,
|
||||
AE_10P0,
|
||||
PPD_0P3,
|
||||
PPD_0P5,
|
||||
PPD_1P0,
|
||||
PPD_2P5,
|
||||
PPD_5P0,
|
||||
PPD_10P0,
|
||||
SCD30_temp,
|
||||
SCD30_hum,
|
||||
SCD30_co2,
|
||||
SGP30_TVOC,
|
||||
SGP30_eCO2,
|
||||
SGP30_rawH2,
|
||||
SGP30_rawEthanol,
|
||||
sensor_last
|
||||
};
|
||||
|
||||
class AQSSensor
|
||||
{
|
||||
char _topic[50];
|
||||
char _topic_1h[50];
|
||||
char _topic_24h[255];
|
||||
const String _name;
|
||||
const sensor_e _sensor;
|
||||
const String _unit;
|
||||
uint32_t _value;
|
||||
RunningMedian _average1h;
|
||||
RunningMedian _average24h;
|
||||
bool _publish = false;
|
||||
const uint32_t _scaleMin;
|
||||
const uint32_t _scaleMax;
|
||||
|
||||
public:
|
||||
AQSSensor(String name, String deviceID, uint8_t avgSamples) : _name(name),
|
||||
_average1h(avgSamples),
|
||||
_average24h(avgSamples * 24)
|
||||
AQSSensor(String name, sensor_e sensor, String unit,
|
||||
String deviceID, uint8_t avgSamples,
|
||||
uint32_t scaleMin, uint32_t scaleMax)
|
||||
: _name(name),
|
||||
_sensor(sensor),
|
||||
_unit(unit),
|
||||
_average1h(avgSamples),
|
||||
_average24h(avgSamples * 24),
|
||||
_scaleMin(scaleMin),
|
||||
_scaleMax(scaleMax)
|
||||
{
|
||||
sprintf(_topic, "Sensors/%s/%s", deviceID.c_str(), name.c_str());
|
||||
sprintf(_topic_1h, "Sensors/%s/%s/1h/", deviceID.c_str(), name.c_str());
|
||||
@@ -34,6 +70,11 @@ public:
|
||||
return _name;
|
||||
}
|
||||
|
||||
void published(void)
|
||||
{
|
||||
_publish = false;
|
||||
}
|
||||
|
||||
void publishMQTT(void)
|
||||
{
|
||||
if (_publish == true)
|
||||
@@ -58,13 +99,22 @@ public:
|
||||
{
|
||||
if (_publish)
|
||||
{
|
||||
Serial.printf("sensor:%s = %d\n", _name.c_str(), _value);
|
||||
Serial.printf("sensor: report: %s = %d\n", _name.c_str(), _value);
|
||||
}
|
||||
}
|
||||
|
||||
sensor_e getSensor(void) { return _sensor; }
|
||||
|
||||
String getUnit(void) { return _unit;}
|
||||
|
||||
uint32_t getMin(void) { return _scaleMin; }
|
||||
uint32_t getMax(void) { return _scaleMax; }
|
||||
};
|
||||
|
||||
void addSensorToList(AQSSensor *sensor);
|
||||
void reportToSerial(void);
|
||||
AQSSensor *getSensor(sensor_e sensor);
|
||||
uint32_t getSensorValue(sensor_e sensor);
|
||||
|
||||
void initSensor(void);
|
||||
void handleSensor(void);
|
||||
Reference in New Issue
Block a user