diff --git a/application_events.json b/application_events.json index 999d3bc..bf489d5 100644 --- a/application_events.json +++ b/application_events.json @@ -1,5928 +1,5 @@ { "events": [ - { - "timestamp": "2025-08-16T22:24:08.541440", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.050782680511475, - "points_saved": 30, - "points_rate": 2.9848421713634474, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10048909187316894, - "csv_write_time_avg": 7.335344950358073e-06 - } - }, - { - "timestamp": "2025-08-16T22:24:18.616570", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.075129270553589, - "points_saved": 30, - "points_rate": 2.9776292883586613, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09719187418619792, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:24:28.686847", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.6% CPU", - "details": { - "duration": 10.070277690887451, - "points_saved": 29, - "points_rate": 2.87976169974359, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.6, - "cpu_max": 0.6, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09484568135491733, - "csv_write_time_avg": 9.15856196962554e-06 - } - }, - { - "timestamp": "2025-08-16T22:24:38.742776", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.055928945541382, - "points_saved": 30, - "points_rate": 2.9833146358200415, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10609401067097982, - "csv_write_time_avg": 7.875760396321614e-06 - } - }, - { - "timestamp": "2025-08-16T22:24:48.787178", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.044402122497559, - "points_saved": 30, - "points_rate": 2.9867382482433356, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11302855014801025, - "csv_write_time_avg": 1.399517059326172e-05 - } - }, - { - "timestamp": "2025-08-16T22:24:58.861110", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.073931455612183, - "points_saved": 29, - "points_rate": 2.8787172245294674, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09940930070548222, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:25:08.918992", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.057882070541382, - "points_saved": 30, - "points_rate": 2.98273531043551, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09732965628306071, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:25:18.990669", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.071677446365356, - "points_saved": 30, - "points_rate": 2.9786497988799603, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09803172747294107, - "csv_write_time_avg": 1.2524922688802083e-05 - } - }, - { - "timestamp": "2025-08-16T22:25:29.036942", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 28 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.045765161514282, - "points_saved": 28, - "points_rate": 2.787244132210963, - "variables_saved": 56, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10216294016156878, - "csv_write_time_avg": 9.451593671526228e-06 - } - }, - { - "timestamp": "2025-08-16T22:25:39.076028", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.03959345817566, - "points_saved": 30, - "points_rate": 2.9881688063344587, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.12124151388804118, - "csv_write_time_avg": 3.911654154459635e-05 - } - }, - { - "timestamp": "2025-08-16T22:25:49.128453", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.052425146102905, - "points_saved": 30, - "points_rate": 2.984354478046555, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09733742872873942, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:25:59.178030", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.049577236175537, - "points_saved": 29, - "points_rate": 2.885693529038066, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10081727751370134, - "csv_write_time_avg": 2.111237624595905e-05 - } - }, - { - "timestamp": "2025-08-16T22:26:09.242069", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.064038515090942, - "points_saved": 30, - "points_rate": 2.9809106905756817, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10937119325002034, - "csv_write_time_avg": 4.027684529622396e-05 - } - }, - { - "timestamp": "2025-08-16T22:26:19.313516", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.071446895599365, - "points_saved": 30, - "points_rate": 2.9787179847126284, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10747852325439453, - "csv_write_time_avg": 5.936622619628906e-06 - } - }, - { - "timestamp": "2025-08-16T22:26:29.349750", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.036234617233276, - "points_saved": 29, - "points_rate": 2.8895298990125173, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09587487681158657, - "csv_write_time_avg": 4.217542451003502e-06 - } - }, - { - "timestamp": "2025-08-16T22:26:39.402327", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.052576303482056, - "points_saved": 30, - "points_rate": 2.984309603261451, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0965748389561971, - "csv_write_time_avg": 2.406438191731771e-05 - } - }, - { - "timestamp": "2025-08-16T22:26:49.470201", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.067874908447266, - "points_saved": 30, - "points_rate": 2.979774805786378, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10243976910909017, - "csv_write_time_avg": 4.466374715169271e-06 - } - }, - { - "timestamp": "2025-08-16T22:26:59.504968", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.034766435623169, - "points_saved": 29, - "points_rate": 2.8899526646729643, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.12523647012381717, - "csv_write_time_avg": 5.220544749292834e-06 - } - }, - { - "timestamp": "2025-08-16T22:27:09.570703", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.065735101699829, - "points_saved": 30, - "points_rate": 2.9804082560183622, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1012100617090861, - "csv_write_time_avg": 3.520647684733073e-06 - } - }, - { - "timestamp": "2025-08-16T22:27:19.607707", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.037003517150879, - "points_saved": 30, - "points_rate": 2.988939871221232, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09455196062723796, - "csv_write_time_avg": 1.9168853759765626e-05 - } - }, - { - "timestamp": "2025-08-16T22:27:29.643607", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.035900115966797, - "points_saved": 29, - "points_rate": 2.889626208401768, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09886692310201711, - "csv_write_time_avg": 1.152630510001347e-05 - } - }, - { - "timestamp": "2025-08-16T22:27:39.689048", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.045441389083862, - "points_saved": 30, - "points_rate": 2.9864292506450014, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1246136744817098, - "csv_write_time_avg": 1.175403594970703e-05 - } - }, - { - "timestamp": "2025-08-16T22:27:49.750762", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.061714172363281, - "points_saved": 30, - "points_rate": 2.981599306647134, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10427564779917399, - "csv_write_time_avg": 3.5365422566731772e-06 - } - }, - { - "timestamp": "2025-08-16T22:27:59.820454", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.069691896438599, - "points_saved": 29, - "points_rate": 2.8799292270557535, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09782066838494663, - "csv_write_time_avg": 1.3704957633182921e-05 - } - }, - { - "timestamp": "2025-08-16T22:28:09.875708", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.055253267288208, - "points_saved": 30, - "points_rate": 2.9835151042486543, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09596264362335205, - "csv_write_time_avg": 4.00543212890625e-06 - } - }, - { - "timestamp": "2025-08-16T22:28:19.950418", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.074710845947266, - "points_saved": 30, - "points_rate": 2.9777529557652804, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10675273736317953, - "csv_write_time_avg": 2.276897430419922e-05 - } - }, - { - "timestamp": "2025-08-16T22:28:29.997919", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.0475013256073, - "points_saved": 29, - "points_rate": 2.8862897411210002, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11894374058164399, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:28:40.058371", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.06045126914978, - "points_saved": 30, - "points_rate": 2.981973591184179, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0962914228439331, - "csv_write_time_avg": 5.080699920654297e-05 - } - }, - { - "timestamp": "2025-08-16T22:28:50.103525", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.045154333114624, - "points_saved": 29, - "points_rate": 2.886964106106291, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09389156308667414, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:29:00.177084", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.07268500328064, - "points_saved": 29, - "points_rate": 2.8790734536575697, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1029374517243484, - "csv_write_time_avg": 4.756861719591864e-05 - } - }, - { - "timestamp": "2025-08-16T22:29:10.232235", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.055256128311157, - "points_saved": 30, - "points_rate": 2.983514255348828, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11620533466339111, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:29:20.274849", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.042815446853638, - "points_saved": 30, - "points_rate": 2.987210126359421, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10164745648701985, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:29:30.335596", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.061314105987549, - "points_saved": 30, - "points_rate": 2.981717863489305, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09609750111897787, - "csv_write_time_avg": 5.435943603515625e-06 - } - }, - { - "timestamp": "2025-08-16T22:29:40.381051", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.045455694198608, - "points_saved": 29, - "points_rate": 2.8868774979265406, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0960567490807895, - "csv_write_time_avg": 5.902915165342133e-06 - } - }, - { - "timestamp": "2025-08-16T22:29:50.458946", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 28 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.067947387695312, - "points_saved": 28, - "points_rate": 2.7811031307355267, - "variables_saved": 56, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.14182307038988387, - "csv_write_time_avg": 4.146780286516462e-06 - } - }, - { - "timestamp": "2025-08-16T22:30:00.528950", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 1 lost, 0.5% CPU", - "details": { - "duration": 10.079951286315918, - "points_saved": 31, - "points_rate": 3.0754116879596616, - "variables_saved": 62, - "udp_points_sent": 0, - "points_lost": 1, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.29718875885009766, - "delay_max": 0.29718875885009766, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13010096549987793, - "csv_write_time_avg": 1.1544073781659527e-05 - } - }, - { - "timestamp": "2025-08-16T22:30:10.568700", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.039749383926392, - "points_saved": 30, - "points_rate": 2.9881223975600335, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1282698710759481, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:30:20.638574", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.069874048233032, - "points_saved": 29, - "points_rate": 2.8798771326329202, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1078981695504024, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:30:30.698107", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.059532642364502, - "points_saved": 30, - "points_rate": 2.9822459021265697, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10142525831858316, - "csv_write_time_avg": 1.1531511942545573e-05 - } - }, - { - "timestamp": "2025-08-16T22:30:40.775301", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.6% CPU", - "details": { - "duration": 10.077195167541504, - "points_saved": 30, - "points_rate": 2.9770188530861796, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.6, - "cpu_max": 0.6, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09674940903981527, - "csv_write_time_avg": 1.4479955037434896e-05 - } - }, - { - "timestamp": "2025-08-16T22:30:50.828278", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.052976846694946, - "points_saved": 30, - "points_rate": 2.9841906986847295, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11217965284983317, - "csv_write_time_avg": 4.204114278157552e-06 - } - }, - { - "timestamp": "2025-08-16T22:31:00.872416", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.044137477874756, - "points_saved": 29, - "points_rate": 2.887256378547312, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11239310790752542, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:31:10.926601", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.054184913635254, - "points_saved": 30, - "points_rate": 2.983832131365984, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09724651177724203, - "csv_write_time_avg": 1.7952919006347656e-05 - } - }, - { - "timestamp": "2025-08-16T22:31:20.999178", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.8% CPU", - "details": { - "duration": 10.072577238082886, - "points_saved": 30, - "points_rate": 2.978383713611503, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.8, - "cpu_max": 0.8, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09849453767140706, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:31:31.069461", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.070283651351929, - "points_saved": 29, - "points_rate": 2.87975999525165, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0997028268616775, - "csv_write_time_avg": 1.7832065450734105e-05 - } - }, - { - "timestamp": "2025-08-16T22:31:41.114925", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.045463800430298, - "points_saved": 30, - "points_rate": 2.9864225879461084, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10533150831858316, - "csv_write_time_avg": 4.302660624186198e-05 - } - }, - { - "timestamp": "2025-08-16T22:31:51.177193", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.061761140823364, - "points_saved": 30, - "points_rate": 2.981585388494431, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11889035701751709, - "csv_write_time_avg": 5.046526590983073e-06 - } - }, - { - "timestamp": "2025-08-16T22:32:01.224745", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.04752254486084, - "points_saved": 30, - "points_rate": 2.9858106678590692, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.043274513880411786, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:32:11.257318", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.033109426498413, - "points_saved": 30, - "points_rate": 2.990099950546447, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.03515026569366455, - "csv_write_time_avg": 1.9629796346028644e-06 - } - }, - { - "timestamp": "2025-08-16T22:32:21.287239", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.02992033958435, - "points_saved": 30, - "points_rate": 2.9910506748095695, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.031994263331095375, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:32:31.319253", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.03201413154602, - "points_saved": 30, - "points_rate": 2.9904264095545825, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.035552565256754556, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:32:41.351402", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.03214955329895, - "points_saved": 30, - "points_rate": 2.9903860424543676, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.03446914354960124, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:32:51.382634", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.03123164176941, - "points_saved": 30, - "points_rate": 2.99065967882567, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.03428847789764404, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:33:01.412413", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.029778957366943, - "points_saved": 30, - "points_rate": 2.991092837391475, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.03259561061859131, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:33:11.450525", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.038111925125122, - "points_saved": 30, - "points_rate": 2.988609832583238, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.03629880746205648, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:33:21.481400", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.030874967575073, - "points_saved": 30, - "points_rate": 2.9907660196119847, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05536406040191651, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:33:31.542817", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.060341358184814, - "points_saved": 30, - "points_rate": 2.9820061697601177, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.055401968955993655, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:33:41.576730", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.03498888015747, - "points_saved": 30, - "points_rate": 2.9895399345504043, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06771374543507894, - "csv_write_time_avg": 4.1405359903971355e-06 - } - }, - { - "timestamp": "2025-08-16T22:33:51.641071", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.063886404037476, - "points_saved": 29, - "points_rate": 2.881590554158645, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10220446257755675, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:34:01.698221", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.057604789733887, - "points_saved": 30, - "points_rate": 2.98281754226632, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11830837726593017, - "csv_write_time_avg": 3.437995910644531e-05 - } - }, - { - "timestamp": "2025-08-16T22:34:11.778041", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.8% CPU", - "details": { - "duration": 10.079819679260254, - "points_saved": 30, - "points_rate": 2.976243718102075, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.8, - "cpu_max": 0.8, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.12382434209187826, - "csv_write_time_avg": 5.451838175455729e-06 - } - }, - { - "timestamp": "2025-08-16T22:34:21.820295", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.042253494262695, - "points_saved": 30, - "points_rate": 2.9873772870939272, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11684044996897379, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:34:31.874616", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.054321527481079, - "points_saved": 29, - "points_rate": 2.884331868712916, - "variables_saved": 58, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10063956523763723, - "csv_write_time_avg": 1.0761721380825701e-05 - } - }, - { - "timestamp": "2025-08-16T22:34:41.934150", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.059533834457397, - "points_saved": 31, - "points_rate": 3.0816537336764287, - "variables_saved": 62, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.049785029503606984, - "csv_write_time_avg": 7.1371755292338706e-06 - } - }, - { - "timestamp": "2025-08-16T22:34:51.964882", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.030732154846191, - "points_saved": 30, - "points_rate": 2.9908086006968064, - "variables_saved": 60, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0368441899617513, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:34:52.199568", - "level": "warning", - "event_type": "csv_headers_mismatch_after_config_reload", - "message": "CSV header mismatches detected and resolved for 1 datasets after configuration reload", - "details": { - "mismatched_datasets": 1, - "total_validated": 2, - "details": [ - { - "dataset_id": "DAR", - "dataset_name": "DAR", - "original_file": "records\\16-08-2025\\gateway_phoenix_22.csv", - "renamed_file": "records\\16-08-2025\\gateway_phoenix_to_22_34_52.csv", - "expected_headers": [ - "timestamp", - "UR29_Brix", - "UR29_ma", - "UR29_max" - ], - "existing_headers": [ - "timestamp", - "UR29_Brix", - "UR29_ma" - ] - } - ] - } - }, - { - "timestamp": "2025-08-16T22:34:52.256136", - "level": "info", - "event_type": "config_reload", - "message": "Dataset configuration reloaded from files with CSV header validation", - "details": { - "datasets_count": 3, - "active_datasets_count": 3, - "csv_recording_active": true - } - }, - { - "timestamp": "2025-08-16T22:35:01.995905", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.031022310256958, - "points_saved": 29, - "points_rate": 2.8910313528409577, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.08170128690785375, - "csv_write_time_avg": 0.00010340789268756735 - } - }, - { - "timestamp": "2025-08-16T22:35:12.080535", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.9% CPU", - "details": { - "duration": 10.084630012512207, - "points_saved": 30, - "points_rate": 2.974824060255893, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.9, - "cpu_max": 0.9, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0913459300994873, - "csv_write_time_avg": 1.2095769246419271e-05 - } - }, - { - "timestamp": "2025-08-16T22:35:22.109855", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.02932071685791, - "points_saved": 30, - "points_rate": 2.991229500675367, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04942336082458496, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:35:32.146919", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.037063598632812, - "points_saved": 30, - "points_rate": 2.9889219795405517, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04824570814768473, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:35:42.177193", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.030273914337158, - "points_saved": 30, - "points_rate": 2.9909452380077424, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.15979559421539308, - "csv_write_time_avg": 7.4783960978190105e-06 - } - }, - { - "timestamp": "2025-08-16T22:35:52.234686", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.057492733001709, - "points_saved": 29, - "points_rate": 2.8834224164877726, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13573691762726883, - "csv_write_time_avg": 1.1493419778758081e-05 - } - }, - { - "timestamp": "2025-08-16T22:36:02.287441", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.05275559425354, - "points_saved": 31, - "points_rate": 3.0837315907412033, - "variables_saved": 83, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.07532883459521879, - "csv_write_time_avg": 4.193090623424899e-05 - } - }, - { - "timestamp": "2025-08-16T22:36:12.317419", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.029977798461914, - "points_saved": 30, - "points_rate": 2.9910335399347012, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04286998907725016, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:36:22.348139", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.030719995498657, - "points_saved": 30, - "points_rate": 2.9908122261874195, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04528379440307617, - "csv_write_time_avg": 4.204114278157552e-06 - } - }, - { - "timestamp": "2025-08-16T22:36:32.034086", - "level": "info", - "event_type": "udp_streaming_stopped", - "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", - "details": {} - }, - { - "timestamp": "2025-08-16T22:36:32.379257", - "level": "info", - "event_type": "csv_recording_stopped", - "message": "🔥 CRITICAL: CSV recording stopped (dataset threads continue for UDP streaming)", - "details": { - "recording_protection": false, - "performance_monitoring": false - } - }, - { - "timestamp": "2025-08-16T22:36:32.412853", - "level": "info", - "event_type": "udp_streaming_stopped", - "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", - "details": {} - }, - { - "timestamp": "2025-08-16T22:36:32.988306", - "level": "info", - "event_type": "dataset_deactivated", - "message": "Dataset deactivated: Fast", - "details": { - "dataset_id": "Fast" - } - }, - { - "timestamp": "2025-08-16T22:36:33.254301", - "level": "info", - "event_type": "dataset_deactivated", - "message": "Dataset deactivated: DAR", - "details": { - "dataset_id": "DAR" - } - }, - { - "timestamp": "2025-08-16T22:36:33.284035", - "level": "info", - "event_type": "dataset_deactivated", - "message": "Dataset deactivated: test", - "details": { - "dataset_id": "Test" - } - }, - { - "timestamp": "2025-08-16T22:36:33.310426", - "level": "info", - "event_type": "plc_disconnection", - "message": "Disconnected from PLC 10.1.33.11 (application shutdown (will auto-reconnect on restart))", - "details": {} - }, - { - "timestamp": "2025-08-16T22:36:36.304659", - "level": "info", - "event_type": "application_started", - "message": "Application initialization completed successfully", - "details": {} - }, - { - "timestamp": "2025-08-16T22:36:36.433866", - "level": "info", - "event_type": "dataset_activated", - "message": "Dataset activated: DAR", - "details": { - "dataset_id": "DAR", - "variables_count": 3, - "streaming_count": 3, - "prefix": "gateway_phoenix" - } - }, - { - "timestamp": "2025-08-16T22:36:36.475444", - "level": "info", - "event_type": "dataset_activated", - "message": "Dataset activated: Fast", - "details": { - "dataset_id": "Fast", - "variables_count": 2, - "streaming_count": 2, - "prefix": "fast" - } - }, - { - "timestamp": "2025-08-16T22:36:36.525572", - "level": "info", - "event_type": "csv_recording_started", - "message": "🔥 CRITICAL PRIORITY: CSV recording started with MAXIMUM PRIORITY and performance monitoring: 2 datasets activated", - "details": { - "activated_datasets": 2, - "total_datasets": 3, - "priority": "CRITICAL", - "recording_protection": true, - "performance_monitoring": true - } - }, - { - "timestamp": "2025-08-16T22:36:46.434035", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 11.131804704666138, - "points_saved": 30, - "points_rate": 2.694980804633129, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05144415696461995, - "csv_write_time_avg": 0.0015485122286040208 - } - }, - { - "timestamp": "2025-08-16T22:36:56.464895", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 2.2% CPU", - "details": { - "duration": 10.03085970878601, - "points_saved": 30, - "points_rate": 2.990770569119121, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 2.2, - "cpu_max": 2.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.062333385149637856, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:37:06.494750", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.029855012893677, - "points_saved": 30, - "points_rate": 2.9910701561920994, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06378923257191976, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:37:16.525438", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.030688047409058, - "points_saved": 30, - "points_rate": 2.9908217520281717, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06366458733876547, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:37:26.557509", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.032070398330688, - "points_saved": 30, - "points_rate": 2.9904096371763824, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06105850537618001, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:37:36.587150", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.029641389846802, - "points_saved": 31, - "points_rate": 3.0908383256236753, - "variables_saved": 82, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05425484718814973, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:37:46.621596", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.034445762634277, - "points_saved": 30, - "points_rate": 2.9897017443367293, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05352559089660645, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:37:56.651223", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.029626607894897, - "points_saved": 30, - "points_rate": 2.991138271925823, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.054347141583760576, - "csv_write_time_avg": 3.743171691894531e-06 - } - }, - { - "timestamp": "2025-08-16T22:38:06.681401", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.03017807006836, - "points_saved": 30, - "points_rate": 2.99097381825401, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05210412343343099, - "csv_write_time_avg": 3.333886464436849e-05 - } - }, - { - "timestamp": "2025-08-16T22:38:16.719870", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.038469076156616, - "points_saved": 31, - "points_rate": 3.0881202865515855, - "variables_saved": 83, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05145695132593955, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:38:26.749671", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.02980089187622, - "points_saved": 29, - "points_rate": 2.8913834195341765, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.046640585208761284, - "csv_write_time_avg": 3.1323268495757003e-06 - } - }, - { - "timestamp": "2025-08-16T22:38:36.779683", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.030012369155884, - "points_saved": 31, - "points_rate": 3.0907240050202383, - "variables_saved": 83, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05165122401329779, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:38:46.809429", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.029746294021606, - "points_saved": 30, - "points_rate": 2.991102578325634, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04605727990468343, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:38:56.837611", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.028181791305542, - "points_saved": 30, - "points_rate": 2.991569222050808, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.048061426480611166, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:39:06.867001", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.02938961982727, - "points_saved": 30, - "points_rate": 2.991208950611759, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05188559691111247, - "csv_write_time_avg": 2.1060307820638022e-06 - } - }, - { - "timestamp": "2025-08-16T22:39:16.897067", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.03006649017334, - "points_saved": 30, - "points_rate": 2.9910070914676, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.049898624420166016, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:39:26.927019", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.029951810836792, - "points_saved": 30, - "points_rate": 2.9910412897085616, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05186225573221843, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:39:36.957595", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.0305757522583, - "points_saved": 30, - "points_rate": 2.9908552351290254, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05037085215250651, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:39:46.988684", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.031089782714844, - "points_saved": 30, - "points_rate": 2.990701972550854, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05054106712341309, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:39:57.018965", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.030280351638794, - "points_saved": 30, - "points_rate": 2.9909433184585374, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05034475326538086, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:40:07.048725", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.029760599136353, - "points_saved": 30, - "points_rate": 2.991098312215274, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05276365280151367, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:40:17.105845", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.057119131088257, - "points_saved": 30, - "points_rate": 2.982961582633035, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04574824968973796, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:40:27.137549", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.031704187393188, - "points_saved": 30, - "points_rate": 2.99051880314622, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.052160366376241045, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:40:37.166753", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.0288245677948, - "points_saved": 30, - "points_rate": 2.9913774836921476, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04544251759847005, - "csv_write_time_avg": 3.3696492513020832e-06 - } - }, - { - "timestamp": "2025-08-16T22:40:47.204865", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.03849196434021, - "points_saved": 30, - "points_rate": 2.9884966892008444, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04377773602803548, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:40:57.235183", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.030317783355713, - "points_saved": 30, - "points_rate": 2.9909321566842015, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04330936272939046, - "csv_write_time_avg": 1.9470850626627603e-06 - } - }, - { - "timestamp": "2025-08-16T22:41:07.265553", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.030369997024536, - "points_saved": 30, - "points_rate": 2.9909165872145658, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05162656307220459, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:41:17.296708", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.03115463256836, - "points_saved": 30, - "points_rate": 2.990682638128055, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.050094048182169594, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:41:27.326822", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.030114650726318, - "points_saved": 30, - "points_rate": 2.990992729861526, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05241036415100098, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:41:37.356633", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.029810667037964, - "points_saved": 30, - "points_rate": 2.991083380924846, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.047447729110717776, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:41:47.386145", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.02951169013977, - "points_saved": 30, - "points_rate": 2.991172544271886, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05103089014689128, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:41:57.417455", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.031310558319092, - "points_saved": 30, - "points_rate": 2.9906361512375494, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.050119940439860025, - "csv_write_time_avg": 4.319349924723307e-05 - } - }, - { - "timestamp": "2025-08-16T22:42:07.447373", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.029918193817139, - "points_saved": 30, - "points_rate": 2.991051314704965, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.045517365137736, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:42:17.477237", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 1.9% CPU", - "details": { - "duration": 10.029336214065552, - "points_saved": 30, - "points_rate": 2.9912248786641307, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 1.9, - "cpu_max": 1.9, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.049918421109517414, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:42:27.514787", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.037551403045654, - "points_saved": 30, - "points_rate": 2.9887767240621272, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04999382495880127, - "csv_write_time_avg": 3.425280253092448e-06 - } - }, - { - "timestamp": "2025-08-16T22:42:37.547167", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.03290581703186, - "points_saved": 30, - "points_rate": 2.9901606321343115, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0517823060353597, - "csv_write_time_avg": 2.2093454996744794e-06 - } - }, - { - "timestamp": "2025-08-16T22:42:47.577353", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.030186176300049, - "points_saved": 30, - "points_rate": 2.9909714009981068, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04435385862986247, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:42:57.611070", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.033717393875122, - "points_saved": 30, - "points_rate": 2.9899187731072523, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04898496468861898, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:43:07.648451", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.037380695343018, - "points_saved": 30, - "points_rate": 2.988827554774217, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.043648322423299156, - "csv_write_time_avg": 2.6861826578776044e-06 - } - }, - { - "timestamp": "2025-08-16T22:43:17.676908", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.028456687927246, - "points_saved": 30, - "points_rate": 2.9914872181793926, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.049264049530029295, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:43:27.709061", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.032152891159058, - "points_saved": 30, - "points_rate": 2.990385047504392, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09941627979278564, - "csv_write_time_avg": 4.100799560546875e-06 - } - }, - { - "timestamp": "2025-08-16T22:43:37.773344", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.0642831325531, - "points_saved": 29, - "points_rate": 2.8814769634410413, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.15429618440825363, - "csv_write_time_avg": 8.920143390523977e-06 - } - }, - { - "timestamp": "2025-08-16T22:43:47.837006", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.6% CPU", - "details": { - "duration": 10.063662052154541, - "points_saved": 30, - "points_rate": 2.981022200917137, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.6, - "cpu_max": 0.6, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.07739577293395997, - "csv_write_time_avg": 5.440711975097656e-05 - } - }, - { - "timestamp": "2025-08-16T22:43:51.850895", - "level": "info", - "event_type": "udp_streaming_stopped", - "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", - "details": {} - }, - { - "timestamp": "2025-08-16T22:43:53.887996", - "level": "info", - "event_type": "csv_recording_stopped", - "message": "🔥 CRITICAL: CSV recording stopped (dataset threads continue for UDP streaming)", - "details": { - "recording_protection": false, - "performance_monitoring": false - } - }, - { - "timestamp": "2025-08-16T22:43:53.917529", - "level": "info", - "event_type": "udp_streaming_stopped", - "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", - "details": {} - }, - { - "timestamp": "2025-08-16T22:43:54.294090", - "level": "info", - "event_type": "dataset_deactivated", - "message": "Dataset deactivated: DAR", - "details": { - "dataset_id": "DAR" - } - }, - { - "timestamp": "2025-08-16T22:43:54.325913", - "level": "info", - "event_type": "dataset_deactivated", - "message": "Dataset deactivated: test", - "details": { - "dataset_id": "Test" - } - }, - { - "timestamp": "2025-08-16T22:43:55.152694", - "level": "info", - "event_type": "dataset_deactivated", - "message": "Dataset deactivated: Fast", - "details": { - "dataset_id": "Fast" - } - }, - { - "timestamp": "2025-08-16T22:43:55.182359", - "level": "info", - "event_type": "plc_disconnection", - "message": "Disconnected from PLC 10.1.33.11 (application shutdown (will auto-reconnect on restart))", - "details": {} - }, - { - "timestamp": "2025-08-16T22:44:00.158939", - "level": "info", - "event_type": "application_started", - "message": "Application initialization completed successfully", - "details": {} - }, - { - "timestamp": "2025-08-16T22:44:00.239176", - "level": "info", - "event_type": "dataset_activated", - "message": "Dataset activated: DAR", - "details": { - "dataset_id": "DAR", - "variables_count": 3, - "streaming_count": 3, - "prefix": "gateway_phoenix" - } - }, - { - "timestamp": "2025-08-16T22:44:00.269416", - "level": "info", - "event_type": "dataset_activated", - "message": "Dataset activated: Fast", - "details": { - "dataset_id": "Fast", - "variables_count": 2, - "streaming_count": 2, - "prefix": "fast" - } - }, - { - "timestamp": "2025-08-16T22:44:00.298581", - "level": "info", - "event_type": "csv_recording_started", - "message": "🔥 CRITICAL PRIORITY: CSV recording started with MAXIMUM PRIORITY and performance monitoring: 2 datasets activated", - "details": { - "activated_datasets": 2, - "total_datasets": 3, - "priority": "CRITICAL", - "recording_protection": true, - "performance_monitoring": true - } - }, - { - "timestamp": "2025-08-16T22:44:10.240117", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 11.085733652114868, - "points_saved": 30, - "points_rate": 2.706180839395937, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06153452396392822, - "csv_write_time_avg": 0.0010163386662801106 - } - }, - { - "timestamp": "2025-08-16T22:44:20.270682", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.6% CPU", - "details": { - "duration": 10.030564546585083, - "points_saved": 30, - "points_rate": 2.9908585763713105, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.6, - "cpu_max": 0.6, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06425766944885254, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:44:30.301290", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.03060793876648, - "points_saved": 30, - "points_rate": 2.9908456379852555, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06525327364603678, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:44:40.351653", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.050363063812256, - "points_saved": 30, - "points_rate": 2.9849667926942076, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06640969117482504, - "csv_write_time_avg": 3.333091735839844e-05 - } - }, - { - "timestamp": "2025-08-16T22:44:50.389484", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 0 lost, 2.2% CPU", - "details": { - "duration": 10.03783106803894, - "points_saved": 31, - "points_rate": 3.0883165685768383, - "variables_saved": 82, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 2.2, - "cpu_max": 2.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05531274887823289, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:45:00.426060", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 1.9% CPU", - "details": { - "duration": 10.036576509475708, - "points_saved": 29, - "points_rate": 2.8894314682522064, - "variables_saved": 78, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 1.9, - "cpu_max": 1.9, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.08412282220248518, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:45:10.468238", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.042177677154541, - "points_saved": 30, - "points_rate": 2.987399841395808, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06679972807566324, - "csv_write_time_avg": 3.918011983235677e-06 - } - }, - { - "timestamp": "2025-08-16T22:45:20.520382", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.052143573760986, - "points_saved": 30, - "points_rate": 2.9844380733188802, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13012945652008057, - "csv_write_time_avg": 4.640420277913411e-05 - } - }, - { - "timestamp": "2025-08-16T22:45:30.581544", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.061162233352661, - "points_saved": 29, - "points_rate": 2.8823707765952986, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13367112751664786, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:45:40.643034", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.061490535736084, - "points_saved": 30, - "points_rate": 2.981665578618491, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.15693379243214925, - "csv_write_time_avg": 2.6218096415201823e-05 - } - }, - { - "timestamp": "2025-08-16T22:45:50.701433", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.058398246765137, - "points_saved": 30, - "points_rate": 2.9825822426198174, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.14853809674580892, - "csv_write_time_avg": 4.124641418457031e-06 - } - }, - { - "timestamp": "2025-08-16T22:46:00.771417", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.069984197616577, - "points_saved": 29, - "points_rate": 2.879845631422529, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13262358205071811, - "csv_write_time_avg": 2.0799965694032866e-05 - } - }, - { - "timestamp": "2025-08-16T22:46:10.829466", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.058048963546753, - "points_saved": 31, - "points_rate": 3.082108678567073, - "variables_saved": 83, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06533898076703472, - "csv_write_time_avg": 3.633960600822202e-05 - } - }, - { - "timestamp": "2025-08-16T22:46:20.859417", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.029950857162476, - "points_saved": 30, - "points_rate": 2.9910415741046963, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.049225687980651855, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:46:30.889618", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.030201196670532, - "points_saved": 30, - "points_rate": 2.9909669219754362, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04463091691335042, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:46:40.920638", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.031020641326904, - "points_saved": 30, - "points_rate": 2.990722586732869, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05052502950032552, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:46:50.971178", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.05053973197937, - "points_saved": 30, - "points_rate": 2.9849143230133524, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05265307426452637, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:47:01.000860", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.029681921005249, - "points_saved": 30, - "points_rate": 2.9911217759728492, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05376765727996826, - "csv_write_time_avg": 1.9391377766927082e-06 - } - }, - { - "timestamp": "2025-08-16T22:47:11.032988", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.032127141952515, - "points_saved": 30, - "points_rate": 2.9903927228499234, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04649356206258138, - "csv_write_time_avg": 4.23590342203776e-06 - } - }, - { - "timestamp": "2025-08-16T22:47:21.064541", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.031554222106934, - "points_saved": 30, - "points_rate": 2.9905635094796987, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.049178640047709145, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:47:31.096012", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.03147006034851, - "points_saved": 31, - "points_rate": 3.090274886283517, - "variables_saved": 82, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04731172130953881, - "csv_write_time_avg": 1.6343209051316784e-05 - } - }, - { - "timestamp": "2025-08-16T22:47:41.126175", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.030163288116455, - "points_saved": 30, - "points_rate": 2.9909782262013045, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04545809427897136, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:47:51.157455", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.031279802322388, - "points_saved": 30, - "points_rate": 2.9906453205556645, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05192868709564209, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:48:01.189390", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.031934976577759, - "points_saved": 30, - "points_rate": 2.9904500049136127, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.051836212476094566, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:48:11.221542", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.032151937484741, - "points_saved": 30, - "points_rate": 2.990385331775746, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04641553560892741, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:48:21.254292", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.032750606536865, - "points_saved": 30, - "points_rate": 2.9902068910646915, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05086153348286947, - "csv_write_time_avg": 1.8072128295898437e-05 - } - }, - { - "timestamp": "2025-08-16T22:48:31.286830", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.032538175582886, - "points_saved": 30, - "points_rate": 2.990270206298718, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.049714366594950356, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:48:41.319798", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.032967329025269, - "points_saved": 30, - "points_rate": 2.990142299498008, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04853974183400472, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:48:51.354856", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.032545804977417, - "points_saved": 30, - "points_rate": 2.990267932304499, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.051667555173238115, - "csv_write_time_avg": 3.1709671020507814e-06 - } - }, - { - "timestamp": "2025-08-16T22:49:01.408592", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 3.3% CPU", - "details": { - "duration": 10.056248903274536, - "points_saved": 30, - "points_rate": 2.9832197162732657, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 3.3, - "cpu_max": 3.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06536626021067302, - "csv_write_time_avg": 3.417332967122396e-06 - } - }, - { - "timestamp": "2025-08-16T22:49:11.446689", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.6% CPU", - "details": { - "duration": 10.038096904754639, - "points_saved": 30, - "points_rate": 2.9886143045491242, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.6, - "cpu_max": 0.6, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.060137152671813965, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:49:21.477720", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.03050422668457, - "points_saved": 30, - "points_rate": 2.9908765623356945, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1219764788945516, - "csv_write_time_avg": 5.232493082682292e-05 - } - }, - { - "timestamp": "2025-08-16T22:49:31.544830", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 3.3% CPU", - "details": { - "duration": 10.067636728286743, - "points_saved": 30, - "points_rate": 2.9798453013019315, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 3.3, - "cpu_max": 3.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06579493681589763, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:49:41.612010", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.8% CPU", - "details": { - "duration": 10.066612720489502, - "points_saved": 30, - "points_rate": 2.9801484206239746, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.8, - "cpu_max": 0.8, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.09423817793528239, - "csv_write_time_avg": 1.842975616455078e-05 - } - }, - { - "timestamp": "2025-08-16T22:49:51.641851", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.030408143997192, - "points_saved": 30, - "points_rate": 2.9909052123620543, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0469965934753418, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:50:01.671808", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.029956579208374, - "points_saved": 30, - "points_rate": 2.991039867728698, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.052059022585550944, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:50:11.710065", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.038256645202637, - "points_saved": 30, - "points_rate": 2.9885667462324985, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06519587834676106, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:50:21.745645", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 1.2% CPU", - "details": { - "duration": 10.035072565078735, - "points_saved": 30, - "points_rate": 2.989515004046672, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 1.2, - "cpu_max": 1.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05103712876637777, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:50:31.799476", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 1.1% CPU", - "details": { - "duration": 10.053453922271729, - "points_saved": 30, - "points_rate": 2.9840490872037586, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 1.1, - "cpu_max": 1.1, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05401177406311035, - "csv_write_time_avg": 3.894170125325521e-05 - } - }, - { - "timestamp": "2025-08-16T22:50:41.861925", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.8% CPU", - "details": { - "duration": 10.063333749771118, - "points_saved": 30, - "points_rate": 2.981119452654775, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.8, - "cpu_max": 0.8, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04910134474436442, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:50:51.892501", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.030576944351196, - "points_saved": 30, - "points_rate": 2.9908548796781576, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04734787146250407, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:51:01.922854", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.030352354049683, - "points_saved": 30, - "points_rate": 2.990921848113114, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04746693770090739, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:51:11.954672", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.031818389892578, - "points_saved": 30, - "points_rate": 2.990484758997042, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.052835512161254886, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:51:21.988534", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.033861637115479, - "points_saved": 30, - "points_rate": 2.9898757910941614, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04687278270721436, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:51:32.019561", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.031026840209961, - "points_saved": 30, - "points_rate": 2.9907207385532293, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.046783614158630374, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:51:42.048964", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.029403686523438, - "points_saved": 30, - "points_rate": 2.9912047553047603, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04886135260264079, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:51:52.079449", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.030484199523926, - "points_saved": 30, - "points_rate": 2.990882534008067, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.045237064361572266, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:52:02.112525", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.033076047897339, - "points_saved": 30, - "points_rate": 2.9901098981789525, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05101739565531413, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:52:12.143766", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.031241416931152, - "points_saved": 30, - "points_rate": 2.9906567645121904, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04677109718322754, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:52:22.178114", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.034347295761108, - "points_saved": 30, - "points_rate": 2.989731082227256, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04921573003133138, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:52:32.210124", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.032010316848755, - "points_saved": 30, - "points_rate": 2.9904275466717793, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04523137410481771, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:52:42.241681", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.031556844711304, - "points_saved": 30, - "points_rate": 2.9905627276404436, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.045751698811848956, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:52:52.271691", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.030009984970093, - "points_saved": 30, - "points_rate": 2.9910239416465996, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0531238317489624, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:53:02.302478", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.030787467956543, - "points_saved": 30, - "points_rate": 2.9907921083798574, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.050660347938537596, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:53:12.332803", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.030324697494507, - "points_saved": 30, - "points_rate": 2.990930094964299, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04452150662740072, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:53:22.362411", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.029608488082886, - "points_saved": 30, - "points_rate": 2.9911436758120518, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05197396278381348, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:53:32.399224", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.03681230545044, - "points_saved": 30, - "points_rate": 2.988996813630624, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.055751744906107584, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:53:42.428899", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.029675245285034, - "points_saved": 30, - "points_rate": 2.991123766854071, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05341041088104248, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:53:52.459290", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.030390739440918, - "points_saved": 30, - "points_rate": 2.9909104021277804, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.07379014492034912, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:54:02.491697", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 3.3% CPU", - "details": { - "duration": 10.03140640258789, - "points_saved": 30, - "points_rate": 2.9906075774440395, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 3.3, - "cpu_max": 3.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0771827777226766, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:54:12.522691", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.031995058059692, - "points_saved": 30, - "points_rate": 2.990432095149213, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1033562183380127, - "csv_write_time_avg": 4.061063130696615e-06 - } - }, - { - "timestamp": "2025-08-16T22:54:22.577275", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.05458378791809, - "points_saved": 29, - "points_rate": 2.88425663475472, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13969298888897075, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:54:32.633190", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.055914878845215, - "points_saved": 30, - "points_rate": 2.983318809023679, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1365562359491984, - "csv_write_time_avg": 1.694361368815104e-05 - } - }, - { - "timestamp": "2025-08-16T22:54:42.689084", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.055894374847412, - "points_saved": 30, - "points_rate": 2.983324892019385, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13162782192230224, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:54:52.742994", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.053909540176392, - "points_saved": 30, - "points_rate": 2.983913857601076, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.15469765663146973, - "csv_write_time_avg": 7.716814676920573e-06 - } - }, - { - "timestamp": "2025-08-16T22:55:02.782596", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.039602756500244, - "points_saved": 29, - "points_rate": 2.8885605041717066, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.16470139602134967, - "csv_write_time_avg": 1.119745188745959e-05 - } - }, - { - "timestamp": "2025-08-16T22:55:12.851852", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.068745136260986, - "points_saved": 30, - "points_rate": 2.979517267942334, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13131638367970785, - "csv_write_time_avg": 7.065137227376302e-06 - } - }, - { - "timestamp": "2025-08-16T22:55:22.913539", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.062197208404541, - "points_saved": 30, - "points_rate": 2.9814561748941104, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1317939599355062, - "csv_write_time_avg": 1.1571248372395833e-05 - } - }, - { - "timestamp": "2025-08-16T22:55:32.971268", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.057729721069336, - "points_saved": 29, - "points_rate": 2.8833544750411852, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1527831718839448, - "csv_write_time_avg": 3.255646804283405e-06 - } - }, - { - "timestamp": "2025-08-16T22:55:43.032679", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.061410427093506, - "points_saved": 30, - "points_rate": 2.9816893185487774, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.17090593179066976, - "csv_write_time_avg": 1.3430913289388021e-05 - } - }, - { - "timestamp": "2025-08-16T22:55:53.079535", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.04685640335083, - "points_saved": 30, - "points_rate": 2.9860086374872834, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13518967628479003, - "csv_write_time_avg": 4.490216573079427e-06 - } - }, - { - "timestamp": "2025-08-16T22:56:03.134196", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.054660558700562, - "points_saved": 29, - "points_rate": 2.8842346124659115, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13015125537740774, - "csv_write_time_avg": 8.319986277613146e-06 - } - }, - { - "timestamp": "2025-08-16T22:56:13.190689", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.056493043899536, - "points_saved": 30, - "points_rate": 2.983147292902329, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.14135546684265138, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:56:23.241755", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.051066398620605, - "points_saved": 30, - "points_rate": 2.984757916246296, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1640709638595581, - "csv_write_time_avg": 1.991589864095052e-05 - } - }, - { - "timestamp": "2025-08-16T22:56:33.290523", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.048260927200317, - "points_saved": 29, - "points_rate": 2.8860715510977566, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13667091007890372, - "csv_write_time_avg": 1.5020370483398438e-05 - } - }, - { - "timestamp": "2025-08-16T22:56:43.344989", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.054972887039185, - "points_saved": 30, - "points_rate": 2.9835982987751133, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13788639704386393, - "csv_write_time_avg": 3.862380981445312e-06 - } - }, - { - "timestamp": "2025-08-16T22:56:53.401803", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.056813478469849, - "points_saved": 29, - "points_rate": 2.883617167812122, - "variables_saved": 78, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13416593650291705, - "csv_write_time_avg": 9.347652566844019e-06 - } - }, - { - "timestamp": "2025-08-16T22:57:03.465603", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.063800573348999, - "points_saved": 29, - "points_rate": 2.8816151302518778, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.17353218999402276, - "csv_write_time_avg": 1.9007715685614223e-05 - } - }, - { - "timestamp": "2025-08-16T22:57:13.521914", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.056311130523682, - "points_saved": 30, - "points_rate": 2.9832012564668684, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.14111685752868652, - "csv_write_time_avg": 3.5365422566731772e-06 - } - }, - { - "timestamp": "2025-08-16T22:57:23.583713", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.061798810958862, - "points_saved": 30, - "points_rate": 2.9815742258059603, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1303362528483073, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:57:33.655592", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.071878433227539, - "points_saved": 29, - "points_rate": 2.879304013869728, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.12759619745714912, - "csv_write_time_avg": 7.54718122811153e-06 - } - }, - { - "timestamp": "2025-08-16T22:57:43.735530", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.079296112060547, - "points_saved": 30, - "points_rate": 2.976398318539626, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1589628299077352, - "csv_write_time_avg": 2.3182233174641927e-05 - } - }, - { - "timestamp": "2025-08-16T22:57:53.795932", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.061043739318848, - "points_saved": 30, - "points_rate": 2.981797990079214, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.15391517480214437, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:58:03.851185", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.055254220962524, - "points_saved": 29, - "points_rate": 2.8840643272392588, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.12945091313329235, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:58:13.912915", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.061729669570923, - "points_saved": 30, - "points_rate": 2.9815947143488835, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1299544095993042, - "csv_write_time_avg": 2.8467178344726564e-05 - } - }, - { - "timestamp": "2025-08-16T22:58:23.965084", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.05117678642273, - "points_saved": 30, - "points_rate": 2.9847251359188527, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1632701317469279, - "csv_write_time_avg": 1.815160115559896e-05 - } - }, - { - "timestamp": "2025-08-16T22:58:34.026165", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.062072992324829, - "points_saved": 29, - "points_rate": 2.882109881544358, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13691803504680766, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:58:44.072296", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.046131372451782, - "points_saved": 30, - "points_rate": 2.9862241382055936, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1314794937769572, - "csv_write_time_avg": 6.2783559163411456e-06 - } - }, - { - "timestamp": "2025-08-16T22:58:54.134501", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.062204360961914, - "points_saved": 30, - "points_rate": 2.981454055573574, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13750773270924885, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:59:04.187041", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.052540063858032, - "points_saved": 30, - "points_rate": 2.9843203617620198, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11236170927683513, - "csv_write_time_avg": 1.6045570373535156e-05 - } - }, - { - "timestamp": "2025-08-16T22:59:14.216706", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.029664993286133, - "points_saved": 30, - "points_rate": 2.9911268242839646, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0602427085240682, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:59:24.263411", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.0467050075531, - "points_saved": 29, - "points_rate": 2.88651851310433, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.16837461241360369, - "csv_write_time_avg": 1.0663065417059537e-05 - } - }, - { - "timestamp": "2025-08-16T22:59:34.321882", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.058470726013184, - "points_saved": 30, - "points_rate": 2.9825607507525076, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13843444983164468, - "csv_write_time_avg": 1.2652079264322917e-05 - } - }, - { - "timestamp": "2025-08-16T22:59:44.364622", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.04274034500122, - "points_saved": 30, - "points_rate": 2.987232465383068, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.132483172416687, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T22:59:54.416145", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.051522970199585, - "points_saved": 29, - "points_rate": 2.8851349279087577, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.14964714543572788, - "csv_write_time_avg": 3.288532125538793e-06 - } - }, - { - "timestamp": "2025-08-16T23:00:04.478359", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.062214374542236, - "points_saved": 30, - "points_rate": 2.981451088529884, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06354688008626302, - "csv_write_time_avg": 0.00022495587666829426 - } - }, - { - "timestamp": "2025-08-16T23:00:14.509694", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.031334400177002, - "points_saved": 30, - "points_rate": 2.990629043277697, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05412274201711019, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:00:24.540280", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.03058648109436, - "points_saved": 30, - "points_rate": 2.9908520360742585, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11685904661814371, - "csv_write_time_avg": 1.9931793212890624e-05 - } - }, - { - "timestamp": "2025-08-16T23:00:34.584177", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.0438973903656, - "points_saved": 30, - "points_rate": 2.986888339657559, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13749229907989502, - "csv_write_time_avg": 1.6474723815917967e-05 - } - }, - { - "timestamp": "2025-08-16T23:00:44.624871", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.040693521499634, - "points_saved": 30, - "points_rate": 2.9878414210893403, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.0991792360941569, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:00:54.660537", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.035665512084961, - "points_saved": 30, - "points_rate": 2.9893383716181017, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04945051670074463, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:01:04.690725", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.030188083648682, - "points_saved": 30, - "points_rate": 2.9909708322325796, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05134510199228923, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:01:14.724068", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.033343076705933, - "points_saved": 29, - "points_rate": 2.8903626416730734, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11742227652977252, - "csv_write_time_avg": 1.6138471406081627e-05 - } - }, - { - "timestamp": "2025-08-16T23:01:24.775321", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.05125379562378, - "points_saved": 30, - "points_rate": 2.9847022679958313, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.15239620208740234, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:01:34.825854", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.050532579421997, - "points_saved": 30, - "points_rate": 2.9849164472561007, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.15170615514119465, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:01:44.861289", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.035435199737549, - "points_saved": 29, - "points_rate": 2.8897600774462098, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13122431985263167, - "csv_write_time_avg": 5.623389934671336e-06 - } - }, - { - "timestamp": "2025-08-16T23:01:54.912010", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.050720691680908, - "points_saved": 30, - "points_rate": 2.984860580677695, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.130361803372701, - "csv_write_time_avg": 7.05718994140625e-06 - } - }, - { - "timestamp": "2025-08-16T23:02:04.976450", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.8% CPU", - "details": { - "duration": 10.06444001197815, - "points_saved": 30, - "points_rate": 2.980791774236384, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.8, - "cpu_max": 0.8, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.143946107228597, - "csv_write_time_avg": 1.850128173828125e-05 - } - }, - { - "timestamp": "2025-08-16T23:02:15.029984", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.053534030914307, - "points_saved": 29, - "points_rate": 2.8845577993594986, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.16858548131482354, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:02:25.089324", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.059340000152588, - "points_saved": 29, - "points_rate": 2.8828929134078485, - "variables_saved": 78, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1370831111381794, - "csv_write_time_avg": 6.141333744443696e-06 - } - }, - { - "timestamp": "2025-08-16T23:02:35.138257", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.048932790756226, - "points_saved": 30, - "points_rate": 2.9853916455283973, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.12914044857025148, - "csv_write_time_avg": 1.3144810994466146e-05 - } - }, - { - "timestamp": "2025-08-16T23:02:45.193048", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.054275751113892, - "points_saved": 29, - "points_rate": 2.884345000860669, - "variables_saved": 77, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1319486848239241, - "csv_write_time_avg": 4.610522040005388e-05 - } - }, - { - "timestamp": "2025-08-16T23:02:55.239783", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.047250509262085, - "points_saved": 30, - "points_rate": 2.9858915105525057, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.1466659625371297, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:03:05.271733", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.031950235366821, - "points_saved": 30, - "points_rate": 2.9904454563816962, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06443273226420085, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:03:15.307494", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.035760879516602, - "points_saved": 30, - "points_rate": 2.9893099646516315, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.11485755443572998, - "csv_write_time_avg": 2.501805623372396e-05 - } - }, - { - "timestamp": "2025-08-16T23:03:25.379826", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.072331428527832, - "points_saved": 30, - "points_rate": 2.9784563993824804, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06880827744801839, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:03:35.410997", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.031171321868896, - "points_saved": 31, - "points_rate": 3.090366917811192, - "variables_saved": 82, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.04404997056530368, - "csv_write_time_avg": 4.46073470577117e-06 - } - }, - { - "timestamp": "2025-08-16T23:08:43.093835", - "level": "info", - "event_type": "application_started", - "message": "Application initialization completed successfully", - "details": {} - }, - { - "timestamp": "2025-08-16T23:08:43.173880", - "level": "info", - "event_type": "dataset_activated", - "message": "Dataset activated: DAR", - "details": { - "dataset_id": "DAR", - "variables_count": 3, - "streaming_count": 3, - "prefix": "gateway_phoenix" - } - }, - { - "timestamp": "2025-08-16T23:08:43.207328", - "level": "info", - "event_type": "dataset_activated", - "message": "Dataset activated: Fast", - "details": { - "dataset_id": "Fast", - "variables_count": 2, - "streaming_count": 2, - "prefix": "fast" - } - }, - { - "timestamp": "2025-08-16T23:08:43.242376", - "level": "info", - "event_type": "csv_recording_started", - "message": "🔥 CRITICAL PRIORITY: CSV recording started with MAXIMUM PRIORITY and performance monitoring: 2 datasets activated", - "details": { - "activated_datasets": 2, - "total_datasets": 3, - "priority": "CRITICAL", - "recording_protection": true, - "performance_monitoring": true - } - }, - { - "timestamp": "2025-08-16T23:08:53.174969", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 11.10945439338684, - "points_saved": 30, - "points_rate": 2.7004026424428362, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.062371102968851726, - "csv_write_time_avg": 0.00032188097635904946 - } - }, - { - "timestamp": "2025-08-16T23:09:03.202724", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU", - "details": { - "duration": 10.027755498886108, - "points_saved": 30, - "points_rate": 2.991696397397446, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.5, - "cpu_max": 0.5, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.07085731029510497, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:09:13.232093", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.029368162155151, - "points_saved": 30, - "points_rate": 2.9912153502552727, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.06928338209788004, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:09:23.260022", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.027929544448853, - "points_saved": 30, - "points_rate": 2.9916444732708616, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05925215085347493, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:09:33.290435", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU", - "details": { - "duration": 10.030412435531616, - "points_saved": 30, - "points_rate": 2.9909039326965607, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.2, - "cpu_max": 0.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.056091562906901045, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:09:43.320078", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU", - "details": { - "duration": 10.029643297195435, - "points_saved": 30, - "points_rate": 2.9911332946794658, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.0, - "cpu_max": 0.0, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05588960647583008, - "csv_write_time_avg": 3.3346811930338543e-05 - } - }, - { - "timestamp": "2025-08-16T23:09:53.382177", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.6% CPU", - "details": { - "duration": 10.06209945678711, - "points_saved": 30, - "points_rate": 2.9814851392434143, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.6, - "cpu_max": 0.6, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.10196696917215983, - "csv_write_time_avg": 3.336270650227865e-05 - } - }, - { - "timestamp": "2025-08-16T23:10:03.440911", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 1.9% CPU", - "details": { - "duration": 10.058733940124512, - "points_saved": 30, - "points_rate": 2.9824827039444135, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 1.9, - "cpu_max": 1.9, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.12997784614562988, - "csv_write_time_avg": 1.5052159627278646e-05 - } - }, - { - "timestamp": "2025-08-16T23:10:13.471706", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 31 points saved, 0 lost, 2.2% CPU", - "details": { - "duration": 10.030794620513916, - "points_saved": 31, - "points_rate": 3.0904829749581446, - "variables_saved": 82, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 2.2, - "cpu_max": 2.2, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05302013889435799, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:10:23.510567", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.038861513137817, - "points_saved": 30, - "points_rate": 2.9883866771883567, - "variables_saved": 80, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.05260756810506185, - "csv_write_time_avg": 0.0 - } - }, - { - "timestamp": "2025-08-16T23:10:33.544143", - "level": "info", - "event_type": "performance_report", - "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU", - "details": { - "duration": 10.032572507858276, - "points_saved": 29, - "points_rate": 2.8905846409069045, - "variables_saved": 78, - "udp_points_sent": 0, - "points_lost": 0, - "cpu_average": 0.3, - "cpu_max": 0.3, - "delay_average": 0.0, - "delay_max": 0.0, - "read_errors": 0, - "csv_errors": 0, - "udp_errors": 0, - "read_time_avg": 0.13070860402337436, - "csv_write_time_avg": 0.0 - } - }, { "timestamp": "2025-08-16T23:10:43.623996", "level": "info", @@ -21350,8 +15427,5537 @@ "read_time_avg": 0.14332865620707416, "csv_write_time_avg": 0.0 } + }, + { + "timestamp": "2025-08-17T11:00:30.919182", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 19 lost, 0.3% CPU", + "details": { + "duration": 10.032496929168701, + "points_saved": 92, + "points_rate": 9.170199667095554, + "variables_saved": 204, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.09220196406046549, + "delay_max": 0.14913487434387207, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14362526458242666, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:00:40.952108", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 93 points saved, 19 lost, 0.2% CPU", + "details": { + "duration": 10.03294062614441, + "points_saved": 93, + "points_rate": 9.269465799254837, + "variables_saved": 206, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.10464376449584961, + "delay_max": 0.153916597366333, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.13969720819944975, + "csv_write_time_avg": 1.2228565831338205e-06 + } + }, + { + "timestamp": "2025-08-17T11:00:50.981832", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 88 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.030716180801392, + "points_saved": 88, + "points_rate": 8.773052533220948, + "variables_saved": 196, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08566898268622321, + "delay_max": 0.19644832611083984, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1573228185827082, + "csv_write_time_avg": 3.5938891497525304e-05 + } + }, + { + "timestamp": "2025-08-17T11:01:01.011308", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 18 lost, 0.2% CPU", + "details": { + "duration": 10.028458595275879, + "points_saved": 92, + "points_rate": 9.173892390934194, + "variables_saved": 204, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.07668994568489693, + "delay_max": 0.17785429954528809, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1461678199146105, + "csv_write_time_avg": 5.727228911026664e-07 + } + }, + { + "timestamp": "2025-08-17T11:01:11.042472", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 19 lost, 0.3% CPU", + "details": { + "duration": 10.031169414520264, + "points_saved": 92, + "points_rate": 9.171413241892681, + "variables_saved": 204, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.10517918146573581, + "delay_max": 0.15361976623535156, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14515030124913092, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:01:21.076170", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.033720254898071, + "points_saved": 91, + "points_rate": 9.069417692363642, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.10673851437038845, + "delay_max": 0.15526819229125977, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14776206016540527, + "csv_write_time_avg": 1.8890087421123799e-06 + } + }, + { + "timestamp": "2025-08-17T11:01:31.109993", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.032811641693115, + "points_saved": 91, + "points_rate": 9.070239056600393, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.09183702930327385, + "delay_max": 0.1752469539642334, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14448159605592162, + "csv_write_time_avg": 1.1868529267363496e-06 + } + }, + { + "timestamp": "2025-08-17T11:01:41.145175", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.036179065704346, + "points_saved": 91, + "points_rate": 9.067195732982228, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.10427947397585269, + "delay_max": 0.16058087348937988, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.145916807782519, + "csv_write_time_avg": 6.916758778331044e-07 + } + }, + { + "timestamp": "2025-08-17T11:01:51.178231", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 22 lost, 0.3% CPU", + "details": { + "duration": 10.03406023979187, + "points_saved": 90, + "points_rate": 8.969449838769037, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 22, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.09669104218482971, + "delay_max": 0.1839447021484375, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1490602970123291, + "csv_write_time_avg": 1.4490551418728298e-06 + } + }, + { + "timestamp": "2025-08-17T11:02:01.208906", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.028673648834229, + "points_saved": 90, + "points_rate": 8.974267500514582, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.07040216809227354, + "delay_max": 0.1667797565460205, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14742880397372776, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:02:11.242007", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.3% CPU", + "details": { + "duration": 10.034100770950317, + "points_saved": 91, + "points_rate": 9.069073759300256, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.11224131584167481, + "delay_max": 0.15343785285949707, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14862092772682944, + "csv_write_time_avg": 1.7134697882683723e-06 + } + }, + { + "timestamp": "2025-08-17T11:02:21.275333", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 93 points saved, 19 lost, 0.5% CPU", + "details": { + "duration": 10.033334016799927, + "points_saved": 93, + "points_rate": 9.269102358625734, + "variables_saved": 206, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.08829052986637238, + "delay_max": 0.1958928108215332, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14125888834717454, + "csv_write_time_avg": 6.434737995106686e-07 + } + }, + { + "timestamp": "2025-08-17T11:02:31.307920", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.031578779220581, + "points_saved": 91, + "points_rate": 9.071353772199592, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08280749881968778, + "delay_max": 0.16198325157165527, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1488448263524653, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:02:41.345043", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 18 lost, 0.0% CPU", + "details": { + "duration": 10.036128044128418, + "points_saved": 92, + "points_rate": 9.166881848804639, + "variables_saved": 204, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.08864853459019814, + "delay_max": 0.15111017227172852, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14180259860080222, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:02:51.383910", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.041863918304443, + "points_saved": 90, + "points_rate": 8.962479548836228, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08627704211643764, + "delay_max": 0.16309738159179688, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1523353550169203, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:03:01.413525", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.5% CPU", + "details": { + "duration": 10.02861213684082, + "points_saved": 90, + "points_rate": 8.974322545527372, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.09422832150613109, + "delay_max": 0.1815016269683838, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14918402565850153, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:03:11.442033", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.029510259628296, + "points_saved": 91, + "points_rate": 9.073224678407433, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.10117990630013603, + "delay_max": 0.17666935920715332, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1476800546541319, + "csv_write_time_avg": 1.0988214513757727e-05 + } + }, + { + "timestamp": "2025-08-17T11:03:17.264713", + "level": "info", + "event_type": "udp_streaming_stopped", + "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", + "details": {} + }, + { + "timestamp": "2025-08-17T11:03:19.298964", + "level": "info", + "event_type": "csv_recording_stopped", + "message": "🔥 CRITICAL: CSV recording stopped (dataset threads continue for UDP streaming)", + "details": { + "recording_protection": false, + "performance_monitoring": false + } + }, + { + "timestamp": "2025-08-17T11:03:19.332963", + "level": "info", + "event_type": "udp_streaming_stopped", + "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", + "details": {} + }, + { + "timestamp": "2025-08-17T11:03:19.429702", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: Fast", + "details": { + "dataset_id": "Fast" + } + }, + { + "timestamp": "2025-08-17T11:03:19.856440", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: DAR", + "details": { + "dataset_id": "DAR" + } + }, + { + "timestamp": "2025-08-17T11:03:19.885596", + "level": "info", + "event_type": "plc_disconnection", + "message": "Disconnected from PLC 10.1.33.11 (application shutdown (will auto-reconnect on restart))", + "details": {} + }, + { + "timestamp": "2025-08-17T11:06:08.551052", + "level": "info", + "event_type": "application_started", + "message": "Application initialization completed successfully", + "details": {} + }, + { + "timestamp": "2025-08-17T11:06:08.650583", + "level": "info", + "event_type": "dataset_activated", + "message": "Dataset activated: DAR", + "details": { + "dataset_id": "DAR", + "variables_count": 3, + "streaming_count": 3, + "prefix": "gateway_phoenix" + } + }, + { + "timestamp": "2025-08-17T11:06:08.676589", + "level": "info", + "event_type": "dataset_activated", + "message": "Dataset activated: Fast", + "details": { + "dataset_id": "Fast", + "variables_count": 2, + "streaming_count": 2, + "prefix": "fast" + } + }, + { + "timestamp": "2025-08-17T11:06:08.703206", + "level": "info", + "event_type": "csv_recording_started", + "message": "🔥 CRITICAL PRIORITY: CSV recording started with MAXIMUM PRIORITY, async buffering, and performance monitoring: 2 datasets activated", + "details": { + "activated_datasets": 2, + "total_datasets": 3, + "priority": "CRITICAL", + "recording_protection": true, + "performance_monitoring": true, + "async_csv_buffering": true, + "csv_flush_interval": 5.0 + } + }, + { + "timestamp": "2025-08-17T11:06:18.653106", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 19 lost, 0.0% CPU", + "details": { + "duration": 11.115841388702393, + "points_saved": 91, + "points_rate": 8.186514796125827, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.09051239105962938, + "delay_max": 0.1503465175628662, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14669705223251175, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:06:28.688665", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.037562131881714, + "points_saved": 92, + "points_rate": 9.165572156986789, + "variables_saved": 204, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.09187469482421876, + "delay_max": 0.18285799026489258, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14321795753810718, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:06:37.913909", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'Clock' created and started", + "details": { + "session_id": "Clock_1755421597912_2", + "variables": [ + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 10, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-17T11:06:38.718759", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 1.7% CPU", + "details": { + "duration": 10.029847860336304, + "points_saved": 91, + "points_rate": 9.072919277256988, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 1.7, + "cpu_max": 1.7, + "delay_average": 0.10827571612138015, + "delay_max": 0.15305876731872559, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14506416006402656, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:06:48.748825", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.5% CPU", + "details": { + "duration": 10.030304193496704, + "points_saved": 91, + "points_rate": 9.072506500750116, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.09235753551606209, + "delay_max": 0.17312955856323242, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14414709740942652, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:06:58.804764", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 89 points saved, 21 lost, 0.2% CPU", + "details": { + "duration": 10.056939125061035, + "points_saved": 89, + "points_rate": 8.849611088747627, + "variables_saved": 198, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08041851337139423, + "delay_max": 0.182358980178833, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.15141941456312544, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:07:08.835315", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.3% CPU", + "details": { + "duration": 10.029564142227173, + "points_saved": 90, + "points_rate": 8.973470703584786, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.10154633686460297, + "delay_max": 0.18205976486206055, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14904879728953044, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:07:18.864179", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.028825998306274, + "points_saved": 91, + "points_rate": 9.073843739573167, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.11181019819699801, + "delay_max": 0.16468334197998047, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14752487035898063, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:07:28.897820", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.032394647598267, + "points_saved": 91, + "points_rate": 9.070616058927188, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.10363693590517398, + "delay_max": 0.16488218307495117, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1450957125359839, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:07:38.282421", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'Clock' created and started", + "details": { + "session_id": "Clock_1755421658282_3", + "variables": [ + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 10, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-17T11:07:38.934856", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 19 lost, 0.2% CPU", + "details": { + "duration": 10.038317918777466, + "points_saved": 92, + "points_rate": 9.164882079288079, + "variables_saved": 204, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.09250806223961615, + "delay_max": 0.1791849136352539, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14360929831214572, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:07:48.971408", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 88 points saved, 21 lost, 1.7% CPU", + "details": { + "duration": 10.036433696746826, + "points_saved": 88, + "points_rate": 8.768054735271555, + "variables_saved": 196, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 1.7, + "cpu_max": 1.7, + "delay_average": 0.08791507993425642, + "delay_max": 0.17820048332214355, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1507531160658056, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:07:59.001728", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.5% CPU", + "details": { + "duration": 10.031427145004272, + "points_saved": 91, + "points_rate": 9.071490894026848, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.08720206513124354, + "delay_max": 0.16573238372802734, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1514198491861532, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:08:09.032224", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 89 points saved, 22 lost, 0.5% CPU", + "details": { + "duration": 10.029490947723389, + "points_saved": 89, + "points_rate": 8.873830233647329, + "variables_saved": 198, + "udp_points_sent": 0, + "points_lost": 22, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.07571185231208802, + "delay_max": 0.19356346130371094, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.15007296572910267, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:08:19.061595", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 87 points saved, 21 lost, 0.2% CPU", + "details": { + "duration": 10.030376672744751, + "points_saved": 87, + "points_rate": 8.673652330166478, + "variables_saved": 194, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08972624830297522, + "delay_max": 0.19544410705566406, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.15862744430015827, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:08:29.092631", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.5% CPU", + "details": { + "duration": 10.030035257339478, + "points_saved": 90, + "points_rate": 8.97304921576846, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.06893503388693166, + "delay_max": 0.17856359481811523, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.150816281636556, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:08:39.123349", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 93 points saved, 19 lost, 0.3% CPU", + "details": { + "duration": 10.031097412109375, + "points_saved": 93, + "points_rate": 9.271169063489697, + "variables_saved": 206, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.10181243603046124, + "delay_max": 0.15008139610290527, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14147021437204013, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:08:49.151852", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.02812385559082, + "points_saved": 90, + "points_rate": 8.974759515941134, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.09294743090867996, + "delay_max": 0.18111753463745117, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14924672974480524, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:08:59.184187", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 89 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.033334970474243, + "points_saved": 89, + "points_rate": 8.870430446297883, + "variables_saved": 198, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08554083108901978, + "delay_max": 0.1802971363067627, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.15397722533579622, + "csv_write_time_avg": 5.759549944588307e-07 + } + }, + { + "timestamp": "2025-08-17T11:09:09.225555", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.038365125656128, + "points_saved": 91, + "points_rate": 9.065221165090072, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.0835423469543457, + "delay_max": 0.16296982765197754, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1465122149540828, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:09:19.260553", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.036999464035034, + "points_saved": 92, + "points_rate": 9.166085973169368, + "variables_saved": 204, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.11663169662157695, + "delay_max": 0.16301417350769043, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14431689873985623, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:09:29.291309", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 19 lost, 0.3% CPU", + "details": { + "duration": 10.030757188796997, + "points_saved": 90, + "points_rate": 8.972403409437312, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08932499452070757, + "delay_max": 0.19113421440124512, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14833859867519802, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:09:39.320301", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 20 lost, 0.3% CPU", + "details": { + "duration": 10.028974533081055, + "points_saved": 92, + "points_rate": 9.17342044259197, + "variables_saved": 205, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08902404457330704, + "delay_max": 0.16559553146362305, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14615749794503916, + "csv_write_time_avg": 6.841576617697011e-07 + } + }, + { + "timestamp": "2025-08-17T11:09:49.355823", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 89 points saved, 21 lost, 0.2% CPU", + "details": { + "duration": 10.036539316177368, + "points_saved": 89, + "points_rate": 8.867598401826175, + "variables_saved": 198, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.09860167964812248, + "delay_max": 0.186171293258667, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1519263219297602, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:09:59.386957", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.3% CPU", + "details": { + "duration": 10.029132843017578, + "points_saved": 90, + "points_rate": 8.973856604428095, + "variables_saved": 199, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.09389865782953077, + "delay_max": 0.15936017036437988, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14652617507510715, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:10:09.424447", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 21 lost, 0.3% CPU", + "details": { + "duration": 10.039491653442383, + "points_saved": 91, + "points_rate": 9.064203959848658, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08279239109584263, + "delay_max": 0.18129730224609375, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14526937558100775, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:10:19.453017", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 19 lost, 0.2% CPU", + "details": { + "duration": 10.02756929397583, + "points_saved": 92, + "points_rate": 9.174705983360294, + "variables_saved": 205, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08759669214487076, + "delay_max": 0.15869688987731934, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14719326599784519, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:10:29.482983", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 19 lost, 0.3% CPU", + "details": { + "duration": 10.0299654006958, + "points_saved": 90, + "points_rate": 8.973111711208546, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08447388240269252, + "delay_max": 0.16769051551818848, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14896800518035888, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:10:39.524411", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.042429685592651, + "points_saved": 92, + "points_rate": 9.16112961507588, + "variables_saved": 204, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.09167991145964592, + "delay_max": 0.16384100914001465, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14826154190561044, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:10:49.552993", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.5% CPU", + "details": { + "duration": 10.028581380844116, + "points_saved": 90, + "points_rate": 8.974350068286986, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.08784921964009602, + "delay_max": 0.16472554206848145, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14648223453097872, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:10:59.583443", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.5% CPU", + "details": { + "duration": 10.029448747634888, + "points_saved": 90, + "points_rate": 8.973573948540642, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.08269445316211597, + "delay_max": 0.18203115463256836, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.15337781376308865, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:11:08.931497", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'UR29' created and started", + "details": { + "session_id": "plot_1_1755421868931_4", + "variables": [ + "UR29_Brix", + "UR29_ma", + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 36, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-17T11:11:09.620173", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 93 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.036733627319336, + "points_saved": 93, + "points_rate": 9.26596275773027, + "variables_saved": 206, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08501427101366447, + "delay_max": 0.15815997123718262, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14286999035907047, + "csv_write_time_avg": 6.383465182396673e-07 + } + }, + { + "timestamp": "2025-08-17T11:11:19.664691", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 18 lost, 1.9% CPU", + "details": { + "duration": 10.044508218765259, + "points_saved": 91, + "points_rate": 9.059676991452186, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 1.9, + "cpu_max": 1.9, + "delay_average": 0.08955806891123454, + "delay_max": 0.15783023834228516, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1456156903570825, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:11:29.707521", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 21 lost, 0.5% CPU", + "details": { + "duration": 10.04283881187439, + "points_saved": 90, + "points_rate": 8.961609529527284, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.08480687399168273, + "delay_max": 0.17830896377563477, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.15397540993160672, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:11:39.737736", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 92 points saved, 19 lost, 0.0% CPU", + "details": { + "duration": 10.03022313117981, + "points_saved": 92, + "points_rate": 9.172278502360541, + "variables_saved": 204, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.09661877596819843, + "delay_max": 0.15446972846984863, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14283970387085623, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:11:49.770611", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 88 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.032865285873413, + "points_saved": 88, + "points_rate": 8.771173288243663, + "variables_saved": 196, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.07465731265933015, + "delay_max": 0.17945003509521484, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.15751658786426892, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:11:59.799875", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 89 points saved, 21 lost, 0.2% CPU", + "details": { + "duration": 10.028265714645386, + "points_saved": 89, + "points_rate": 8.874914420149782, + "variables_saved": 198, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.07321199311150445, + "delay_max": 0.18240070343017578, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.15706588445084818, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:12:09.831907", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.5% CPU", + "details": { + "duration": 10.033031225204468, + "points_saved": 91, + "points_rate": 9.070040544815056, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.10234480244772774, + "delay_max": 0.19243836402893066, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14545589226942796, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:12:19.865286", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.5% CPU", + "details": { + "duration": 10.033363580703735, + "points_saved": 91, + "points_rate": 9.069740099423099, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.07633165936720998, + "delay_max": 0.16312623023986816, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14640921288794215, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:12:29.895403", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.5% CPU", + "details": { + "duration": 10.031131505966187, + "points_saved": 91, + "points_rate": 9.071758250390417, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.09578567345937093, + "delay_max": 0.15950870513916016, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1455372820843707, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:12:39.923574", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.3% CPU", + "details": { + "duration": 10.028171300888062, + "points_saved": 90, + "points_rate": 8.974717054547114, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08427030699593681, + "delay_max": 0.1762397289276123, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14975714418623182, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:12:49.952697", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.3% CPU", + "details": { + "duration": 10.028129816055298, + "points_saved": 90, + "points_rate": 8.974754181573083, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.07010263065959133, + "delay_max": 0.16736483573913574, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.15220659308963352, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:12:59.982024", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 89 points saved, 21 lost, 0.3% CPU", + "details": { + "duration": 10.029326677322388, + "points_saved": 89, + "points_rate": 8.87397557816524, + "variables_saved": 198, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08613226073128837, + "delay_max": 0.19014930725097656, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.15104712529128858, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:13:10.015526", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 90 points saved, 20 lost, 0.3% CPU", + "details": { + "duration": 10.033503532409668, + "points_saved": 90, + "points_rate": 8.969947507297624, + "variables_saved": 200, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08876291188326749, + "delay_max": 0.16332530975341797, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14768801795111763, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:13:20.046275", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.3% CPU", + "details": { + "duration": 10.029744148254395, + "points_saved": 91, + "points_rate": 9.07301309533782, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.09731121063232422, + "delay_max": 0.17705535888671875, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.14898950975019853, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:13:30.123554", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 91 points saved, 20 lost, 0.3% CPU", + "details": { + "duration": 10.079275846481323, + "points_saved": 91, + "points_rate": 9.028426385588814, + "variables_saved": 202, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08084191878636678, + "delay_max": 0.1623833179473877, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1500758600758982, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:13:36.581075", + "level": "info", + "event_type": "udp_streaming_stopped", + "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", + "details": {} + }, + { + "timestamp": "2025-08-17T11:13:40.154940", + "level": "info", + "event_type": "csv_recording_stopped", + "message": "🔥 CRITICAL: CSV recording stopped (dataset threads continue for UDP streaming)", + "details": { + "recording_protection": false, + "performance_monitoring": false + } + }, + { + "timestamp": "2025-08-17T11:13:40.184136", + "level": "info", + "event_type": "udp_streaming_stopped", + "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", + "details": {} + }, + { + "timestamp": "2025-08-17T11:13:40.707899", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: DAR", + "details": { + "dataset_id": "DAR" + } + }, + { + "timestamp": "2025-08-17T11:13:40.741892", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: test", + "details": { + "dataset_id": "Test" + } + }, + { + "timestamp": "2025-08-17T11:13:40.819876", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: Fast", + "details": { + "dataset_id": "Fast" + } + }, + { + "timestamp": "2025-08-17T11:13:40.847878", + "level": "info", + "event_type": "plc_disconnection", + "message": "Disconnected from PLC 10.1.33.11 (application shutdown (will auto-reconnect on restart))", + "details": {} + }, + { + "timestamp": "2025-08-17T11:16:17.534656", + "level": "info", + "event_type": "application_started", + "message": "Application initialization completed successfully", + "details": {} + }, + { + "timestamp": "2025-08-17T11:16:17.647718", + "level": "info", + "event_type": "dataset_activated", + "message": "Dataset activated: DAR", + "details": { + "dataset_id": "DAR", + "variables_count": 3, + "streaming_count": 3, + "prefix": "gateway_phoenix" + } + }, + { + "timestamp": "2025-08-17T11:16:17.675237", + "level": "info", + "event_type": "dataset_activated", + "message": "Dataset activated: Fast", + "details": { + "dataset_id": "Fast", + "variables_count": 2, + "streaming_count": 2, + "prefix": "fast" + } + }, + { + "timestamp": "2025-08-17T11:16:17.706836", + "level": "info", + "event_type": "csv_recording_started", + "message": "🔥 CRITICAL PRIORITY: CSV recording started with MAXIMUM PRIORITY, async buffering, and performance monitoring: 2 datasets activated", + "details": { + "activated_datasets": 2, + "total_datasets": 3, + "priority": "CRITICAL", + "recording_protection": true, + "performance_monitoring": true, + "async_csv_buffering": true, + "csv_flush_interval": 5.0 + } + }, + { + "timestamp": "2025-08-17T11:16:27.647565", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 11.125340938568115, + "points_saved": 100, + "points_rate": 8.988488582253774, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.0285071239751928, + "delay_max": 0.08919644355773926, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11766031265258789, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:16:35.446393", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'Clock' created and started", + "details": { + "session_id": "Clock_1755422195445_2", + "variables": [ + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 10, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-17T11:16:37.685232", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 101 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.03766679763794, + "points_saved": 101, + "points_rate": 10.062099294207224, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.028978152708573776, + "delay_max": 0.08021044731140137, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11777842871033319, + "csv_write_time_avg": 5.452939779451578e-07 + } + }, + { + "timestamp": "2025-08-17T11:16:45.795565", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'UR29' created and started", + "details": { + "session_id": "plot_1_1755422205794_3", + "variables": [ + "UR29_Brix", + "UR29_ma", + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 36, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-17T11:16:47.732662", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 98 points saved, 0 lost, 2.0% CPU", + "details": { + "duration": 10.045356273651123, + "points_saved": 98, + "points_rate": 9.755751546319278, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 2.0, + "cpu_max": 2.0, + "delay_average": 0.03045999187312714, + "delay_max": 0.08840322494506836, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12240504731937331, + "csv_write_time_avg": 2.6566641671316963e-06 + } + }, + { + "timestamp": "2025-08-17T11:16:57.778869", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.8% CPU", + "details": { + "duration": 10.047280311584473, + "points_saved": 99, + "points_rate": 9.85341275746566, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.8, + "cpu_max": 0.8, + "delay_average": 0.029681786246921704, + "delay_max": 0.07347559928894043, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11933398246765137, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:17:07.816896", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 101 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.0375075340271, + "points_saved": 101, + "points_rate": 10.062258948011795, + "variables_saved": 223, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.02878125508626302, + "delay_max": 0.08288002014160156, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12475488681604366, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:17:08.600447", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'UR29' created and started", + "details": { + "session_id": "plot_1_1755422228599_4", + "variables": [ + "UR29_Brix", + "UR29_ma", + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 10, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-17T11:17:10.820849", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'UR29' created and started", + "details": { + "session_id": "plot_1_1755422230819_5", + "variables": [ + "UR29_Brix", + "UR29_ma", + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 10, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-17T11:17:17.857478", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.041118621826172, + "points_saved": 99, + "points_rate": 9.85945926231822, + "variables_saved": 217, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.027991748191940953, + "delay_max": 0.0844569206237793, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1220620521391281, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:17:20.784427", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'Clock' created and started", + "details": { + "session_id": "Clock_1755422240784_6", + "variables": [ + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 10, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-17T11:17:27.894833", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 1 lost, 0.5% CPU", + "details": { + "duration": 10.037330389022827, + "points_saved": 100, + "points_rate": 9.962808448485811, + "variables_saved": 221, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.028895500633451674, + "delay_max": 0.10034012794494629, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12189226865768432, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:17:37.957743", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 1 lost, 0.9% CPU", + "details": { + "duration": 10.062918663024902, + "points_saved": 100, + "points_rate": 9.937474737566856, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.9, + "cpu_max": 0.9, + "delay_average": 0.03035989804054374, + "delay_max": 0.10313868522644043, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12288411140441895, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:17:47.987222", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.030478715896606, + "points_saved": 99, + "points_rate": 9.869917758072882, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.028159249318789128, + "delay_max": 0.08213591575622559, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12017960259408662, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:17:58.016071", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.6% CPU", + "details": { + "duration": 10.028848648071289, + "points_saved": 100, + "points_rate": 9.971234336977618, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.6, + "cpu_max": 0.6, + "delay_average": 0.028646138736179896, + "delay_max": 0.07357501983642578, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12332464456558227, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:18:08.044775", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 1 lost, 0.3% CPU", + "details": { + "duration": 10.028704404830933, + "points_saved": 99, + "points_rate": 9.871663976087545, + "variables_saved": 217, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.029739410536629814, + "delay_max": 0.1008756160736084, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12244192759195964, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:18:18.073411", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 101 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.027639150619507, + "points_saved": 101, + "points_rate": 10.072161401396283, + "variables_saved": 223, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.02828373568398612, + "delay_max": 0.07487320899963379, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12564385055315377, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:18:28.102792", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 101 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.030377864837646, + "points_saved": 101, + "points_rate": 10.069411278518649, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.02552128831545512, + "delay_max": 0.0743417739868164, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12020907071557375, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:18:38.133068", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 101 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.02928352355957, + "points_saved": 101, + "points_rate": 10.070509998320729, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.02799898990686389, + "delay_max": 0.07601380348205566, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11416832291253723, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:18:48.163316", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.6% CPU", + "details": { + "duration": 10.029767990112305, + "points_saved": 100, + "points_rate": 9.970320360210076, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.6, + "cpu_max": 0.6, + "delay_average": 0.028165666150375152, + "delay_max": 0.07359194755554199, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1203969645500183, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:18:58.240114", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 101 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.077752113342285, + "points_saved": 101, + "points_rate": 10.02207623923222, + "variables_saved": 223, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.029886975655188927, + "delay_max": 0.0858011245727539, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1197728426149576, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:19:08.271465", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 98 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.029869556427002, + "points_saved": 98, + "points_rate": 9.770815008975163, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.03022497974029959, + "delay_max": 0.0864264965057373, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12656535421098983, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:19:18.309076", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 1 lost, 0.0% CPU", + "details": { + "duration": 10.03762149810791, + "points_saved": 99, + "points_rate": 9.862894314022649, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.031144547462463378, + "delay_max": 0.09368538856506348, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12201616017505376, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:19:28.348333", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.041245937347412, + "points_saved": 99, + "points_rate": 9.85933425171665, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.029665715164608426, + "delay_max": 0.08939099311828613, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1230760102320199, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:19:38.384972", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.035630702972412, + "points_saved": 100, + "points_rate": 9.964495800984528, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.026263397033900432, + "delay_max": 0.07255125045776367, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1191253900527954, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:19:48.416944", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.03298020362854, + "points_saved": 100, + "points_rate": 9.967128208210147, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.028693999329658403, + "delay_max": 0.09971261024475098, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12306357860565185, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:19:58.449671", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.032726764678955, + "points_saved": 99, + "points_rate": 9.867706190159359, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.02951002452108595, + "delay_max": 0.07360053062438965, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11976747079329057, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:20:08.483347", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.033675909042358, + "points_saved": 99, + "points_rate": 9.866772745846923, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.030172284911660588, + "delay_max": 0.08417582511901855, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12334369649790754, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:20:18.516533", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.031193494796753, + "points_saved": 100, + "points_rate": 9.968903506035515, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.02827845860833991, + "delay_max": 0.08682942390441895, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12527093410491943, + "csv_write_time_avg": 8.344650268554688e-07 + } + }, + { + "timestamp": "2025-08-17T11:20:27.039839", + "level": "warning", + "event_type": "csv_headers_mismatch_after_config_reload", + "message": "CSV header mismatches detected and resolved for 1 datasets after configuration reload", + "details": { + "mismatched_datasets": 1, + "total_validated": 2, + "details": [ + { + "dataset_id": "Fast", + "dataset_name": "Fast", + "original_file": "records\\17-08-2025\\fast_11.csv", + "renamed_file": "records\\17-08-2025\\fast_to_11_20_27.csv", + "expected_headers": [ + "timestamp", + "AUX Blink_2.0S" + ], + "existing_headers": [ + "timestamp", + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ] + } + ] + } + }, + { + "timestamp": "2025-08-17T11:20:27.076736", + "level": "info", + "event_type": "config_reload", + "message": "Dataset configuration reloaded from files with CSV header validation", + "details": { + "datasets_count": 3, + "active_datasets_count": 3, + "csv_recording_active": true + } + }, + { + "timestamp": "2025-08-17T11:20:28.549997", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 102 points saved, 0 lost, 0.6% CPU", + "details": { + "duration": 10.03345775604248, + "points_saved": 102, + "points_rate": 10.165986889073432, + "variables_saved": 210, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.6, + "cpu_max": 0.6, + "delay_average": 0.02950890185469288, + "delay_max": 0.08578014373779297, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1067582742840636, + "csv_write_time_avg": 3.9268942440257356e-05 + } + }, + { + "timestamp": "2025-08-17T11:20:38.589559", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 120 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.039879083633423, + "points_saved": 120, + "points_rate": 11.952335182563983, + "variables_saved": 160, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.005619049072265625, + "delay_max": 0.0092620849609375, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05527656078338623, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:20:48.621925", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.034048080444336, + "points_saved": 118, + "points_rate": 11.759959594968835, + "variables_saved": 158, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.012202978134155273, + "delay_max": 0.012202978134155273, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05446776293091855, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:20:58.652024", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.028085231781006, + "points_saved": 119, + "points_rate": 11.866672176146372, + "variables_saved": 159, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.012558539708455404, + "delay_max": 0.02628803253173828, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05575580156149985, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:21:08.698031", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 120 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.047019243240356, + "points_saved": 120, + "points_rate": 11.943840963650597, + "variables_saved": 160, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.005822896957397461, + "delay_max": 0.005822896957397461, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05442385872205099, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:21:18.727853", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.030823707580566, + "points_saved": 118, + "points_rate": 11.76373979245834, + "variables_saved": 158, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.02059340476989746, + "delay_max": 0.02059340476989746, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05551916259830281, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:21:28.761610", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 1 lost, 0.6% CPU", + "details": { + "duration": 10.03175950050354, + "points_saved": 119, + "points_rate": 11.862325845633245, + "variables_saved": 159, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.6, + "cpu_max": 0.6, + "delay_average": 0.03754830360412598, + "delay_max": 0.03754830360412598, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.058049007624137304, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:21:38.795092", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.6% CPU", + "details": { + "duration": 10.03447151184082, + "points_saved": 119, + "points_rate": 11.85911982106664, + "variables_saved": 159, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.6, + "cpu_max": 0.6, + "delay_average": 0.012489676475524902, + "delay_max": 0.019500017166137695, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05550263308677353, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:21:42.263357", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'Clock' created and started", + "details": { + "session_id": "Clock_1755422502263_7", + "variables": [ + "AUX Blink_2.0S" + ], + "time_window": 10, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-17T11:21:48.828446", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.034362316131592, + "points_saved": 119, + "points_rate": 11.85924887411046, + "variables_saved": 159, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.011637330055236816, + "delay_max": 0.021424055099487305, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05204882140920943, + "csv_write_time_avg": 9.556778338776917e-07 + } + }, + { + "timestamp": "2025-08-17T11:21:58.858145", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.027704000473022, + "points_saved": 119, + "points_rate": 11.867123320990187, + "variables_saved": 159, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.0013303756713867188, + "delay_max": 0.0013303756713867188, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05539435098151199, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:22:08.891533", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.035382509231567, + "points_saved": 119, + "points_rate": 11.85804326746207, + "variables_saved": 159, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.0023429393768310547, + "delay_max": 0.0023429393768310547, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.056207620797037075, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:22:18.924453", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.030908346176147, + "points_saved": 119, + "points_rate": 11.863332401533071, + "variables_saved": 159, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.020709753036499023, + "delay_max": 0.020709753036499023, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05560270678095457, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:22:28.955986", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.031537771224976, + "points_saved": 119, + "points_rate": 11.862588041221981, + "variables_saved": 159, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.016910552978515625, + "delay_max": 0.016910552978515625, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05319571895759646, + "csv_write_time_avg": 4.648160533744748e-07 + } + }, + { + "timestamp": "2025-08-17T11:22:39.001162", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.0461745262146, + "points_saved": 119, + "points_rate": 11.845304865994521, + "variables_saved": 159, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.003755807876586914, + "delay_max": 0.003755807876586914, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.05461016823263729, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:22:39.233497", + "level": "warning", + "event_type": "csv_headers_mismatch_after_config_reload", + "message": "CSV header mismatches detected and resolved for 1 datasets after configuration reload", + "details": { + "mismatched_datasets": 1, + "total_validated": 2, + "details": [ + { + "dataset_id": "Fast", + "dataset_name": "Fast", + "original_file": "records\\17-08-2025\\fast_11.csv", + "renamed_file": "records\\17-08-2025\\fast_to_11_22_39.csv", + "expected_headers": [ + "timestamp", + "AUX Blink_2.0S", + "M50.1" + ], + "existing_headers": [ + "timestamp", + "AUX Blink_2.0S" + ] + } + ] + } + }, + { + "timestamp": "2025-08-17T11:22:39.266578", + "level": "info", + "event_type": "config_reload", + "message": "Dataset configuration reloaded from files with CSV header validation", + "details": { + "datasets_count": 3, + "active_datasets_count": 3, + "csv_recording_active": true + } + }, + { + "timestamp": "2025-08-17T11:22:49.035501", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.034347772598267, + "points_saved": 99, + "points_rate": 9.866112102507406, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.029293789379838585, + "delay_max": 0.09181427955627441, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11860351129011674, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:22:59.065031", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 1.1% CPU", + "details": { + "duration": 10.029528856277466, + "points_saved": 100, + "points_rate": 9.970558082338052, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 1.1, + "cpu_max": 1.1, + "delay_average": 0.030282942216787765, + "delay_max": 0.08505797386169434, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12024815320968628, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:23:09.097664", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 98 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.033633708953857, + "points_saved": 98, + "points_rate": 9.767149453796218, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.029009678592420603, + "delay_max": 0.0843198299407959, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1212129884836625, + "csv_write_time_avg": 1.0826149765326051e-06 + } + }, + { + "timestamp": "2025-08-17T11:23:11.248203", + "level": "info", + "event_type": "config_reload", + "message": "Dataset configuration reloaded from files with CSV header validation", + "details": { + "datasets_count": 3, + "active_datasets_count": 3, + "csv_recording_active": true + } + }, + { + "timestamp": "2025-08-17T11:23:19.130054", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.031389713287354, + "points_saved": 100, + "points_rate": 9.968708509803207, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.030623080073923305, + "delay_max": 0.07919883728027344, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12311394453048706, + "csv_write_time_avg": 9.989738464355468e-06 + } + }, + { + "timestamp": "2025-08-17T11:23:24.805501", + "level": "info", + "event_type": "csv_recording_stopped", + "message": "🔥 CRITICAL: CSV recording stopped (dataset threads continue for UDP streaming)", + "details": { + "recording_protection": false, + "performance_monitoring": false + } + }, + { + "timestamp": "2025-08-17T11:23:24.847726", + "level": "info", + "event_type": "udp_streaming_stopped", + "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", + "details": {} + }, + { + "timestamp": "2025-08-17T11:23:25.168132", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: DAR", + "details": { + "dataset_id": "DAR" + } + }, + { + "timestamp": "2025-08-17T11:23:25.315153", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: Fast", + "details": { + "dataset_id": "Fast" + } + }, + { + "timestamp": "2025-08-17T11:23:25.352139", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: test", + "details": { + "dataset_id": "Test" + } + }, + { + "timestamp": "2025-08-17T11:23:25.390778", + "level": "info", + "event_type": "plc_disconnection", + "message": "Disconnected from PLC 10.1.33.11 (manually disconnected)", + "details": {} + }, + { + "timestamp": "2025-08-17T11:23:34.592680", + "level": "info", + "event_type": "dataset_activated", + "message": "Dataset activated: DAR", + "details": { + "dataset_id": "DAR", + "variables_count": 3, + "streaming_count": 3, + "prefix": "gateway_phoenix" + } + }, + { + "timestamp": "2025-08-17T11:23:34.625411", + "level": "info", + "event_type": "dataset_activated", + "message": "Dataset activated: Fast", + "details": { + "dataset_id": "Fast", + "variables_count": 2, + "streaming_count": 1, + "prefix": "fast" + } + }, + { + "timestamp": "2025-08-17T11:23:34.656654", + "level": "info", + "event_type": "csv_recording_started", + "message": "🔥 CRITICAL PRIORITY: CSV recording started with MAXIMUM PRIORITY, async buffering, and performance monitoring: 2 datasets activated", + "details": { + "activated_datasets": 2, + "total_datasets": 3, + "priority": "CRITICAL", + "recording_protection": true, + "performance_monitoring": true, + "async_csv_buffering": true, + "csv_flush_interval": 5.0 + } + }, + { + "timestamp": "2025-08-17T11:23:34.682663", + "level": "info", + "event_type": "plc_connection", + "message": "Successfully connected to PLC 10.1.33.11 and auto-started CSV recording for 2 datasets", + "details": { + "ip": "10.1.33.11", + "rack": 0, + "slot": 2, + "symbols_path": "C:/Users/migue/Downloads/symSAE452.asc", + "auto_started_recording": true, + "recording_datasets": 2, + "dataset_names": [ + "DAR", + "Fast" + ] + } + }, + { + "timestamp": "2025-08-17T11:23:44.592760", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 157 points saved, 114 lost, 0.7% CPU", + "details": { + "duration": 25.462308883666992, + "points_saved": 157, + "points_rate": 6.165976570204478, + "variables_saved": 346, + "udp_points_sent": 0, + "points_lost": 114, + "cpu_average": 0.7000000000000001, + "cpu_max": 1.1, + "delay_average": 0.029994668631718076, + "delay_max": 0.11475014686584473, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12364068456516145, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:23:54.627258", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.03490400314331, + "points_saved": 99, + "points_rate": 9.865565228027041, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.029932734084455934, + "delay_max": 0.07447314262390137, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12329700258043078, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:24:04.665551", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 1 lost, 0.2% CPU", + "details": { + "duration": 10.038297414779663, + "points_saved": 100, + "points_rate": 9.961848694856085, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.029076722690037318, + "delay_max": 0.09885382652282715, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11747153997421264, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:24:14.698006", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 98 points saved, 1 lost, 0.3% CPU", + "details": { + "duration": 10.032427787780762, + "points_saved": 98, + "points_rate": 9.768323487896067, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.03001442551612854, + "delay_max": 0.10257244110107422, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1261119915514576, + "csv_write_time_avg": 5.595538080955039e-07 + } + }, + { + "timestamp": "2025-08-17T11:24:24.735877", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.037877082824707, + "points_saved": 99, + "points_rate": 9.862643184722174, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.028387833948004735, + "delay_max": 0.08443903923034668, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12279170209711249, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:24:34.766942", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.032073497772217, + "points_saved": 99, + "points_rate": 9.86834875382288, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.029595600415582526, + "delay_max": 0.08245253562927246, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12487361166212294, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:24:44.796744", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.029294967651367, + "points_saved": 99, + "points_rate": 9.871082695176085, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.028858606879775588, + "delay_max": 0.08681058883666992, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1193077371578024, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:24:54.824807", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.02856993675232, + "points_saved": 99, + "points_rate": 9.871796340292606, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.028213480828513562, + "delay_max": 0.08674192428588867, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1213171241259334, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:25:04.869597", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.043781995773315, + "points_saved": 100, + "points_rate": 9.956408854959477, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.029221108261968047, + "delay_max": 0.08707499504089355, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11907461643218994, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:25:14.902302", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.031713724136353, + "points_saved": 100, + "points_rate": 9.968386533937817, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.028475108353987984, + "delay_max": 0.0759131908416748, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11930790424346924, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:25:24.935905", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.03560209274292, + "points_saved": 100, + "points_rate": 9.964524208498995, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.02743879524437157, + "delay_max": 0.08699440956115723, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12158066272735596, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:25:34.972150", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 1 lost, 0.3% CPU", + "details": { + "duration": 10.035724878311157, + "points_saved": 100, + "points_rate": 9.964402294060129, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.027154903411865234, + "delay_max": 0.09232354164123535, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12096085548400878, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:25:45.000341", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 101 points saved, 1 lost, 0.2% CPU", + "details": { + "duration": 10.02871060371399, + "points_saved": 101, + "points_rate": 10.071085306080734, + "variables_saved": 223, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.0271653499868181, + "delay_max": 0.11526656150817871, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11674567732480493, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:25:55.031221", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 98 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.029881000518799, + "points_saved": 98, + "points_rate": 9.7708038604776, + "variables_saved": 215, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.030799883253434125, + "delay_max": 0.08867907524108887, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12567632295647446, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:26:05.063893", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.033671855926514, + "points_saved": 99, + "points_rate": 9.866776731543638, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.03131206376211984, + "delay_max": 0.08811116218566895, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12660723984843553, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:26:15.094340", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 98 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.029447317123413, + "points_saved": 98, + "points_rate": 9.771226359869626, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.030355298000833263, + "delay_max": 0.08669233322143555, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12325919161037523, + "csv_write_time_avg": 2.459603912976323e-06 + } + }, + { + "timestamp": "2025-08-17T11:26:25.128822", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 1 lost, 0.2% CPU", + "details": { + "duration": 10.033480882644653, + "points_saved": 99, + "points_rate": 9.866964531845033, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.030653897453756893, + "delay_max": 0.09934854507446289, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11973978533889308, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:26:35.161446", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.033624172210693, + "points_saved": 100, + "points_rate": 9.966488507409098, + "variables_saved": 221, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.029487152622170644, + "delay_max": 0.08792686462402344, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12371577262878418, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:26:45.197786", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 1 lost, 0.0% CPU", + "details": { + "duration": 10.036340951919556, + "points_saved": 100, + "points_rate": 9.963790636354771, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 1, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.028552351679120746, + "delay_max": 0.08409261703491211, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1190605640411377, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:26:55.223319", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 99 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.026532173156738, + "points_saved": 99, + "points_rate": 9.873802655822027, + "variables_saved": 218, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.02944263606004312, + "delay_max": 0.07704877853393555, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12242317922187573, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:27:05.253907", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 100 points saved, 2 lost, 0.5% CPU", + "details": { + "duration": 10.02758502960205, + "points_saved": 100, + "points_rate": 9.97249085445736, + "variables_saved": 220, + "udp_points_sent": 0, + "points_lost": 2, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.030452945015647194, + "delay_max": 0.10282206535339355, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.11961898565292359, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:27:15.291684", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 98 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.040780544281006, + "points_saved": 98, + "points_rate": 9.760197383839698, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.030433462725745306, + "delay_max": 0.08615922927856445, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.12480260644640241, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:27:23.841519", + "level": "warning", + "event_type": "csv_headers_mismatch_after_config_reload", + "message": "CSV header mismatches detected and resolved for 1 datasets after configuration reload", + "details": { + "mismatched_datasets": 1, + "total_validated": 2, + "details": [ + { + "dataset_id": "Fast", + "dataset_name": "Fast", + "original_file": "records\\17-08-2025\\fast_11.csv", + "renamed_file": "records\\17-08-2025\\fast_to_11_27_23.csv", + "expected_headers": [ + "timestamp", + "AUX Blink_2.0S", + "M50.1", + "M50.2" + ], + "existing_headers": [ + "timestamp", + "AUX Blink_2.0S", + "M50.1" + ] + } + ] + } + }, + { + "timestamp": "2025-08-17T11:27:23.873826", + "level": "info", + "event_type": "config_reload", + "message": "Dataset configuration reloaded from files with CSV header validation", + "details": { + "datasets_count": 3, + "active_datasets_count": 3, + "csv_recording_active": true + } + }, + { + "timestamp": "2025-08-17T11:27:25.330702", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 95 points saved, 2 lost, 0.2% CPU", + "details": { + "duration": 10.037017345428467, + "points_saved": 95, + "points_rate": 9.46496321870654, + "variables_saved": 217, + "udp_points_sent": 0, + "points_lost": 2, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.03672137043692849, + "delay_max": 0.14357948303222656, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1277251168301231, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:27:35.366690", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 19 lost, 0.6% CPU", + "details": { + "duration": 10.035985708236694, + "points_saved": 74, + "points_rate": 7.373466060166567, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.6, + "cpu_max": 0.6, + "delay_average": 0.0868755093327275, + "delay_max": 0.1427628993988037, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17187869870984876, + "csv_write_time_avg": 1.9427892324086783e-06 + } + }, + { + "timestamp": "2025-08-17T11:27:45.442579", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 18 lost, 0.0% CPU", + "details": { + "duration": 10.076902389526367, + "points_saved": 73, + "points_rate": 7.244289681308616, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.09108810604743238, + "delay_max": 0.15178418159484863, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17452638116601396, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:27:55.474771", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 19 lost, 0.0% CPU", + "details": { + "duration": 10.030189275741577, + "points_saved": 73, + "points_rate": 7.278028160101972, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.08558717763648843, + "delay_max": 0.13405489921569824, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17100857055350527, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:28:05.522809", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 21 lost, 0.5% CPU", + "details": { + "duration": 10.051030158996582, + "points_saved": 73, + "points_rate": 7.262937116416708, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.0920539712006191, + "delay_max": 0.13613533973693848, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17838945454114105, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:28:15.558647", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 16 lost, 0.3% CPU", + "details": { + "duration": 10.03385329246521, + "points_saved": 73, + "points_rate": 7.275370475549845, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 16, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08785019730621914, + "delay_max": 0.14853429794311523, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17536730309055276, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:28:25.598708", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 19 lost, 0.2% CPU", + "details": { + "duration": 10.039610862731934, + "points_saved": 73, + "points_rate": 7.271198156791464, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08703027131422511, + "delay_max": 0.16249799728393555, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1761323817788738, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:28:35.647735", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 16 lost, 0.3% CPU", + "details": { + "duration": 10.04845929145813, + "points_saved": 73, + "points_rate": 7.264795316636745, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 16, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08787243321256817, + "delay_max": 0.14905261993408203, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17346713314317677, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:28:45.682107", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 17 lost, 0.3% CPU", + "details": { + "duration": 10.036373853683472, + "points_saved": 74, + "points_rate": 7.373180899677337, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 17, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.0858627336996573, + "delay_max": 0.14731550216674805, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1697084935935768, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:28:55.710264", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 18 lost, 0.2% CPU", + "details": { + "duration": 10.029157638549805, + "points_saved": 74, + "points_rate": 7.378486076992229, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08789749498720523, + "delay_max": 0.14426565170288086, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17359346312445564, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:29:05.741640", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 72 points saved, 19 lost, 0.2% CPU", + "details": { + "duration": 10.029368162155151, + "points_saved": 72, + "points_rate": 7.178916840612654, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.0894937331859882, + "delay_max": 0.19321560859680176, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17156642344262865, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:29:15.776235", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 19 lost, 0.6% CPU", + "details": { + "duration": 10.035601377487183, + "points_saved": 73, + "points_rate": 7.27410319064292, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.6, + "cpu_max": 0.6, + "delay_average": 0.08805638889096817, + "delay_max": 0.14873099327087402, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17241047506463036, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:29:25.809330", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.033093452453613, + "points_saved": 73, + "points_rate": 7.275921463897827, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08887268462271061, + "delay_max": 0.1563270092010498, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1795710178270732, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:29:35.842610", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 17 lost, 0.2% CPU", + "details": { + "duration": 10.034282445907593, + "points_saved": 73, + "points_rate": 7.275059317248191, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 17, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.0887597326962453, + "delay_max": 0.1364898681640625, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17733935787253183, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:29:45.872360", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 19 lost, 0.3% CPU", + "details": { + "duration": 10.02876091003418, + "points_saved": 74, + "points_rate": 7.378777963084155, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08533062758269133, + "delay_max": 0.15077543258666992, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17034135638056574, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:29:55.904699", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 75 points saved, 19 lost, 0.2% CPU", + "details": { + "duration": 10.032289981842041, + "points_saved": 75, + "points_rate": 7.475860460148816, + "variables_saved": 225, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08422188758850098, + "delay_max": 0.14174795150756836, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1722361437479655, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:30:05.931309", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 72 points saved, 16 lost, 0.2% CPU", + "details": { + "duration": 10.027648210525513, + "points_saved": 72, + "points_rate": 7.180148175164867, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 16, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.09002059698104858, + "delay_max": 0.1473066806793213, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17757202850447762, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:30:15.962807", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 21 lost, 0.3% CPU", + "details": { + "duration": 10.029497146606445, + "points_saved": 73, + "points_rate": 7.278530412135377, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.0899201788992252, + "delay_max": 0.14862632751464844, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.172960637366935, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:30:25.993961", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 18 lost, 0.0% CPU", + "details": { + "duration": 10.0331552028656, + "points_saved": 73, + "points_rate": 7.275876683254162, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.08964336593196078, + "delay_max": 0.13777852058410645, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17505453057485085, + "csv_write_time_avg": 9.046841974127783e-07 + } + }, + { + "timestamp": "2025-08-17T11:30:34.239621", + "level": "info", + "event_type": "udp_streaming_stopped", + "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", + "details": {} + }, + { + "timestamp": "2025-08-17T11:30:36.024789", + "level": "info", + "event_type": "csv_recording_stopped", + "message": "🔥 CRITICAL: CSV recording stopped (dataset threads continue for UDP streaming)", + "details": { + "recording_protection": false, + "performance_monitoring": false + } + }, + { + "timestamp": "2025-08-17T11:30:36.053821", + "level": "info", + "event_type": "udp_streaming_stopped", + "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", + "details": {} + }, + { + "timestamp": "2025-08-17T11:30:36.128298", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: DAR", + "details": { + "dataset_id": "DAR" + } + }, + { + "timestamp": "2025-08-17T11:30:36.315431", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: Fast", + "details": { + "dataset_id": "Fast" + } + }, + { + "timestamp": "2025-08-17T11:30:36.338695", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: test", + "details": { + "dataset_id": "Test" + } + }, + { + "timestamp": "2025-08-17T11:30:36.363731", + "level": "info", + "event_type": "plc_disconnection", + "message": "Disconnected from PLC 10.1.33.11 (application shutdown (will auto-reconnect on restart))", + "details": {} + }, + { + "timestamp": "2025-08-17T11:30:39.085327", + "level": "info", + "event_type": "application_started", + "message": "Application initialization completed successfully", + "details": {} + }, + { + "timestamp": "2025-08-17T11:30:39.216520", + "level": "info", + "event_type": "dataset_activated", + "message": "Dataset activated: DAR", + "details": { + "dataset_id": "DAR", + "variables_count": 3, + "streaming_count": 3, + "prefix": "gateway_phoenix" + } + }, + { + "timestamp": "2025-08-17T11:30:39.247066", + "level": "info", + "event_type": "dataset_activated", + "message": "Dataset activated: Fast", + "details": { + "dataset_id": "Fast", + "variables_count": 3, + "streaming_count": 1, + "prefix": "fast" + } + }, + { + "timestamp": "2025-08-17T11:30:39.274066", + "level": "info", + "event_type": "csv_recording_started", + "message": "🔥 CRITICAL PRIORITY: CSV recording started with MAXIMUM PRIORITY, async buffering, and performance monitoring: 2 datasets activated", + "details": { + "activated_datasets": 2, + "total_datasets": 3, + "priority": "CRITICAL", + "recording_protection": true, + "performance_monitoring": true, + "async_csv_buffering": true, + "csv_flush_interval": 5.0 + } + }, + { + "timestamp": "2025-08-17T11:30:49.215765", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 72 points saved, 18 lost, 0.0% CPU", + "details": { + "duration": 11.13255524635315, + "points_saved": 72, + "points_rate": 6.467517870489443, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.09038185156308688, + "delay_max": 0.150618314743042, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17990654706954956, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:30:59.251272", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 18 lost, 0.8% CPU", + "details": { + "duration": 10.033518552780151, + "points_saved": 73, + "points_rate": 7.275613197503152, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.8, + "cpu_max": 0.8, + "delay_average": 0.08671255831448536, + "delay_max": 0.15129423141479492, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17348134680970073, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:31:09.287406", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 72 points saved, 20 lost, 0.8% CPU", + "details": { + "duration": 10.036091089248657, + "points_saved": 72, + "points_rate": 7.174107863282677, + "variables_saved": 216, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.8, + "cpu_max": 0.8, + "delay_average": 0.09231368853495671, + "delay_max": 0.1462709903717041, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1762297252813975, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:31:11.940480", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'Clock' created and started", + "details": { + "session_id": "Clock_1755423071940_2", + "variables": [ + "AUX Blink_2.0S", + "M50.1", + "M50.2" + ], + "time_window": 10, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-17T11:31:19.324346", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 18 lost, 0.5% CPU", + "details": { + "duration": 10.036980628967285, + "points_saved": 73, + "points_rate": 7.273103605412761, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.08962615480962789, + "delay_max": 0.14531588554382324, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17519304197128505, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:31:29.365012", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 17 lost, 0.2% CPU", + "details": { + "duration": 10.04165768623352, + "points_saved": 74, + "points_rate": 7.369301196300421, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 17, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08473572024592647, + "delay_max": 0.15143823623657227, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17028649433239088, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:31:39.406647", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 76 points saved, 16 lost, 0.3% CPU", + "details": { + "duration": 10.041635990142822, + "points_saved": 76, + "points_rate": 7.5684878514421285, + "variables_saved": 228, + "udp_points_sent": 0, + "points_lost": 16, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08593131046669156, + "delay_max": 0.15406107902526855, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1685031307371039, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:31:49.441690", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 16 lost, 0.0% CPU", + "details": { + "duration": 10.035017490386963, + "points_saved": 74, + "points_rate": 7.374177481094402, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 16, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.08773941463894314, + "delay_max": 0.13690662384033203, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17424046671068347, + "csv_write_time_avg": 8.151337907120988e-07 + } + }, + { + "timestamp": "2025-08-17T11:31:59.473495", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 20 lost, 0.8% CPU", + "details": { + "duration": 10.031830310821533, + "points_saved": 73, + "points_rate": 7.276837599740245, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.8, + "cpu_max": 0.8, + "delay_average": 0.08754192208344082, + "delay_max": 0.14723849296569824, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17527523432692435, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:32:09.528241", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 18 lost, 0.5% CPU", + "details": { + "duration": 10.054752588272095, + "points_saved": 74, + "points_rate": 7.359703717256445, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.08689311315428536, + "delay_max": 0.16461968421936035, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17262821906321757, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:32:19.569492", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 19 lost, 0.5% CPU", + "details": { + "duration": 10.042243003845215, + "points_saved": 73, + "points_rate": 7.269292325633627, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.09046689969188762, + "delay_max": 0.14650511741638184, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17666588744072065, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:32:29.601152", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 17 lost, 0.3% CPU", + "details": { + "duration": 10.03065276145935, + "points_saved": 74, + "points_rate": 7.377386273835463, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 17, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08685418794739921, + "delay_max": 0.13564562797546387, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17283104883657918, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:32:39.648803", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 18 lost, 0.5% CPU", + "details": { + "duration": 10.047667264938354, + "points_saved": 74, + "points_rate": 7.364893566711279, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.08527163664499919, + "delay_max": 0.14714932441711426, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1731372846139444, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:32:49.679123", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 17 lost, 0.2% CPU", + "details": { + "duration": 10.030361890792847, + "points_saved": 73, + "points_rate": 7.277902910662553, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 17, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08896251444546681, + "delay_max": 0.13539433479309082, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17600934472802568, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:32:59.706966", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 18 lost, 0.8% CPU", + "details": { + "duration": 10.027801990509033, + "points_saved": 73, + "points_rate": 7.279760815888863, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.8, + "cpu_max": 0.8, + "delay_average": 0.08934364228878382, + "delay_max": 0.17838001251220703, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.176521118373087, + "csv_write_time_avg": 1.1169747130511558e-06 + } + }, + { + "timestamp": "2025-08-17T11:33:09.734584", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 16 lost, 0.2% CPU", + "details": { + "duration": 10.027638673782349, + "points_saved": 74, + "points_rate": 7.37960375392024, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 16, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08446258968777126, + "delay_max": 0.1480121612548828, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1693242917189727, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:33:19.766424", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 18 lost, 0.3% CPU", + "details": { + "duration": 10.031809329986572, + "points_saved": 74, + "points_rate": 7.37653573406773, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08547308709886339, + "delay_max": 0.14839982986450195, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1697509836506199, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:33:29.797648", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 18 lost, 0.0% CPU", + "details": { + "duration": 10.032224416732788, + "points_saved": 73, + "points_rate": 7.276551736446705, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.08790962784378617, + "delay_max": 0.14924860000610352, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17491841316223145, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:33:39.827528", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 75 points saved, 16 lost, 0.0% CPU", + "details": { + "duration": 10.028873205184937, + "points_saved": 75, + "points_rate": 7.478407440750665, + "variables_saved": 225, + "udp_points_sent": 0, + "points_lost": 16, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.08330859961333098, + "delay_max": 0.1379680633544922, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17007246971130371, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:33:49.858101", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 16 lost, 0.8% CPU", + "details": { + "duration": 10.030579805374146, + "points_saved": 74, + "points_rate": 7.3774399322711695, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 16, + "cpu_average": 0.8, + "cpu_max": 0.8, + "delay_average": 0.08415286324240945, + "delay_max": 0.14850950241088867, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1706531370008314, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:33:59.885391", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 18 lost, 0.8% CPU", + "details": { + "duration": 10.027289867401123, + "points_saved": 74, + "points_rate": 7.379860458664425, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.8, + "cpu_max": 0.8, + "delay_average": 0.08652344739662027, + "delay_max": 0.14843201637268066, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17687704112078692, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:34:09.916337", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.029945135116577, + "points_saved": 73, + "points_rate": 7.278205315841094, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08878236446740492, + "delay_max": 0.15210986137390137, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1747153393209797, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:34:19.955499", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 17 lost, 0.6% CPU", + "details": { + "duration": 10.041162967681885, + "points_saved": 73, + "points_rate": 7.270074216996089, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 17, + "cpu_average": 0.6, + "cpu_max": 0.6, + "delay_average": 0.08760544938861199, + "delay_max": 0.14426231384277344, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1767024961236405, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:34:30.003607", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 19 lost, 0.2% CPU", + "details": { + "duration": 10.046098470687866, + "points_saved": 73, + "points_rate": 7.266502534590587, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08933404706559091, + "delay_max": 0.15245747566223145, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17269435320814994, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:34:40.033917", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 18 lost, 0.3% CPU", + "details": { + "duration": 10.031330347061157, + "points_saved": 73, + "points_rate": 7.277200278962655, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.09044499217339282, + "delay_max": 0.14797425270080566, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17811671348467265, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:34:50.064145", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 19 lost, 0.2% CPU", + "details": { + "duration": 10.030182123184204, + "points_saved": 73, + "points_rate": 7.278033350088887, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08621263054181945, + "delay_max": 0.13733172416687012, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17282121475428752, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:35:00.095773", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 20 lost, 0.2% CPU", + "details": { + "duration": 10.032662630081177, + "points_saved": 74, + "points_rate": 7.375908343426599, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.0891810832200227, + "delay_max": 0.1499178409576416, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1757476200928559, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:35:10.123848", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 17 lost, 0.0% CPU", + "details": { + "duration": 10.028074979782104, + "points_saved": 73, + "points_rate": 7.279562642598648, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 17, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.08664585509390202, + "delay_max": 0.15292644500732422, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1712213934284367, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:35:20.153298", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 17 lost, 0.2% CPU", + "details": { + "duration": 10.028445720672607, + "points_saved": 74, + "points_rate": 7.379009874626596, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 17, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.0847459766599867, + "delay_max": 0.13609766960144043, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17301697666580612, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:35:30.183265", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 21 lost, 0.5% CPU", + "details": { + "duration": 10.030970811843872, + "points_saved": 74, + "points_rate": 7.377152360230772, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.08829757460841427, + "delay_max": 0.14925789833068848, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17571922250696131, + "csv_write_time_avg": 1.327411548511402e-06 + } + }, + { + "timestamp": "2025-08-17T11:35:40.215128", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 18 lost, 0.2% CPU", + "details": { + "duration": 10.030748128890991, + "points_saved": 73, + "points_rate": 7.277622672006116, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08554852683589144, + "delay_max": 0.14634919166564941, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17080880517828956, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:35:50.247394", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 74 points saved, 18 lost, 0.3% CPU", + "details": { + "duration": 10.032346963882446, + "points_saved": 74, + "points_rate": 7.376140425207397, + "variables_saved": 222, + "udp_points_sent": 0, + "points_lost": 18, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08593227245189526, + "delay_max": 0.14969468116760254, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17392924669626597, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:36:00.280523", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 16 lost, 0.5% CPU", + "details": { + "duration": 10.033169984817505, + "points_saved": 73, + "points_rate": 7.275865963645169, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 16, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.08848965392922456, + "delay_max": 0.15271377563476562, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.1741302111377455, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:36:10.316853", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 19 lost, 0.2% CPU", + "details": { + "duration": 10.034232139587402, + "points_saved": 73, + "points_rate": 7.275095790538656, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 19, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.08893865909216539, + "delay_max": 0.1461782455444336, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17780419571758949, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:36:20.348235", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 21 lost, 0.5% CPU", + "details": { + "duration": 10.033486127853394, + "points_saved": 73, + "points_rate": 7.2756367098917725, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 21, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.09052622993037386, + "delay_max": 0.1501784324645996, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.177273204881851, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:36:30.388435", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 20 lost, 0.3% CPU", + "details": { + "duration": 10.037052154541016, + "points_saved": 73, + "points_rate": 7.273051776160489, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.08893725557147332, + "delay_max": 0.14470171928405762, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17258598706493639, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:36:40.423381", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 73 points saved, 20 lost, 0.6% CPU", + "details": { + "duration": 10.038089275360107, + "points_saved": 73, + "points_rate": 7.272300335003863, + "variables_saved": 219, + "udp_points_sent": 0, + "points_lost": 20, + "cpu_average": 0.6, + "cpu_max": 0.6, + "delay_average": 0.08916023542296211, + "delay_max": 0.1487901210784912, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.17304159190556775, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:36:50.456905", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 105 points saved, 5 lost, 0.0% CPU", + "details": { + "duration": 10.033514261245728, + "points_saved": 105, + "points_rate": 10.464927568355652, + "variables_saved": 315, + "udp_points_sent": 0, + "points_lost": 5, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.07472318410873413, + "delay_max": 0.13999128341674805, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.09127082824707031, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:37:00.488116", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.031213283538818, + "points_saved": 118, + "points_rate": 11.763282931451327, + "variables_saved": 354, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.0058748722076416016, + "delay_max": 0.01690077781677246, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07306329072532007, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:37:10.527858", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 116 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.03973388671875, + "points_saved": 116, + "points_rate": 11.554091105288435, + "variables_saved": 348, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.011233423437391008, + "delay_max": 0.03687596321105957, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.08444350752337225, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:37:20.559912", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.033061265945435, + "points_saved": 118, + "points_rate": 11.761116260748821, + "variables_saved": 354, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.008911494855527525, + "delay_max": 0.028058767318725586, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.08190219483133089, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:37:30.592554", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.032642364501953, + "points_saved": 118, + "points_rate": 11.761607332631938, + "variables_saved": 354, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.008864964757646834, + "delay_max": 0.03925490379333496, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07445801516710701, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:37:40.619481", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 116 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.026926517486572, + "points_saved": 116, + "points_rate": 11.568849118191949, + "variables_saved": 348, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.01205239088638969, + "delay_max": 0.03714704513549805, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.08072856171377774, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:37:50.648428", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 117 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.028947591781616, + "points_saved": 117, + "points_rate": 11.666229076306825, + "variables_saved": 351, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.015156030654907227, + "delay_max": 0.027812719345092773, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07180288306668274, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:38:00.676568", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.027148246765137, + "points_saved": 119, + "points_rate": 11.867781055136055, + "variables_saved": 357, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.008162498474121094, + "delay_max": 0.017899751663208008, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07041111312994436, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:38:10.709711", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 117 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.03214168548584, + "points_saved": 117, + "points_rate": 11.662514712015243, + "variables_saved": 351, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.010428498773013843, + "delay_max": 0.03892660140991211, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07617919669192061, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:38:20.742614", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 116 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.034895658493042, + "points_saved": 116, + "points_rate": 11.559661798956855, + "variables_saved": 348, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.01149730384349823, + "delay_max": 0.03210115432739258, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.08515338445531911, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:38:30.770835", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 116 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.028220891952515, + "points_saved": 116, + "points_rate": 11.567355889925413, + "variables_saved": 348, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.01354058583577474, + "delay_max": 0.0451054573059082, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.08241151324633894, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:38:40.803041", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.031207084655762, + "points_saved": 118, + "points_rate": 11.763290200687685, + "variables_saved": 354, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.009728945218599759, + "delay_max": 0.02429366111755371, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07450079311758785, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:38:50.834732", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.032689571380615, + "points_saved": 118, + "points_rate": 11.761551990665433, + "variables_saved": 354, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.008510971069335937, + "delay_max": 0.025498390197753906, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.06993976083852477, + "csv_write_time_avg": 1.0546991380594544e-06 + } + }, + { + "timestamp": "2025-08-17T11:39:00.862993", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.028261423110962, + "points_saved": 118, + "points_rate": 11.766745502671, + "variables_saved": 354, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.008485972881317139, + "delay_max": 0.029614686965942383, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07137028645660917, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:39:10.890639", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 117 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.026661396026611, + "points_saved": 117, + "points_rate": 11.668889112617789, + "variables_saved": 351, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.010030871345883324, + "delay_max": 0.03621792793273926, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07813407824589656, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:39:20.921037", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 117 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.030382871627808, + "points_saved": 117, + "points_rate": 11.664559717949464, + "variables_saved": 351, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.012426086094068445, + "delay_max": 0.03970956802368164, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.08023876002711108, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:39:30.950553", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.030515432357788, + "points_saved": 118, + "points_rate": 11.764101336142677, + "variables_saved": 354, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.0073184967041015625, + "delay_max": 0.029512643814086914, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07657499838683565, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:39:40.978793", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.028239965438843, + "points_saved": 119, + "points_rate": 11.866489075861725, + "variables_saved": 357, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.004678355322943794, + "delay_max": 0.008371114730834961, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07224507291777794, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:39:51.009913", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.03112006187439, + "points_saved": 118, + "points_rate": 11.763392250531076, + "variables_saved": 354, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.010142660140991211, + "delay_max": 0.022010326385498047, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.06788122653961182, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:40:01.038417", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 117 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.027502536773682, + "points_saved": 117, + "points_rate": 11.667910286826453, + "variables_saved": 351, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.012786799006991915, + "delay_max": 0.03872394561767578, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.0712335456130851, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:40:11.071447", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 115 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.033040761947632, + "points_saved": 115, + "points_rate": 11.46212825489169, + "variables_saved": 345, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.016032307236282912, + "delay_max": 0.0527651309967041, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.0850260879682458, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:40:21.099096", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 115 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.028639554977417, + "points_saved": 115, + "points_rate": 11.467158568175199, + "variables_saved": 345, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.013467006385326385, + "delay_max": 0.04805254936218262, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.08903484551802926, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:40:31.127939", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 115 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.027847290039062, + "points_saved": 115, + "points_rate": 11.46806454803442, + "variables_saved": 345, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.011025435394710965, + "delay_max": 0.037154436111450195, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.08961239275724991, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:40:41.160448", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 116 points saved, 0 lost, 0.3% CPU", + "details": { + "duration": 10.033504724502563, + "points_saved": 116, + "points_rate": 11.56126430246446, + "variables_saved": 348, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.3, + "cpu_max": 0.3, + "delay_average": 0.012032093825163665, + "delay_max": 0.037841796875, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.0860556857339267, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:40:51.192774", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 119 points saved, 0 lost, 0.0% CPU", + "details": { + "duration": 10.032326221466064, + "points_saved": 119, + "points_rate": 11.861655748930586, + "variables_saved": 357, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.0, + "cpu_max": 0.0, + "delay_average": 0.005008050373622349, + "delay_max": 0.025420188903808594, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.07409250435708951, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:41:01.226299", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 118 points saved, 0 lost, 0.2% CPU", + "details": { + "duration": 10.032536029815674, + "points_saved": 118, + "points_rate": 11.761731993716847, + "variables_saved": 354, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.2, + "cpu_max": 0.2, + "delay_average": 0.009503761927286783, + "delay_max": 0.023630857467651367, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.0753347065489171, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:41:01.594450", + "level": "info", + "event_type": "config_reload", + "message": "Dataset configuration reloaded from files with CSV header validation", + "details": { + "datasets_count": 3, + "active_datasets_count": 3, + "csv_recording_active": true + } + }, + { + "timestamp": "2025-08-17T11:41:11.261908", + "level": "info", + "event_type": "performance_report", + "message": "Performance report: 115 points saved, 0 lost, 0.5% CPU", + "details": { + "duration": 10.035540580749512, + "points_saved": 115, + "points_rate": 11.45927307798412, + "variables_saved": 345, + "udp_points_sent": 0, + "points_lost": 0, + "cpu_average": 0.5, + "cpu_max": 0.5, + "delay_average": 0.01338486318235044, + "delay_max": 0.04090261459350586, + "read_errors": 0, + "csv_errors": 0, + "udp_errors": 0, + "read_time_avg": 0.082755940893422, + "csv_write_time_avg": 0.0 + } + }, + { + "timestamp": "2025-08-17T11:41:21.299747", + "level": "info", + "event_type": "csv_recording_stopped", + "message": "🔥 CRITICAL: CSV recording stopped (dataset threads continue for UDP streaming)", + "details": { + "recording_protection": false, + "performance_monitoring": false + } + }, + { + "timestamp": "2025-08-17T11:41:21.339241", + "level": "info", + "event_type": "udp_streaming_stopped", + "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)", + "details": {} + }, + { + "timestamp": "2025-08-17T11:41:21.425370", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: Fast", + "details": { + "dataset_id": "Fast" + } + }, + { + "timestamp": "2025-08-17T11:41:21.455998", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: test", + "details": { + "dataset_id": "Test" + } + }, + { + "timestamp": "2025-08-17T11:41:21.753903", + "level": "info", + "event_type": "dataset_deactivated", + "message": "Dataset deactivated: DAR", + "details": { + "dataset_id": "DAR" + } + }, + { + "timestamp": "2025-08-17T11:41:21.786104", + "level": "info", + "event_type": "plc_disconnection", + "message": "Disconnected from PLC 10.1.33.11 (manually disconnected)", + "details": {} } ], - "last_updated": "2025-08-17T11:00:20.886688", + "last_updated": "2025-08-17T11:41:21.786104", "total_entries": 1000 } \ No newline at end of file diff --git a/config/data/dataset_definitions.json b/config/data/dataset_definitions.json index 8a1f05b..452afe4 100644 --- a/config/data/dataset_definitions.json +++ b/config/data/dataset_definitions.json @@ -14,7 +14,7 @@ "id": "Fast", "name": "Fast", "prefix": "fast", - "sampling_interval": 0.1 + "sampling_interval": 0.5 }, { "enabled": true, diff --git a/config/data/dataset_variables.json b/config/data/dataset_variables.json index 97f06a8..3f991b9 100644 --- a/config/data/dataset_variables.json +++ b/config/data/dataset_variables.json @@ -36,20 +36,29 @@ "dataset_id": "Fast", "variables": [ { - "area": "db", "configType": "symbol", + "area": "db", "streaming": true, - "symbol": "AUX Blink_1.0S", + "symbol": "AUX Blink_2.0S", "type": "real" }, { - "area": "m", - "bit": 6, "configType": "manual", - "name": "AUX Blink_1.6S", - "offset": 0, - "streaming": true, + "area": "m", + "bit": 1, + "name": "M50.1", + "offset": 50, + "streaming": false, "type": "bool" + }, + { + "configType": "manual", + "area": "m", + "type": "bool", + "streaming": false, + "offset": 50, + "bit": 2, + "name": "M50.2" } ] } diff --git a/config/data/plot_definitions.json b/config/data/plot_definitions.json index 862cd9c..eb5be7e 100644 --- a/config/data/plot_definitions.json +++ b/config/data/plot_definitions.json @@ -8,7 +8,7 @@ "point_radius": 2.5, "stacked": true, "stepped": true, - "time_window": 36, + "time_window": 10, "trigger_enabled": false, "trigger_on_true": true, "trigger_variable": null, diff --git a/config/data/plot_variables.json b/config/data/plot_variables.json index 3b7122f..71c9565 100644 --- a/config/data/plot_variables.json +++ b/config/data/plot_variables.json @@ -4,34 +4,27 @@ "plot_id": "plot_1", "variables": [ { - "variable_name": "UR29_Brix", + "color": "#3498db", + "enabled": true, "label": "Brix", - "color": "#3498db", "line_width": 2, - "y_axis": "left", - "enabled": true + "variable_name": "UR29_Brix", + "y_axis": "left" }, { - "variable_name": "UR29_ma", - "label": "ma", "color": "#dce740", + "enabled": true, + "label": "ma", "line_width": 2, - "y_axis": "left", - "enabled": true + "variable_name": "UR29_ma", + "y_axis": "left" }, { - "variable_name": "AUX Blink_1.0S", "color": "#3498db", + "enabled": true, "line_width": 2, - "y_axis": "right", - "enabled": true - }, - { - "variable_name": "AUX Blink_1.6S", - "color": "#630de3", - "line_width": 2, - "y_axis": "right", - "enabled": true + "variable_name": "AUX Blink_2.0S", + "y_axis": "right" } ] }, @@ -39,18 +32,25 @@ "plot_id": "Clock", "variables": [ { - "color": "#3498db", - "enabled": true, + "variable_name": "AUX Blink_2.0S", + "color": "#db3376", "line_width": 2, - "variable_name": "AUX Blink_1.0S", - "y_axis": "left" + "y_axis": "left", + "enabled": true }, { - "color": "#87db33", - "enabled": true, + "variable_name": "M50.1", + "color": "#3498db", "line_width": 2, - "variable_name": "AUX Blink_1.6S", - "y_axis": "left" + "y_axis": "left", + "enabled": true + }, + { + "variable_name": "M50.2", + "color": "#3edb33", + "line_width": 2, + "y_axis": "left", + "enabled": true } ] } diff --git a/core/plc_client.py b/core/plc_client.py index f52f98d..60bef1e 100644 --- a/core/plc_client.py +++ b/core/plc_client.py @@ -38,8 +38,9 @@ class PLCClient: # Global I/O serialization to avoid concurrent snap7 calls # Acts as a simple read queue to prevent 'CLI : Job pending' self.io_lock = threading.RLock() - # Small inter-read delay to give PLC time between requests (seconds) - self.inter_read_delay_seconds = 0.002 + # 🚨 CRITICAL FIX: Increased inter-read delay for industrial PLC stability + # Original 0.002s was too aggressive, causing timing issues and lost points + self.inter_read_delay_seconds = 0.01 # 10ms between reads for stability def connect(self, ip: str, rack: int, slot: int) -> bool: """Connect to S7-315 PLC""" @@ -281,7 +282,13 @@ class PLCClient: "md", "mb", ]: # Memory Word, Memory, Memory Double, Memory Byte - result = self._read_memory_variable(offset, var_type) + # 🚨 CRITICAL FIX: Handle memory bit reads correctly + if var_type == "bool" and bit is not None: + # Specific bit read (e.g., M50.1, M50.2, etc.) + result = self._read_memory_bit(offset, bit) + else: + # Standard memory variable read + result = self._read_memory_variable(offset, var_type) elif area_type in [ "pew", "pe", @@ -307,7 +314,7 @@ class PLCClient: self.logger.error(f"Unsupported area type: {area_type}") result = None - # Small pacing delay between PLC I/O to avoid job overlap + # 🚨 CRITICAL: Increased pacing delay for industrial PLC stability if self.inter_read_delay_seconds and self.inter_read_delay_seconds > 0: time.sleep(self.inter_read_delay_seconds) @@ -346,6 +353,201 @@ class PLCClient: return None + def read_variables_batch( + self, variables_config: Dict[str, Dict[str, Any]] + ) -> Dict[str, Any]: + """🚨 NEW: Read multiple variables in optimized batch operations to reduce snap7 calls + + Args: + variables_config: Dict of {var_name: var_config} + + Returns: + Dict of {var_name: value} or {var_name: None} if read failed + + This method groups variables by DB/Area and performs batch reads when possible, + significantly reducing the number of snap7 calls and improving timing performance. + """ + if not self.is_connected(): + return {name: None for name in variables_config.keys()} + + results = {} + + # Ensure only one snap7 operation at a time + with self.io_lock: + try: + # Group variables by area and DB for batch reading + groups = self._group_variables_for_batch_reading(variables_config) + + for group_key, var_group in groups.items(): + area_type, db_number = group_key + + if area_type == "db" and len(var_group) > 1: + # Batch read for DB variables + batch_results = self._batch_read_db_variables( + db_number, var_group + ) + results.update(batch_results) + else: + # Fall back to individual reads for non-batchable variables + for var_name, var_config in var_group.items(): + results[var_name] = self.read_variable(var_config) + + return results + + except Exception as e: + if self.logger: + self.logger.error(f"Error in batch read operation: {e}") + + # Fall back to individual reads if batch fails + for var_name, var_config in variables_config.items(): + results[var_name] = self.read_variable(var_config) + + return results + + def _group_variables_for_batch_reading( + self, variables_config: Dict[str, Dict[str, Any]] + ) -> Dict[tuple, Dict[str, Dict[str, Any]]]: + """Group variables by area and DB for efficient batch reading""" + groups = {} + + for var_name, var_config in variables_config.items(): + area_type = var_config.get("area", "db").lower() + db_number = var_config.get("db", None) + + # Create group key + group_key = (area_type, db_number) + + if group_key not in groups: + groups[group_key] = {} + + groups[group_key][var_name] = var_config + + return groups + + def _batch_read_db_variables( + self, db_number: int, variables: Dict[str, Dict[str, Any]] + ) -> Dict[str, Any]: + """Perform optimized batch read for DB variables in the same data block""" + if not variables: + return {} + + results = {} + + try: + # Find min and max offsets to determine read range + offsets = [] + for var_config in variables.values(): + offset = var_config.get("offset", 0) + var_type = var_config.get("type", "real").lower() + + # Calculate size based on type + type_sizes = { + "real": 4, + "dint": 4, + "int": 2, + "bool": 1, + "word": 2, + "byte": 1, + "uint": 2, + "udint": 4, + "sint": 1, + "usint": 1, + } + size = type_sizes.get(var_type, 4) + + offsets.append((offset, offset + size)) + + if not offsets: + return results + + # Calculate optimal read range + min_offset = min(start for start, end in offsets) + max_offset = max(end for start, end in offsets) + read_size = max_offset - min_offset + + # If range is reasonable (< 256 bytes), do single batch read + if read_size <= 256 and len(variables) > 1: + raw_data = self.plc.db_read(db_number, min_offset, read_size) + + # Extract individual variable values from the batch + for var_name, var_config in variables.items(): + try: + offset = var_config.get("offset", 0) + var_type = var_config.get("type", "real").lower() + bit = var_config.get("bit") + + # Calculate relative offset in the batch + relative_offset = offset - min_offset + + # Extract value based on type + value = self._extract_value_from_batch( + raw_data, relative_offset, var_type, bit + ) + results[var_name] = value + + except Exception as e: + if self.logger: + self.logger.warning( + f"Error extracting variable {var_name} from batch: {e}" + ) + results[var_name] = None + + # Single delay for the entire batch + if self.inter_read_delay_seconds > 0: + time.sleep(self.inter_read_delay_seconds) + + else: + # Range too large or single variable, fall back to individual reads + for var_name, var_config in variables.items(): + results[var_name] = self.read_variable(var_config) + + except Exception as e: + if self.logger: + self.logger.warning( + f"Batch read failed for DB{db_number}, falling back to individual reads: {e}" + ) + + # Fall back to individual reads + for var_name, var_config in variables.items(): + results[var_name] = self.read_variable(var_config) + + return results + + def _extract_value_from_batch( + self, raw_data: bytes, offset: int, var_type: str, bit: Optional[int] = None + ) -> Any: + """Extract a specific variable value from batch read data""" + try: + if var_type == "real": + return struct.unpack(">f", raw_data[offset : offset + 4])[0] + elif var_type == "int": + return struct.unpack(">h", raw_data[offset : offset + 2])[0] + elif var_type == "bool": + if bit is not None: + return snap7.util.get_bool(raw_data[offset : offset + 1], 0, bit) + else: + return bool(raw_data[offset] & 0x01) + elif var_type == "dint": + return struct.unpack(">l", raw_data[offset : offset + 4])[0] + elif var_type == "word": + return struct.unpack(">H", raw_data[offset : offset + 2])[0] + elif var_type == "byte": + return struct.unpack(">B", raw_data[offset : offset + 1])[0] + elif var_type == "uint": + return struct.unpack(">H", raw_data[offset : offset + 2])[0] + elif var_type == "udint": + return struct.unpack(">L", raw_data[offset : offset + 4])[0] + elif var_type == "sint": + return struct.unpack(">b", raw_data[offset : offset + 1])[0] + elif var_type == "usint": + return struct.unpack(">B", raw_data[offset : offset + 1])[0] + except Exception as e: + if self.logger: + self.logger.warning( + f"Error extracting {var_type} at offset {offset}: {e}" + ) + return None + def _read_db_variable( self, var_config: Dict[str, Any], offset: int, var_type: str, bit: Optional[int] ) -> Any: diff --git a/core/streamer.py b/core/streamer.py index 960c760..276df36 100644 --- a/core/streamer.py +++ b/core/streamer.py @@ -74,7 +74,15 @@ class DataStreamer: self.dataset_csv_hours = {} # dataset_id -> current hour self.dataset_using_modification_files = {} # dataset_id -> bool - # 📊 CACHE SYSTEM - Central data storage + # � NEW: Asynchronous CSV Writing System + # Buffer system to accumulate data and write in batches every 5 seconds + self.csv_buffer = {} # dataset_id -> list of [timestamp, data_dict] + self.csv_buffer_lock = threading.Lock() + self.csv_flush_interval = 5.0 # seconds + self.csv_flush_thread = None + self.csv_flush_active = False + + # �📊 CACHE SYSTEM - Central data storage # This is the ONLY source of data for all APIs and interfaces # Updated ONLY by read_dataset_variables() during streaming cycles self.last_read_values = {} # dataset_id -> {var_name: value} @@ -334,7 +342,7 @@ class DataStreamer: ) def write_dataset_csv_data(self, dataset_id: str, data: Dict[str, Any]): - """Write data to CSV file for a specific dataset""" + """🚨 DEPRECATED: Use buffer_dataset_csv_data instead for async writing""" if dataset_id not in self.config_manager.active_datasets: return @@ -366,6 +374,119 @@ class DataStreamer: f"Error writing CSV data for dataset {dataset_id}: {e}" ) + def buffer_dataset_csv_data(self, dataset_id: str, data: Dict[str, Any]): + """🚨 NEW: Buffer CSV data for asynchronous writing to reduce I/O operations""" + if dataset_id not in self.config_manager.active_datasets: + return + + timestamp = datetime.now() + + with self.csv_buffer_lock: + if dataset_id not in self.csv_buffer: + self.csv_buffer[dataset_id] = [] + + # Add data to buffer with timestamp + self.csv_buffer[dataset_id].append({ + 'timestamp': timestamp, + 'data': data.copy() + }) + + def _csv_flush_loop(self): + """🚨 Background thread to flush CSV buffers every flush_interval seconds""" + while self.csv_flush_active: + try: + time.sleep(self.csv_flush_interval) + self._flush_csv_buffers() + except Exception as e: + if self.logger: + self.logger.error(f"Error in CSV flush loop: {e}") + + def _flush_csv_buffers(self): + """🚨 Flush all buffered CSV data to files""" + flush_start_time = time.time() + total_points_written = 0 + datasets_flushed = 0 + + with self.csv_buffer_lock: + for dataset_id, buffer_data in self.csv_buffer.items(): + if not buffer_data: + continue + + try: + self.setup_dataset_csv_file(dataset_id) + + if dataset_id in self.dataset_csv_writers: + dataset_variables = self.config_manager.get_dataset_variables(dataset_id) + + for entry in buffer_data: + timestamp_str = entry['timestamp'].strftime("%Y-%m-%d %H:%M:%S.%f")[:-3] + data = entry['data'] + + # Create row with all variables for this dataset + row = [timestamp_str] + for var_name in dataset_variables.keys(): + value = data.get(var_name, None) + # Convert boolean values to 0 or 1 for CSV consistency + if isinstance(value, bool): + value = 1 if value else 0 + row.append(value) + + self.dataset_csv_writers[dataset_id].writerow(row) + total_points_written += 1 + + # Flush file to disk + self.dataset_csv_files[dataset_id].flush() + datasets_flushed += 1 + + except Exception as e: + if self.logger: + self.logger.error(f"Error flushing CSV buffer for dataset {dataset_id}: {e}") + + # Clear all buffers after successful flush + self.csv_buffer.clear() + + flush_time = time.time() - flush_start_time + + if total_points_written > 0 and self.logger: + # 🚨 FIX: Avoid division by zero when flush_time is 0 + throughput = total_points_written / max(flush_time, 0.001) # Minimum 1ms to avoid division by zero + self.logger.debug( + f"📝 CSV Batch Flush: {total_points_written} points written across {datasets_flushed} datasets " + f"in {flush_time:.3f}s ({throughput:.1f} points/sec)" + ) + + def start_csv_flush_thread(self): + """🚨 Start the asynchronous CSV flush thread""" + if self.csv_flush_active: + return + + self.csv_flush_active = True + self.csv_flush_thread = threading.Thread( + target=self._csv_flush_loop, + name="csv_flush_thread", + daemon=True + ) + self.csv_flush_thread.start() + + if self.logger: + self.logger.info(f"📝 CSV async flush thread started (interval: {self.csv_flush_interval}s)") + + def stop_csv_flush_thread(self): + """🚨 Stop the asynchronous CSV flush thread and flush remaining data""" + if not self.csv_flush_active: + return + + self.csv_flush_active = False + + # Final flush of any remaining data + self._flush_csv_buffers() + + if self.csv_flush_thread and self.csv_flush_thread.is_alive(): + self.csv_flush_thread.join(timeout=5.0) + + if self.logger: + self.logger.info("📝 CSV async flush thread stopped, final flush completed") + def create_new_dataset_csv_file_for_variable_modification(self, dataset_id: str): """Create a new CSV file for a dataset when variables are modified during active recording""" if dataset_id not in self.config_manager.active_datasets: @@ -455,44 +576,92 @@ class DataStreamer: Called by: dataset_streaming_loop() at configured intervals Updates: self.last_read_values cache for use by all other functions + + 🚨 CRITICAL FIX: Returns None if ANY variable fails - prevents corrupt CSV data + 🚀 PERFORMANCE FIX: Uses batch reading to reduce snap7 calls and improve timing """ data = {} errors = {} timestamp = datetime.now() + failed_variables = [] - for var_name, var_config in variables.items(): - try: - value = self.plc_client.read_variable(var_config) - data[var_name] = value + try: + # 🚀 NEW: Use batch reading for improved performance + batch_results = self.plc_client.read_variables_batch(variables) + + for var_name, value in batch_results.items(): + if value is not None: + data[var_name] = value + + # Clear any previous error for this variable + if ( + dataset_id in self.last_read_errors + and var_name in self.last_read_errors[dataset_id] + ): + del self.last_read_errors[dataset_id][var_name] + else: + # Variable read failed + var_config = variables.get(var_name, {}) + error_msg = f"Batch read failed for variable {var_name}" + + if self.logger: + self.logger.warning( + f"Error reading variable {var_name} in dataset {dataset_id}: {error_msg}" + ) + data[var_name] = None + errors[var_name] = error_msg + failed_variables.append(var_name) + + except Exception as e: + # Fall back to individual reads if batch reading fails completely + if self.logger: + self.logger.warning(f"Batch reading failed for dataset {dataset_id}, falling back to individual reads: {e}") + + for var_name, var_config in variables.items(): + try: + value = self.plc_client.read_variable(var_config) + data[var_name] = value - # Clear any previous error for this variable - if ( - dataset_id in self.last_read_errors - and var_name in self.last_read_errors[dataset_id] - ): - del self.last_read_errors[dataset_id][var_name] + # Clear any previous error for this variable + if ( + dataset_id in self.last_read_errors + and var_name in self.last_read_errors[dataset_id] + ): + del self.last_read_errors[dataset_id][var_name] - except Exception as e: - if self.logger: - self.logger.warning( - f"Error reading variable {var_name} in dataset {dataset_id}: {e}" - ) - data[var_name] = None - errors[var_name] = f"Read error: {str(e)}" + except Exception as read_error: + if self.logger: + self.logger.warning( + f"Error reading variable {var_name} in dataset {dataset_id}: {read_error}" + ) + data[var_name] = None + errors[var_name] = f"Read error: {str(read_error)}" + failed_variables.append(var_name) - # Update cache with latest values and timestamp - self.last_read_values[dataset_id] = data.copy() - self.last_read_timestamps[dataset_id] = timestamp - - # Update errors cache - if errors: + # 🚨 CRITICAL FIX: If ANY variable failed, return None to prevent CSV corruption + # This ensures that incomplete data is never written to CSV + if failed_variables: + if self.logger: + dataset_name = self.config_manager.datasets.get(dataset_id, {}).get('name', dataset_id) + self.logger.warning( + f"🚨 CRITICAL: Dataset '{dataset_name}' read failed - {len(failed_variables)} variables failed: {failed_variables}. " + f"Skipping CSV write to prevent data corruption." + ) + # Still update cache for monitoring purposes, but return None for CSV + self.last_read_values[dataset_id] = data.copy() + self.last_read_timestamps[dataset_id] = timestamp if dataset_id not in self.last_read_errors: self.last_read_errors[dataset_id] = {} self.last_read_errors[dataset_id].update(errors) - elif dataset_id in self.last_read_errors: - # Clear all errors if this read was completely successful - if all(value is not None for value in data.values()): - self.last_read_errors[dataset_id] = {} + return None + + # Update cache with latest values and timestamp ONLY if all reads succeeded + self.last_read_values[dataset_id] = data.copy() + self.last_read_timestamps[dataset_id] = timestamp + + # Clear all errors if this read was completely successful + if dataset_id in self.last_read_errors: + self.last_read_errors[dataset_id] = {} return data @@ -635,29 +804,31 @@ class DataStreamer: all_data = self.read_dataset_variables(dataset_id, dataset_variables) read_time = time.time() - read_start - read_success = bool(all_data) + # 🚨 CRITICAL FIX: Proper validation - all_data is None if ANY variable failed + read_success = all_data is not None - if all_data: + if all_data is not None: consecutive_errors = 0 - # 📝 CSV Recording: ALWAYS FIRST - HIGHEST PRIORITY with timing + # 📝 CSV Recording: ALWAYS FIRST - HIGHEST PRIORITY with ASYNC BUFFERING if self.csv_recording_enabled: csv_start = time.time() try: - self.write_dataset_csv_data(dataset_id, all_data) + # 🚨 NEW: Use async buffering instead of immediate write + self.buffer_dataset_csv_data(dataset_id, all_data) csv_write_time = time.time() - csv_start - # 📊 Record successful CSV write + # 📊 Record successful CSV buffer operation (much faster) self.performance_monitor.record_csv_write(dataset_id, csv_write_time, success=True) except Exception as csv_error: csv_write_time = time.time() - csv_start - # 📊 Record CSV write error + # 📊 Record CSV buffer error self.performance_monitor.record_csv_write(dataset_id, csv_write_time, success=False) if self.logger: - self.logger.error(f"🚨 CSV WRITE ERROR for dataset '{dataset_info['name']}': {csv_error}") + self.logger.error(f"🚨 CSV BUFFER ERROR for dataset '{dataset_info['name']}': {csv_error}") # 📡 UDP Streaming: Lower priority - only if enabled if self.udp_streaming_enabled: @@ -673,7 +844,14 @@ class DataStreamer: ) else: + # 🚨 CRITICAL: All data read failed - increment error counter consecutive_errors += 1 + if self.logger: + self.logger.warning( + f"🚨 CRITICAL: Dataset '{dataset_info['name']}' read completely failed. " + f"No CSV data written to prevent corruption (consecutive errors: {consecutive_errors})" + ) + if consecutive_errors >= max_consecutive_errors: self.event_logger.log_event( "error", @@ -940,6 +1118,9 @@ class DataStreamer: # 📊 START PERFORMANCE MONITORING self.performance_monitor.start_monitoring() + + # 🚨 START ASYNC CSV FLUSH THREAD + self.start_csv_flush_thread() # Activate all datasets that have variables for CSV recording activated_count = 0 @@ -974,21 +1155,26 @@ class DataStreamer: self.event_logger.log_event( "info", "csv_recording_started", - f"🔥 CRITICAL PRIORITY: CSV recording started with MAXIMUM PRIORITY and performance monitoring: {activated_count} datasets activated", + f"🔥 CRITICAL PRIORITY: CSV recording started with MAXIMUM PRIORITY, async buffering, and performance monitoring: {activated_count} datasets activated", { "activated_datasets": activated_count, "total_datasets": len(self.config_manager.datasets), "priority": "CRITICAL", "recording_protection": True, - "performance_monitoring": True + "performance_monitoring": True, + "async_csv_buffering": True, + "csv_flush_interval": self.csv_flush_interval }, ) return True def stop_csv_recording(self): - """🔥 CRITICAL: Stop CSV recording safely with performance monitoring""" + """🔥 CRITICAL: Stop CSV recording safely with performance monitoring and async flush""" self.csv_recording_enabled = False + # 🚨 STOP ASYNC CSV FLUSH THREAD AND FLUSH REMAINING DATA + self.stop_csv_flush_thread() + # 🔥 DISABLE RECORDING PROTECTION MODE self.recording_protector.stop_recording_protection() @@ -1488,9 +1674,12 @@ class DataStreamer: # 1. Stop performance monitoring first self.performance_monitor.stop_monitoring() - # 2. Stop CSV recording first (graceful stop) + # 2. Stop CSV recording first (graceful stop with buffer flush) if self.csv_recording_enabled: self.stop_csv_recording() + else: + # Ensure CSV flush thread is stopped even if recording wasn't active + self.stop_csv_flush_thread() # 3. Stop UDP streaming if self.udp_streaming_enabled: diff --git a/frontend/src/components/ChartjsPlot.jsx b/frontend/src/components/ChartjsPlot.jsx index 5fb5ec9..af6b780 100644 --- a/frontend/src/components/ChartjsPlot.jsx +++ b/frontend/src/components/ChartjsPlot.jsx @@ -55,7 +55,7 @@ const ChartjsPlot = ({ session, height = '400px' }) => { insertNaNOnNextIngest: false, isPaused: false, isRealTimeMode: true, - refreshRate: 1000, + refreshRate: 500, userOverrideUntil: 0, userPaused: false, sessionId: null @@ -702,7 +702,7 @@ const ChartjsPlot = ({ session, height = '400px' }) => { realtime: { duration: (config.time_window || 60) * 1000, refresh: sessionDataRef.current.refreshRate, - delay: 0, + delay: sessionDataRef.current.refreshRate, frameRate: 30, pause: !session.is_active || session.is_paused, onRefresh: (chart) => { diff --git a/system_state.json b/system_state.json index 24940b9..ca8afb0 100644 --- a/system_state.json +++ b/system_state.json @@ -1,12 +1,9 @@ { "last_state": { - "should_connect": true, + "should_connect": false, "should_stream": false, - "active_datasets": [ - "Fast", - "DAR" - ] + "active_datasets": [] }, "auto_recovery_enabled": true, - "last_update": "2025-08-17T10:48:18.548096" + "last_update": "2025-08-17T11:41:21.785119" } \ No newline at end of file