From 725cf26d4197dc8d98c7a230ebf5e5859bfcb5e5 Mon Sep 17 00:00:00 2001 From: biver Date: Fri, 3 Dec 2021 10:03:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BD=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20=D1=81=D0=B5?= =?UTF-8?q?=D0=BD=D1=81=D0=BE=D1=80=D0=B0=20SHT20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/items/vSensorSHT20.h | 40 ++++++++++++++++ src/items/vSensorSHT20.cpp | 91 ++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 include/items/vSensorSHT20.h create mode 100644 src/items/vSensorSHT20.cpp diff --git a/include/items/vSensorSHT20.h b/include/items/vSensorSHT20.h new file mode 100644 index 00000000..0f79ab0b --- /dev/null +++ b/include/items/vSensorSHT20.h @@ -0,0 +1,40 @@ +#ifdef EnableSensorSht20 +#pragma once +#include +#include "Wire.h" +#include "SHT2x.h" + +#include "Global.h" + +extern SHT2x* sht; + +class SensorSht20; + +typedef std::vector MySensorSht20Vector; + +struct paramsSht { + String key; + unsigned long interval; + float c; +}; + +class SensorSht20 { + public: + SensorSht20(const paramsSht& paramsTmp, const paramsSht& paramsHum); + ~SensorSht20(); + + void loop(); + void read(); + + private: + paramsSht _paramsTmp; + paramsSht _paramsHum; + + unsigned long prevMillis; + unsigned long difference; +}; + +extern MySensorSht20Vector* mySensorSht20; + +extern void sht20Sensor(); +#endif \ No newline at end of file diff --git a/src/items/vSensorSHT20.cpp b/src/items/vSensorSHT20.cpp new file mode 100644 index 00000000..9c58b133 --- /dev/null +++ b/src/items/vSensorSHT20.cpp @@ -0,0 +1,91 @@ +#include "Consts.h" +#ifdef EnableSensorSht20 +#include "items/vSensorSht20.h" + +#include + +#include "BufferExecute.h" +#include "Class/LineParsing.h" +#include "Global.h" + +#include "Wire.h" +#include "SHT2x.h" +SHT2x* sht = nullptr; + +SensorSht20::SensorSht20(const paramsSht& paramsTmp, const paramsSht& paramsHum) { + _paramsTmp = paramsSht(paramsTmp); + _paramsHum = paramsSht(paramsHum); + + if (!sht) { + sht = new SHT2x; + } + + sht->begin(); + + uint8_t stat = sht->getStatus(); + Serial.print(stat, HEX); + Serial.println(); +} + +SensorSht20::~SensorSht20() {} + +void SensorSht20::loop() { + difference = millis() - prevMillis; + if (difference >= _paramsHum.interval) { + prevMillis = millis(); + read(); + } +} + +void SensorSht20::read() { + sht->read(); + + float tmp = sht->getTemperature(); + float hum = sht->getHumidity(); + + 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)); +} + +MySensorSht20Vector* mySensorSht20 = nullptr; + +void sht20Sensor() { + myLineParsing.update(); + String key = myLineParsing.gkey(); + String interval = myLineParsing.gint(); + String c = myLineParsing.gc(); + myLineParsing.clear(); + + static int enterCnt = -1; + enterCnt++; + + static paramsSht paramsTmp; + static paramsSht paramsHum; + + if (enterCnt == 0) { + paramsTmp.key = key; + paramsTmp.c = c.toFloat(); + } + + if (enterCnt == 1) { + paramsHum.key = key; + paramsHum.c = c.toFloat(); + paramsHum.interval = interval.toInt() * 1000; + + static bool firstTime = true; + if (firstTime) mySensorSht20 = new MySensorSht20Vector(); + firstTime = false; + mySensorSht20->push_back(SensorSht20(paramsTmp, paramsHum)); + } +} +#endif \ No newline at end of file