5
5
#include < cmath>
6
6
#include < sstream>
7
7
8
- #define json_prop_pmFirmware " firmware"
8
+ #define json_prop_pmFirmware " firmware"
9
9
#define json_prop_pm01Ae " pm01"
10
10
#define json_prop_pm25Ae " pm02"
11
11
#define json_prop_pm10Ae " pm10"
@@ -33,7 +33,7 @@ Measurements::Measurements(Configuration &config) : config(config) {
33
33
#ifndef ESP8266
34
34
_resetReason = (int )ESP_RST_UNKNOWN;
35
35
#endif
36
-
36
+
37
37
/* Set invalid value for each measurements as default value when initialized*/
38
38
_temperature[0 ].update .avg = utils::getInvalidTemperature ();
39
39
_temperature[1 ].update .avg = utils::getInvalidTemperature ();
@@ -51,7 +51,7 @@ Measurements::Measurements(Configuration &config) : config(config) {
51
51
_pm_05_pc[1 ].update .avg = utils::getInvalidPmValue ();
52
52
_pm_5_pc[0 ].update .avg = utils::getInvalidPmValue ();
53
53
_pm_5_pc[1 ].update .avg = utils::getInvalidPmValue ();
54
-
54
+
55
55
_pm_01[0 ].update .avg = utils::getInvalidPmValue ();
56
56
_pm_01_sp[0 ].update .avg = utils::getInvalidPmValue ();
57
57
_pm_01_pc[0 ].update .avg = utils::getInvalidPmValue ();
@@ -76,6 +76,86 @@ Measurements::Measurements(Configuration &config) : config(config) {
76
76
77
77
void Measurements::setAirGradient (AirGradient *ag) { this ->ag = ag; }
78
78
79
+ void Measurements::printCurrentAverage () {
80
+ Serial.println ();
81
+ if (config.hasSensorS8 ) {
82
+ if (utils::isValidCO2 (_co2.update .avg )) {
83
+ Serial.printf (" CO2 = %.2f ppm\n " , _co2.update .avg );
84
+ } else {
85
+ Serial.printf (" CO2 = -\n " );
86
+ }
87
+ }
88
+
89
+ if (config.hasSensorSHT ) {
90
+ if (utils::isValidTemperature (_temperature[0 ].update .avg )) {
91
+ Serial.printf (" Temperature = %.2f C\n " , _temperature[0 ].update .avg );
92
+ } else {
93
+ Serial.printf (" Temperature = -\n " );
94
+ }
95
+ if (utils::isValidHumidity (_humidity[0 ].update .avg )) {
96
+ Serial.printf (" Relative Humidity = %.2f\n " , _humidity[0 ].update .avg );
97
+ } else {
98
+ Serial.printf (" Relative Humidity = -\n " );
99
+ }
100
+ }
101
+
102
+ if (config.hasSensorSGP ) {
103
+ if (utils::isValidVOC (_tvoc.update .avg )) {
104
+ Serial.printf (" TVOC Index = %.1f\n " , _tvoc.update .avg );
105
+ } else {
106
+ Serial.printf (" TVOC Index = -\n " );
107
+ }
108
+ if (utils::isValidVOC (_tvoc_raw.update .avg )) {
109
+ Serial.printf (" TVOC Raw = %.1f\n " , _tvoc_raw.update .avg );
110
+ } else {
111
+ Serial.printf (" TVOC Raw = -\n " );
112
+ }
113
+ if (utils::isValidNOx (_nox.update .avg )) {
114
+ Serial.printf (" NOx Index = %.1f\n " , _nox.update .avg );
115
+ } else {
116
+ Serial.printf (" NOx Index = -\n " );
117
+ }
118
+ if (utils::isValidNOx (_nox_raw.update .avg )) {
119
+ Serial.printf (" NOx Raw = %.1f\n " , _nox_raw.update .avg );
120
+ } else {
121
+ Serial.printf (" NOx Raw = -\n " );
122
+ }
123
+ }
124
+
125
+ if (config.hasSensorPMS1 ) {
126
+ printCurrentPMAverage (1 );
127
+ if (!config.hasSensorSHT ) {
128
+ if (utils::isValidTemperature (_temperature[0 ].update .avg )) {
129
+ Serial.printf (" [1] Temperature = %.2f C\n " , _temperature[0 ].update .avg );
130
+ } else {
131
+ Serial.printf (" [1] Temperature = -\n " );
132
+ }
133
+ if (utils::isValidHumidity (_humidity[0 ].update .avg )) {
134
+ Serial.printf (" [1] Relative Humidity = %.2f\n " , _humidity[0 ].update .avg );
135
+ } else {
136
+ Serial.printf (" [1] Relative Humidity = -\n " );
137
+ }
138
+ }
139
+ }
140
+ if (config.hasSensorPMS2 ) {
141
+ printCurrentPMAverage (2 );
142
+ if (!config.hasSensorSHT ) {
143
+ if (utils::isValidTemperature (_temperature[1 ].update .avg )) {
144
+ Serial.printf (" [2] Temperature = %.2f C\n " , _temperature[1 ].update .avg );
145
+ } else {
146
+ Serial.printf (" [2] Temperature = -\n " );
147
+ }
148
+ if (utils::isValidHumidity (_humidity[1 ].update .avg )) {
149
+ Serial.printf (" [2] Relative Humidity = %.2f\n " , _humidity[1 ].update .avg );
150
+ } else {
151
+ Serial.printf (" [2] Relative Humidity = -\n " );
152
+ }
153
+ }
154
+ }
155
+
156
+ Serial.println ();
157
+ }
158
+
79
159
void Measurements::maxPeriod (MeasurementType type, int max) {
80
160
switch (type) {
81
161
case Temperature:
@@ -570,6 +650,77 @@ String Measurements::measurementTypeStr(MeasurementType type) {
570
650
return str;
571
651
}
572
652
653
+ void Measurements::printCurrentPMAverage (int ch) {
654
+ int idx = ch - 1 ;
655
+
656
+ if (utils::isValidPm (_pm_01[idx].update .avg )) {
657
+ Serial.printf (" [%d] Atmospheric PM 1.0 = %.2f ug/m3\n " , ch, _pm_01[idx].update .avg );
658
+ } else {
659
+ Serial.printf (" [%d] Atmospheric PM 1.0 = -\n " );
660
+ }
661
+ if (utils::isValidPm (_pm_25[idx].update .avg )) {
662
+ Serial.printf (" [%d] Atmospheric PM 2.5 = %.2f ug/m3\n " , ch, _pm_25[idx].update .avg );
663
+ } else {
664
+ Serial.printf (" [%d] Atmospheric PM 2.5 = -\n " );
665
+ }
666
+ if (utils::isValidPm (_pm_10[idx].update .avg )) {
667
+ Serial.printf (" [%d] Atmospheric PM 10 = %.2f ug/m3\n " , ch, _pm_10[idx].update .avg );
668
+ } else {
669
+ Serial.printf (" [%d] Atmospheric PM 10 = -\n " );
670
+ }
671
+ if (utils::isValidPm (_pm_01_sp[idx].update .avg )) {
672
+ Serial.printf (" [%d] Standard Particle PM 1.0 = %.2f ug/m3\n " , ch, _pm_01_sp[idx].update .avg );
673
+ } else {
674
+ Serial.printf (" [%d] Standard Particle PM 1.0 = -\n " );
675
+ }
676
+ if (utils::isValidPm (_pm_25_sp[idx].update .avg )) {
677
+ Serial.printf (" [%d] Standard Particle PM 2.5 = %.2f ug/m3\n " , ch, _pm_25_sp[idx].update .avg );
678
+ } else {
679
+ Serial.printf (" [%d] Standard Particle PM 2.5 = -\n " );
680
+ }
681
+ if (utils::isValidPm (_pm_10_sp[idx].update .avg )) {
682
+ Serial.printf (" [%d] Standard Particle PM 10 = %.2f ug/m3\n " , ch, _pm_10_sp[idx].update .avg );
683
+ } else {
684
+ Serial.printf (" [%d] Standard Particle PM 10 = -\n " );
685
+ }
686
+ if (utils::isValidPm03Count (_pm_03_pc[idx].update .avg )) {
687
+ Serial.printf (" [%d] Particle Count 0.3 = %.1f\n " , ch, _pm_03_pc[idx].update .avg );
688
+ } else {
689
+ Serial.printf (" [%d] Particle Count 0.3 = -\n " );
690
+ }
691
+ if (utils::isValidPm03Count (_pm_05_pc[idx].update .avg )) {
692
+ Serial.printf (" [%d] Particle Count 0.5 = %.1f\n " , ch, _pm_05_pc[idx].update .avg );
693
+ } else {
694
+ Serial.printf (" [%d] Particle Count 0.5 = -\n " );
695
+ }
696
+ if (utils::isValidPm03Count (_pm_01_pc[idx].update .avg )) {
697
+ Serial.printf (" [%d] Particle Count 1.0 = %.1f\n " , ch, _pm_01_pc[idx].update .avg );
698
+ } else {
699
+ Serial.printf (" [%d] Particle Count 1.0 = -\n " );
700
+ }
701
+ if (utils::isValidPm03Count (_pm_25_pc[idx].update .avg )) {
702
+ Serial.printf (" [%d] Particle Count 2.5 = %.1f\n " , ch, _pm_25_pc[idx].update .avg );
703
+ } else {
704
+ Serial.printf (" [%d] Particle Count 2.5 = -\n " );
705
+ }
706
+
707
+ if (_pm_5_pc[idx].listValues .empty () == false ) {
708
+ if (utils::isValidPm03Count (_pm_5_pc[idx].update .avg )) {
709
+ Serial.printf (" [%d] Particle Count 5.0 = %.1f\n " , ch, _pm_5_pc[idx].update .avg );
710
+ } else {
711
+ Serial.printf (" [%d] Particle Count 5.0 = -\n " );
712
+ }
713
+ }
714
+
715
+ if (_pm_10_pc[idx].listValues .empty () == false ) {
716
+ if (utils::isValidPm03Count (_pm_10_pc[idx].update .avg )) {
717
+ Serial.printf (" [%d] Particle Count 10 = %.1f\n " , ch, _pm_10_pc[idx].update .avg );
718
+ } else {
719
+ Serial.printf (" [%d] Particle Count 10 = -\n " );
720
+ }
721
+ }
722
+ }
723
+
573
724
void Measurements::validateChannel (int ch) {
574
725
if (ch != 1 && ch != 2 ) {
575
726
Serial.printf (" ERROR! Channel %d is undefined. Only channel 1 or 2 is the optional value!" , ch);
0 commit comments