analog counter save to nvs on command and update

This commit is contained in:
MichaelDvP
2025-06-07 11:57:01 +02:00
parent 71be615bbe
commit c71034ff12

View File

@@ -63,7 +63,7 @@ void AnalogSensor::reload(bool get_nvs) {
sensors_.clear(); sensors_.clear();
return; return;
} }
changed_ = true;
// load the list of analog sensors from the customization service // load the list of analog sensors from the customization service
// and store them locally and then activate them // and store them locally and then activate them
EMSESP::webCustomizationService.read([&](WebCustomization & settings) { EMSESP::webCustomizationService.read([&](WebCustomization & settings) {
@@ -74,10 +74,15 @@ void AnalogSensor::reload(bool get_nvs) {
for (const auto & sensor : settings.analogCustomizations) { // search customlist for (const auto & sensor : settings.analogCustomizations) { // search customlist
if (sensor_.gpio() == sensor.gpio) { if (sensor_.gpio() == sensor.gpio) {
// for output sensors set value to new start-value // for output sensors set value to new start-value
if ((sensor.type == AnalogType::COUNTER || sensor.type >= AnalogType::DIGITAL_OUT) if (sensor.type >= AnalogType::DIGITAL_OUT
&& (sensor_.type() != sensor.type || sensor_.offset() != sensor.offset || sensor_.factor() != sensor.factor)) { && (sensor_.type() != sensor.type || sensor_.offset() != sensor.offset || sensor_.factor() != sensor.factor)) {
sensor_.set_value(sensor.offset); sensor_.set_value(sensor.offset);
} }
if (sensor.type == AnalogType::COUNTER && sensor_.offset() != sensor.offset
&& sensor.offset != EMSESP::nvs_.getDouble(sensor.name.c_str(), 0)) {
EMSESP::nvs_.putDouble(sensor.name.c_str(), sensor.offset);
sensor_.set_value(sensor.offset);
}
sensor_.set_name(sensor.name); sensor_.set_name(sensor.name);
sensor_.set_type(sensor.type); sensor_.set_type(sensor.type);
sensor_.set_offset(sensor.offset); sensor_.set_offset(sensor.offset);
@@ -799,7 +804,8 @@ bool AnalogSensor::command_setvalue(const char * value, const int8_t gpio) {
// sensor.set_offset(val); // sensor.set_offset(val);
sensor.set_value(val); sensor.set_value(val);
} }
if (oldoffset != sensor.offset() && sensor.offset() != EMSESP::nvs_.getDouble(sensor.name().c_str())) { sensor.set_offset(sensor.value());
if (sensor.value() != EMSESP::nvs_.getDouble(sensor.name().c_str(), 0)) {
EMSESP::nvs_.putDouble(sensor.name().c_str(), sensor.value()); EMSESP::nvs_.putDouble(sensor.name().c_str(), sensor.value());
} }
} else if (sensor.type() == AnalogType::ADC) { } else if (sensor.type() == AnalogType::ADC) {