mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
4.0.1 ядро для 8266
This commit is contained in:
10
.vscode/extensions.json
vendored
10
.vscode/extensions.json
vendored
@@ -1,10 +0,0 @@
|
||||
{
|
||||
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||
// for the documentation about the extensions.json format
|
||||
"recommendations": [
|
||||
"platformio.platformio-ide"
|
||||
],
|
||||
"unwantedRecommendations": [
|
||||
"ms-vscode.cpptools-extension-pack"
|
||||
]
|
||||
}
|
||||
18
.vscode/settings.json
vendored
18
.vscode/settings.json
vendored
@@ -1,13 +1,15 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"*.tcc": "cpp",
|
||||
"fstream": "cpp",
|
||||
"ratio": "cpp",
|
||||
"system_error": "cpp",
|
||||
"array": "cpp",
|
||||
"functional": "cpp",
|
||||
"tuple": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"utility": "cpp"
|
||||
"xlocale": "cpp",
|
||||
"deque": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"list": "cpp",
|
||||
"vector": "cpp",
|
||||
"xhash": "cpp",
|
||||
"xiosbase": "cpp",
|
||||
"xstring": "cpp",
|
||||
"xtree": "cpp",
|
||||
"xutility": "cpp"
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ build_flags = -Desp8266_4mb="esp8266_4mb"
|
||||
framework = arduino
|
||||
board = nodemcuv2
|
||||
board_build.ldscript = eagle.flash.4m1m.ld
|
||||
platform = espressif8266 @2.6.3
|
||||
platform = espressif8266 @4.0.1
|
||||
monitor_filters = esp8266_exception_decoder
|
||||
upload_speed = 921600
|
||||
monitor_speed = 115200
|
||||
@@ -27,7 +27,7 @@ lib_deps =
|
||||
build_flags = -Desp32_4mb="esp32_4mb"
|
||||
framework = arduino
|
||||
board = esp32dev
|
||||
platform = espressif32 @3.3.0
|
||||
platform = espressif32
|
||||
monitor_filters = esp32_exception_decoder
|
||||
upload_speed = 921600
|
||||
monitor_speed = 115200
|
||||
|
||||
@@ -299,7 +299,8 @@ void hexdump(const void* mem, uint32_t len, uint8_t cols = 16) {
|
||||
|
||||
//посылка данных из файла в бинарном виде
|
||||
void sendFileToWs(const char* filename, uint8_t num, size_t frameSize) {
|
||||
standWebSocket.sendTXT(num, "/st" + String(filename));
|
||||
String st = "/st" + String(filename);
|
||||
standWebSocket.sendTXT(num, st);
|
||||
String path = filepath(filename);
|
||||
auto file = FileFS.open(path, "r");
|
||||
if (!file) {
|
||||
@@ -315,17 +316,20 @@ void sendFileToWs(const char* filename, uint8_t num, size_t frameSize) {
|
||||
countRead = file.read(payload, sizeof(payload));
|
||||
}
|
||||
file.close();
|
||||
standWebSocket.sendTXT(num, "/end" + String(filename));
|
||||
String end = "/end" + String(filename);
|
||||
standWebSocket.sendTXT(num, end);
|
||||
}
|
||||
|
||||
//посылка данных из string
|
||||
void sendStringToWs(const String& msg, uint8_t num, String name) {
|
||||
standWebSocket.sendTXT(num, "/st" + String(name));
|
||||
String st = "/st" + String(name);
|
||||
standWebSocket.sendTXT(num, st);
|
||||
size_t size = msg.length();
|
||||
char dataArray[size];
|
||||
msg.toCharArray(dataArray, size);
|
||||
standWebSocket.sendBIN(num, (uint8_t*)dataArray, size);
|
||||
standWebSocket.sendTXT(num, "/end" + String(name));
|
||||
String end = "/end" + String(name);
|
||||
standWebSocket.sendTXT(num, end);
|
||||
}
|
||||
|
||||
// void sendMark(const char* filename, const char* mark, uint8_t num) {
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "utils/FileUtils.h"
|
||||
#include "NTP.h"
|
||||
|
||||
|
||||
bool isIotScenException = false; // признак исключения и попытки прекратить выполнение сценария заранее
|
||||
|
||||
// Лексический анализатор возвращает токены [0-255], если это неизвестны,
|
||||
@@ -46,7 +45,7 @@ class NumberExprAST : public ExprAST {
|
||||
IoTValue Val;
|
||||
|
||||
public:
|
||||
NumberExprAST(String val) {
|
||||
NumberExprAST(String val) {
|
||||
Val.valD = strtod(val.c_str(), 0);
|
||||
Val.valS = val;
|
||||
}
|
||||
@@ -147,7 +146,7 @@ class BinaryExprAST : public ExprAST {
|
||||
if (RHS == nullptr || LHS == nullptr) return nullptr;
|
||||
|
||||
IoTValue *rhs = RHS->exec(); // получаем значение правого операнда для возможного использования в операции присваивания
|
||||
|
||||
|
||||
if (Op == '=' && LHS->setValue(rhs)) { // если установка значения не поддерживается, т.е. слева не переменная, то работаем по другим комбинациям далее
|
||||
return rhs; // иначе возвращаем присвоенное значение справа
|
||||
}
|
||||
@@ -470,7 +469,7 @@ class SysCallExprAST : public ExprAST {
|
||||
}
|
||||
|
||||
IoTValue *exec() {
|
||||
//Serial.printf("Call from SysCallExprAST exec %d\n", operation);
|
||||
// Serial.printf("Call from SysCallExprAST exec %d\n", operation);
|
||||
|
||||
if (isIotScenException) return nullptr; // если прерывание, то сразу выходим
|
||||
|
||||
@@ -594,17 +593,20 @@ int IoTScenario::getLastChar() {
|
||||
LastChar = file.read();
|
||||
if (LastChar == 10) curLine++;
|
||||
return LastChar;
|
||||
} else return EOF;
|
||||
} else
|
||||
return EOF;
|
||||
} else if (mode == 1) {
|
||||
if (charCount < strFromFile.length()) {
|
||||
LastChar = strFromFile.charAt(charCount);
|
||||
//Serial.printf("%d, ", LastChar);
|
||||
// Serial.printf("%d, ", LastChar);
|
||||
if (LastChar == 10) curLine++;
|
||||
charCount++;
|
||||
return LastChar;
|
||||
} else return EOF;
|
||||
} else
|
||||
return EOF;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// gettok - Возвращает следующий токен из стандартного потока ввода.
|
||||
@@ -627,12 +629,13 @@ int IoTScenario::gettok() {
|
||||
return tok_identifier;
|
||||
}
|
||||
|
||||
NumStr="";
|
||||
NumStr = "";
|
||||
if (LastChar == '-') {
|
||||
LastChar = getLastChar();
|
||||
if (isdigit(LastChar)) NumStr = "-";
|
||||
else return '-';
|
||||
|
||||
if (isdigit(LastChar))
|
||||
NumStr = "-";
|
||||
else
|
||||
return '-';
|
||||
}
|
||||
if (isdigit(LastChar)) { // Число: [0-9.]+
|
||||
do {
|
||||
@@ -703,7 +706,7 @@ int IoTScenario::gettok() {
|
||||
} else
|
||||
return '>';
|
||||
}
|
||||
|
||||
|
||||
// В противном случае просто возвращаем символ как значение ASCII
|
||||
int ThisChar = LastChar;
|
||||
LastChar = getLastChar();
|
||||
@@ -776,8 +779,7 @@ ExprAST *IoTScenario::ParseIdentifierExpr(String *IDNames, bool callFromConditio
|
||||
|
||||
if (CurTok == ')') break;
|
||||
|
||||
if (CurTok != ','){
|
||||
|
||||
if (CurTok != ',') {
|
||||
return Error("Expected ')' or ',' in argument list");
|
||||
}
|
||||
getNextToken();
|
||||
@@ -810,7 +812,7 @@ ExprAST *IoTScenario::ParseParenExpr(String *IDNames, bool callFromCondition) {
|
||||
|
||||
if (CurTok != ')')
|
||||
return Error("expected ')'");
|
||||
//getNextToken(); // получаем ).
|
||||
// getNextToken(); // получаем ).
|
||||
return V;
|
||||
}
|
||||
|
||||
@@ -820,26 +822,24 @@ ExprAST *IoTScenario::ParseBracketsExpr(String *IDNames, bool callFromCondition)
|
||||
|
||||
getNextToken(); // получаем {.
|
||||
std::vector<ExprAST *> bracketsList;
|
||||
|
||||
while (CurTok != '}') {
|
||||
ExprAST *Expr = ParseExpression(IDNames, callFromCondition);
|
||||
if (!Expr) return nullptr;
|
||||
bracketsList.push_back(Expr);
|
||||
|
||||
//if (CurTok == '}') break;
|
||||
|
||||
//Serial.printf("ParseBracketsExpr CurTok = %d \n", CurTok);
|
||||
while (CurTok != '}') {
|
||||
ExprAST *Expr = ParseExpression(IDNames, callFromCondition);
|
||||
if (!Expr) return nullptr;
|
||||
bracketsList.push_back(Expr);
|
||||
|
||||
// if (CurTok == '}') break;
|
||||
|
||||
// Serial.printf("ParseBracketsExpr CurTok = %d \n", CurTok);
|
||||
|
||||
//if (CurTok != ';')
|
||||
// return Error("Expected ';' in operation list");
|
||||
|
||||
//int ttok = getNextToken();
|
||||
if (CurTok == tok_eof) {
|
||||
return Error("Expected '}'");
|
||||
}
|
||||
// if (CurTok != ';')
|
||||
// return Error("Expected ';' in operation list");
|
||||
|
||||
// int ttok = getNextToken();
|
||||
if (CurTok == tok_eof) {
|
||||
return Error("Expected '}'");
|
||||
}
|
||||
}
|
||||
|
||||
getNextToken(); // получаем }.
|
||||
return new BracketsExprAST(bracketsList);
|
||||
@@ -957,7 +957,6 @@ ExprAST *IoTScenario::ParseExpression(String *IDNames, bool callFromCondition) {
|
||||
return ParseBinOpRHS(0, LHS, IDNames, callFromCondition);
|
||||
}
|
||||
|
||||
|
||||
void IoTScenario::loadScenario(String fileName) { // подготавливаем контекст для чтения и интерпретации файла
|
||||
isIotScenException = false;
|
||||
|
||||
@@ -977,7 +976,7 @@ void IoTScenario::loadScenario(String fileName) { // подготавливае
|
||||
strFromFile = file.readString();
|
||||
Serial.printf("strFromFile: %s, %s\n", strFromFile.c_str(), fileName.c_str());
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void IoTScenario::exec(String eventIdName) { // посимвольно считываем и сразу интерпретируем сценарий в дерево AST
|
||||
@@ -988,11 +987,11 @@ void IoTScenario::exec(String eventIdName) { // посимвольно счит
|
||||
curLine = 1;
|
||||
charCount = 0;
|
||||
|
||||
if (mode == 0) file.seek(0);
|
||||
|
||||
if (mode == 0) file.seek(0);
|
||||
|
||||
if (mode < 2) {
|
||||
while (CurTok != EOF) {
|
||||
switch (CurTok) {
|
||||
switch (CurTok) {
|
||||
case tok_if: {
|
||||
IDNames = ""; // сбрасываем накопитель встречающихся идентификаторов в условии
|
||||
ExprAST *tmpAST = ParseIfExpr(&IDNames);
|
||||
@@ -1001,15 +1000,18 @@ void IoTScenario::exec(String eventIdName) { // посимвольно счит
|
||||
tmpAST->exec();
|
||||
}
|
||||
delete tmpAST;
|
||||
} else getNextToken();
|
||||
break;}
|
||||
default: getNextToken(); break;
|
||||
} else
|
||||
getNextToken();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
getNextToken();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
IoTScenario::IoTScenario() {
|
||||
// Задаём стандартные бинарные операторы.
|
||||
// 1 - наименьший приоритет.
|
||||
|
||||
@@ -29,7 +29,7 @@ class Bme280t : public IoTItem {
|
||||
SerialPrint("E", "Sensor Bme280t", "Error");
|
||||
}
|
||||
|
||||
~Bme280t() {};
|
||||
~Bme280t(){};
|
||||
};
|
||||
|
||||
class Bme280h : public IoTItem {
|
||||
@@ -49,7 +49,7 @@ class Bme280h : public IoTItem {
|
||||
SerialPrint("E", "Sensor Bme280h", "Error");
|
||||
}
|
||||
|
||||
~Bme280h() {};
|
||||
~Bme280h(){};
|
||||
};
|
||||
|
||||
class Bme280p : public IoTItem {
|
||||
@@ -70,28 +70,27 @@ class Bme280p : public IoTItem {
|
||||
SerialPrint("E", "Sensor Bme280p", "Error");
|
||||
}
|
||||
|
||||
~Bme280p() {};
|
||||
~Bme280p(){};
|
||||
};
|
||||
|
||||
|
||||
void* getAPI_Bme280(String subtype, String param) {
|
||||
if (subtype == F("Bme280t") || subtype == F("Bme280h") || subtype == F("Bme280p")) {
|
||||
String addr;
|
||||
jsonRead(param, "addr", addr);
|
||||
|
||||
if (bmes.find(addr) == bmes.end()) {
|
||||
bmes[addr] = new Adafruit_BME280();
|
||||
bmes[addr]->begin(hexStringToUint8(addr));
|
||||
}
|
||||
|
||||
if (subtype == F("Bme280t")) {
|
||||
return new Bme280t(bmes[addr], param);
|
||||
} else if (subtype == F("Bme280h")) {
|
||||
return new Bme280h(bmes[addr], param);
|
||||
} else if (subtype == F("Bme280p")) {
|
||||
return new Bme280p(bmes[addr], param);
|
||||
}
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
void* getAPI_Bme280(String subtype, String param) {
|
||||
// if (subtype == F("Bme280t") || subtype == F("Bme280h") || subtype == F("Bme280p")) {
|
||||
// String addr;
|
||||
// jsonRead(param, "addr", addr);
|
||||
//
|
||||
// if (bmes.find(addr) == bmes.end()) {
|
||||
// bmes[addr] = new Adafruit_BME280();
|
||||
// bmes[addr]->begin(hexStringToUint8(addr));
|
||||
// }
|
||||
//
|
||||
// if (subtype == F("Bme280t")) {
|
||||
// return new Bme280t(bmes[addr], param);
|
||||
// } else if (subtype == F("Bme280h")) {
|
||||
// return new Bme280h(bmes[addr], param);
|
||||
// } else if (subtype == F("Bme280p")) {
|
||||
// return new Bme280p(bmes[addr], param);
|
||||
// }
|
||||
//} else {
|
||||
return nullptr;
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -54,21 +54,21 @@ class Bmp280p : public IoTItem {
|
||||
};
|
||||
|
||||
void* getAPI_Bmp280(String subtype, String param) {
|
||||
if (subtype == F("Bmp280t") || subtype == F("Bmp280p")) {
|
||||
String addr;
|
||||
jsonRead(param, "addr", addr);
|
||||
|
||||
if (bmps.find(addr) == bmps.end()) {
|
||||
bmps[addr] = new Adafruit_BMP280();
|
||||
bmps[addr]->begin(hexStringToUint8(addr));
|
||||
}
|
||||
|
||||
if (subtype == F("Bmp280t")) {
|
||||
return new Bmp280t(bmps[addr], param);
|
||||
} else if (subtype == F("Bmp280p")) {
|
||||
return new Bmp280p(bmps[addr], param);
|
||||
}
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
// if (subtype == F("Bmp280t") || subtype == F("Bmp280p")) {
|
||||
// String addr;
|
||||
// jsonRead(param, "addr", addr);
|
||||
//
|
||||
// if (bmps.find(addr) == bmps.end()) {
|
||||
// bmps[addr] = new Adafruit_BMP280();
|
||||
// bmps[addr]->begin(hexStringToUint8(addr));
|
||||
// }
|
||||
//
|
||||
// if (subtype == F("Bmp280t")) {
|
||||
// return new Bmp280t(bmps[addr], param);
|
||||
// } else if (subtype == F("Bmp280p")) {
|
||||
// return new Bmp280p(bmps[addr], param);
|
||||
// }
|
||||
//} else {
|
||||
return nullptr;
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -4,77 +4,77 @@
|
||||
https://github.com/beegee-tokyo/arduino-DHTesp
|
||||
******************************************************************/
|
||||
|
||||
|
||||
#include "Global.h"
|
||||
#include "classes/IoTItem.h"
|
||||
|
||||
#include "DHTesp.h"
|
||||
#include <map>
|
||||
|
||||
|
||||
std::map<int, DHTesp*> dhts;
|
||||
|
||||
class Dht1122t : public IoTItem {
|
||||
private:
|
||||
DHTesp* _dht;
|
||||
|
||||
DHTesp* _dht;
|
||||
|
||||
public:
|
||||
Dht1122t(DHTesp* dht, String parameters): IoTItem(parameters) {
|
||||
Dht1122t(DHTesp* dht, String parameters) : IoTItem(parameters) {
|
||||
_dht = dht;
|
||||
}
|
||||
|
||||
|
||||
void doByInterval() {
|
||||
value.valD = _dht->getTemperature();
|
||||
if (String(value.valD) != "nan") regEvent(value.valD, "Dht1122t");
|
||||
else SerialPrint("E", "Sensor DHTt", "Error");
|
||||
if (String(value.valD) != "nan")
|
||||
regEvent(value.valD, "Dht1122t");
|
||||
else
|
||||
SerialPrint("E", "Sensor DHTt", "Error");
|
||||
}
|
||||
|
||||
~Dht1122t() {};
|
||||
~Dht1122t(){};
|
||||
};
|
||||
|
||||
|
||||
class Dht1122h : public IoTItem {
|
||||
private:
|
||||
DHTesp* _dht;
|
||||
DHTesp* _dht;
|
||||
|
||||
public:
|
||||
Dht1122h(DHTesp* dht, String parameters): IoTItem(parameters) {
|
||||
Dht1122h(DHTesp* dht, String parameters) : IoTItem(parameters) {
|
||||
_dht = dht;
|
||||
}
|
||||
|
||||
|
||||
void doByInterval() {
|
||||
value.valD = _dht->getHumidity();
|
||||
if (String(value.valD) != "nan") regEvent(value.valD, "Dht1122h");
|
||||
else SerialPrint("E", "Sensor DHTh", "Error");
|
||||
if (String(value.valD) != "nan")
|
||||
regEvent(value.valD, "Dht1122h");
|
||||
else
|
||||
SerialPrint("E", "Sensor DHTh", "Error");
|
||||
}
|
||||
|
||||
~Dht1122h() {};
|
||||
~Dht1122h(){};
|
||||
};
|
||||
|
||||
|
||||
void* getAPI_Dht1122(String subtype, String param) {
|
||||
if (subtype == F("Dht1122t") || subtype == F("Dht1122h")) {
|
||||
int pin;
|
||||
String senstype;
|
||||
jsonRead(param, "pin", pin);
|
||||
jsonRead(param, "senstype", senstype);
|
||||
|
||||
if (dhts.find(pin) == dhts.end()) {
|
||||
dhts[pin] = new DHTesp();
|
||||
|
||||
if (senstype == "dht11") {
|
||||
dhts[pin]->setup(pin, DHTesp::DHT11);
|
||||
} else if (senstype == "dht22") {
|
||||
dhts[pin]->setup(pin, DHTesp::DHT22);
|
||||
}
|
||||
}
|
||||
|
||||
if (subtype == F("Dht1122t")) {
|
||||
return new Dht1122t(dhts[pin], param);
|
||||
} else if (subtype == F("Dht1122h")) {
|
||||
return new Dht1122h(dhts[pin], param);
|
||||
}
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
void* getAPI_Dht1122(String subtype, String param) {
|
||||
// if (subtype == F("Dht1122t") || subtype == F("Dht1122h")) {
|
||||
// int pin;
|
||||
// String senstype;
|
||||
// jsonRead(param, "pin", pin);
|
||||
// jsonRead(param, "senstype", senstype);
|
||||
//
|
||||
// if (dhts.find(pin) == dhts.end()) {
|
||||
// dhts[pin] = new DHTesp();
|
||||
//
|
||||
// if (senstype == "dht11") {
|
||||
// dhts[pin]->setup(pin, DHTesp::DHT11);
|
||||
// } else if (senstype == "dht22") {
|
||||
// dhts[pin]->setup(pin, DHTesp::DHT22);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (subtype == F("Dht1122t")) {
|
||||
// return new Dht1122t(dhts[pin], param);
|
||||
// } else if (subtype == F("Dht1122h")) {
|
||||
// return new Dht1122h(dhts[pin], param);
|
||||
// }
|
||||
//} else {
|
||||
return nullptr;
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -15,45 +15,49 @@ GY21* sensor = nullptr;
|
||||
|
||||
class GY21t : public IoTItem {
|
||||
public:
|
||||
GY21t(String parameters): IoTItem(parameters) { }
|
||||
|
||||
GY21t(String parameters) : IoTItem(parameters) {}
|
||||
|
||||
void doByInterval() {
|
||||
//wire->read();
|
||||
// wire->read();
|
||||
value.valD = sensor->GY21_Temperature();
|
||||
if (value.valD < 300) regEvent(value.valD, "GY21"); // TODO: найти способ понимания ошибки получения данных
|
||||
else SerialPrint("E", "Sensor GY21t", "Error");
|
||||
if (value.valD < 300)
|
||||
regEvent(value.valD, "GY21"); // TODO: найти способ понимания ошибки получения данных
|
||||
else
|
||||
SerialPrint("E", "Sensor GY21t", "Error");
|
||||
}
|
||||
|
||||
~GY21t() {};
|
||||
~GY21t(){};
|
||||
};
|
||||
|
||||
class GY21h : public IoTItem {
|
||||
public:
|
||||
GY21h(String parameters): IoTItem(parameters) { }
|
||||
|
||||
void doByInterval() {
|
||||
//sht->read();
|
||||
value.valD = sensor->GY21_Humidity();
|
||||
if (value.valD != 0) regEvent(value.valD, "GY21h"); // TODO: найти способ понимания ошибки получения данных
|
||||
else SerialPrint("E", "Sensor GY21h", "Error");
|
||||
}
|
||||
GY21h(String parameters) : IoTItem(parameters) {}
|
||||
|
||||
~GY21h() {};
|
||||
void doByInterval() {
|
||||
// sht->read();
|
||||
value.valD = sensor->GY21_Humidity();
|
||||
if (value.valD != 0)
|
||||
regEvent(value.valD, "GY21h"); // TODO: найти способ понимания ошибки получения данных
|
||||
else
|
||||
SerialPrint("E", "Sensor GY21h", "Error");
|
||||
}
|
||||
|
||||
~GY21h(){};
|
||||
};
|
||||
|
||||
void* getAPI_GY21(String subtype, String param) {
|
||||
if (subtype == F("GY21t") || subtype == F("GY21h")) {
|
||||
if (!sensor) {
|
||||
sensor = new GY21;
|
||||
if (sensor) Wire.begin(SDA, SCL);
|
||||
}
|
||||
|
||||
if (subtype == F("GY21t")) {
|
||||
return new GY21t(param);
|
||||
} else if (subtype == F("GY21h")) {
|
||||
return new GY21h(param);
|
||||
}
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
// if (subtype == F("GY21t") || subtype == F("GY21h")) {
|
||||
// if (!sensor) {
|
||||
// sensor = new GY21;
|
||||
// if (sensor) Wire.begin(SDA, SCL);
|
||||
// }
|
||||
//
|
||||
// if (subtype == F("GY21t")) {
|
||||
// return new GY21t(param);
|
||||
// } else if (subtype == F("GY21h")) {
|
||||
// return new GY21h(param);
|
||||
// }
|
||||
//} else {
|
||||
return nullptr;
|
||||
//}
|
||||
}
|
||||
@@ -4,51 +4,53 @@
|
||||
#include "Wire.h"
|
||||
#include "SHT2x.h"
|
||||
|
||||
|
||||
SHT2x* sht = nullptr;
|
||||
|
||||
class Sht20t : public IoTItem {
|
||||
public:
|
||||
Sht20t(String parameters): IoTItem(parameters) { }
|
||||
|
||||
Sht20t(String parameters) : IoTItem(parameters) {}
|
||||
|
||||
void doByInterval() {
|
||||
sht->read();
|
||||
value.valD = sht->getTemperature();
|
||||
if (value.valD > -46.85F) regEvent(value.valD, "Sht20t");
|
||||
else SerialPrint("E", "Sensor Sht20t", "Error");
|
||||
if (value.valD > -46.85F)
|
||||
regEvent(value.valD, "Sht20t");
|
||||
else
|
||||
SerialPrint("E", "Sensor Sht20t", "Error");
|
||||
}
|
||||
|
||||
~Sht20t() {};
|
||||
~Sht20t(){};
|
||||
};
|
||||
|
||||
class Sht20h : public IoTItem {
|
||||
public:
|
||||
Sht20h(String parameters): IoTItem(parameters) { }
|
||||
|
||||
Sht20h(String parameters) : IoTItem(parameters) {}
|
||||
|
||||
void doByInterval() {
|
||||
sht->read();
|
||||
value.valD = sht->getHumidity();
|
||||
if (value.valD != -6) regEvent(value.valD, "Sht20h");
|
||||
else SerialPrint("E", "Sensor Sht20h", "Error");
|
||||
}
|
||||
if (value.valD != -6)
|
||||
regEvent(value.valD, "Sht20h");
|
||||
else
|
||||
SerialPrint("E", "Sensor Sht20h", "Error");
|
||||
}
|
||||
|
||||
~Sht20h() {};
|
||||
~Sht20h(){};
|
||||
};
|
||||
|
||||
|
||||
void* getAPI_Sht20(String subtype, String param) {
|
||||
if (subtype == F("Sht20t") || subtype == F("Sht20h")) {
|
||||
if (!sht) {
|
||||
sht = new SHT2x;
|
||||
if (sht) sht->begin();
|
||||
}
|
||||
|
||||
if (subtype == F("Sht20t")) {
|
||||
return new Sht20t(param);
|
||||
} else if (subtype == F("Sht20h")) {
|
||||
return new Sht20h(param);
|
||||
}
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
// if (subtype == F("Sht20t") || subtype == F("Sht20h")) {
|
||||
// if (!sht) {
|
||||
// sht = new SHT2x;
|
||||
// if (sht) sht->begin();
|
||||
// }
|
||||
//
|
||||
// if (subtype == F("Sht20t")) {
|
||||
// return new Sht20t(param);
|
||||
// } else if (subtype == F("Sht20h")) {
|
||||
// return new Sht20h(param);
|
||||
// }
|
||||
//} else {
|
||||
return nullptr;
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,8 @@ void SerialPrint(String errorLevel, String module, String msg) {
|
||||
|
||||
if (isNetworkActive()) {
|
||||
if (jsonReadInt(settingsFlashJson, F("log")) != 0) {
|
||||
standWebSocket.broadcastTXT("/log|" + tosend);
|
||||
String pl = "/log|" + tosend;
|
||||
standWebSocket.broadcastTXT(pl);
|
||||
}
|
||||
}
|
||||
//}
|
||||
|
||||
Reference in New Issue
Block a user