From c72af8650b2718cbfd0eaef071349b36eee68b0d Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Tue, 5 Jan 2021 03:48:52 +0100 Subject: [PATCH] =?UTF-8?q?ccs811=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=B0=D1=8F?= =?UTF-8?q?=20=D0=B8=D0=BD=D1=82=D0=B5=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/items/items.txt | 2 ++ data/set.device.json.gz | Bin 2682 -> 2708 bytes data/widgets/anydataPpb.json | 5 +++ data/widgets/anydataPpm.json | 5 +++ data_ungzip/set.device.json | 11 ++++--- include/items/vSensorCcs811.h | 4 +-- src/BufferExecute.cpp | 58 +++++++++++++++------------------- src/items/vSensorCcs811.cpp | 44 +++++++++++++------------- src/main.cpp | 12 +++++-- 9 files changed, 76 insertions(+), 65 deletions(-) create mode 100644 data/widgets/anydataPpb.json create mode 100644 data/widgets/anydataPpm.json diff --git a/data/items/items.txt b/data/items/items.txt index 52db5c4d..48ac1334 100644 --- a/data/items/items.txt +++ b/data/items/items.txt @@ -18,6 +18,8 @@ 0;bme280;prsid;anydataPress;Сенсоры;Давление;3;c[1];addr[0x76];int[10]* 0;bmp280;tmpid;anydataTemp;Сенсоры;Температура;1;c[1] 0;bmp280;prsid;anydataPress;Сенсоры;Давление;3;c[1];addr[0x76];int[10]* +0;ccs811;ppmid;anydataPpm;Сенсоры;Содержание#CO2;1;c[1] +0;ccs811;ppbid;anydataPpb;Сенсоры;Содержание#орг#соед;2;c[1];int[10]* 0;impuls-out;impid;na;na;na;order;gpio* 0;count-down;cntid;anydata;Таймер;Обратный#отчет;order* 0;inoutput;txtid;anydata;Вывод;Вывод#uart;order* diff --git a/data/set.device.json.gz b/data/set.device.json.gz index 08608508c527a52f918319ef96bdf4cd852a04f7..bac0b0a9a184024b38d6fb2dea5ff842b87f50ec 100644 GIT binary patch delta 2679 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 LoYKW(iz@&C+1w4I diff --git a/data/widgets/anydataPpb.json b/data/widgets/anydataPpb.json new file mode 100644 index 00000000..037e77d3 --- /dev/null +++ b/data/widgets/anydataPpb.json @@ -0,0 +1,5 @@ +{ + "widget": "anydata", + "after": "ppb", + "icon": "body" + } \ No newline at end of file diff --git a/data/widgets/anydataPpm.json b/data/widgets/anydataPpm.json new file mode 100644 index 00000000..e4d134e7 --- /dev/null +++ b/data/widgets/anydataPpm.json @@ -0,0 +1,5 @@ +{ + "widget": "anydata", + "after": "ppm", + "icon": "body" + } \ No newline at end of file diff --git a/data_ungzip/set.device.json b/data_ungzip/set.device.json index 289fcf9e..8cf55c7b 100644 --- a/data_ungzip/set.device.json +++ b/data_ungzip/set.device.json @@ -93,11 +93,12 @@ "/set?addItem=13": "13.Датчик температуры и влажности DHT22, DHT33, DHT44, AM2302, RHT03", "/set?addItem=14": "14.Датчик температуры, влажности и давления bme280", "/set?addItem=15": "15.Датчик температуры и давления bmp280", - "/set?addItem=16": "16.Создать импульсы через заданный промежуток времени (управление шд)", - "/set?addItem=17": "17.Таймер обратного отчета", - "/set?addItem=18": "18.Виджет для отображения информации полученной из uart, get-запроса, или по udp", - "/set?addItem=19": "19.Логгирование и вывод в график любой величины", - "/set?addItem=20": "20.Отобразить время работы устройства" + "/set?addItem=16": "16.Датчик качества воздуха ccs811", + "/set?addItem=17": "17.Создать импульсы через заданный промежуток времени (управление шд)", + "/set?addItem=18": "18.Таймер обратного отчета", + "/set?addItem=19": "19.Виджет для отображения информации полученной из uart, get-запроса, или по udp", + "/set?addItem=20": "20.Логгирование и вывод в график любой величины", + "/set?addItem=21": "21.Отобразить время работы устройства" } }, { diff --git a/include/items/vSensorCcs811.h b/include/items/vSensorCcs811.h index a6ce5c41..37b8a005 100644 --- a/include/items/vSensorCcs811.h +++ b/include/items/vSensorCcs811.h @@ -18,7 +18,7 @@ struct paramsCcs811 { class SensorCcs811 { public: - SensorCcs811(const paramsCcs811& paramsCo2, const paramsCcs811& paramsPpm); + SensorCcs811(const paramsCcs811& paramsPpm, const paramsCcs811& paramsPpb); ~SensorCcs811(); Adafruit_CCS811* ccs811; @@ -27,8 +27,8 @@ class SensorCcs811 { void read(); private: - paramsCcs811 _paramsCo2; paramsCcs811 _paramsPpm; + paramsCcs811 _paramsPpb; unsigned long prevMillis; unsigned long difference; diff --git a/src/BufferExecute.cpp b/src/BufferExecute.cpp index 2d079244..ae9f58a0 100644 --- a/src/BufferExecute.cpp +++ b/src/BufferExecute.cpp @@ -1,25 +1,27 @@ #include "BufferExecute.h" + #include "Global.h" #include "SoftUART.h" // -#include "items/vSensorUptime.h" -#include "items/vSensorDallas.h" -#include "items/vSensorUltrasonic.h" #include "items/vButtonOut.h" -#include "items/vPwmOut.h" +#include "items/vCountDown.h" +#include "items/vImpulsOut.h" #include "items/vInOutput.h" #include "items/vLogging.h" -#include "items/vImpulsOut.h" -#include "items/vCountDown.h" +#include "items/vPwmOut.h" #include "items/vSensorAnalog.h" -#include "items/vSensorDht.h" #include "items/vSensorBme280.h" #include "items/vSensorBmp280.h" +#include "items/vSensorDallas.h" +#include "items/vSensorDht.h" +#include "items/vSensorUltrasonic.h" +#include "items/vSensorUptime.h" +#include "items/vSensorCcs811.h" void loopCmdAdd(const String& cmdStr) { if (cmdStr.endsWith(",")) { orderBuf += cmdStr; -#ifdef uartEnable +#ifdef uartEnable if (jsonReadBool(configSetupJson, "uart")) { if (jsonReadBool(configSetupJson, "uartEvents")) { if (myUART) { @@ -51,7 +53,7 @@ void csvCmdExecute(String& cmdStr) { count++; if (count > 1) { SerialPrint("I", "Items", buf); - String order = selectToMarker(buf, " "); //отсечка самой команды + String order = selectToMarker(buf, " "); //отсечка самой команды if (order == F("button-out")) { sCmd.addCommand(order.c_str(), buttonOut); @@ -63,17 +65,13 @@ void csvCmdExecute(String& cmdStr) { #endif else if (order == F("button-in")) { sCmd.addCommand(order.c_str(), buttonIn); - } - else if (order == F("inoutput")) { + } else if (order == F("inoutput")) { sCmd.addCommand(order.c_str(), inOutput); - } - else if (order == F("analog-adc")) { + } else if (order == F("analog-adc")) { sCmd.addCommand(order.c_str(), analogAdc); - } - else if (order == F("ultrasonic-cm")) { + } else if (order == F("ultrasonic-cm")) { sCmd.addCommand(order.c_str(), ultrasonic); - } - else if (order == F("dallas-temp")) { + } else if (order == F("dallas-temp")) { sCmd.addCommand(order.c_str(), dallas); } #ifdef SensorDhtEnabled @@ -86,21 +84,18 @@ void csvCmdExecute(String& cmdStr) { sCmd.addCommand(order.c_str(), bme280Sensor); } #endif -#ifdef SensorBmp280Enabled + else if (order == F("ccs811")) { + sCmd.addCommand(order.c_str(), ccs811Sensor); + } else if (order == F("bmp280")) { sCmd.addCommand(order.c_str(), bmp280Sensor); - } -#endif - else if (order == F("uptime")) { + } else if (order == F("uptime")) { sCmd.addCommand(order.c_str(), uptimeSensor); - } - else if (order == F("logging")) { + } else if (order == F("logging")) { sCmd.addCommand(order.c_str(), logging); - } - else if (order == F("impuls-out")) { + } else if (order == F("impuls-out")) { sCmd.addCommand(order.c_str(), impuls); - } - else if (order == F("count-down")) { + } else if (order == F("count-down")) { sCmd.addCommand(order.c_str(), countDown); } @@ -154,14 +149,11 @@ String getValue(String& key) { String store = jsonReadStr(configStoreJson, key); if (live != nullptr) { return live; - } - else if (store != nullptr) { + } else if (store != nullptr) { return store; - } - else if (store == nullptr && live == nullptr) { + } else if (store == nullptr && live == nullptr) { return "no value"; - } - else { + } else { return "data error"; } } diff --git a/src/items/vSensorCcs811.cpp b/src/items/vSensorCcs811.cpp index 07c3bed6..97d9eed5 100644 --- a/src/items/vSensorCcs811.cpp +++ b/src/items/vSensorCcs811.cpp @@ -6,9 +6,9 @@ #include "Class/LineParsing.h" #include "Global.h" -SensorCcs811::SensorCcs811(const paramsCcs811& paramsCo2, const paramsCcs811& paramsPpm) { - _paramsCo2 = paramsCcs811(paramsCo2); +SensorCcs811::SensorCcs811(const paramsCcs811& paramsPpm, const paramsCcs811& paramsPpb) { _paramsPpm = paramsCcs811(paramsPpm); + _paramsPpb = paramsCcs811(paramsPpb); ccs811 = new Adafruit_CCS811(); @@ -19,7 +19,7 @@ SensorCcs811::~SensorCcs811() {} void SensorCcs811::loop() { difference = millis() - prevMillis; - if (difference >= _paramsPpm.interval) { + if (difference >= _paramsPpb.interval) { prevMillis = millis(); read(); } @@ -33,18 +33,18 @@ void SensorCcs811::read() { co2 = ccs811->geteCO2(); ppm = ccs811->getTVOC(); - co2 = co2 * _paramsCo2.c; - ppm = ppm * _paramsPpm.c; + co2 = co2 * _paramsPpm.c; + ppm = ppm * _paramsPpb.c; - eventGen2(_paramsCo2.key, String(co2)); - jsonWriteStr(configLiveJson, _paramsCo2.key, String(co2)); - publishStatus(_paramsCo2.key, String(co2)); - SerialPrint("I", "Sensor", "'" + _paramsCo2.key + "' data: " + String(co2)); + eventGen2(_paramsPpm.key, String(co2)); + jsonWriteStr(configLiveJson, _paramsPpm.key, String(co2)); + publishStatus(_paramsPpm.key, String(co2)); + SerialPrint("I", "Sensor", "'" + _paramsPpm.key + "' data: " + String(co2)); - eventGen2(_paramsPpm.key, String(ppm)); - jsonWriteStr(configLiveJson, _paramsPpm.key, String(ppm)); - publishStatus(_paramsPpm.key, String(ppm)); - SerialPrint("I", "Sensor", "'" + _paramsPpm.key + "' data: " + String(ppm)); + eventGen2(_paramsPpb.key, String(ppm)); + jsonWriteStr(configLiveJson, _paramsPpb.key, String(ppm)); + publishStatus(_paramsPpb.key, String(ppm)); + SerialPrint("I", "Sensor", "'" + _paramsPpb.key + "' data: " + String(ppm)); } else { SerialPrint("E", "Sensor CCS", "Error"); } @@ -64,25 +64,25 @@ void ccs811Sensor() { static int enterCnt = -1; enterCnt++; - static paramsCcs811 paramsCo2; static paramsCcs811 paramsPpm; + static paramsCcs811 paramsPpb; if (enterCnt == 0) { - paramsCo2.key = key; - paramsCo2.interval = interval.toInt() * 1000; - paramsCo2.c = c.toFloat(); + paramsPpm.key = key; + paramsPpm.interval = interval.toInt() * 1000; + paramsPpm.c = c.toFloat(); } if (enterCnt == 1) { - paramsPpm.key = key; - paramsPpm.addr = addr; - paramsPpm.interval = interval.toInt() * 1000; - paramsPpm.c = c.toFloat(); + paramsPpb.key = key; + paramsPpb.addr = addr; + paramsPpb.interval = interval.toInt() * 1000; + paramsPpb.c = c.toFloat(); static bool firstTime = true; if (firstTime) mySensorCcs811 = new MySensorCcs811Vector(); firstTime = false; - mySensorCcs811->push_back(SensorCcs811(paramsCo2, paramsPpm)); + mySensorCcs811->push_back(SensorCcs811(paramsPpm, paramsPpb)); enterCnt = -1; } diff --git a/src/main.cpp b/src/main.cpp index df2f4462..a9bf0f88 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -29,6 +29,7 @@ #include "items/vSensorDallas.h" #include "items/vSensorDht.h" #include "items/vSensorUltrasonic.h" +#include "items/vSensorCcs811.h" void not_async_actions(); @@ -154,9 +155,14 @@ void loop() { mySensorBmp280->at(i).loop(); } } - if (mySensorUptime != nullptr) { - for (unsigned int i = 0; i < mySensorUptime->size(); i++) { - mySensorUptime->at(i).loop(); + if (mySensorBmp280 != nullptr) { + for (unsigned int i = 0; i < mySensorBmp280->size(); i++) { + mySensorBmp280->at(i).loop(); + } + } + if (mySensorCcs811 != nullptr) { + for (unsigned int i = 0; i < mySensorCcs811->size(); i++) { + mySensorCcs811->at(i).loop(); } } } \ No newline at end of file