mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-05-27 13:19:22 +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], если это неизвестны,
|
||||
@@ -594,7 +593,8 @@ 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);
|
||||
@@ -602,9 +602,11 @@ int IoTScenario::getLastChar() {
|
||||
if (LastChar == 10) curLine++;
|
||||
charCount++;
|
||||
return LastChar;
|
||||
} else return EOF;
|
||||
} else
|
||||
return EOF;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// gettok - Возвращает следующий токен из стандартного потока ввода.
|
||||
@@ -630,9 +632,10 @@ int IoTScenario::gettok() {
|
||||
NumStr = "";
|
||||
if (LastChar == '-') {
|
||||
LastChar = getLastChar();
|
||||
if (isdigit(LastChar)) NumStr = "-";
|
||||
else return '-';
|
||||
|
||||
if (isdigit(LastChar))
|
||||
NumStr = "-";
|
||||
else
|
||||
return '-';
|
||||
}
|
||||
if (isdigit(LastChar)) { // Число: [0-9.]+
|
||||
do {
|
||||
@@ -777,7 +780,6 @@ ExprAST *IoTScenario::ParseIdentifierExpr(String *IDNames, bool callFromConditio
|
||||
if (CurTok == ')') break;
|
||||
|
||||
if (CurTok != ',') {
|
||||
|
||||
return Error("Expected ')' or ',' in argument list");
|
||||
}
|
||||
getNextToken();
|
||||
@@ -830,8 +832,6 @@ ExprAST *IoTScenario::ParseBracketsExpr(String *IDNames, bool callFromCondition)
|
||||
|
||||
// Serial.printf("ParseBracketsExpr CurTok = %d \n", CurTok);
|
||||
|
||||
|
||||
|
||||
// if (CurTok != ';')
|
||||
// return Error("Expected ';' in operation list");
|
||||
|
||||
@@ -957,7 +957,6 @@ ExprAST *IoTScenario::ParseExpression(String *IDNames, bool callFromCondition) {
|
||||
return ParseBinOpRHS(0, LHS, IDNames, callFromCondition);
|
||||
}
|
||||
|
||||
|
||||
void IoTScenario::loadScenario(String fileName) { // подготавливаем контекст для чтения и интерпретации файла
|
||||
isIotScenException = false;
|
||||
|
||||
@@ -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 - наименьший приоритет.
|
||||
|
||||
@@ -73,25 +73,24 @@ class Bme280p : public IoTItem {
|
||||
~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 {
|
||||
// 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 {
|
||||
// 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,14 +4,12 @@
|
||||
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 {
|
||||
@@ -25,14 +23,15 @@ class Dht1122t : public IoTItem {
|
||||
|
||||
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(){};
|
||||
};
|
||||
|
||||
|
||||
class Dht1122h : public IoTItem {
|
||||
private:
|
||||
DHTesp* _dht;
|
||||
@@ -44,37 +43,38 @@ class Dht1122h : public IoTItem {
|
||||
|
||||
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(){};
|
||||
};
|
||||
|
||||
|
||||
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 {
|
||||
// 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;
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -20,8 +20,10 @@ class GY21t : public IoTItem {
|
||||
void doByInterval() {
|
||||
// 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(){};
|
||||
@@ -34,26 +36,28 @@ class GY21h : public IoTItem {
|
||||
void doByInterval() {
|
||||
// sht->read();
|
||||
value.valD = sensor->GY21_Humidity();
|
||||
if (value.valD != 0) regEvent(value.valD, "GY21h"); // TODO: найти способ понимания ошибки получения данных
|
||||
else SerialPrint("E", "Sensor GY21h", "Error");
|
||||
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 {
|
||||
// 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,7 +4,6 @@
|
||||
#include "Wire.h"
|
||||
#include "SHT2x.h"
|
||||
|
||||
|
||||
SHT2x* sht = nullptr;
|
||||
|
||||
class Sht20t : public IoTItem {
|
||||
@@ -14,8 +13,10 @@ class Sht20t : public IoTItem {
|
||||
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(){};
|
||||
@@ -28,27 +29,28 @@ class Sht20h : public IoTItem {
|
||||
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(){};
|
||||
};
|
||||
|
||||
|
||||
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 {
|
||||
// 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