moved to sensor class
This commit is contained in:
157
particles.cpp
157
particles.cpp
@@ -12,71 +12,99 @@ char g_command_topic[50]; // MQTT topic for receiving commands
|
||||
#define PMS_STATE_READY 2 // Warmed up, ready to give data
|
||||
uint8_t g_pms_state = PMS_STATE_WAKING_UP;
|
||||
|
||||
|
||||
|
||||
uint32_t g_pms_state_start = 0; // Timestamp when PMS state last changed
|
||||
uint8_t g_pms_readings_taken = 0; // 0/1: whether any readings have been taken
|
||||
uint8_t g_pms_ppd_readings_taken = 0; // 0/1: whether PPD readings have been taken
|
||||
|
||||
uint8_t samples = 3600 / g_pms_report_period;
|
||||
|
||||
mqttSensor g_pm1p0_sp("SP_1P0", device_name, samples);
|
||||
mqttSensor g_pm2p5_sp("SP_2P5", device_name, samples);
|
||||
mqttSensor g_pm10p0_sp("SP_10P0", device_name, samples);
|
||||
AQSSensor g_pm1p0_sp("SP_1P0", device_name, samples);
|
||||
AQSSensor g_pm2p5_sp("SP_2P5", device_name, samples);
|
||||
AQSSensor g_pm10p0_sp("SP_10P0", device_name, samples);
|
||||
|
||||
mqttSensor g_pm1p0_ae("AE_1P0", device_name, samples);
|
||||
mqttSensor g_pm2p5_ae("AE_2P5", device_name, samples);
|
||||
mqttSensor g_pm10p0_ae("AE_10P0", device_name, samples);
|
||||
AQSSensor g_pm1p0_ae("AE_1P0", device_name, samples);
|
||||
AQSSensor g_pm2p5_ae("AE_2P5", device_name, samples);
|
||||
AQSSensor g_pm10p0_ae("AE_10P0", device_name, samples);
|
||||
|
||||
mqttSensor g_pm0p3_ppd("PPD_0P3", device_name, samples);
|
||||
mqttSensor g_pm0p5_ppd("PPD_0P5", device_name, samples);
|
||||
mqttSensor g_pm1p0_ppd("PPD_1P0", device_name, samples);
|
||||
mqttSensor g_pm2p5_ppd("PPD_2P5", device_name, samples);
|
||||
mqttSensor g_pm5p0_ppd("PPD_5P0", device_name, samples);
|
||||
mqttSensor g_pm10p0_ppd("PPD_10P0", device_name, samples);
|
||||
AQSSensor g_pm0p3_ppd("PPD_0P3", device_name, samples);
|
||||
AQSSensor g_pm0p5_ppd("PPD_0P5", device_name, samples);
|
||||
AQSSensor g_pm1p0_ppd("PPD_1P0", device_name, samples);
|
||||
AQSSensor g_pm2p5_ppd("PPD_2P5", device_name, samples);
|
||||
AQSSensor g_pm5p0_ppd("PPD_5P0", device_name, samples);
|
||||
AQSSensor g_pm10p0_ppd("PPD_10P0", device_name, samples);
|
||||
|
||||
std::vector<mqttSensor*> sensorList;
|
||||
void PMS_publishSensors(void );
|
||||
|
||||
void prepareTopics( void )
|
||||
|
||||
void PMS_AddSensors( void )
|
||||
{
|
||||
sensorList.push_back(&g_pm1p0_sp);
|
||||
sensorList.push_back(&g_pm2p5_sp);
|
||||
sensorList.push_back(&g_pm10p0_sp);
|
||||
addSensorToList(&g_pm1p0_sp);
|
||||
addSensorToList(&g_pm2p5_sp);
|
||||
addSensorToList(&g_pm10p0_sp);
|
||||
|
||||
sensorList.push_back(&g_pm1p0_ae);
|
||||
sensorList.push_back(&g_pm2p5_ae);
|
||||
sensorList.push_back(&g_pm10p0_ae);
|
||||
addSensorToList(&g_pm1p0_ae);
|
||||
addSensorToList(&g_pm2p5_ae);
|
||||
addSensorToList(&g_pm10p0_ae);
|
||||
|
||||
sensorList.push_back(&g_pm0p3_ppd);
|
||||
sensorList.push_back(&g_pm0p5_ppd);
|
||||
sensorList.push_back(&g_pm1p0_ppd);
|
||||
sensorList.push_back(&g_pm2p5_ppd);
|
||||
sensorList.push_back(&g_pm5p0_ppd);
|
||||
sensorList.push_back(&g_pm10p0_ppd);
|
||||
addSensorToList(&g_pm0p3_ppd);
|
||||
addSensorToList(&g_pm0p5_ppd);
|
||||
addSensorToList(&g_pm1p0_ppd);
|
||||
addSensorToList(&g_pm2p5_ppd);
|
||||
addSensorToList(&g_pm5p0_ppd);
|
||||
addSensorToList(&g_pm10p0_ppd);
|
||||
}
|
||||
|
||||
uint32_t getLCDvalue(void)
|
||||
{
|
||||
return g_pm2p5_ae.value();
|
||||
}
|
||||
/**
|
||||
Report the latest values to the serial console
|
||||
*/
|
||||
void reportToSerial()
|
||||
|
||||
|
||||
void PMS_publishSensors(void )
|
||||
{
|
||||
String message_string;
|
||||
|
||||
/* Report PM1.0 AE value */
|
||||
for( auto && sensor : sensorList)
|
||||
g_pm1p0_ae.publish();
|
||||
g_pm2p5_ae.publish();
|
||||
g_pm10p0_ae.publish();
|
||||
|
||||
g_pm1p0_sp.publish();
|
||||
g_pm2p5_sp.publish();
|
||||
g_pm10p0_sp.publish();
|
||||
|
||||
if (1 == g_pms_ppd_readings_taken)
|
||||
{
|
||||
sensor->print();
|
||||
/* Report PM0.3 PPD value */
|
||||
g_pm0p3_ppd.publish();
|
||||
g_pm0p5_ppd.publish();
|
||||
g_pm1p0_ppd.publish();
|
||||
g_pm2p5_ppd.publish();
|
||||
g_pm5p0_ppd.publish();
|
||||
g_pm10p0_ppd.publish();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Update particulate matter sensor values
|
||||
*/
|
||||
void updatePmsReadings()
|
||||
void initParticles( void )
|
||||
{
|
||||
uint32_t time_now = millis();
|
||||
Serial.print("initPMS:");
|
||||
// Open a connection to the PMS and put it into passive mode
|
||||
Serial2.begin(PMS_BAUD_RATE, SERIAL_8N1, PMS_RX_PIN, PMS_TX_PIN); // Connection for PMS5003
|
||||
pms.activeMode(); // Tell PMS to stop sending data automatically
|
||||
delay(100);
|
||||
pms.wakeUp(); // Tell PMS to wake up (turn on fan and laser)
|
||||
|
||||
//Serial2.begin(PMS_BAUD_RATE, SERIAL_8N1, PMS_RX_PIN, PMS_TX_PIN);
|
||||
|
||||
PMS_AddSensors();
|
||||
|
||||
Serial.println(" OK");
|
||||
|
||||
}
|
||||
|
||||
void handleParticles( void )
|
||||
{
|
||||
uint32_t time_now = millis();
|
||||
|
||||
// Check if we've been in the sleep state for long enough
|
||||
if (PMS_STATE_ASLEEP == g_pms_state)
|
||||
@@ -135,60 +163,11 @@ void updatePmsReadings()
|
||||
pms.sleep();
|
||||
|
||||
// Report the new values
|
||||
reportToMqtt();
|
||||
reportToSerial();
|
||||
PMS_publishSensors();
|
||||
|
||||
g_pms_readings_taken = 1;
|
||||
g_pms_state_start = time_now;
|
||||
g_pms_state = PMS_STATE_ASLEEP;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void reportToMqtt(void )
|
||||
{
|
||||
String message_string;
|
||||
|
||||
/* Report PM1.0 AE value */
|
||||
g_pm1p0_ae.publish();
|
||||
g_pm2p5_ae.publish();
|
||||
g_pm10p0_ae.publish();
|
||||
|
||||
g_pm1p0_sp.publish();
|
||||
g_pm2p5_sp.publish();
|
||||
g_pm10p0_sp.publish();
|
||||
|
||||
if (1 == g_pms_ppd_readings_taken)
|
||||
{
|
||||
/* Report PM0.3 PPD value */
|
||||
g_pm0p3_ppd.publish();
|
||||
g_pm0p5_ppd.publish();
|
||||
g_pm1p0_ppd.publish();
|
||||
g_pm2p5_ppd.publish();
|
||||
g_pm5p0_ppd.publish();
|
||||
g_pm10p0_ppd.publish();
|
||||
}
|
||||
}
|
||||
|
||||
void initParticles( void )
|
||||
{
|
||||
Serial.print("initPMS:");
|
||||
// Open a connection to the PMS and put it into passive mode
|
||||
Serial2.begin(PMS_BAUD_RATE, SERIAL_8N1, PMS_RX_PIN, PMS_TX_PIN); // Connection for PMS5003
|
||||
pms.activeMode(); // Tell PMS to stop sending data automatically
|
||||
delay(100);
|
||||
pms.wakeUp(); // Tell PMS to wake up (turn on fan and laser)
|
||||
|
||||
//Serial2.begin(PMS_BAUD_RATE, SERIAL_8N1, PMS_RX_PIN, PMS_TX_PIN);
|
||||
|
||||
prepareTopics();
|
||||
|
||||
Serial.println(" OK");
|
||||
|
||||
}
|
||||
|
||||
void handleParticles( void )
|
||||
{
|
||||
updatePmsReadings();
|
||||
}
|
||||
Reference in New Issue
Block a user