Files
IoTManager/Logging.ino

154 lines
6.8 KiB
Arduino
Raw Normal View History

2020-05-20 02:16:23 +02:00
#ifdef logging_enable
//===============================================Логирование============================================================
2020-05-19 21:13:54 +02:00
//logging temp1 1 10 Температура Датчики 2
void logging() {
2020-05-02 12:20:30 +02:00
String value_name = sCmd.next();
String period_min = sCmd.next();
String maxCount = sCmd.next();
String widget_name = sCmd.next();
widget_name.replace("#", " ");
String page_name = sCmd.next();
String page_number = sCmd.next();
2020-05-02 12:20:30 +02:00
logging_value_names_list += value_name + ",";
enter_to_logging_counter++; //считаем количество входов в эту функцию
jsonWriteStr(optionJson, value_name + "_c", maxCount); //создаем в файловой системе переменную количества точек на графике с отметкой _c что значит count
createChart (widget_name, page_name, page_number, "widgets/widget.chart.json", value_name + "_ch", maxCount); //создаем график в приложении с топиком _ch /prefix/3234045-1589487/value_name_ch
if (enter_to_logging_counter == LOG1) {
ts.add(LOG1, period_min.toInt() * 1000 * 60, [&](void*) {
String tmp_buf_1 = selectFromMarkerToMarker(logging_value_names_list, ",", 0);
2020-05-26 17:42:50 +02:00
deleteOldDate("log." + tmp_buf_1 + ".txt", jsonReadInt(optionJson, tmp_buf_1 + "_c"), jsonReadStr(configJson, tmp_buf_1));
2020-05-02 12:20:30 +02:00
Serial.println("[i] LOGGING for sensor '" + tmp_buf_1 + "' done");
}, nullptr, false);
}
2020-05-02 12:20:30 +02:00
if (enter_to_logging_counter == LOG2) {
ts.add(LOG2, period_min.toInt() * 1000 * 60, [&](void*) {
String tmp_buf_2 = selectFromMarkerToMarker(logging_value_names_list, ",", 1);
2020-05-26 17:42:50 +02:00
deleteOldDate("log." + tmp_buf_2 + ".txt", jsonReadInt(optionJson, tmp_buf_2 + "_c"), jsonReadStr(configJson, tmp_buf_2));
2020-05-02 12:20:30 +02:00
Serial.println("[i] LOGGING for sensor '" + tmp_buf_2 + "' done");
}, nullptr, false);
}
2020-05-02 12:20:30 +02:00
if (enter_to_logging_counter == LOG3) {
ts.add(LOG3, period_min.toInt() * 1000 * 60, [&](void*) {
String tmp_buf_3 = selectFromMarkerToMarker(logging_value_names_list, ",", 2);
2020-05-26 17:42:50 +02:00
deleteOldDate("log." + tmp_buf_3 + ".txt", jsonReadInt(optionJson, tmp_buf_3 + "_c"), jsonReadStr(configJson, tmp_buf_3));
2020-05-02 12:20:30 +02:00
Serial.println("[i] LOGGING for sensor '" + tmp_buf_3 + "' done");
}, nullptr, false);
}
2020-05-02 12:20:30 +02:00
if (enter_to_logging_counter == LOG4) {
ts.add(LOG4, period_min.toInt() * 1000 * 60, [&](void*) {
String tmp_buf_4 = selectFromMarkerToMarker(logging_value_names_list, ",", 3);
2020-05-26 17:42:50 +02:00
deleteOldDate("log." + tmp_buf_4 + ".txt", jsonReadInt(optionJson, tmp_buf_4 + "_c"), jsonReadStr(configJson, tmp_buf_4));
2020-05-02 12:20:30 +02:00
Serial.println("[i] LOGGING for sensor '" + tmp_buf_4 + "' done");
}, nullptr, false);
}
2020-05-02 12:20:30 +02:00
if (enter_to_logging_counter == LOG5) {
ts.add(LOG5, period_min.toInt() * 1000 * 60, [&](void*) {
String tmp_buf_5 = selectFromMarkerToMarker(logging_value_names_list, ",", 4);
2020-05-26 17:42:50 +02:00
deleteOldDate("log." + tmp_buf_5 + ".txt", jsonReadInt(optionJson, tmp_buf_5 + "_c"), jsonReadStr(configJson, tmp_buf_5));
2020-05-02 12:20:30 +02:00
Serial.println("[i] LOGGING for sensor '" + tmp_buf_5 + "' done");
}, nullptr, false);
}
}
//=========================================Удаление стрых данных и запись новых==================================================================
void deleteOldDate(String file, int seted_number_of_lines, String date_to_add) {
String log_date = readFile(file, 5000);
2020-03-30 01:45:42 +02:00
int current_number_of_lines = count(log_date, "\r\n");
Serial.println("=====> [i] in log file " + file + " " + current_number_of_lines + " lines");
if (current_number_of_lines > seted_number_of_lines + 1) {
SPIFFS.remove("/" + file);
current_number_of_lines = 0;
}
if (current_number_of_lines == 0) {
SPIFFS.remove("/" + file);
current_number_of_lines = 0;
}
if (current_number_of_lines > seted_number_of_lines) {
2020-03-30 01:45:42 +02:00
log_date = deleteBeforeDelimiter(log_date, "\r\n");
if (GetTimeUnix() != "failed") {
2020-03-30 01:45:42 +02:00
log_date += GetTimeUnix() + " " + date_to_add + "\r\n";
writeFile(file, log_date);
}
} else {
if (GetTimeUnix() != "failed") {
addFile(file, GetTimeUnix() + " " + date_to_add);
}
}
log_date = "";
}
//=========================================Выбор какие данные отправлять==================================================================
void choose_log_date_and_send() {
2020-05-02 12:20:30 +02:00
String all_line = logging_value_names_list;
while (all_line.length() != 0) {
String tmp = selectToMarker (all_line, ",");
sendLogData("log." + tmp + ".txt", tmp + "_ch");
all_line = deleteBeforeDelimiter(all_line, ",");
}
all_line = "";
}
//=========================================Отправка данных===================================================================================
2020-05-02 12:20:30 +02:00
void sendLogData(String file, String topic) {
String log_date = readFile(file, 5000);
if (log_date != "Failed") {
log_date.replace("\r\n", "\n");
log_date.replace("\r", "\n");
String buf = "{}";
String json_array;
String unix_time;
String value;
while (log_date.length() != 0) {
String tmp = selectToMarker (log_date, "\n");
log_date = deleteBeforeDelimiter(log_date, "\n");
unix_time = selectToMarker (tmp, " ");
jsonWriteInt(buf, "x", unix_time.toInt());
value = deleteBeforeDelimiter(tmp, " ");
jsonWriteFloat(buf, "y1", value.toFloat());
if (log_date.length() < 3) {
json_array += buf;
} else {
json_array += buf + ",";
2020-03-30 01:45:42 +02:00
}
2020-05-02 12:20:30 +02:00
buf = "{}";
2020-03-30 01:45:42 +02:00
}
2020-05-02 12:20:30 +02:00
unix_time = "";
value = "";
log_date = "";
json_array = "{\"status\":[" + json_array + "]}";
Serial.println(json_array);
sendCHART(topic, json_array);
json_array = "";
getMemoryLoad("[i] after send log date");
}
}
/*
//----------------------------------------------
2020-03-30 01:45:42 +02:00
File configFile = SPIFFS.open("/" + file, "r");
if (!configFile) {
return;
}
2020-03-30 01:45:42 +02:00
configFile.seek(0, SeekSet); //поставим курсор в начало файла
while (configFile.position() != configFile.size()) {
String tmp = configFile.readStringUntil('\r\n');
String unix_time = selectToMarker (tmp, " ");
String value = deleteBeforeDelimiter(tmp, " ");
String final_line = "{\"status\":{\"x\":" + unix_time + ",\"y1\":" + value + "}}";
//Serial.println(final_line);
sendCHART(topic, final_line);
}
getMemoryLoad("[i] after send log date");
2020-05-02 12:20:30 +02:00
*/
//=========================================Очистка данных===================================================================================
void clean_log_date() {
2020-05-02 12:20:30 +02:00
String all_line = logging_value_names_list;
while (all_line.length() != 0) {
String tmp = selectToMarker (all_line, ",");
SPIFFS.remove("/log." + tmp + ".txt");
all_line = deleteBeforeDelimiter(all_line, ",");
}
all_line = "";
}
2020-05-20 02:16:23 +02:00
#endif