mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 00:09:51 +03:00
analogsensor counter store to nvs
This commit is contained in:
@@ -160,6 +160,9 @@ void AnalogSensor::reload() {
|
|||||||
#endif
|
#endif
|
||||||
sensor.polltime_ = 0;
|
sensor.polltime_ = 0;
|
||||||
sensor.poll_ = digitalRead(sensor.gpio());
|
sensor.poll_ = digitalRead(sensor.gpio());
|
||||||
|
if (double_t val = EMSESP::nvs_.getDouble(sensor.name().c_str(), 0)) {
|
||||||
|
sensor.set_value(val);
|
||||||
|
}
|
||||||
publish_sensor(sensor);
|
publish_sensor(sensor);
|
||||||
} else if (sensor.type() == AnalogType::TIMER || sensor.type() == AnalogType::RATE) {
|
} else if (sensor.type() == AnalogType::TIMER || sensor.type() == AnalogType::RATE) {
|
||||||
LOG_DEBUG("Adding analog Timer/Rate sensor on GPIO %02d", sensor.gpio());
|
LOG_DEBUG("Adding analog Timer/Rate sensor on GPIO %02d", sensor.gpio());
|
||||||
@@ -274,6 +277,7 @@ void AnalogSensor::measure() {
|
|||||||
} else if (!sensor.poll_) { // falling edge
|
} else if (!sensor.poll_) { // falling edge
|
||||||
if (sensor.type() == AnalogType::COUNTER) {
|
if (sensor.type() == AnalogType::COUNTER) {
|
||||||
sensor.set_value(old_value + sensor.factor());
|
sensor.set_value(old_value + sensor.factor());
|
||||||
|
EMSESP::nvs_.putDouble(sensor.name().c_str(), sensor.value());
|
||||||
} else if (sensor.type() == AnalogType::RATE) { // dafault uom: Hz (1/sec) with factor 1
|
} else if (sensor.type() == AnalogType::RATE) { // dafault uom: Hz (1/sec) with factor 1
|
||||||
sensor.set_value(sensor.factor() * 1000 / (sensor.polltime_ - sensor.last_polltime_));
|
sensor.set_value(sensor.factor() * 1000 / (sensor.polltime_ - sensor.last_polltime_));
|
||||||
} else if (sensor.type() == AnalogType::TIMER) { // default seconds with factor 1
|
} else if (sensor.type() == AnalogType::TIMER) { // default seconds with factor 1
|
||||||
@@ -315,10 +319,14 @@ bool AnalogSensor::update(uint8_t gpio, const std::string & name, double offset,
|
|||||||
found_sensor = true; // found the record
|
found_sensor = true; // found the record
|
||||||
// see if it's marked for deletion
|
// see if it's marked for deletion
|
||||||
if (deleted) {
|
if (deleted) {
|
||||||
|
EMSESP::nvs_.remove(AnalogCustomization.name.c_str());
|
||||||
LOG_DEBUG("Removing analog sensor GPIO %02d", gpio);
|
LOG_DEBUG("Removing analog sensor GPIO %02d", gpio);
|
||||||
settings.analogCustomizations.remove(AnalogCustomization);
|
settings.analogCustomizations.remove(AnalogCustomization);
|
||||||
} else {
|
} else {
|
||||||
// update existing record
|
// update existing record
|
||||||
|
if (name != AnalogCustomization.name) {
|
||||||
|
EMSESP::nvs_.remove(AnalogCustomization.name.c_str());
|
||||||
|
}
|
||||||
AnalogCustomization.name = name;
|
AnalogCustomization.name = name;
|
||||||
AnalogCustomization.offset = offset;
|
AnalogCustomization.offset = offset;
|
||||||
AnalogCustomization.factor = factor;
|
AnalogCustomization.factor = factor;
|
||||||
|
|||||||
Reference in New Issue
Block a user