55 Comfort_HotAndHumid = 9,
56 Comfort_HotAndDry = 5,
57 Comfort_ColdAndHumid = 10,
58 Comfort_ColdAndDry = 6
62 enum PerceptionState {
64 Perception_VeryComfy = 1,
67 Perception_UnComfy = 4,
68 Perception_QuiteUnComfy = 5,
69 Perception_VeryUnComfy = 6,
70 Perception_SevereUncomfy = 7
82 float m_tooHot_m, m_tooHot_b;
83 float m_tooCold_m, m_tooHCold_b;
84 float m_tooDry_m, m_tooDry_b;
85 float m_tooHumid_m, m_tooHumid_b;
87 inline bool isTooHot(
float temp,
float humidity) {
return (temp > (humidity * m_tooHot_m + m_tooHot_b));}
88 inline bool isTooHumid(
float temp,
float humidity) {
return (temp > (humidity * m_tooHumid_m + m_tooHumid_b));}
89 inline bool isTooCold(
float temp,
float humidity) {
return (temp < (humidity * m_tooCold_m + m_tooHCold_b));}
90 inline bool isTooDry(
float temp,
float humidity) {
return (temp < (humidity * m_tooDry_m + m_tooDry_b));}
92 inline float distanceTooHot(
float temp,
float humidity) {
return temp - (humidity * m_tooHot_m + m_tooHot_b);}
93 inline float distanceTooHumid(
float temp,
float humidity) {
return temp - (humidity * m_tooHumid_m + m_tooHumid_b);}
94 inline float distanceTooCold(
float temp,
float humidity) {
return (humidity * m_tooCold_m + m_tooHCold_b) - temp;}
95 inline float distanceTooDry(
float temp,
float humidity) {
return (humidity * m_tooDry_m + m_tooDry_b) - temp;}
120 void setup(uint8_t pin, DHT_MODEL_t model=AUTO_DETECT);
123 float getTemperature();
127 DHT_ERROR_t getStatus() {
return error; };
128 const char* getStatusString();
130 DHT_MODEL_t getModel() {
return model; }
132 int getMinimumSamplingPeriod() {
return model == DHT11 ? 1000 : 2000; }
134 int8_t getNumberOfDecimalsTemperature() {
return model == DHT11 ? 0 : 1; };
135 int8_t getLowerBoundTemperature() {
return model == DHT11 ? 0 : -40; };
136 int8_t getUpperBoundTemperature() {
return model == DHT11 ? 50 : 125; };
138 int8_t getNumberOfDecimalsHumidity() {
return 0; };
139 int8_t getLowerBoundHumidity() {
return model == DHT11 ? 20 : 0; };
140 int8_t getUpperBoundHumidity() {
return model == DHT11 ? 90 : 100; };
142 static float toFahrenheit(
float fromCelcius) {
return 1.8 * fromCelcius + 32.0; };
143 static float toCelsius(
float fromFahrenheit) {
return (fromFahrenheit - 32.0) / 1.8; };
145 float computeHeatIndex(
float temperature,
float percentHumidity,
bool isFahrenheit=
false);
146 float computeDewPoint(
float temperature,
float percentHumidity,
bool isFahrenheit=
false);
147 float getComfortRatio(ComfortState& destComfStatus,
float temperature,
float percentHumidity,
bool isFahrenheit=
false);
150 inline bool isTooHot(
float temp,
float humidity) {
return m_comfort.isTooHot(temp, humidity);}
151 inline bool isTooHumid(
float temp,
float humidity) {
return m_comfort.isTooHumid(temp, humidity);}
152 inline bool isTooCold(
float temp,
float humidity) {
return m_comfort.isTooCold(temp, humidity);}
153 inline bool isTooDry(
float temp,
float humidity) {
return m_comfort.isTooDry(temp, humidity);}
154 byte computePerception(
float temperature,
float percentHumidity,
bool isFahrenheit=
false);
166 unsigned long lastReadTime;