15
15
// TODO is ..._SUPPORT wrapping necessary inside of sensor includes?
16
16
// TODO ..._PORT should not be used in the class itself?
17
17
18
+ // TODO ignore -Wunused-value that comes up here from interrupts() / noInterrupts() usage
19
+ #undef xt_rsil
20
+ #define xt_rsil (X )
21
+
18
22
#define SENSOR_SUPPORT 1
19
23
#define CSE7766_SUPPORT 1
20
24
#define A02YYU_SUPPORT 1
25
+ #define DHT_SUPPORT 1
21
26
22
27
#include < espurna/config/sensors.h>
23
28
#include < espurna/sensors/CSE7766Sensor.h>
24
29
#include < espurna/sensors/A02YYUSensor.h>
30
+ #include < espurna/sensors/DHTSensor.h>
25
31
26
32
#include < memory>
27
33
#include < vector>
@@ -193,6 +199,49 @@ void test_a02yyu_data() {
193
199
TEST_ASSERT_EQUAL_DOUBLE (1.953 , ptr->value (0 ));
194
200
}
195
201
202
+ void test_dht_data () {
203
+ constexpr auto a = 0b00011010 ;
204
+ constexpr auto b = 0b10000110 ;
205
+
206
+ TEST_ASSERT_EQUAL_FLOAT (56 .8f ,
207
+ dht_humidity (DHT_CHIP_DHT12, {0x38 , 0x8 }));
208
+ TEST_ASSERT_EQUAL_FLOAT (26 .6f ,
209
+ dht_temperature (DHT_CHIP_DHT12, {0x1a , 0x6 }));
210
+ TEST_ASSERT_EQUAL_FLOAT (-26 .6f ,
211
+ dht_temperature (DHT_CHIP_DHT12, {0x1a , 0x86 }));
212
+
213
+ TEST_ASSERT_EQUAL_FLOAT (44 .9f ,
214
+ dht_humidity (DHT_CHIP_DHT22, {0x1 , 0xc1 }));
215
+ TEST_ASSERT_EQUAL_FLOAT (0 .2f ,
216
+ dht_temperature (DHT_CHIP_DHT22, {0x0 , 0x2 }));
217
+ TEST_ASSERT_EQUAL_FLOAT (-0 .2f ,
218
+ dht_temperature (DHT_CHIP_DHT22, {0x80 , 0x2 }));
219
+
220
+ TEST_ASSERT_EQUAL_FLOAT (92 .3f ,
221
+ dht_humidity (DHT_CHIP_DHT22, {0x3 , 0x9b }));
222
+ TEST_ASSERT_EQUAL_FLOAT (2 .9f ,
223
+ dht_temperature (DHT_CHIP_DHT22, {0x0 , 0x1d }));
224
+
225
+ TEST_ASSERT_EQUAL_FLOAT (56 .3f ,
226
+ dht_humidity (DHT_CHIP_DHT22, {0x2 , 0x33 }));
227
+ TEST_ASSERT_EQUAL_FLOAT (-0 .9f ,
228
+ dht_temperature (DHT_CHIP_DHT22, {0xff , 0xf7 }));
229
+
230
+ TEST_ASSERT_EQUAL_FLOAT (93 .0f ,
231
+ dht_humidity (DHT_CHIP_DHT22, {0x3 , 0xa2 }));
232
+ TEST_ASSERT_EQUAL_FLOAT (-4 .8f ,
233
+ dht_temperature (DHT_CHIP_DHT22, {0xff , 0xd0 }));
234
+ TEST_ASSERT_EQUAL_FLOAT (-4 .7f ,
235
+ dht_temperature (DHT_CHIP_DHT22, {0xff , 0xd1 }));
236
+ TEST_ASSERT_EQUAL_FLOAT (-4 .6f ,
237
+ dht_temperature (DHT_CHIP_DHT22, {0xff , 0xd2 }));
238
+
239
+ TEST_ASSERT_EQUAL_FLOAT (88 .9f ,
240
+ dht_humidity (DHT_CHIP_DHT22, {0x3 , 0x79 }));
241
+ TEST_ASSERT_EQUAL_FLOAT (-2 .2f ,
242
+ dht_temperature (DHT_CHIP_DHT22, {0xf , 0xea }));
243
+ }
244
+
196
245
} // namespace
197
246
} // namespace test
198
247
} // namespace espurna
@@ -202,5 +251,6 @@ int main(int, char**) {
202
251
using namespace espurna ::test;
203
252
RUN_TEST (test_cse7766_data);
204
253
RUN_TEST (test_a02yyu_data);
254
+ RUN_TEST (test_dht_data);
205
255
return UNITY_END ();
206
256
}
0 commit comments