supla-device
Loading...
Searching...
No Matches
therm_hygro_meter.h
1/*
2 Copyright (C) AC SOFTWARE SP. Z O.O.
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17*/
18
19#ifndef SRC_SUPLA_SENSOR_THERM_HYGRO_METER_H_
20#define SRC_SUPLA_SENSOR_THERM_HYGRO_METER_H_
21
22#include <supla/channel_element.h>
23#include <supla/sensor/thermometer_driver.h>
24
25#define HUMIDITY_NOT_AVAILABLE -1
26
27namespace Supla {
28namespace Sensor {
29class ThermHygroMeter : public ChannelElement {
30 public:
31 ThermHygroMeter();
32
33 void setRefreshIntervalMs(int intervalMs);
34
35 void onInit() override;
36 void onLoadConfig(SuplaDeviceClass *) override;
37 void iterateAlways() override;
38 void fillChannelConfig(void *channelConfig, int *size) override;
39 void purgeConfig() override;
40
41 virtual double getTemp();
42 virtual double getHumi();
43
44 int16_t getTempInt16();
45 int16_t getHumiInt16();
46
47 uint8_t applyChannelConfig(TSD_ChannelConfig *result, bool local) override;
48
49 int16_t getConfiguredTemperatureCorrection();
50 int16_t getConfiguredHumidityCorrection();
51
60 void applyCorrectionsAndStoreIt(int32_t temperatureCorrection,
61 int32_t humidityCorrection,
62 bool local = false);
63
76
85 void setMinMaxAllowedTemperatureAdjustment(int32_t minMax);
86
95 void setMinMaxAllowedHumidityAdjustment(int32_t minMax);
96
97 protected:
98 int16_t readCorrectionFromIndex(int index);
99 void setCorrectionAtIndex(int32_t correction, int index);
100 virtual void setTemperatureCorrection(int32_t correction);
101 virtual void setHumidityCorrection(int32_t correction);
102
103 uint32_t lastReadTime = 0;
104 uint16_t refreshIntervalMs = 10000;
105
111
117
121 bool applyCorrections = true;
122};
123
124}; // namespace Sensor
125}; // namespace Supla
126
127#endif // SRC_SUPLA_SENSOR_THERM_HYGRO_METER_H_
Definition SuplaDevice.h:93
void onLoadConfig(SuplaDeviceClass *) override
First method called on element in SuplaDevice.begin().
Definition therm_hygro_meter.cpp:87
void iterateAlways() override
Method called on each SuplaDevice iteration.
Definition therm_hygro_meter.cpp:80
bool applyCorrections
Whether correction should be applied by SD.
Definition therm_hygro_meter.h:121
void applyCorrectionsAndStoreIt(int32_t temperatureCorrection, int32_t humidityCorrection, bool local=false)
Apply temperature and humidity corrections and store them to Config.
Definition therm_hygro_meter.cpp:252
void setApplyCorrections(bool applyCorrections)
Set whether correction should be applied or not.
Definition therm_hygro_meter.cpp:300
int16_t minMaxAllowedTemperatureAdjustment
Minimum and maximum allowed temperature adjustment in 0.1 degree C.
Definition therm_hygro_meter.h:110
void setMinMaxAllowedHumidityAdjustment(int32_t minMax)
Set minimum and maximum allowed humidity adjustment.
Definition therm_hygro_meter.cpp:316
void setMinMaxAllowedTemperatureAdjustment(int32_t minMax)
Set minimum and maximum allowed temperature adjustment.
Definition therm_hygro_meter.cpp:305
int16_t minMaxAllowedHumidityAdjustment
Minimum and maximum allowed humidity adjustment in 0.1 RH.
Definition therm_hygro_meter.h:116
void onInit() override
Third method called on element in SuplaDevice.begin()
Definition therm_hygro_meter.cpp:32
void purgeConfig() override
Removes all configration data related to the element from Storage::Config.
Definition therm_hygro_meter.cpp:119
Definition proto.h:2912