supla-device
Loading...
Searching...
No Matches
AHT.h
1// SPDX-FileCopyrightText: AC SOFTWARE SP. Z O.O.
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#ifndef SRC_SUPLA_SENSOR_AHT_H_
5#define SRC_SUPLA_SENSOR_AHT_H_
6
7#include <Adafruit_AHTX0.h>
8
9#include "therm_hygro_meter.h"
10
11namespace Supla {
12namespace Sensor {
13class AHT : public ThermHygroMeter {
14 public:
15 void onInit() {
16 aht.begin();
17 }
18
19 double getTemp() {
20 double value = TEMPERATURE_NOT_AVAILABLE;
21 aht.getEvent(&humidity, &temp);
22 value = temp.temperature;
23 if (isnan(value)) {
24 value = TEMPERATURE_NOT_AVAILABLE;
25 }
26 if (value == TEMPERATURE_NOT_AVAILABLE) {
27 retryCountTemp++;
28 if (retryCountTemp > 3) {
29 retryCountTemp = 0;
30 } else {
31 value = lastValidTemp;
32 }
33 } else {
34 retryCountTemp = 0;
35 }
36 lastValidTemp = value;
37 return value;
38 }
39
40 double getHumi() {
41 double value = HUMIDITY_NOT_AVAILABLE;
42 value = humidity.relative_humidity;
43 if (isnan(value)) {
44 value = HUMIDITY_NOT_AVAILABLE;
45 }
46 if (value == HUMIDITY_NOT_AVAILABLE) {
47 retryCountHumi++;
48 if (retryCountHumi > 3) {
49 retryCountHumi = 0;
50 } else {
51 value = lastValidHumi;
52 }
53 } else {
54 retryCountHumi = 0;
55 }
56 lastValidHumi = value;
57 return value;
58 }
59
60 protected:
61 Adafruit_AHTX0 aht;
62 double lastValidTemp = TEMPERATURE_NOT_AVAILABLE;
63 double lastValidHumi = HUMIDITY_NOT_AVAILABLE;
64 int8_t retryCountTemp = 0;
65 int8_t retryCountHumi = 0;
66 sensors_event_t temp;
67 sensors_event_t humidity;
68};
69}; // namespace Sensor
70}; // namespace Supla
71#endif // SRC_SUPLA_SENSOR_AHT_H_
Definition AHT.h:13
void onInit()
Third method called on element in SuplaDevice.begin()
Definition AHT.h:15
Definition therm_hygro_meter.h:14