diff --git a/include/items/vSensorDht.h b/include/items/vSensorDht.h index c95992b3..b3848c84 100644 --- a/include/items/vSensorDht.h +++ b/include/items/vSensorDht.h @@ -13,7 +13,6 @@ typedef std::vector MySensorDhtVector; struct params { String type; - String value; String key; unsigned long interval; unsigned int pin; @@ -31,8 +30,9 @@ class SensorDht { private: params _paramsTmp; params _paramsHum; - - unsigned long currentMillis; + + unsigned int interval; + unsigned long prevMillis; unsigned long difference; }; diff --git a/src/items/vSensorDht.cpp b/src/items/vSensorDht.cpp index 70fc3328..18b22f09 100644 --- a/src/items/vSensorDht.cpp +++ b/src/items/vSensorDht.cpp @@ -18,91 +18,78 @@ SensorDht::SensorDht(const params& paramsTmp, const params& paramsHum) { dht->setup(_paramsTmp.pin, DHTesp::DHT11); - //dht->getMinimumSamplingPeriod() + interval = _paramsTmp.interval < _paramsHum.interval ? _paramsTmp.interval : _paramsHum.interval; + interval = interval + dht->getMinimumSamplingPeriod(); } SensorDht::~SensorDht() {} void SensorDht::loop() { - //currentMillis = millis(); - //difference = currentMillis - prevMillis; - //if (difference >= _myParams.interval) { - // prevMillis = millis(); - // readTmpHum(); - //} + difference = millis() - prevMillis; + if (difference >= interval) { + prevMillis = millis(); + readTmpHum(); + } } void SensorDht::readTmpHum() { - //float tmp; - //float hum; - //tmp = dht->getTemperature(); - //hum = dht->getHumidity(); - // - //if (String(tmp) != "nan" && String(hum) != "nan") { - // if (_myParams.type == "tmp") { - // } - // - // if (_myParams.type == "hum") { - // } - // - // tmp = tmp * _tmpSet.c; - // hum = hum * _humSet.c; - // - // if (_tmpSet.interval > 0) { - // eventGen2(_tmpSet.key, String(tmp)); - // jsonWriteStr(configLiveJson, _tmpSet.key, String(tmp)); - // publishStatus(_tmpSet.key, String(tmp)); - // SerialPrint("I", "Sensor", "'" + _tmpSet.key + "' data: " + String(tmp)); - // } - // - // if (_humSet.interval > 0) { - // eventGen2(_humSet.key, String(hum)); - // jsonWriteStr(configLiveJson, _humSet.key, String(hum)); - // publishStatus(_humSet.key, String(hum)); - // SerialPrint("I", "Sensor", "'" + _humSet.key + "' data: " + String(hum)); - // } - // - //} else { - // SerialPrint("E", "Sensor DHT", "Error"); - //} -} + float tmp; + float hum; -//if (dht->getStatus() != 0 && counter < 5) { -// counter++; -// SerialPrint("E", "Sensor", "Disconnected " + String(counter) + " " + dht->getStatusString()); -//} else { + tmp = dht->getTemperature(); + hum = dht->getHumidity(); + + if (String(tmp) != "nan" && String(hum) != "nan") { + tmp = tmp * _paramsTmp.c; + hum = hum * _paramsHum.c; + + eventGen2(_paramsTmp.key, String(tmp)); + jsonWriteStr(configLiveJson, _paramsTmp.key, String(tmp)); + publishStatus(_paramsTmp.key, String(tmp)); + SerialPrint("I", "Sensor", "'" + _paramsTmp.key + "' data: " + String(tmp)); + + eventGen2(_paramsHum.key, String(hum)); + jsonWriteStr(configLiveJson, _paramsHum.key, String(hum)); + publishStatus(_paramsHum.key, String(hum)); + SerialPrint("I", "Sensor", "'" + _paramsHum.key + "' data: " + String(hum)); + + } else { + SerialPrint("E", "Sensor DHT", "Error"); + } +} MySensorDhtVector* mySensorDht = nullptr; void dhtSensor() { myLineParsing.update(); String type = myLineParsing.gtype(); - String value = myLineParsing.gval(); String interval = myLineParsing.gint(); String pin = myLineParsing.gpin(); String key = myLineParsing.gkey(); String c = myLineParsing.gc(); myLineParsing.clear(); + + static int enterCnt = -1; + enterCnt++; + static params paramsTmp; static params paramsHum; - if (value = "tmp") { + + if (enterCnt == 0) { paramsTmp.type = type; - paramsTmp.value = value; paramsTmp.key = key; paramsTmp.interval = interval.toInt() * 1000; paramsTmp.pin = pin.toInt(); paramsTmp.c = c.toFloat(); } - if (value = "hum") { + + if (enterCnt == 1) { paramsHum.type = type; - paramsHum.value = value; paramsHum.key = key; paramsHum.interval = interval.toInt() * 1000; paramsHum.pin = pin.toInt(); paramsHum.c = c.toFloat(); - } - dht_EnterCounter++; - if (dht_EnterCounter == 2) { + static bool firstTime = true; if (firstTime) mySensorDht = new MySensorDhtVector(); firstTime = false;