Compare commits

...

7 Commits

Author SHA1 Message Date
6a83743e2a Prepared to release 3.1.16 2024-12-05 15:06:10 +07:00
faaf051e39 Prepared to release 3.1.15 2024-12-05 15:00:25 +07:00
280ea5e997 Prepared to release 3.1.14 2024-12-04 10:38:13 +07:00
566f8a63b4 Prepare 3.1.13 release 2024-11-27 13:35:26 +07:00
9e4d52454b Merge pull request #266 from airgradienthq/fix/openmetrics
Fix measurements value in prometheus metrics endpoints
2024-11-27 03:38:57 +07:00
5f5e985309 Fix openmetrics esp8266 based 2024-11-27 00:43:03 +07:00
d638573ca7 Fix open metrics for OneOpenAir 2024-11-27 00:15:32 +07:00
6 changed files with 114 additions and 79 deletions

View File

@ -57,26 +57,20 @@ String OpenMetrics::getPayload(void) {
"gauge", "dbm");
add_metric_point("", String(wifiConnector.RSSI()));
if (config.hasSensorS8 && measure.CO2 >= 0) {
add_metric("co2",
"Carbon dioxide concentration as measured by the AirGradient S8 "
"sensor, in parts per million",
"gauge", "ppm");
add_metric_point("", String(measure.CO2));
}
// Initialize default invalid value for each measurements
float _temp = utils::getInvalidTemperature();
float _hum = utils::getInvalidHumidity();
int pm01 = utils::getInvalidPmValue();
int pm25 = utils::getInvalidPmValue();
int pm10 = utils::getInvalidPmValue();
int pm03PCount = utils::getInvalidPmValue();
int co2 = utils::getInvalidCO2();
int atmpCompensated = utils::getInvalidTemperature();
int ahumCompensated = utils::getInvalidHumidity();
int tvoc = utils::getInvalidVOC();
int tvoc_raw = utils::getInvalidVOC();
int tvocRaw = utils::getInvalidVOC();
int nox = utils::getInvalidNOx();
int nox_raw = utils::getInvalidNOx();
int noxRaw = utils::getInvalidNOx();
if (config.hasSensorSHT) {
_temp = measure.getFloat(Measurements::Temperature);
@ -94,9 +88,13 @@ String OpenMetrics::getPayload(void) {
if (config.hasSensorSGP) {
tvoc = measure.get(Measurements::TVOC);
tvoc_raw = measure.get(Measurements::TVOCRaw);
tvocRaw = measure.get(Measurements::TVOCRaw);
nox = measure.get(Measurements::NOx);
nox_raw = measure.get(Measurements::NOxRaw);
noxRaw = measure.get(Measurements::NOxRaw);
}
if (config.hasSensorS8) {
co2 = measure.get(Measurements::CO2);
}
if (config.hasSensorPMS1) {
@ -138,12 +136,12 @@ String OpenMetrics::getPayload(void) {
"gauge");
add_metric_point("", String(tvoc));
}
if (utils::isValidVOC(tvoc_raw)) {
if (utils::isValidVOC(tvocRaw)) {
add_metric("tvoc_raw",
"The raw input value to the Total Volatile Organic Compounds "
"(TVOC) index as measured by the AirGradient SGP sensor",
"gauge");
add_metric_point("", String(tvoc_raw));
add_metric_point("", String(tvocRaw));
}
if (utils::isValidNOx(nox)) {
add_metric("nox_index",
@ -152,15 +150,23 @@ String OpenMetrics::getPayload(void) {
"gauge");
add_metric_point("", String(nox));
}
if (utils::isValidNOx(nox_raw)) {
if (utils::isValidNOx(noxRaw)) {
add_metric("nox_raw",
"The raw input value to the Nitrous Oxide (NOx) index as "
"measured by the AirGradient SGP sensor",
"gauge");
add_metric_point("", String(nox_raw));
add_metric_point("", String(noxRaw));
}
}
if (utils::isValidCO2(co2)) {
add_metric("co2",
"Carbon dioxide concentration as measured by the AirGradient S8 "
"sensor, in parts per million",
"gauge", "ppm");
add_metric_point("", String(co2));
}
if (utils::isValidTemperature(_temp)) {
add_metric(
"temperature",

View File

@ -57,26 +57,20 @@ String OpenMetrics::getPayload(void) {
"gauge", "dbm");
add_metric_point("", String(wifiConnector.RSSI()));
if (config.hasSensorS8 && measure.CO2 >= 0) {
add_metric("co2",
"Carbon dioxide concentration as measured by the AirGradient S8 "
"sensor, in parts per million",
"gauge", "ppm");
add_metric_point("", String(measure.CO2));
}
// Initialize default invalid value for each measurements
float _temp = utils::getInvalidTemperature();
float _hum = utils::getInvalidHumidity();
int pm01 = utils::getInvalidPmValue();
int pm25 = utils::getInvalidPmValue();
int pm10 = utils::getInvalidPmValue();
int pm03PCount = utils::getInvalidPmValue();
int co2 = utils::getInvalidCO2();
int atmpCompensated = utils::getInvalidTemperature();
int ahumCompensated = utils::getInvalidHumidity();
int tvoc = utils::getInvalidVOC();
int tvoc_raw = utils::getInvalidVOC();
int tvocRaw = utils::getInvalidVOC();
int nox = utils::getInvalidNOx();
int nox_raw = utils::getInvalidNOx();
int noxRaw = utils::getInvalidNOx();
if (config.hasSensorSHT) {
_temp = measure.getFloat(Measurements::Temperature);
@ -94,9 +88,13 @@ String OpenMetrics::getPayload(void) {
if (config.hasSensorSGP) {
tvoc = measure.get(Measurements::TVOC);
tvoc_raw = measure.get(Measurements::TVOCRaw);
tvocRaw = measure.get(Measurements::TVOCRaw);
nox = measure.get(Measurements::NOx);
nox_raw = measure.get(Measurements::NOxRaw);
noxRaw = measure.get(Measurements::NOxRaw);
}
if (config.hasSensorS8) {
co2 = measure.get(Measurements::CO2);
}
if (config.hasSensorPMS1) {
@ -138,12 +136,13 @@ String OpenMetrics::getPayload(void) {
"gauge");
add_metric_point("", String(tvoc));
}
if (utils::isValidVOC(tvoc_raw)) {
if (utils::isValidVOC(tvocRaw)) {
add_metric("tvoc_raw",
"The raw input value to the Total Volatile Organic Compounds "
"(TVOC) index as measured by the AirGradient SGP sensor",
"gauge");
add_metric_point("", String(tvoc_raw));
add_metric_point("", String(tvocRaw));
}
if (utils::isValidNOx(nox)) {
add_metric("nox_index",
@ -152,15 +151,23 @@ String OpenMetrics::getPayload(void) {
"gauge");
add_metric_point("", String(nox));
}
if (utils::isValidNOx(nox_raw)) {
if (utils::isValidNOx(noxRaw)) {
add_metric("nox_raw",
"The raw input value to the Nitrous Oxide (NOx) index as "
"measured by the AirGradient SGP sensor",
"gauge");
add_metric_point("", String(nox_raw));
add_metric_point("", String(noxRaw));
}
}
if (utils::isValidCO2(co2)) {
add_metric("co2",
"Carbon dioxide concentration as measured by the AirGradient S8 "
"sensor, in parts per million",
"gauge", "ppm");
add_metric_point("", String(co2));
}
if (utils::isValidTemperature(_temp)) {
add_metric(
"temperature",

View File

@ -57,26 +57,20 @@ String OpenMetrics::getPayload(void) {
"gauge", "dbm");
add_metric_point("", String(wifiConnector.RSSI()));
if (config.hasSensorS8 && measure.CO2 >= 0) {
add_metric("co2",
"Carbon dioxide concentration as measured by the AirGradient S8 "
"sensor, in parts per million",
"gauge", "ppm");
add_metric_point("", String(measure.CO2));
}
// Initialize default invalid value for each measurements
float _temp = utils::getInvalidTemperature();
float _hum = utils::getInvalidHumidity();
int pm01 = utils::getInvalidPmValue();
int pm25 = utils::getInvalidPmValue();
int pm10 = utils::getInvalidPmValue();
int pm03PCount = utils::getInvalidPmValue();
int co2 = utils::getInvalidCO2();
int atmpCompensated = utils::getInvalidTemperature();
int ahumCompensated = utils::getInvalidHumidity();
int tvoc = utils::getInvalidVOC();
int tvoc_raw = utils::getInvalidVOC();
int tvocRaw = utils::getInvalidVOC();
int nox = utils::getInvalidNOx();
int nox_raw = utils::getInvalidNOx();
int noxRaw = utils::getInvalidNOx();
if (config.hasSensorSHT) {
_temp = measure.getFloat(Measurements::Temperature);
@ -94,9 +88,13 @@ String OpenMetrics::getPayload(void) {
if (config.hasSensorSGP) {
tvoc = measure.get(Measurements::TVOC);
tvoc_raw = measure.get(Measurements::TVOCRaw);
tvocRaw = measure.get(Measurements::TVOCRaw);
nox = measure.get(Measurements::NOx);
nox_raw = measure.get(Measurements::NOxRaw);
noxRaw = measure.get(Measurements::NOxRaw);
}
if (config.hasSensorS8) {
co2 = measure.get(Measurements::CO2);
}
if (config.hasSensorPMS1) {
@ -138,12 +136,12 @@ String OpenMetrics::getPayload(void) {
"gauge");
add_metric_point("", String(tvoc));
}
if (utils::isValidVOC(tvoc_raw)) {
if (utils::isValidVOC(tvocRaw)) {
add_metric("tvoc_raw",
"The raw input value to the Total Volatile Organic Compounds "
"(TVOC) index as measured by the AirGradient SGP sensor",
"gauge");
add_metric_point("", String(tvoc_raw));
add_metric_point("", String(tvocRaw));
}
if (utils::isValidNOx(nox)) {
add_metric("nox_index",
@ -152,15 +150,23 @@ String OpenMetrics::getPayload(void) {
"gauge");
add_metric_point("", String(nox));
}
if (utils::isValidNOx(nox_raw)) {
if (utils::isValidNOx(noxRaw)) {
add_metric("nox_raw",
"The raw input value to the Nitrous Oxide (NOx) index as "
"measured by the AirGradient SGP sensor",
"gauge");
add_metric_point("", String(nox_raw));
add_metric_point("", String(noxRaw));
}
}
if (utils::isValidCO2(co2)) {
add_metric("co2",
"Carbon dioxide concentration as measured by the AirGradient S8 "
"sensor, in parts per million",
"gauge", "ppm");
add_metric_point("", String(co2));
}
if (utils::isValidTemperature(_temp)) {
add_metric(
"temperature",

View File

@ -57,22 +57,22 @@ String OpenMetrics::getPayload(void) {
"gauge", "dbm");
add_metric_point("", String(wifiConnector.RSSI()));
if (config.hasSensorS8 && measure.CO2 >= 0) {
add_metric("co2",
"Carbon dioxide concentration as measured by the AirGradient S8 "
"sensor, in parts per million",
"gauge", "ppm");
add_metric_point("", String(measure.CO2));
}
// Initialize default invalid value for each measurements
float _temp = utils::getInvalidTemperature();
float _hum = utils::getInvalidHumidity();
int pm01 = utils::getInvalidPmValue();
int pm25 = utils::getInvalidPmValue();
int pm10 = utils::getInvalidPmValue();
int pm03PCount = utils::getInvalidPmValue();
int co2 = utils::getInvalidCO2();
int atmpCompensated = utils::getInvalidTemperature();
int ahumCompensated = utils::getInvalidHumidity();
int tvoc = utils::getInvalidVOC();
int tvocRaw = utils::getInvalidVOC();
int nox = utils::getInvalidNOx();
int noxRaw = utils::getInvalidNOx();
// Get values
if (config.hasSensorPMS1 && config.hasSensorPMS2) {
_temp = (measure.getFloat(Measurements::Temperature, 1) +
measure.getFloat(Measurements::Temperature, 2)) /
@ -118,6 +118,17 @@ String OpenMetrics::getPayload(void) {
}
}
if (config.hasSensorSGP) {
tvoc = measure.get(Measurements::TVOC);
tvocRaw = measure.get(Measurements::TVOCRaw);
nox = measure.get(Measurements::NOx);
noxRaw = measure.get(Measurements::NOxRaw);
}
if (config.hasSensorS8) {
co2 = measure.get(Measurements::CO2);
}
/** Get temperature and humidity compensated */
if (ag->isOne()) {
atmpCompensated = _temp;
@ -127,6 +138,7 @@ String OpenMetrics::getPayload(void) {
ahumCompensated = ag->pms5003t_1.compensateHum(_hum);
}
// Add measurements that valid to the metrics
if (config.hasSensorPMS1 || config.hasSensorPMS2) {
if (utils::isValidPm(pm01)) {
add_metric("pm1",
@ -159,36 +171,44 @@ String OpenMetrics::getPayload(void) {
}
if (config.hasSensorSGP) {
if (utils::isValidVOC(measure.TVOC)) {
if (utils::isValidVOC(tvoc)) {
add_metric("tvoc_index",
"The processed Total Volatile Organic Compounds (TVOC) index "
"as measured by the AirGradient SGP sensor",
"gauge");
add_metric_point("", String(measure.TVOC));
add_metric_point("", String(tvoc));
}
if (utils::isValidVOC(measure.TVOCRaw)) {
if (utils::isValidVOC(tvocRaw)) {
add_metric("tvoc_raw",
"The raw input value to the Total Volatile Organic Compounds "
"(TVOC) index as measured by the AirGradient SGP sensor",
"gauge");
add_metric_point("", String(measure.TVOCRaw));
add_metric_point("", String(tvocRaw));
}
if (utils::isValidNOx(measure.NOx)) {
if (utils::isValidNOx(nox)) {
add_metric("nox_index",
"The processed Nitrous Oxide (NOx) index as measured by the "
"AirGradient SGP sensor",
"gauge");
add_metric_point("", String(measure.NOx));
add_metric_point("", String(nox));
}
if (utils::isValidNOx(measure.NOxRaw)) {
if (utils::isValidNOx(noxRaw)) {
add_metric("nox_raw",
"The raw input value to the Nitrous Oxide (NOx) index as "
"measured by the AirGradient SGP sensor",
"gauge");
add_metric_point("", String(measure.NOxRaw));
add_metric_point("", String(noxRaw));
}
}
if (utils::isValidCO2(co2)) {
add_metric("co2",
"Carbon dioxide concentration as measured by the AirGradient S8 "
"sensor, in parts per million",
"gauge", "ppm");
add_metric_point("", String(co2));
}
if (utils::isValidTemperature(_temp)) {
add_metric("temperature",
"The ambient temperature as measured by the AirGradient SHT / PMS "
@ -197,25 +217,21 @@ String OpenMetrics::getPayload(void) {
add_metric_point("", String(_temp));
}
if (utils::isValidTemperature(atmpCompensated)) {
add_metric(
"temperature_compensated",
"The compensated ambient temperature as measured by the AirGradient SHT / PMS "
"sensor, in degrees Celsius",
"gauge", "celsius");
add_metric("temperature_compensated",
"The compensated ambient temperature as measured by the AirGradient SHT / PMS "
"sensor, in degrees Celsius",
"gauge", "celsius");
add_metric_point("", String(atmpCompensated));
}
if (utils::isValidHumidity(_hum)) {
add_metric(
"humidity",
"The relative humidity as measured by the AirGradient SHT sensor",
"gauge", "percent");
add_metric("humidity", "The relative humidity as measured by the AirGradient SHT sensor",
"gauge", "percent");
add_metric_point("", String(_hum));
}
if (utils::isValidHumidity(ahumCompensated)) {
add_metric(
"humidity_compensated",
"The compensated relative humidity as measured by the AirGradient SHT / PMS sensor",
"gauge", "percent");
add_metric("humidity_compensated",
"The compensated relative humidity as measured by the AirGradient SHT / PMS sensor",
"gauge", "percent");
add_metric_point("", String(ahumCompensated));
}

View File

@ -1,5 +1,5 @@
name=AirGradient Air Quality Sensor
version=3.1.12
version=3.1.16
author=AirGradient <support@airgradient.com>
maintainer=AirGradient <support@airgradient.com>
sentence=ESP32-C3 / ESP8266 library for air quality monitor measuring PM, CO2, Temperature, TVOC and Humidity with OLED display.

View File

@ -15,7 +15,7 @@
#include "Main/utils.h"
#ifndef GIT_VERSION
#define GIT_VERSION "3.1.12-snap"
#define GIT_VERSION "3.1.16-snap"
#endif
/**