Merge pull request #238 from biveraxe/ver4dev

Вносим мелкие правки перед релизом
This commit is contained in:
2022-11-14 20:23:16 +03:00
committed by GitHub
5 changed files with 104 additions and 6 deletions

View File

@@ -47,7 +47,7 @@
"name": "anydataWth",
"label": "Энергия",
"widget": "anydata",
"after": "kWt/Hr",
"after": "kWh",
"icon": "speedometer"
},
{
@@ -209,6 +209,27 @@
"after": "ppm",
"icon": "speedometer"
},
{
"name": "anydatamAmp",
"label": "миллиАмперы",
"widget": "anydata",
"after": "mAmp",
"icon": "speedometer"
},
{
"name": "anydatamVlt",
"label": "миллиВольты",
"widget": "anydata",
"after": "mVlt",
"icon": "speedometer"
},
{
"name": "anydatamWt",
"label": "миллиВатты",
"widget": "anydata",
"after": "mWt",
"icon": "speedometer"
},
{
"name": "nil",
"label": "Без виджета"

View File

@@ -105,14 +105,20 @@ class UART : public IoTItem {
case 2: // формат событий для Nextion ID=Value0xFF0xFF0xFF
printStr += eventItem->getID();
if (printStr.indexOf("_") == -1) return; // пропускаем событие, если нет используемого признака типа данных - _txt или _vol
int indexOf_ = printStr.indexOf("_");
if (indexOf_ == -1) return; // пропускаем событие, если нет используемого признака типа данных - _txt или _vol
if (printStr.indexOf("_txt") > 0) {
printStr.replace("_txt", ".txt=\"");
printStr += eventItem->getValue();
printStr += "\"";
} else if (printStr.indexOf("_val") > 0) {
printStr.replace(".", "");
printStr.replace("_val", ".val=");
printStr += eventItem->getValue();
} else {
printStr.replace("_", ".");
if (indexOf_ == printStr.length()) printStr.replace("_", "");
else printStr.replace("_", ".");
printStr += "=";
printStr += eventItem->getValue();
}

View File

@@ -9,6 +9,7 @@ class Loging : public IoTItem {
private:
String logid;
String id;
String tmpValue;
String filesList = "";
int _publishType = -2;
@@ -103,7 +104,56 @@ class Loging : public IoTItem {
//запускаем процедуру удаления старых файлов если память переполняется
deleteLastFile();
}
void SetDoByInterval(String valse) {
String value = valse;
//если значение логгирования пустое
if (value == "") {
SerialPrint("E", F("LogingEvent"), "'" + id + "' loging value is empty, return");
return;
}
//если время не было получено из интернета
if (!isTimeSynch) {
SerialPrint("E", F("LogingEvent"), "'" + id + "' Сant loging - time not synchronized, return");
return;
}
regEvent(value, F("LogingEvent"));
String logData;
jsonWriteInt(logData, "x", unixTime);
jsonWriteFloat(logData, "y1", value.toFloat());
//прочитаем путь к файлу последнего сохранения
String filePath = readDataDB(id);
//если данные о файле отсутствуют, создадим новый
if (filePath == "failed" || filePath == "") {
SerialPrint("E", F("LogingEvent"), "'" + id + "' file path not found, start create new file");
createNewFileWithData(logData);
return;
} else {
//если файл все же есть но был создан не сегодня, то создаем сегодняшний
if (getTodayDateDotFormated() != getDateDotFormatedFromUnix(getFileUnixLocalTime(filePath))) {
SerialPrint("E", F("LogingEvent"), "'" + id + "' file too old, start create new file");
createNewFileWithData(logData);
return;
}
}
//считаем количество строк и определяем размер файла
size_t size = 0;
int lines = countJsonObj(filePath, size);
SerialPrint("i", F("LogingEvent"), "'" + id + "' " + "lines = " + String(lines) + ", size = " + String(size));
//если количество строк до заданной величины и дата не менялась
if (lines <= points && !hasDayChanged()) {
//просто добавим в существующий файл новые данные
addNewDataToExistingFile(filePath, logData);
//если больше или поменялась дата то создадим следующий файл
} else {
createNewFileWithData(logData);
}
//запускаем процедуру удаления старых файлов если память переполняется
deleteLastFile();
}
void createNewFileWithData(String &logData) {
logData = logData + ",";
String path = "/lg/" + id + "/" + String(unixTimeShort) + ".txt"; //создадим путь вида /lg/id/133256622333.txt
@@ -258,7 +308,9 @@ class Loging : public IoTItem {
difference = currentMillis - prevMillis;
if (difference >= interval) {
prevMillis = millis();
this->doByInterval();
if(interval != 0){
this->doByInterval();
}
}
}
}
@@ -285,6 +337,12 @@ class Loging : public IoTItem {
unsigned long getFileUnixLocalTime(String path) {
return gmtTimeToLocal(selectToMarkerLast(deleteToMarkerLast(path, "."), "/").toInt() + START_DATETIME);
}
void setValue(const IoTValue& Value, bool genEvent = true){
value = Value;
this->SetDoByInterval(String(value.valD));
SerialPrint("i", "Loging", "setValue:" + String(value.valD));
regEvent(value.valS, "Loging", false, genEvent);
}
};
void *getAPI_Loging(String subtype, String param) {

View File

@@ -14,6 +14,19 @@
"int": 5,
"logid": "t",
"points": 300
},
{
"global": 0,
"name": "График по событию",
"type": "Writing",
"subtype": "Loging",
"id": "log",
"widget": "chart2",
"page": "Графики",
"descr": "Температура",
"int": 0,
"num": 1,
"points": 300
}
],
"about": {

View File

@@ -14,7 +14,7 @@
"int": 1,
"logid": "t",
"points": 365,
"test": 0
"column": 0
}
],
"about": {
@@ -34,7 +34,7 @@
"int": "Интервал логирования в мнутах, частота проверки смены суток в минутах. Не рекомендуется менять",
"logid": "ID накопительной величины которую будем логировать",
"points": "Максимальное количество точек",
"test": "Режим тестирования - график будет обновляться не раз в сутки, а кадый заданный в int интервал"
"column": "Режим тестирования - график будет обновляться не раз в сутки, а кадый заданный в int интервал. Суточные столбики - 0, Минутные столбики - 1"
}
},
"defActive": true,