2020-05-20 02:16:23 +02:00
# ifdef logging_enable
2020-03-27 15:48:17 +01:00
//===============================================Логирование============================================================
2020-05-19 21:13:54 +02:00
//logging temp1 1 10 Температура Датчики 2
2020-03-27 15:48:17 +01:00
void logging ( ) {
2020-05-02 12:20:30 +02:00
String value_name = sCmd . next ( ) ;
2020-03-27 15:48:17 +01:00
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-03-27 15:48:17 +01:00
}
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-03-27 15:48:17 +01:00
}
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-03-27 15:48:17 +01:00
}
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-03-27 15:48:17 +01:00
}
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 ) ;
2020-03-27 15:48:17 +01:00
}
}
//=========================================Удаление стрых данных и запись новых==================================================================
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 " ) ;
2020-03-27 15:48:17 +01:00
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 " ) ;
2020-03-27 15:48:17 +01:00
if ( GetTimeUnix ( ) ! = " failed " ) {
2020-03-30 01:45:42 +02:00
log_date + = GetTimeUnix ( ) + " " + date_to_add + " \r \n " ;
2020-03-27 15:48:17 +01:00
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-03-27 15:48:17 +01:00
}
//=========================================Отправка данных===================================================================================
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-27 15:48:17 +01:00
}
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
*/
2020-03-27 15:48:17 +01: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-03-27 15:48:17 +01:00
}
2020-05-20 02:16:23 +02:00
# endif