mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 03:49:13 +03:00
исправления, компиляция для 32
This commit is contained in:
@@ -3,8 +3,8 @@
|
|||||||
"name": "IoTmanagerVer4",
|
"name": "IoTmanagerVer4",
|
||||||
"apssid": "IoTmanager",
|
"apssid": "IoTmanager",
|
||||||
"appass": "",
|
"appass": "",
|
||||||
"routerssid": "rise",
|
"routerssid": "MercureSpeedZone",
|
||||||
"routerpass": "hostel3333",
|
"routerpass": "",
|
||||||
"timezone": 1,
|
"timezone": 1,
|
||||||
"ntp": "pool.ntp.org",
|
"ntp": "pool.ntp.org",
|
||||||
"weblogin": "admin",
|
"weblogin": "admin",
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "Global.h"
|
#include "Global.h"
|
||||||
|
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
|
//эта библиотека встроена в ядро
|
||||||
#include "ESPAsyncUDP.h"
|
#include "ESPAsyncUDP.h"
|
||||||
#else
|
#else
|
||||||
#include "AsyncUDP.h"
|
#include "AsyncUDP.h"
|
||||||
|
|||||||
@@ -31,12 +31,13 @@ data_dir = data_svelte
|
|||||||
[common_env_data]
|
[common_env_data]
|
||||||
lib_deps_external =
|
lib_deps_external =
|
||||||
bblanchon/ArduinoJson @6.18.0
|
bblanchon/ArduinoJson @6.18.0
|
||||||
me-no-dev/ESP Async WebServer
|
;me-no-dev/ESP Async WebServer
|
||||||
Links2004/WebSockets
|
Links2004/WebSockets
|
||||||
knolleary/PubSubClient
|
knolleary/PubSubClient
|
||||||
|
|
||||||
[env:esp8266_4mb_fromitems]
|
[env:esp8266_4mb_fromitems]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
|
ESPAsyncUDP
|
||||||
adafruit/Adafruit MCP23017 Arduino Library@^2.0.2
|
adafruit/Adafruit MCP23017 Arduino Library@^2.0.2
|
||||||
adafruit/Adafruit ADS1X15 @ ^2.3.0
|
adafruit/Adafruit ADS1X15 @ ^2.3.0
|
||||||
Adafruit AHTX0
|
Adafruit AHTX0
|
||||||
@@ -52,6 +53,7 @@ lib_deps =
|
|||||||
|
|
||||||
[env:esp32_4mb_fromitems]
|
[env:esp32_4mb_fromitems]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
|
plerup/EspSoftwareSerial
|
||||||
adafruit/Adafruit MCP23017 Arduino Library@^2.0.2
|
adafruit/Adafruit MCP23017 Arduino Library@^2.0.2
|
||||||
adafruit/Adafruit ADS1X15 @ ^2.3.0
|
adafruit/Adafruit ADS1X15 @ ^2.3.0
|
||||||
Adafruit AHTX0
|
Adafruit AHTX0
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ void setup() {
|
|||||||
// IoTItems.push_back((IoTItem*)new externalVariable("{\"id\":\"rel4\",\"val\":34,\"int\":30}"));
|
// IoTItems.push_back((IoTItem*)new externalVariable("{\"id\":\"rel4\",\"val\":34,\"int\":30}"));
|
||||||
|
|
||||||
// пример получения JSON всех Items
|
// пример получения JSON всех Items
|
||||||
Serial.println(getParamsJson());
|
// Serial.println(getParamsJson());
|
||||||
|
|
||||||
//чтение одного параметра
|
//чтение одного параметра
|
||||||
// Serial.println(findIoTItem("t1")->getValue());
|
// Serial.println(findIoTItem("t1")->getValue());
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
******************************************************************/
|
******************************************************************/
|
||||||
#include "Global.h"
|
#include "Global.h"
|
||||||
#include "classes/IoTItem.h"
|
#include "classes/IoTItem.h"
|
||||||
|
|
||||||
|
//встроена в ядро для 8266, для 32 по этому же имени обращаемся к другой библиотеке plerup/EspSoftwareSerial
|
||||||
#include <SoftwareSerial.h>
|
#include <SoftwareSerial.h>
|
||||||
|
|
||||||
extern IoTGpio IoTgpio;
|
extern IoTGpio IoTgpio;
|
||||||
@@ -31,11 +33,9 @@ int prevABC = 1;
|
|||||||
int ABC = 1;
|
int ABC = 1;
|
||||||
bool ABCchanged = false;
|
bool ABCchanged = false;
|
||||||
|
|
||||||
|
|
||||||
//Это файл сенсора, в нем осуществляется чтение сенсора.
|
//Это файл сенсора, в нем осуществляется чтение сенсора.
|
||||||
|
|
||||||
class Mhz19uart : public IoTItem
|
class Mhz19uart : public IoTItem {
|
||||||
{
|
|
||||||
private:
|
private:
|
||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
// Секция переменных.
|
// Секция переменных.
|
||||||
@@ -43,8 +43,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
|
|
||||||
Mhz19uart(String parameters) : IoTItem(parameters)
|
Mhz19uart(String parameters) : IoTItem(parameters) {
|
||||||
{
|
|
||||||
rxPinCO2 = jsonReadInt(parameters, "rxPin");
|
rxPinCO2 = jsonReadInt(parameters, "rxPin");
|
||||||
txPinCO2 = jsonReadInt(parameters, "txPin");
|
txPinCO2 = jsonReadInt(parameters, "txPin");
|
||||||
range = jsonReadInt(parameters, "range");
|
range = jsonReadInt(parameters, "range");
|
||||||
@@ -53,11 +52,9 @@ public:
|
|||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
// doByInterval()
|
// doByInterval()
|
||||||
|
|
||||||
void doByInterval()
|
void doByInterval() {
|
||||||
{
|
|
||||||
MHZ19uart_init();
|
MHZ19uart_init();
|
||||||
if (millis() > MHZ19C_PREHEATING_TIME)
|
if (millis() > MHZ19C_PREHEATING_TIME) {
|
||||||
{
|
|
||||||
Serial.println("Start checkUARTCO2");
|
Serial.println("Start checkUARTCO2");
|
||||||
value.valD = MHZ19_request(1);
|
value.valD = MHZ19_request(1);
|
||||||
}
|
}
|
||||||
@@ -72,8 +69,7 @@ public:
|
|||||||
//если сенсор предполагает использование общего объекта библиотеки для нескольких экземпляров сенсора, то в данной функции необходимо предусмотреть
|
//если сенсор предполагает использование общего объекта библиотеки для нескольких экземпляров сенсора, то в данной функции необходимо предусмотреть
|
||||||
//создание и контроль соответствующих глобальных переменных
|
//создание и контроль соответствующих глобальных переменных
|
||||||
|
|
||||||
class Mhz19pwm : public IoTItem
|
class Mhz19pwm : public IoTItem {
|
||||||
{
|
|
||||||
private:
|
private:
|
||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
// Секция переменных.
|
// Секция переменных.
|
||||||
@@ -82,14 +78,12 @@ private:
|
|||||||
public:
|
public:
|
||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
|
|
||||||
Mhz19pwm(String parameters) : IoTItem(parameters)
|
Mhz19pwm(String parameters) : IoTItem(parameters) {
|
||||||
{
|
|
||||||
pwmPin = jsonReadInt(parameters, "pin");
|
pwmPin = jsonReadInt(parameters, "pin");
|
||||||
}
|
}
|
||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
|
|
||||||
void doByInterval()
|
void doByInterval() {
|
||||||
{
|
|
||||||
MHZ19pwm_init();
|
MHZ19pwm_init();
|
||||||
if (millis() > MHZ19C_PREHEATING_TIME) //
|
if (millis() > MHZ19C_PREHEATING_TIME) //
|
||||||
{
|
{
|
||||||
@@ -100,23 +94,19 @@ public:
|
|||||||
}
|
}
|
||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
|
|
||||||
void MHZ19pwm_init()
|
void MHZ19pwm_init() {
|
||||||
{
|
|
||||||
static bool MHZ19pwm_flag = true;
|
static bool MHZ19pwm_flag = true;
|
||||||
if (MHZ19pwm_flag)
|
if (MHZ19pwm_flag) {
|
||||||
{
|
|
||||||
pinMode(pwmPin, INPUT);
|
pinMode(pwmPin, INPUT);
|
||||||
MHZ19pwm_flag = false;
|
MHZ19pwm_flag = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int MHZ19pwm_request()
|
int MHZ19pwm_request() {
|
||||||
{
|
|
||||||
int reply;
|
int reply;
|
||||||
Serial.println("Запрос замера по PWM запущен");
|
Serial.println("Запрос замера по PWM запущен");
|
||||||
unsigned long th, tl, ppm = 0, ppm2 = 0, ppm3 = 0;
|
unsigned long th, tl, ppm = 0, ppm2 = 0, ppm3 = 0;
|
||||||
do
|
do {
|
||||||
{
|
|
||||||
th = pulseIn(pwmPin, HIGH, 1004000) / 1000;
|
th = pulseIn(pwmPin, HIGH, 1004000) / 1000;
|
||||||
tl = 1004 - th;
|
tl = 1004 - th;
|
||||||
ppm2 = 2000 * (th - 2) / (th + tl - 4); // расчёт для диапазона от 0 до 2000ppm
|
ppm2 = 2000 * (th - 2) / (th + tl - 4); // расчёт для диапазона от 0 до 2000ppm
|
||||||
@@ -126,14 +116,11 @@ public:
|
|||||||
// Serial.print(th);
|
// Serial.print(th);
|
||||||
// Serial.println(" <- Milliseconds PWM is HIGH");
|
// Serial.println(" <- Milliseconds PWM is HIGH");
|
||||||
|
|
||||||
if (range == 2000)
|
if (range == 2000) {
|
||||||
{
|
|
||||||
reply = ppm2;
|
reply = ppm2;
|
||||||
Serial.print(ppm2);
|
Serial.print(ppm2);
|
||||||
Serial.println(" <- ppm2 (PWM) with 2000ppm as limit");
|
Serial.println(" <- ppm2 (PWM) with 2000ppm as limit");
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
reply = ppm3;
|
reply = ppm3;
|
||||||
Serial.print(ppm3);
|
Serial.print(ppm3);
|
||||||
Serial.println(" <- ppm3 (PWM) with 5000ppm as limit");
|
Serial.println(" <- ppm3 (PWM) with 5000ppm as limit");
|
||||||
@@ -147,16 +134,14 @@ public:
|
|||||||
|
|
||||||
//====================TEMP===================================================================================
|
//====================TEMP===================================================================================
|
||||||
|
|
||||||
class Mhz19temp : public IoTItem
|
class Mhz19temp : public IoTItem {
|
||||||
{
|
|
||||||
private:
|
private:
|
||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
// Секция переменных.
|
// Секция переменных.
|
||||||
public:
|
public:
|
||||||
//====================TEMP===================================================================================
|
//====================TEMP===================================================================================
|
||||||
|
|
||||||
Mhz19temp(String parameters) : IoTItem(parameters)
|
Mhz19temp(String parameters) : IoTItem(parameters) {
|
||||||
{
|
|
||||||
rxPinCO2 = jsonReadInt(parameters, "rxPin");
|
rxPinCO2 = jsonReadInt(parameters, "rxPin");
|
||||||
txPinCO2 = jsonReadInt(parameters, "txPin");
|
txPinCO2 = jsonReadInt(parameters, "txPin");
|
||||||
range = jsonReadInt(parameters, "range");
|
range = jsonReadInt(parameters, "range");
|
||||||
@@ -164,20 +149,15 @@ public:
|
|||||||
}
|
}
|
||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
|
|
||||||
void doByInterval()
|
void doByInterval() {
|
||||||
{
|
|
||||||
// Serial.println("Start Mhz19temp doByInterval");
|
// Serial.println("Start Mhz19temp doByInterval");
|
||||||
if (temperatureUpdated)
|
if (temperatureUpdated) {
|
||||||
{
|
|
||||||
value.valD = temperature;
|
value.valD = temperature;
|
||||||
temperatureUpdated = false;
|
temperatureUpdated = false;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
MHZ19uart_init();
|
MHZ19uart_init();
|
||||||
Serial.println("Start temperature request");
|
Serial.println("Start temperature request");
|
||||||
if (MHZ19_request(13))
|
if (MHZ19_request(13)) {
|
||||||
{
|
|
||||||
value.valD = temperature;
|
value.valD = temperature;
|
||||||
}; // change
|
}; // change
|
||||||
}
|
}
|
||||||
@@ -191,45 +171,33 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
//=======================Range================
|
//=======================Range================
|
||||||
class Mhz19range : public IoTItem
|
class Mhz19range : public IoTItem {
|
||||||
{
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
public:
|
public:
|
||||||
Mhz19range(String parameters) : IoTItem(parameters)
|
Mhz19range(String parameters) : IoTItem(parameters) {
|
||||||
{
|
|
||||||
rxPinCO2 = jsonReadInt(parameters, "rxPin");
|
rxPinCO2 = jsonReadInt(parameters, "rxPin");
|
||||||
txPinCO2 = jsonReadInt(parameters, "txPin");
|
txPinCO2 = jsonReadInt(parameters, "txPin");
|
||||||
range = jsonReadInt(parameters, "range");
|
range = jsonReadInt(parameters, "range");
|
||||||
ABC = jsonReadInt(parameters, "ABC");
|
ABC = jsonReadInt(parameters, "ABC");
|
||||||
}
|
}
|
||||||
|
|
||||||
void doByInterval()
|
void doByInterval() {
|
||||||
{
|
if (range != prevRange) {
|
||||||
if (range != prevRange)
|
|
||||||
{
|
|
||||||
MHZ19uart_init();
|
MHZ19uart_init();
|
||||||
Serial.println("Start change range");
|
Serial.println("Start change range");
|
||||||
|
|
||||||
if (range == 2000)
|
if (range == 2000) {
|
||||||
{
|
if (MHZ19_request(9)) {
|
||||||
if (MHZ19_request(9))
|
|
||||||
{
|
|
||||||
prevRange = 2000;
|
prevRange = 2000;
|
||||||
value.valD = 2000;
|
value.valD = 2000;
|
||||||
} // change range to 2000
|
} // change range to 2000
|
||||||
}
|
} else {
|
||||||
else
|
if (MHZ19_request(10)) {
|
||||||
{
|
|
||||||
if (MHZ19_request(10))
|
|
||||||
{
|
|
||||||
prevRange = 5000;
|
prevRange = 5000;
|
||||||
value.valD = 5000;
|
value.valD = 5000;
|
||||||
} // change range to 5000
|
} // change range to 5000
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
value.valD = prevRange;
|
value.valD = prevRange;
|
||||||
}
|
}
|
||||||
regEvent(value.valD, "Mhz19range"); //обязательный вызов хотяб один
|
regEvent(value.valD, "Mhz19range"); //обязательный вызов хотяб один
|
||||||
@@ -240,42 +208,30 @@ public:
|
|||||||
|
|
||||||
//===================ABC=================
|
//===================ABC=================
|
||||||
|
|
||||||
class Mhz19ABC : public IoTItem
|
class Mhz19ABC : public IoTItem {
|
||||||
{
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
public:
|
public:
|
||||||
Mhz19ABC(String parameters) : IoTItem(parameters)
|
Mhz19ABC(String parameters) : IoTItem(parameters) {
|
||||||
{
|
|
||||||
rxPinCO2 = jsonReadInt(parameters, "rxPin");
|
rxPinCO2 = jsonReadInt(parameters, "rxPin");
|
||||||
txPinCO2 = jsonReadInt(parameters, "txPin");
|
txPinCO2 = jsonReadInt(parameters, "txPin");
|
||||||
range = jsonReadInt(parameters, "range");
|
range = jsonReadInt(parameters, "range");
|
||||||
ABC = jsonReadInt(parameters, "ABC");
|
ABC = jsonReadInt(parameters, "ABC");
|
||||||
}
|
}
|
||||||
|
|
||||||
void doByInterval()
|
void doByInterval() {
|
||||||
{
|
if (ABC != prevABC) {
|
||||||
if (ABC != prevABC)
|
if (ABC == 1) {
|
||||||
{
|
if (MHZ19_request(7)) {
|
||||||
if (ABC == 1)
|
|
||||||
{
|
|
||||||
if (MHZ19_request(7))
|
|
||||||
{
|
|
||||||
prevABC = 1;
|
prevABC = 1;
|
||||||
value.valD = 1;
|
value.valD = 1;
|
||||||
} // change ABC to 1
|
} // change ABC to 1
|
||||||
}
|
} else {
|
||||||
else
|
if (MHZ19_request(8)) {
|
||||||
{
|
|
||||||
if (MHZ19_request(8))
|
|
||||||
{
|
|
||||||
prevABC = 0;
|
prevABC = 0;
|
||||||
value.valD = 0;
|
value.valD = 0;
|
||||||
} // change ABC to 0
|
} // change ABC to 0
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
value.valD = prevABC;
|
value.valD = prevABC;
|
||||||
}
|
}
|
||||||
regEvent(value.valD, "Mhz19ABC"); //обязательный вызов хотяб один
|
regEvent(value.valD, "Mhz19ABC"); //обязательный вызов хотяб один
|
||||||
@@ -286,40 +242,24 @@ public:
|
|||||||
|
|
||||||
///============== end of classes==========================
|
///============== end of classes==========================
|
||||||
|
|
||||||
void *getAPI_Mhz19(String subtype, String param)
|
void *getAPI_Mhz19(String subtype, String param) {
|
||||||
{
|
if (subtype == F("Mhz19uart")) {
|
||||||
|
|
||||||
if (subtype == F("Mhz19uart"))
|
|
||||||
{
|
|
||||||
return new Mhz19uart(param);
|
return new Mhz19uart(param);
|
||||||
}
|
} else if (subtype == F("Mhz19pwm")) {
|
||||||
else if (subtype == F("Mhz19pwm"))
|
|
||||||
{
|
|
||||||
return new Mhz19pwm(param);
|
return new Mhz19pwm(param);
|
||||||
}
|
} else if (subtype == F("Mhz19temp")) {
|
||||||
else if (subtype == F("Mhz19temp"))
|
|
||||||
{
|
|
||||||
return new Mhz19temp(param);
|
return new Mhz19temp(param);
|
||||||
}
|
} else if (subtype == F("Mhz19range")) {
|
||||||
else if (subtype == F("Mhz19range"))
|
|
||||||
{
|
|
||||||
return new Mhz19range(param);
|
return new Mhz19range(param);
|
||||||
}
|
} else if (subtype == F("Mhz19ABC")) {
|
||||||
else if (subtype == F("Mhz19ABC"))
|
|
||||||
{
|
|
||||||
return new Mhz19ABC(param);
|
return new Mhz19ABC(param);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MHZ19uart_init()
|
void MHZ19uart_init() {
|
||||||
{
|
if (MHZ19uart_flag) {
|
||||||
|
|
||||||
if (MHZ19uart_flag)
|
|
||||||
{
|
|
||||||
int reply;
|
int reply;
|
||||||
swSerialCO2.begin(9600);
|
swSerialCO2.begin(9600);
|
||||||
|
|
||||||
@@ -329,55 +269,42 @@ void MHZ19uart_init()
|
|||||||
Serial.print("show range reply = ");
|
Serial.print("show range reply = ");
|
||||||
Serial.println(reply);
|
Serial.println(reply);
|
||||||
|
|
||||||
if (reply)
|
if (reply) {
|
||||||
{
|
|
||||||
MHZ19uart_flag = false;
|
MHZ19uart_flag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!MHZ19uart_flag)
|
if (!MHZ19uart_flag) {
|
||||||
{
|
|
||||||
static int prevABC;
|
static int prevABC;
|
||||||
int reply;
|
int reply;
|
||||||
|
|
||||||
if (ABC != prevABC)
|
if (ABC != prevABC) {
|
||||||
{
|
if (ABC) {
|
||||||
if (ABC)
|
|
||||||
{
|
|
||||||
reply = MHZ19_request(7); // ABC on
|
reply = MHZ19_request(7); // ABC on
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
reply = MHZ19_request(8); // ABC off
|
reply = MHZ19_request(8); // ABC off
|
||||||
}
|
}
|
||||||
Serial.print("ABC change reply = ");
|
Serial.print("ABC change reply = ");
|
||||||
Serial.println(reply);
|
Serial.println(reply);
|
||||||
}
|
}
|
||||||
if (reply)
|
if (reply) {
|
||||||
{
|
|
||||||
prevABC = ABC;
|
prevABC = ABC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool MHZ19_range_flag = true;
|
static bool MHZ19_range_flag = true;
|
||||||
if (MHZ19_range_flag && !MHZ19uart_flag && (millis() > 30 * 1000))
|
if (MHZ19_range_flag && !MHZ19uart_flag && (millis() > 30 * 1000)) {
|
||||||
{
|
|
||||||
int reply;
|
int reply;
|
||||||
if (range == 2000)
|
if (range == 2000) {
|
||||||
{
|
|
||||||
reply = MHZ19_request(9); // Установка шкалы 0-2000
|
reply = MHZ19_request(9); // Установка шкалы 0-2000
|
||||||
// 255 155 0 0 7 208 0 3 139
|
// 255 155 0 0 7 208 0 3 139
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
reply = MHZ19_request(10); // Установка шкалы 0-5000
|
reply = MHZ19_request(10); // Установка шкалы 0-5000
|
||||||
// 255 155 0 0 19 136 0 3 199
|
// 255 155 0 0 19 136 0 3 199
|
||||||
}
|
}
|
||||||
Serial.print("Scale change reply = ");
|
Serial.print("Scale change reply = ");
|
||||||
Serial.println(reply);
|
Serial.println(reply);
|
||||||
if (reply)
|
if (reply) {
|
||||||
{
|
|
||||||
reply = MHZ19_request(2); // show range
|
reply = MHZ19_request(2); // show range
|
||||||
Serial.print("show range reply = ");
|
Serial.print("show range reply = ");
|
||||||
Serial.println(reply);
|
Serial.println(reply);
|
||||||
@@ -387,8 +314,7 @@ void MHZ19uart_init()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int MHZ19_request(int request)
|
int MHZ19_request(int request) {
|
||||||
{
|
|
||||||
int reply;
|
int reply;
|
||||||
Serial.print("prevRange = ");
|
Serial.print("prevRange = ");
|
||||||
Serial.println(prevRange);
|
Serial.println(prevRange);
|
||||||
@@ -420,116 +346,80 @@ int MHZ19_request(int request)
|
|||||||
|
|
||||||
byte request_cmd[9];
|
byte request_cmd[9];
|
||||||
// byte c;
|
// byte c;
|
||||||
switch (request)
|
switch (request) {
|
||||||
{
|
|
||||||
// случаи 3-7 для перезапуска сенсора
|
// случаи 3-7 для перезапуска сенсора
|
||||||
case 1:
|
case 1: {
|
||||||
{
|
|
||||||
Serial.println("Запрос No.1 - отправлен. Запрос замера по UART");
|
Serial.println("Запрос No.1 - отправлен. Запрос замера по UART");
|
||||||
for (int i = 0; i < 9; i++)
|
for (int i = 0; i < 9; i++) {
|
||||||
{
|
|
||||||
request_cmd[i] = uartReqSamplePpm[i];
|
request_cmd[i] = uartReqSamplePpm[i];
|
||||||
}
|
}
|
||||||
}
|
} break;
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
case 2: {
|
||||||
{
|
for (int i = 0; i < 9; i++) {
|
||||||
for (int i = 0; i < 9; i++)
|
|
||||||
{
|
|
||||||
request_cmd[i] = uartReqSampleRequestRange[i];
|
request_cmd[i] = uartReqSampleRequestRange[i];
|
||||||
}
|
}
|
||||||
Serial.println("Запрос No.2 - отправлен. Запрос шкалы");
|
Serial.println("Запрос No.2 - отправлен. Запрос шкалы");
|
||||||
}
|
} break;
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
case 3: {
|
||||||
{
|
|
||||||
// код для запуска сенсора с работой по UART (запуск таймера)
|
// код для запуска сенсора с работой по UART (запуск таймера)
|
||||||
Serial.println("Запрос No.3 - отправлен. Сенсор по UART запущен");
|
Serial.println("Запрос No.3 - отправлен. Сенсор по UART запущен");
|
||||||
}
|
} break;
|
||||||
break;
|
case 4: {
|
||||||
case 4:
|
|
||||||
{
|
|
||||||
// код для остановке сенсора с работой по UART (остановка таймера)
|
// код для остановке сенсора с работой по UART (остановка таймера)
|
||||||
Serial.println("Запрос No.4 - отправлен. Сенсор по UART остановлен");
|
Serial.println("Запрос No.4 - отправлен. Сенсор по UART остановлен");
|
||||||
}
|
} break;
|
||||||
break;
|
case 5: {
|
||||||
case 5:
|
|
||||||
{
|
|
||||||
// код для запуска сенсора с работой по PWM (запуск таймера)
|
// код для запуска сенсора с работой по PWM (запуск таймера)
|
||||||
Serial.println("Запрос No.5 - отправлен. Сенсор по PWM запущен");
|
Serial.println("Запрос No.5 - отправлен. Сенсор по PWM запущен");
|
||||||
}
|
} break;
|
||||||
break;
|
case 6: {
|
||||||
case 6:
|
|
||||||
{
|
|
||||||
// код для остановки сенсора с работой по PWM (остановка таймера)
|
// код для остановки сенсора с работой по PWM (остановка таймера)
|
||||||
Serial.println("Запрос No.6 - отправлен. Сенсор по PWM остановлен");
|
Serial.println("Запрос No.6 - отправлен. Сенсор по PWM остановлен");
|
||||||
}
|
} break;
|
||||||
break;
|
case 7: {
|
||||||
case 7:
|
for (int i = 0; i < 9; i++) {
|
||||||
{
|
|
||||||
for (int i = 0; i < 9; i++)
|
|
||||||
{
|
|
||||||
request_cmd[i] = uartReqSampleABCon[i];
|
request_cmd[i] = uartReqSampleABCon[i];
|
||||||
}
|
}
|
||||||
Serial.println("Запрос No.7 - отправлен. Включаем функцию атокалибровки");
|
Serial.println("Запрос No.7 - отправлен. Включаем функцию атокалибровки");
|
||||||
}
|
} break;
|
||||||
break;
|
case 8: {
|
||||||
case 8:
|
for (int i = 0; i < 9; i++) {
|
||||||
{
|
|
||||||
for (int i = 0; i < 9; i++)
|
|
||||||
{
|
|
||||||
request_cmd[i] = uartReqSampleABCoff[i];
|
request_cmd[i] = uartReqSampleABCoff[i];
|
||||||
}
|
}
|
||||||
Serial.println("Запрос No.8 - отправлен. Выключаем функцию атокалибровки");
|
Serial.println("Запрос No.8 - отправлен. Выключаем функцию атокалибровки");
|
||||||
}
|
} break;
|
||||||
break;
|
case 9: {
|
||||||
case 9:
|
for (int i = 0; i < 9; i++) {
|
||||||
{
|
|
||||||
for (int i = 0; i < 9; i++)
|
|
||||||
{
|
|
||||||
request_cmd[i] = uartReqSample2000Range[i];
|
request_cmd[i] = uartReqSample2000Range[i];
|
||||||
}
|
}
|
||||||
Serial.println("Запрос No.9 - отправлен. Установливаем шкалу 0-2000");
|
Serial.println("Запрос No.9 - отправлен. Установливаем шкалу 0-2000");
|
||||||
}
|
} break;
|
||||||
break;
|
case 10: {
|
||||||
case 10:
|
for (int i = 0; i < 9; i++) {
|
||||||
{
|
|
||||||
for (int i = 0; i < 9; i++)
|
|
||||||
{
|
|
||||||
request_cmd[i] = uartReqSample5000Range[i];
|
request_cmd[i] = uartReqSample5000Range[i];
|
||||||
}
|
}
|
||||||
Serial.println("Запрос No.10 - отправлен. Установливаем шкалу 0-5000");
|
Serial.println("Запрос No.10 - отправлен. Установливаем шкалу 0-5000");
|
||||||
}
|
} break;
|
||||||
break;
|
case 11: {
|
||||||
case 11:
|
for (int i = 0; i < 9; i++) {
|
||||||
{
|
|
||||||
for (int i = 0; i < 9; i++)
|
|
||||||
{
|
|
||||||
request_cmd[i] = uartReqSampleZeroPnt[i];
|
request_cmd[i] = uartReqSampleZeroPnt[i];
|
||||||
}
|
}
|
||||||
Serial.println("Запрос No.11 - отправлен. Калибровка. Установливаем нулевой уровень");
|
Serial.println("Запрос No.11 - отправлен. Калибровка. Установливаем нулевой уровень");
|
||||||
}
|
} break;
|
||||||
break;
|
case 12: {
|
||||||
case 12:
|
for (int i = 0; i < 9; i++) {
|
||||||
{
|
|
||||||
for (int i = 0; i < 9; i++)
|
|
||||||
{
|
|
||||||
request_cmd[i] = uartReqSampleReset1[i];
|
request_cmd[i] = uartReqSampleReset1[i];
|
||||||
}
|
}
|
||||||
Serial.println("Запрос No.11 - отправлен. Запрос на Сброс");
|
Serial.println("Запрос No.11 - отправлен. Запрос на Сброс");
|
||||||
}
|
} break;
|
||||||
break;
|
case 13: {
|
||||||
case 13:
|
for (int i = 0; i < 9; i++) {
|
||||||
{
|
|
||||||
for (int i = 0; i < 9; i++)
|
|
||||||
{
|
|
||||||
request_cmd[i] = uartReqSamplePpm[i];
|
request_cmd[i] = uartReqSamplePpm[i];
|
||||||
}
|
}
|
||||||
Serial.println("Запрос No.13 - отправлен. Запрос по Температуре");
|
Serial.println("Запрос No.13 - отправлен. Запрос по Температуре");
|
||||||
}
|
} break;
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
// byte c = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
|
// byte c = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
|
||||||
// if nothing else matches, do the default
|
// if nothing else matches, do the default
|
||||||
@@ -540,8 +430,7 @@ int MHZ19_request(int request)
|
|||||||
swSerialCO2.write(request_cmd, 9);
|
swSerialCO2.write(request_cmd, 9);
|
||||||
|
|
||||||
Serial.print("Request : ");
|
Serial.print("Request : ");
|
||||||
for (int i = 0; i < 9; i++)
|
for (int i = 0; i < 9; i++) {
|
||||||
{
|
|
||||||
Serial.print(" ");
|
Serial.print(" ");
|
||||||
Serial.print(request_cmd[i]);
|
Serial.print(request_cmd[i]);
|
||||||
}
|
}
|
||||||
@@ -554,8 +443,7 @@ int MHZ19_request(int request)
|
|||||||
Serial.print("Response :");
|
Serial.print("Response :");
|
||||||
swSerialCO2.readBytes(response, 9);
|
swSerialCO2.readBytes(response, 9);
|
||||||
|
|
||||||
for (int i = 0; i < 9; i++)
|
for (int i = 0; i < 9; i++) {
|
||||||
{
|
|
||||||
Serial.print(" ");
|
Serial.print(" ");
|
||||||
Serial.print(response[i]);
|
Serial.print(response[i]);
|
||||||
}
|
}
|
||||||
@@ -566,19 +454,13 @@ int MHZ19_request(int request)
|
|||||||
crc = 255 - crc;
|
crc = 255 - crc;
|
||||||
crc += 1;
|
crc += 1;
|
||||||
|
|
||||||
if (!(response[0] == 0xFF && response[8] == crc))
|
if (!(response[0] == 0xFF && response[8] == crc)) {
|
||||||
{
|
|
||||||
Serial.println("Range CRC error: " + String(crc) + " / " + String(response[8]));
|
Serial.println("Range CRC error: " + String(crc) + " / " + String(response[8]));
|
||||||
reply = 0;
|
reply = 0;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
// Serial.println("No CRC errors");
|
// Serial.println("No CRC errors");
|
||||||
switch (request)
|
switch (request) {
|
||||||
{
|
case 1: {
|
||||||
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
unsigned int responseHigh = (unsigned int)response[2];
|
unsigned int responseHigh = (unsigned int)response[2];
|
||||||
unsigned int responseLow = (unsigned int)response[3];
|
unsigned int responseLow = (unsigned int)response[3];
|
||||||
unsigned int ppm = (256 * responseHigh) + responseLow;
|
unsigned int ppm = (256 * responseHigh) + responseLow;
|
||||||
@@ -592,88 +474,63 @@ int MHZ19_request(int request)
|
|||||||
temperatureUpdated = true;
|
temperatureUpdated = true;
|
||||||
|
|
||||||
reply = ppm;
|
reply = ppm;
|
||||||
}
|
} break;
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
case 2: {
|
||||||
{
|
|
||||||
reply = 1;
|
reply = 1;
|
||||||
Serial.println("Case 2 - OK. На запрос шкалы пришел ответ");
|
Serial.println("Case 2 - OK. На запрос шкалы пришел ответ");
|
||||||
}
|
} break;
|
||||||
break;
|
case 3: {
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
// Serial.println("Case 3 - OK");
|
// Serial.println("Case 3 - OK");
|
||||||
reply = 1;
|
reply = 1;
|
||||||
}
|
} break;
|
||||||
break;
|
case 4: {
|
||||||
case 4:
|
|
||||||
{
|
|
||||||
// Serial.println("Case 4 - OK");
|
// Serial.println("Case 4 - OK");
|
||||||
reply = 1;
|
reply = 1;
|
||||||
}
|
} break;
|
||||||
break;
|
case 5: {
|
||||||
case 5:
|
|
||||||
{
|
|
||||||
// Serial.println("Case 5 - OK");
|
// Serial.println("Case 5 - OK");
|
||||||
reply = 1;
|
reply = 1;
|
||||||
}
|
} break;
|
||||||
break;
|
case 6: {
|
||||||
case 6:
|
|
||||||
{
|
|
||||||
Serial.println("Case 6 - OK");
|
Serial.println("Case 6 - OK");
|
||||||
reply = 1;
|
reply = 1;
|
||||||
}
|
} break;
|
||||||
break;
|
case 7: {
|
||||||
case 7:
|
|
||||||
{
|
|
||||||
Serial.println("Case 7 - OK. ABC включен");
|
Serial.println("Case 7 - OK. ABC включен");
|
||||||
reply = 1;
|
reply = 1;
|
||||||
}
|
} break;
|
||||||
break;
|
case 8: {
|
||||||
case 8:
|
|
||||||
{
|
|
||||||
Serial.println("Case 8 - OK. ABC выключен");
|
Serial.println("Case 8 - OK. ABC выключен");
|
||||||
reply = 1;
|
reply = 1;
|
||||||
}
|
} break;
|
||||||
break;
|
case 9: {
|
||||||
case 9:
|
|
||||||
{
|
|
||||||
Serial.println("Case 9 - OK. Установлена шкала 0-2000");
|
Serial.println("Case 9 - OK. Установлена шкала 0-2000");
|
||||||
reply = 1;
|
reply = 1;
|
||||||
prevRange = 2000;
|
prevRange = 2000;
|
||||||
}
|
} break;
|
||||||
break;
|
case 10: {
|
||||||
case 10:
|
|
||||||
{
|
|
||||||
Serial.println("Case 9 - OK. Установлена шкала 0-5000");
|
Serial.println("Case 9 - OK. Установлена шкала 0-5000");
|
||||||
reply = 1;
|
reply = 1;
|
||||||
prevRange = 5000;
|
prevRange = 5000;
|
||||||
}
|
} break;
|
||||||
break;
|
case 11: {
|
||||||
case 11:
|
|
||||||
{
|
|
||||||
reply = 1;
|
reply = 1;
|
||||||
Serial.println("Запрос No.11 - сработал. Калибровка. Установлен нулевой уровень");
|
Serial.println("Запрос No.11 - сработал. Калибровка. Установлен нулевой уровень");
|
||||||
}
|
} break;
|
||||||
break;
|
|
||||||
|
|
||||||
case 12:
|
case 12: {
|
||||||
{
|
|
||||||
reply = 1;
|
reply = 1;
|
||||||
Serial.println("Запрос No.12 - сработал. Сброс произошел");
|
Serial.println("Запрос No.12 - сработал. Сброс произошел");
|
||||||
}
|
} break;
|
||||||
break;
|
|
||||||
|
|
||||||
case 13:
|
case 13: {
|
||||||
{
|
|
||||||
reply = 1;
|
reply = 1;
|
||||||
temperature = response[4] - 44; // - 40;
|
temperature = response[4] - 44; // - 40;
|
||||||
|
|
||||||
Serial.println("Запрос No.12 - сработал. Температура получена");
|
Serial.println("Запрос No.12 - сработал. Температура получена");
|
||||||
Serial.println(temperature);
|
Serial.println(temperature);
|
||||||
}
|
} break;
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// byte c = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
|
// byte c = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
|
||||||
|
|||||||
@@ -14,9 +14,19 @@ extern IoTGpio IoTgpio;
|
|||||||
|
|
||||||
#include "SdsDustSensor.h"
|
#include "SdsDustSensor.h"
|
||||||
|
|
||||||
|
//встроена в ядро для 8266, для 32 по этому же имени обращаемся к другой библиотеке plerup/EspSoftwareSerial
|
||||||
|
#include <SoftwareSerial.h>
|
||||||
|
|
||||||
|
#ifdef ESP8266
|
||||||
int rxPinSDS = 13; // D7 – подключаем к Tx сенсора
|
int rxPinSDS = 13; // D7 – подключаем к Tx сенсора
|
||||||
int txPinSDS = 12; // D6 – подключаем к Rx сенсора
|
int txPinSDS = 12; // D6 – подключаем к Rx сенсора
|
||||||
SdsDustSensor sds(rxPinSDS, txPinSDS);
|
SdsDustSensor sds(rxPinSDS, txPinSDS);
|
||||||
|
#endif
|
||||||
|
#ifdef ESP32
|
||||||
|
#include <HardwareSerial.h>
|
||||||
|
HardwareSerial sdsSerial(2);
|
||||||
|
SdsDustSensor sds(sdsSerial);
|
||||||
|
#endif
|
||||||
|
|
||||||
unsigned int warmUp;
|
unsigned int warmUp;
|
||||||
unsigned int period;
|
unsigned int period;
|
||||||
@@ -29,8 +39,7 @@ float Sds011request(int sensorID);
|
|||||||
//для добавления сенсора вам нужно скопировать этот файл и заменить в нем текст AnalogAdc на название вашего сенсора
|
//для добавления сенсора вам нужно скопировать этот файл и заменить в нем текст AnalogAdc на название вашего сенсора
|
||||||
//Название должно быть уникальным, коротким и отражать суть сенсора.
|
//Название должно быть уникальным, коротким и отражать суть сенсора.
|
||||||
|
|
||||||
class Sds011_25 : public IoTItem
|
class Sds011_25 : public IoTItem {
|
||||||
{
|
|
||||||
private:
|
private:
|
||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
// Секция переменных.
|
// Секция переменных.
|
||||||
@@ -45,11 +54,12 @@ public:
|
|||||||
//Такие как ...begin и подставлять в них параметры полученные из web интерфейса.
|
//Такие как ...begin и подставлять в них параметры полученные из web интерфейса.
|
||||||
//Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции:
|
//Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции:
|
||||||
// jsonReadStr, jsonReadBool, jsonReadInt
|
// jsonReadStr, jsonReadBool, jsonReadInt
|
||||||
Sds011_25(String parameters) : IoTItem(parameters)
|
Sds011_25(String parameters) : IoTItem(parameters) {
|
||||||
{
|
|
||||||
// _pin = jsonReadInt(parameters, "pin");
|
// _pin = jsonReadInt(parameters, "pin");
|
||||||
|
#ifdef ESP8266
|
||||||
rxPinSDS = jsonReadInt(parameters, "rxPin");
|
rxPinSDS = jsonReadInt(parameters, "rxPin");
|
||||||
txPinSDS = jsonReadInt(parameters, "txPin");
|
txPinSDS = jsonReadInt(parameters, "txPin");
|
||||||
|
#endif
|
||||||
warmUp = jsonReadInt(parameters, "warmUp"); // сек. пробужнение должен быть больше
|
warmUp = jsonReadInt(parameters, "warmUp"); // сек. пробужнение должен быть больше
|
||||||
period = jsonReadInt(parameters, "period"); // сек. время зарогрева/продувки, затем идут замеры
|
period = jsonReadInt(parameters, "period"); // сек. время зарогрева/продувки, затем идут замеры
|
||||||
}
|
}
|
||||||
@@ -61,8 +71,7 @@ public:
|
|||||||
//если у сенсора несколько величин то делайте несколько regEvent
|
//если у сенсора несколько величин то делайте несколько regEvent
|
||||||
//не используйте delay - помните, что данный loop общий для всех модулей. Если у вас планируется длительная операция, постарайтесь разбить ее на порции
|
//не используйте delay - помните, что данный loop общий для всех модулей. Если у вас планируется длительная операция, постарайтесь разбить ее на порции
|
||||||
//и выполнить за несколько тактов
|
//и выполнить за несколько тактов
|
||||||
void doByInterval()
|
void doByInterval() {
|
||||||
{
|
|
||||||
SDS011_init();
|
SDS011_init();
|
||||||
Serial.println("request from 25");
|
Serial.println("request from 25");
|
||||||
value.valD = Sds011request(25);
|
value.valD = Sds011request(25);
|
||||||
@@ -75,8 +84,7 @@ public:
|
|||||||
|
|
||||||
//////////////////////////////////// for PM 10//=
|
//////////////////////////////////// for PM 10//=
|
||||||
|
|
||||||
class Sds011_10 : public IoTItem
|
class Sds011_10 : public IoTItem {
|
||||||
{
|
|
||||||
private:
|
private:
|
||||||
//=======================================================================================================
|
//=======================================================================================================
|
||||||
// Секция переменных.
|
// Секция переменных.
|
||||||
@@ -90,11 +98,12 @@ public:
|
|||||||
//Такие как ...begin и подставлять в них параметры полученные из web интерфейса.
|
//Такие как ...begin и подставлять в них параметры полученные из web интерфейса.
|
||||||
//Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции:
|
//Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции:
|
||||||
// jsonReadStr, jsonReadBool, jsonReadInt
|
// jsonReadStr, jsonReadBool, jsonReadInt
|
||||||
Sds011_10(String parameters) : IoTItem(parameters)
|
Sds011_10(String parameters) : IoTItem(parameters) {
|
||||||
{
|
|
||||||
// _pin = jsonReadInt(parameters, "pin");
|
// _pin = jsonReadInt(parameters, "pin");
|
||||||
|
#ifdef ESP8266
|
||||||
rxPinSDS = jsonReadInt(parameters, "rxPin");
|
rxPinSDS = jsonReadInt(parameters, "rxPin");
|
||||||
txPinSDS = jsonReadInt(parameters, "txPin");
|
txPinSDS = jsonReadInt(parameters, "txPin");
|
||||||
|
#endif
|
||||||
warmUp = jsonReadInt(parameters, "warmUp"); // сек. пробужнение должен быть больше
|
warmUp = jsonReadInt(parameters, "warmUp"); // сек. пробужнение должен быть больше
|
||||||
period = jsonReadInt(parameters, "period"); // сек. время зарогрева/продувки, затем идут замеры
|
period = jsonReadInt(parameters, "period"); // сек. время зарогрева/продувки, затем идут замеры
|
||||||
}
|
}
|
||||||
@@ -107,8 +116,7 @@ public:
|
|||||||
//не используйте delay - помните, что данный loop общий для всех модулей. Если у вас планируется длительная операция, постарайтесь разбить ее на порции
|
//не используйте delay - помните, что данный loop общий для всех модулей. Если у вас планируется длительная операция, постарайтесь разбить ее на порции
|
||||||
//и выполнить за несколько тактов
|
//и выполнить за несколько тактов
|
||||||
|
|
||||||
void doByInterval()
|
void doByInterval() {
|
||||||
{
|
|
||||||
SDS011_init();
|
SDS011_init();
|
||||||
Serial.println("request from 10");
|
Serial.println("request from 10");
|
||||||
value.valD = Sds011request(10);
|
value.valD = Sds011request(10);
|
||||||
@@ -121,32 +129,24 @@ public:
|
|||||||
//после замены названия сенсора, на функцию можно не обращать внимания
|
//после замены названия сенсора, на функцию можно не обращать внимания
|
||||||
//если сенсор предполагает использование общего объекта библиотеки для нескольких экземпляров сенсора, то в данной функции необходимо предусмотреть
|
//если сенсор предполагает использование общего объекта библиотеки для нескольких экземпляров сенсора, то в данной функции необходимо предусмотреть
|
||||||
//создание и контроль соответствующих глобальных переменных
|
//создание и контроль соответствующих глобальных переменных
|
||||||
void *getAPI_Sds011(String subtype, String param)
|
void* getAPI_Sds011(String subtype, String param) {
|
||||||
{
|
if (subtype == F("Sds011_25")) {
|
||||||
if (subtype == F("Sds011_25"))
|
|
||||||
{
|
|
||||||
return new Sds011_25(param);
|
return new Sds011_25(param);
|
||||||
}
|
} else if (subtype == F("Sds011_10")) {
|
||||||
else if (subtype == F("Sds011_10"))
|
|
||||||
{
|
|
||||||
return new Sds011_10(param);
|
return new Sds011_10(param);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float Sds011request(int sensorID)
|
float Sds011request(int sensorID) {
|
||||||
{
|
|
||||||
float reply = 0;
|
float reply = 0;
|
||||||
static int a = 0;
|
static int a = 0;
|
||||||
static float pm25 = 0;
|
static float pm25 = 0;
|
||||||
static float pm10 = 0;
|
static float pm10 = 0;
|
||||||
static int startMillis = millis();
|
static int startMillis = millis();
|
||||||
|
|
||||||
if (a == 0)
|
if (a == 0) {
|
||||||
{
|
|
||||||
Serial.print("SDS011 ... warmUp = ");
|
Serial.print("SDS011 ... warmUp = ");
|
||||||
Serial.print(warmUp);
|
Serial.print(warmUp);
|
||||||
Serial.print(" period = ");
|
Serial.print(" period = ");
|
||||||
@@ -155,11 +155,9 @@ float Sds011request(int sensorID)
|
|||||||
startMillis = millis();
|
startMillis = millis();
|
||||||
a = a + 1;
|
a = a + 1;
|
||||||
}
|
}
|
||||||
if (a == 1 && millis() >= (startMillis + warmUp * 1000))
|
if (a == 1 && millis() >= (startMillis + warmUp * 1000)) {
|
||||||
{
|
|
||||||
PmResult pm = sds.readPm();
|
PmResult pm = sds.readPm();
|
||||||
if (pm.isOk())
|
if (pm.isOk()) {
|
||||||
{
|
|
||||||
pm25 = pm.pm25;
|
pm25 = pm.pm25;
|
||||||
pm10 = pm.pm10;
|
pm10 = pm.pm10;
|
||||||
Serial.print("PM2.5 = ");
|
Serial.print("PM2.5 = ");
|
||||||
@@ -168,41 +166,33 @@ float Sds011request(int sensorID)
|
|||||||
Serial.println(pm10);
|
Serial.println(pm10);
|
||||||
a = a + 1;
|
a = a + 1;
|
||||||
sds.sleep();
|
sds.sleep();
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
Serial.print("Could not read values from sensor 25, reason: ");
|
Serial.print("Could not read values from sensor 25, reason: ");
|
||||||
Serial.println(pm.statusToString());
|
Serial.println(pm.statusToString());
|
||||||
a = a + 1;
|
a = a + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (a > 1 && millis() >= (startMillis + period * 1000))
|
if (a > 1 && millis() >= (startMillis + period * 1000)) {
|
||||||
{
|
|
||||||
Serial.println("end of period for pm25");
|
Serial.println("end of period for pm25");
|
||||||
a = 0;
|
a = 0;
|
||||||
}
|
}
|
||||||
if (sensorID == 25)
|
if (sensorID == 25) {
|
||||||
{
|
|
||||||
reply = pm25;
|
reply = pm25;
|
||||||
}
|
}
|
||||||
if (sensorID == 10)
|
if (sensorID == 10) {
|
||||||
{
|
|
||||||
reply = pm10;
|
reply = pm10;
|
||||||
}
|
}
|
||||||
return reply;
|
return reply;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDS011_init()
|
void SDS011_init() {
|
||||||
{
|
if (SDS011_init_flag) {
|
||||||
if (SDS011_init_flag)
|
|
||||||
{
|
|
||||||
sds.begin();
|
sds.begin();
|
||||||
Serial.println(sds.queryFirmwareVersion().toString()); // prints firmware version
|
Serial.println(sds.queryFirmwareVersion().toString()); // prints firmware version
|
||||||
// Serial.println(sds.setActiveReportingMode().toString()); //
|
// Serial.println(sds.setActiveReportingMode().toString()); //
|
||||||
String ReportingMode = sds.setActiveReportingMode().toString();
|
String ReportingMode = sds.setActiveReportingMode().toString();
|
||||||
Serial.println(ReportingMode);
|
Serial.println(ReportingMode);
|
||||||
if (ReportingMode == "Mode: active")
|
if (ReportingMode == "Mode: active") {
|
||||||
{
|
|
||||||
SDS011_init_flag = false;
|
SDS011_init_flag = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user