51 lines
1006 B
C++
51 lines
1006 B
C++
#ifndef SENSOR_SDS018_H
|
|
#define SENSOR_SDS018_H
|
|
|
|
#include "sensordata.h"
|
|
#include <Homie.h>
|
|
|
|
|
|
#include <SoftwareSerial.h>
|
|
|
|
|
|
class Sensor_SDS018
|
|
{
|
|
|
|
private:
|
|
HomieNode *sensorNode; //reference to HomieNode
|
|
|
|
struct sensordata data_pm25;
|
|
struct sensordata data_pm10;
|
|
|
|
int pin_rx;
|
|
int pin_tx;
|
|
|
|
bool init_ok;
|
|
|
|
#define BAUD_RATE_SDS018 9600
|
|
SoftwareSerial *sds018_swSerial;
|
|
|
|
bool sds018_dustok;
|
|
|
|
unsigned long lastread_sds018=0; //to save last read time for both readings
|
|
|
|
void loop_pm25();
|
|
void loop_pm10();
|
|
void readSDS018();
|
|
|
|
public:
|
|
Sensor_SDS018(int prx, int ptx);
|
|
|
|
void init();
|
|
void setSettings_pm10(float minchange, unsigned long senddelaymax, unsigned long readdelay);
|
|
void setSettings_pm25(float minchange, unsigned long senddelaymax, unsigned long readdelay);
|
|
void advertise(HomieNode& p_sensorNode);
|
|
void sensorloop();
|
|
|
|
bool mhz19calibrationHandler(const HomieRange& range, const String& value);
|
|
|
|
};
|
|
|
|
#endif
|
|
|