mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
calculate dallassensor offset
This commit is contained in:
@@ -140,7 +140,11 @@ void DallasSensor::loop() {
|
||||
bool found = false;
|
||||
for (auto & sensor : sensors_) {
|
||||
if (sensor.id() == get_id(addr)) {
|
||||
changed_ |= (t != sensor.temperature_c);
|
||||
t += sensor.offset();
|
||||
if (t != sensor.temperature_c) {
|
||||
sensor.temperature_c = t;
|
||||
changed_ |= true;
|
||||
}
|
||||
sensor.temperature_c = t;
|
||||
sensor.read = true;
|
||||
found = true;
|
||||
@@ -150,7 +154,7 @@ void DallasSensor::loop() {
|
||||
// add new sensor
|
||||
if (!found && (sensors_.size() < (MAX_SENSORS - 1))) {
|
||||
sensors_.emplace_back(addr);
|
||||
sensors_.back().temperature_c = t;
|
||||
sensors_.back().temperature_c = t + sensors_.back().offset();
|
||||
sensors_.back().read = true;
|
||||
changed_ = true;
|
||||
}
|
||||
@@ -321,6 +325,20 @@ std::string DallasSensor::Sensor::to_string() const {
|
||||
return str;
|
||||
}
|
||||
|
||||
int16_t DallasSensor::Sensor::offset() const {
|
||||
std::string str = id_string();
|
||||
int16_t offset = 0;
|
||||
EMSESP::webSettingsService.read([&](WebSettings & settings) {
|
||||
for (uint8_t i = 0; i < NUM_SENSOR_NAMES; i++) {
|
||||
if (strcmp(settings.sensor[i].id.c_str(), str.c_str()) == 0) {
|
||||
offset = settings.sensor[i].offset;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
void DallasSensor::add_name(const char * id, const char * name, int16_t offset) {
|
||||
EMSESP::webSettingsService.update([&](WebSettings & settings) {
|
||||
// check for new name of stored id
|
||||
|
||||
@@ -48,6 +48,7 @@ class DallasSensor {
|
||||
uint64_t id() const;
|
||||
std::string id_string() const;
|
||||
std::string to_string() const;
|
||||
int16_t offset() const;
|
||||
|
||||
int16_t temperature_c = EMS_VALUE_SHORT_NOTSET;
|
||||
bool read = false;
|
||||
|
||||
Reference in New Issue
Block a user