diff --git a/application_events.json b/application_events.json
index 6ca682d..94f9f03 100644
--- a/application_events.json
+++ b/application_events.json
@@ -1,1549 +1,5 @@
{
"events": [
- {
- "timestamp": "2025-08-16T18:21:18.315253",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.015853881835938,
- "points_saved": 36,
- "points_rate": 3.594301636656972,
- "variables_saved": 72,
- "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.044117622905307345,
- "csv_write_time_avg": 8.092986212836371e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:21:28.354564",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 35 points saved, 0 lost, 0.3% CPU",
- "details": {
- "duration": 10.03831148147583,
- "points_saved": 35,
- "points_rate": 3.486642157357555,
- "variables_saved": 70,
- "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.11122162682669504,
- "csv_write_time_avg": 2.044950212751116e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:21:38.413553",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.059988737106323,
- "points_saved": 36,
- "points_rate": 3.578532833462706,
- "variables_saved": 72,
- "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.10544510682423909,
- "csv_write_time_avg": 3.349781036376953e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:21:48.447880",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.034327268600464,
- "points_saved": 36,
- "points_rate": 3.587684459191562,
- "variables_saved": 72,
- "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.11204698350694445,
- "csv_write_time_avg": 3.973642985026042e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:21:58.480942",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 35 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.033062219619751,
- "points_saved": 35,
- "points_rate": 3.4884663559204445,
- "variables_saved": 70,
- "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.11097707067217145,
- "csv_write_time_avg": 1.735687255859375e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:22:08.508297",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.3% CPU",
- "details": {
- "duration": 10.027354955673218,
- "points_saved": 36,
- "points_rate": 3.5901790810379293,
- "variables_saved": 72,
- "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.11127992471059163,
- "csv_write_time_avg": 1.777542961968316e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:22:18.537710",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 35 points saved, 0 lost, 0.3% CPU",
- "details": {
- "duration": 10.028420448303223,
- "points_saved": 35,
- "points_rate": 3.4900810332420686,
- "variables_saved": 70,
- "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.1092137200491769,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:22:28.580719",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.3% CPU",
- "details": {
- "duration": 10.044001340866089,
- "points_saved": 36,
- "points_rate": 3.5842289121892668,
- "variables_saved": 72,
- "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.10911467340257433,
- "csv_write_time_avg": 1.1616282992892795e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:22:38.611725",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.031005620956421,
- "points_saved": 36,
- "points_rate": 3.5888724780285317,
- "variables_saved": 72,
- "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.11374937825732762,
- "csv_write_time_avg": 8.463859558105469e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:22:48.652697",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 35 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.040971755981445,
- "points_saved": 35,
- "points_rate": 3.485718399631028,
- "variables_saved": 70,
- "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.10770289557320731,
- "csv_write_time_avg": 4.7547476632254465e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:22:58.687697",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.035000324249268,
- "points_saved": 36,
- "points_rate": 3.5874438302714466,
- "variables_saved": 72,
- "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.111513356367747,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:23:08.720628",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.032164812088013,
- "points_saved": 36,
- "points_rate": 3.5884577929404307,
- "variables_saved": 72,
- "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.10894164111879137,
- "csv_write_time_avg": 3.7749608357747397e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:23:18.759764",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 35 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.039902210235596,
- "points_saved": 35,
- "points_rate": 3.4860897314634993,
- "variables_saved": 70,
- "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.10567408970424107,
- "csv_write_time_avg": 6.278582981654576e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:23:28.787986",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 37 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.028222560882568,
- "points_saved": 37,
- "points_rate": 3.6895870405117623,
- "variables_saved": 74,
- "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.10496509397352063,
- "csv_write_time_avg": 1.5207239099451013e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:23:32.205391",
- "level": "info",
- "event_type": "udp_streaming_stopped",
- "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)",
- "details": {}
- },
- {
- "timestamp": "2025-08-16T18:23:34.234104",
- "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-16T18:23:34.251601",
- "level": "info",
- "event_type": "udp_streaming_stopped",
- "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)",
- "details": {}
- },
- {
- "timestamp": "2025-08-16T18:23:34.339727",
- "level": "info",
- "event_type": "dataset_deactivated",
- "message": "Dataset deactivated: Fast",
- "details": {
- "dataset_id": "Fast"
- }
- },
- {
- "timestamp": "2025-08-16T18:23:34.372354",
- "level": "info",
- "event_type": "dataset_deactivated",
- "message": "Dataset deactivated: test",
- "details": {
- "dataset_id": "Test"
- }
- },
- {
- "timestamp": "2025-08-16T18:23:34.620272",
- "level": "info",
- "event_type": "dataset_deactivated",
- "message": "Dataset deactivated: DAR",
- "details": {
- "dataset_id": "DAR"
- }
- },
- {
- "timestamp": "2025-08-16T18:23:34.638294",
- "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-16T18:23:41.492942",
- "level": "info",
- "event_type": "application_started",
- "message": "Application initialization completed successfully",
- "details": {}
- },
- {
- "timestamp": "2025-08-16T18:23:41.576182",
- "level": "info",
- "event_type": "dataset_activated",
- "message": "Dataset activated: DAR",
- "details": {
- "dataset_id": "DAR",
- "variables_count": 2,
- "streaming_count": 2,
- "prefix": "gateway_phoenix"
- }
- },
- {
- "timestamp": "2025-08-16T18:23:41.594185",
- "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-16T18:23:41.612184",
- "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-16T18:23:51.576314",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 11.088732242584229,
- "points_saved": 36,
- "points_rate": 3.2465388479441004,
- "variables_saved": 72,
- "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.04650178220536974,
- "csv_write_time_avg": 0.0003892713122897678
- }
- },
- {
- "timestamp": "2025-08-16T18:24:01.594658",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 37 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.018344640731812,
- "points_saved": 37,
- "points_rate": 3.693224911585519,
- "variables_saved": 74,
- "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.044695138931274414,
- "csv_write_time_avg": 2.9254604030299833e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:24:11.614425",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.019767045974731,
- "points_saved": 36,
- "points_rate": 3.5928979021984726,
- "variables_saved": 72,
- "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.04488941695955065,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:24:21.630648",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.016222715377808,
- "points_saved": 36,
- "points_rate": 3.594169281472701,
- "variables_saved": 72,
- "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.0362715654902988,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:24:31.647847",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.01719856262207,
- "points_saved": 36,
- "points_rate": 3.5938191476337025,
- "variables_saved": 72,
- "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.03559539715449015,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:24:41.664429",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.016581773757935,
- "points_saved": 36,
- "points_rate": 3.594040443448986,
- "variables_saved": 72,
- "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.033702042367723256,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:24:51.681860",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.017431497573853,
- "points_saved": 36,
- "points_rate": 3.5937355806944056,
- "variables_saved": 72,
- "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.03262894683414035,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:25:01.699151",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.01729130744934,
- "points_saved": 36,
- "points_rate": 3.593785874353945,
- "variables_saved": 72,
- "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.04057797458436754,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:25:11.716164",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 37 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.01701283454895,
- "points_saved": 37,
- "points_rate": 3.693715942180486,
- "variables_saved": 74,
- "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.03774530178791768,
- "csv_write_time_avg": 1.7526987436655406e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:25:21.733241",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.01707649230957,
- "points_saved": 36,
- "points_rate": 3.5938629427097166,
- "variables_saved": 72,
- "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.0388162997033861,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:25:31.750935",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.01769471168518,
- "points_saved": 36,
- "points_rate": 3.593641155585192,
- "variables_saved": 72,
- "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.0382196307182312,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:25:41.768076",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.017140865325928,
- "points_saved": 36,
- "points_rate": 3.5938398475170756,
- "variables_saved": 72,
- "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.03385060363345676,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:25:51.784697",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.016620635986328,
- "points_saved": 36,
- "points_rate": 3.594026499382854,
- "variables_saved": 72,
- "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.03625632656945123,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:26:01.802073",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.01737642288208,
- "points_saved": 36,
- "points_rate": 3.593755338749915,
- "variables_saved": 72,
- "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.039837261041005455,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:26:11.818652",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.016578435897827,
- "points_saved": 36,
- "points_rate": 3.5940416411038836,
- "variables_saved": 72,
- "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.0869104266166687,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:26:21.927237",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 34 points saved, 0 lost, 0.6% CPU",
- "details": {
- "duration": 10.06232213973999,
- "points_saved": 34,
- "points_rate": 3.378941712243627,
- "variables_saved": 68,
- "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.18056527306051814,
- "csv_write_time_avg": 0.011022399453555836
- }
- },
- {
- "timestamp": "2025-08-16T18:26:32.828534",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 38 points saved, 0 lost, 33.1% CPU",
- "details": {
- "duration": 10.90151834487915,
- "points_saved": 38,
- "points_rate": 3.4857529747542015,
- "variables_saved": 76,
- "udp_points_sent": 0,
- "points_lost": 0,
- "cpu_average": 33.1,
- "cpu_max": 33.1,
- "delay_average": 0.0,
- "delay_max": 0.0,
- "read_errors": 0,
- "csv_errors": 0,
- "udp_errors": 0,
- "read_time_avg": 0.19401655699077405,
- "csv_write_time_avg": 0.01511844835783306
- }
- },
- {
- "timestamp": "2025-08-16T18:26:43.680506",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 39 points saved, 0 lost, 33.1% CPU",
- "details": {
- "duration": 10.898014307022095,
- "points_saved": 39,
- "points_rate": 3.5786335841815236,
- "variables_saved": 78,
- "udp_points_sent": 0,
- "points_lost": 0,
- "cpu_average": 33.1,
- "cpu_max": 33.1,
- "delay_average": 0.0,
- "delay_max": 0.0,
- "read_errors": 0,
- "csv_errors": 0,
- "udp_errors": 0,
- "read_time_avg": 0.14690295243874574,
- "csv_write_time_avg": 0.003972077981019631
- }
- },
- {
- "timestamp": "2025-08-16T18:26:53.718088",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 9.6% CPU",
- "details": {
- "duration": 10.037581205368042,
- "points_saved": 36,
- "points_rate": 3.586521420195077,
- "variables_saved": 72,
- "udp_points_sent": 0,
- "points_lost": 0,
- "cpu_average": 9.6,
- "cpu_max": 9.6,
- "delay_average": 0.0,
- "delay_max": 0.0,
- "read_errors": 0,
- "csv_errors": 0,
- "udp_errors": 0,
- "read_time_avg": 0.10698958900239733,
- "csv_write_time_avg": 5.351172553168402e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:27:03.766412",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 35 points saved, 0 lost, 0.3% CPU",
- "details": {
- "duration": 10.048324584960938,
- "points_saved": 35,
- "points_rate": 3.4831677364785345,
- "variables_saved": 70,
- "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.10907115255083356,
- "csv_write_time_avg": 7.459095546177455e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:27:13.799743",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.3% CPU",
- "details": {
- "duration": 10.033330202102661,
- "points_saved": 36,
- "points_rate": 3.588040986875481,
- "variables_saved": 72,
- "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.11147182517581516,
- "csv_write_time_avg": 1.020563973320855e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:27:23.898255",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 35 points saved, 0 lost, 0.3% CPU",
- "details": {
- "duration": 10.067713260650635,
- "points_saved": 35,
- "points_rate": 3.4764597574303675,
- "variables_saved": 70,
- "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.17638461249215262,
- "csv_write_time_avg": 0.011402770451136997
- }
- },
- {
- "timestamp": "2025-08-16T18:27:34.835158",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 39 points saved, 0 lost, 26.0% CPU",
- "details": {
- "duration": 10.967023134231567,
- "points_saved": 39,
- "points_rate": 3.5561154127840395,
- "variables_saved": 78,
- "udp_points_sent": 0,
- "points_lost": 0,
- "cpu_average": 26.0,
- "cpu_max": 26.0,
- "delay_average": 0.0,
- "delay_max": 0.0,
- "read_errors": 0,
- "csv_errors": 0,
- "udp_errors": 0,
- "read_time_avg": 0.1639550037873097,
- "csv_write_time_avg": 0.011529690180069361
- }
- },
- {
- "timestamp": "2025-08-16T18:27:44.887333",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 35 points saved, 0 lost, 20.8% CPU",
- "details": {
- "duration": 10.05285382270813,
- "points_saved": 35,
- "points_rate": 3.481598421429287,
- "variables_saved": 70,
- "udp_points_sent": 0,
- "points_lost": 0,
- "cpu_average": 20.8,
- "cpu_max": 20.8,
- "delay_average": 0.0,
- "delay_max": 0.0,
- "read_errors": 0,
- "csv_errors": 0,
- "udp_errors": 0,
- "read_time_avg": 0.10730040413992746,
- "csv_write_time_avg": 6.621224539620536e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:27:54.932299",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.3% CPU",
- "details": {
- "duration": 10.044966459274292,
- "points_saved": 36,
- "points_rate": 3.583884540178032,
- "variables_saved": 72,
- "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.10931764708624946,
- "csv_write_time_avg": 2.3769007788764106e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:28:04.973331",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.3% CPU",
- "details": {
- "duration": 10.041032075881958,
- "points_saved": 36,
- "points_rate": 3.5852888157254417,
- "variables_saved": 72,
- "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.10538231664233738,
- "csv_write_time_avg": 3.6491288079155816e-06
- }
- },
- {
- "timestamp": "2025-08-16T18:28:14.996801",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 35 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.023469686508179,
- "points_saved": 35,
- "points_rate": 3.4918048434975373,
- "variables_saved": 70,
- "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.10980193274361746,
- "csv_write_time_avg": 1.4087132045200894e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:28:22.596080",
- "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-16T18:28:25.026671",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.3% CPU",
- "details": {
- "duration": 10.02987003326416,
- "points_saved": 36,
- "points_rate": 3.5892788122483794,
- "variables_saved": 72,
- "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.10965166489283244,
- "csv_write_time_avg": 4.861752192179362e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:28:35.067107",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.6% CPU",
- "details": {
- "duration": 10.03954553604126,
- "points_saved": 36,
- "points_rate": 3.5858196838455028,
- "variables_saved": 72,
- "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.08615738153457642,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:28:45.083203",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.016986846923828,
- "points_saved": 36,
- "points_rate": 3.5938951053984303,
- "variables_saved": 72,
- "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.037027094099256724,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:28:55.099939",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 10.016735553741455,
- "points_saved": 36,
- "points_rate": 3.593985266642411,
- "variables_saved": 72,
- "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.04507075415717231,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:29:05.116074",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.016135454177856,
- "points_saved": 36,
- "points_rate": 3.594200594100786,
- "variables_saved": 72,
- "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.037626167138417564,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:29:15.134319",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 36 points saved, 0 lost, 0.2% CPU",
- "details": {
- "duration": 10.018244981765747,
- "points_saved": 36,
- "points_rate": 3.593443768396936,
- "variables_saved": 72,
- "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.03699025180604723,
- "csv_write_time_avg": 0.0
- }
- },
- {
- "timestamp": "2025-08-16T18:29:22.380379",
- "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-16T18:29:22.396260",
- "level": "info",
- "event_type": "udp_streaming_stopped",
- "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)",
- "details": {}
- },
- {
- "timestamp": "2025-08-16T18:29:22.906030",
- "level": "info",
- "event_type": "dataset_deactivated",
- "message": "Dataset deactivated: DAR",
- "details": {
- "dataset_id": "DAR"
- }
- },
- {
- "timestamp": "2025-08-16T18:29:22.922598",
- "level": "info",
- "event_type": "dataset_deactivated",
- "message": "Dataset deactivated: test",
- "details": {
- "dataset_id": "Test"
- }
- },
- {
- "timestamp": "2025-08-16T18:29:23.152861",
- "level": "info",
- "event_type": "dataset_deactivated",
- "message": "Dataset deactivated: Fast",
- "details": {
- "dataset_id": "Fast"
- }
- },
- {
- "timestamp": "2025-08-16T18:29:23.169976",
- "level": "info",
- "event_type": "plc_disconnection",
- "message": "Disconnected from PLC 10.1.33.11 (manually disconnected)",
- "details": {}
- },
- {
- "timestamp": "2025-08-16T18:31:59.337677",
- "level": "info",
- "event_type": "udp_streaming_stopped",
- "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)",
- "details": {}
- },
- {
- "timestamp": "2025-08-16T18:31:59.354198",
- "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-16T18:31:59.372382",
- "level": "info",
- "event_type": "udp_streaming_stopped",
- "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)",
- "details": {}
- },
- {
- "timestamp": "2025-08-16T18:31:59.388374",
- "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-16T18:32:06.856060",
- "level": "info",
- "event_type": "application_started",
- "message": "Application initialization completed successfully",
- "details": {}
- },
- {
- "timestamp": "2025-08-16T18:32:30.238313",
- "level": "info",
- "event_type": "dataset_activated",
- "message": "Dataset activated: DAR",
- "details": {
- "dataset_id": "DAR",
- "variables_count": 2,
- "streaming_count": 2,
- "prefix": "gateway_phoenix"
- }
- },
- {
- "timestamp": "2025-08-16T18:32:30.269189",
- "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-16T18:32:30.302524",
- "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-16T18:32:30.339062",
- "level": "info",
- "event_type": "plc_connection",
- "message": "Successfully connected to PLC 10.1.33.11 and auto-started CSV recording for 3 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": 3,
- "dataset_names": [
- "DAR",
- "test",
- "Fast"
- ]
- }
- },
- {
- "timestamp": "2025-08-16T18:32:40.238147",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU",
- "details": {
- "duration": 34.394169330596924,
- "points_saved": 30,
- "points_rate": 0.872240864770998,
- "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.08476141293843588,
- "csv_write_time_avg": 0.0003764793790619949
- }
- },
- {
- "timestamp": "2025-08-16T18:32:43.053315",
- "level": "info",
- "event_type": "plot_session_created",
- "message": "Plot session 'UR29' created and started",
- "details": {
- "session_id": "plot_1_1755361963053_2",
- "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-16T18:32:50.281813",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 30 points saved, 0 lost, 0.9% CPU",
- "details": {
- "duration": 10.043666124343872,
- "points_saved": 30,
- "points_rate": 2.986957115916657,
- "variables_saved": 60,
- "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.10776501496632894,
- "csv_write_time_avg": 5.62588373819987e-05
- }
- },
- {
- "timestamp": "2025-08-16T18:33:00.331566",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 29 points saved, 0 lost, 0.5% CPU",
- "details": {
- "duration": 10.049752235412598,
- "points_saved": 29,
- "points_rate": 2.885643279623539,
- "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.1179089381777007,
- "csv_write_time_avg": 0.001501214915308459
- }
- },
- {
- "timestamp": "2025-08-16T18:33:10.363911",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 30 points saved, 0 lost, 15.2% CPU",
- "details": {
- "duration": 10.032345533370972,
- "points_saved": 30,
- "points_rate": 2.990327625798958,
- "variables_saved": 60,
- "udp_points_sent": 0,
- "points_lost": 0,
- "cpu_average": 15.2,
- "cpu_max": 15.2,
- "delay_average": 0.0,
- "delay_max": 0.0,
- "read_errors": 0,
- "csv_errors": 0,
- "udp_errors": 0,
- "read_time_avg": 0.11747097174326579,
- "csv_write_time_avg": 0.0005184332529703776
- }
- },
- {
- "timestamp": "2025-08-16T18:33:20.398475",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 29 points saved, 0 lost, 7.5% CPU",
- "details": {
- "duration": 10.034563302993774,
- "points_saved": 29,
- "points_rate": 2.8900111668385167,
- "variables_saved": 58,
- "udp_points_sent": 0,
- "points_lost": 0,
- "cpu_average": 7.5,
- "cpu_max": 7.5,
- "delay_average": 0.0,
- "delay_max": 0.0,
- "read_errors": 0,
- "csv_errors": 0,
- "udp_errors": 0,
- "read_time_avg": 0.14085213891391096,
- "csv_write_time_avg": 0.0021928918772730335
- }
- },
- {
- "timestamp": "2025-08-16T18:33:30.434769",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 30 points saved, 0 lost, 10.1% CPU",
- "details": {
- "duration": 10.036294221878052,
- "points_saved": 30,
- "points_rate": 2.9891511086435867,
- "variables_saved": 60,
- "udp_points_sent": 0,
- "points_lost": 0,
- "cpu_average": 10.1,
- "cpu_max": 10.1,
- "delay_average": 0.0,
- "delay_max": 0.0,
- "read_errors": 0,
- "csv_errors": 0,
- "udp_errors": 0,
- "read_time_avg": 0.11473293304443359,
- "csv_write_time_avg": 0.0026844898859659833
- }
- },
- {
- "timestamp": "2025-08-16T18:33:40.481282",
- "level": "info",
- "event_type": "performance_report",
- "message": "Performance report: 30 points saved, 0 lost, 11.5% CPU",
- "details": {
- "duration": 10.045766592025757,
- "points_saved": 30,
- "points_rate": 2.986332573545332,
- "variables_saved": 60,
- "udp_points_sent": 0,
- "points_lost": 0,
- "cpu_average": 11.5,
- "cpu_max": 11.5,
- "delay_average": 0.0,
- "delay_max": 0.0,
- "read_errors": 0,
- "csv_errors": 0,
- "udp_errors": 0,
- "read_time_avg": 0.1166374127070109,
- "csv_write_time_avg": 0.0025274038314819338
- }
- },
- {
- "timestamp": "2025-08-16T18:33:50.514989",
- "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-16T18:33:50.549123",
- "level": "info",
- "event_type": "udp_streaming_stopped",
- "message": "UDP streaming to PlotJuggler stopped (CSV recording continues)",
- "details": {}
- },
- {
- "timestamp": "2025-08-16T18:33:50.625004",
- "level": "info",
- "event_type": "dataset_deactivated",
- "message": "Dataset deactivated: DAR",
- "details": {
- "dataset_id": "DAR"
- }
- },
{
"timestamp": "2025-08-16T18:33:50.659332",
"level": "info",
@@ -21766,8 +20222,1963 @@
"read_time_avg": 0.048909878730773924,
"csv_write_time_avg": 3.5127003987630206e-06
}
+ },
+ {
+ "timestamp": "2025-08-16T20:58:10.227847",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.029785394668579,
+ "points_saved": 30,
+ "points_rate": 2.991090917652811,
+ "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.04086577892303467,
+ "csv_write_time_avg": 1.8358230590820313e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T20:58:20.258709",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.030862092971802,
+ "points_saved": 30,
+ "points_rate": 2.990769858257719,
+ "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.0432463010152181,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T20:58:30.291492",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.032277584075928,
+ "points_saved": 30,
+ "points_rate": 2.990347879490348,
+ "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.03464295069376628,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T20:58:40.323823",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.032836675643921,
+ "points_saved": 30,
+ "points_rate": 2.9901812388543205,
+ "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.05765830675760905,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T20:58:50.383251",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.059427976608276,
+ "points_saved": 30,
+ "points_rate": 2.9822769316267883,
+ "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.10168923536936442,
+ "csv_write_time_avg": 2.4620691935221354e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T20:59:00.448485",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.065234184265137,
+ "points_saved": 30,
+ "points_rate": 2.9805565822699536,
+ "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.0731366237004598,
+ "csv_write_time_avg": 2.3015340169270833e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T20:59:10.481759",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.033273458480835,
+ "points_saved": 30,
+ "points_rate": 2.9900510659999875,
+ "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.03701192537943522,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T20:59:20.510861",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.029102087020874,
+ "points_saved": 30,
+ "points_rate": 2.9912947081099506,
+ "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.04303884506225586,
+ "csv_write_time_avg": 0.00041495164235432944
+ }
+ },
+ {
+ "timestamp": "2025-08-16T20:59:30.540421",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 6.9% CPU",
+ "details": {
+ "duration": 10.029560565948486,
+ "points_saved": 30,
+ "points_rate": 2.9911579677631597,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 6.9,
+ "cpu_max": 6.9,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.03464994430541992,
+ "csv_write_time_avg": 0.0008058627446492513
+ }
+ },
+ {
+ "timestamp": "2025-08-16T20:59:40.571145",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 8.9% CPU",
+ "details": {
+ "duration": 10.030724048614502,
+ "points_saved": 30,
+ "points_rate": 2.990811017689572,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 8.9,
+ "cpu_max": 8.9,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.05179858207702637,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T20:59:50.632606",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 4.7% CPU",
+ "details": {
+ "duration": 10.061460733413696,
+ "points_saved": 29,
+ "points_rate": 2.8822852633805143,
+ "variables_saved": 58,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 4.7,
+ "cpu_max": 4.7,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.10567300895164752,
+ "csv_write_time_avg": 9.923145688813308e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:00:00.703314",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 5.6% CPU",
+ "details": {
+ "duration": 10.070707082748413,
+ "points_saved": 30,
+ "points_rate": 2.978936806869439,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 5.6,
+ "cpu_max": 5.6,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.049492661158243814,
+ "csv_write_time_avg": 6.16153081258138e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:00:10.734328",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 3.0% CPU",
+ "details": {
+ "duration": 10.031014680862427,
+ "points_saved": 30,
+ "points_rate": 2.99072436383083,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 3.0,
+ "cpu_max": 3.0,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.035256361961364745,
+ "csv_write_time_avg": 6.663004557291666e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:00:20.764278",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.02994990348816,
+ "points_saved": 30,
+ "points_rate": 2.9910418585008856,
+ "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.03840560913085937,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:00:30.794483",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.03020453453064,
+ "points_saved": 30,
+ "points_rate": 2.990965926638887,
+ "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.04851470788319905,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:00:40.831230",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 31 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.036747694015503,
+ "points_saved": 31,
+ "points_rate": 3.0886499237680365,
+ "variables_saved": 62,
+ "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.04975556558178317,
+ "csv_write_time_avg": 3.220958094443044e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:00:50.862266",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU",
+ "details": {
+ "duration": 10.031035661697388,
+ "points_saved": 30,
+ "points_rate": 2.990718108455373,
+ "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.04460055033365885,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:01:00.898584",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 31 points saved, 0 lost, 0.6% CPU",
+ "details": {
+ "duration": 10.036318302154541,
+ "points_saved": 31,
+ "points_rate": 3.0887820679566422,
+ "variables_saved": 62,
+ "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.03556685293874433,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:01:10.928288",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.029704332351685,
+ "points_saved": 30,
+ "points_rate": 2.99111509231956,
+ "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.032610265413920085,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:01:20.961143",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU",
+ "details": {
+ "duration": 10.032854795455933,
+ "points_saved": 30,
+ "points_rate": 2.9901758384450616,
+ "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.034676305452982586,
+ "csv_write_time_avg": 4.57763671875e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:01:30.993162",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.031019926071167,
+ "points_saved": 29,
+ "points_rate": 2.891032039985029,
+ "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.06415742841260187,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:01:41.055776",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.6% CPU",
+ "details": {
+ "duration": 10.062596559524536,
+ "points_saved": 29,
+ "points_rate": 2.88195992241691,
+ "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.10049709780462857,
+ "csv_write_time_avg": 1.1123459914634968e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:01:51.119697",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.064937353134155,
+ "points_saved": 30,
+ "points_rate": 2.9806444836597215,
+ "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.1067502498626709,
+ "csv_write_time_avg": 1.6983350118001302e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:02:01.166414",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.046205997467041,
+ "points_saved": 29,
+ "points_rate": 2.886661890798556,
+ "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.10892577829032109,
+ "csv_write_time_avg": 3.5458597643622035e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:02:11.231260",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.065356492996216,
+ "points_saved": 30,
+ "points_rate": 2.9805203641694082,
+ "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.12599786917368572,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:02:21.280203",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.048943519592285,
+ "points_saved": 30,
+ "points_rate": 2.9853884581507915,
+ "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.10493502616882325,
+ "csv_write_time_avg": 3.886222839355469e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:02:31.356646",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.6% CPU",
+ "details": {
+ "duration": 10.075573682785034,
+ "points_saved": 30,
+ "points_rate": 2.977497951432535,
+ "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.10974334875742595,
+ "csv_write_time_avg": 4.678567250569661e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:02:41.434864",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.6% CPU",
+ "details": {
+ "duration": 10.079087018966675,
+ "points_saved": 29,
+ "points_rate": 2.877244729153368,
+ "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.12031308535871835,
+ "csv_write_time_avg": 7.267655997440733e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:02:51.514835",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.079971313476562,
+ "points_saved": 30,
+ "points_rate": 2.9761989461111926,
+ "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.12821188767751057,
+ "csv_write_time_avg": 1.4050801595052083e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:03:01.590584",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.07439374923706,
+ "points_saved": 30,
+ "points_rate": 2.977846682066791,
+ "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.13280317783355713,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:03:11.664137",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.074907779693604,
+ "points_saved": 29,
+ "points_rate": 2.878438258109986,
+ "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.10888855210665999,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:03:21.729733",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.06559681892395,
+ "points_saved": 30,
+ "points_rate": 2.980449201342749,
+ "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.1158106803894043,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:03:31.797006",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.065967798233032,
+ "points_saved": 30,
+ "points_rate": 2.9803393574601107,
+ "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.13099360466003418,
+ "csv_write_time_avg": 3.147125244140625e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:03:41.864065",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.6% CPU",
+ "details": {
+ "duration": 10.068363904953003,
+ "points_saved": 29,
+ "points_rate": 2.8803090823657875,
+ "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.11925562496843009,
+ "csv_write_time_avg": 2.7771653800175107e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:03:51.924057",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.059991359710693,
+ "points_saved": 30,
+ "points_rate": 2.982109917126484,
+ "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.10814343293507894,
+ "csv_write_time_avg": 0.00011624495188395182
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:04:01.964007",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 4.2% CPU",
+ "details": {
+ "duration": 10.039950609207153,
+ "points_saved": 30,
+ "points_rate": 2.9880625082446572,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 4.2,
+ "cpu_max": 4.2,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.07931725978851319,
+ "csv_write_time_avg": 0.003016050656636556
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:04:12.001799",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 8.7% CPU",
+ "details": {
+ "duration": 10.037791728973389,
+ "points_saved": 30,
+ "points_rate": 2.988705166436865,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 8.7,
+ "cpu_max": 8.7,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.12447572549184163,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:04:22.075130",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 1.1% CPU",
+ "details": {
+ "duration": 10.073331356048584,
+ "points_saved": 30,
+ "points_rate": 2.9781607434154687,
+ "variables_saved": 60,
+ "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.07363708019256592,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:04:32.104273",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.029143333435059,
+ "points_saved": 29,
+ "points_rate": 2.8915729924130296,
+ "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.07177314265020962,
+ "csv_write_time_avg": 0.0021543173954404636
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:04:42.168294",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 12.1% CPU",
+ "details": {
+ "duration": 10.063512086868286,
+ "points_saved": 30,
+ "points_rate": 2.981066623763141,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 12.1,
+ "cpu_max": 12.1,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.09925882021586101,
+ "csv_write_time_avg": 1.6069412231445314e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:04:52.214850",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.047064542770386,
+ "points_saved": 30,
+ "points_rate": 2.985946778015599,
+ "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.10752104123433431,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:05:02.285436",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.0% CPU",
+ "details": {
+ "duration": 10.070586204528809,
+ "points_saved": 29,
+ "points_rate": 2.8796734778913375,
+ "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.1336237151047279,
+ "csv_write_time_avg": 5.47540598902209e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:05:12.373320",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 4.0% CPU",
+ "details": {
+ "duration": 10.087883949279785,
+ "points_saved": 30,
+ "points_rate": 2.973864504274142,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 4.0,
+ "cpu_max": 4.0,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.11697720686594645,
+ "csv_write_time_avg": 0.002504730224609375
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:05:22.419899",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 9.8% CPU",
+ "details": {
+ "duration": 10.045931577682495,
+ "points_saved": 30,
+ "points_rate": 2.9862835286123586,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 9.8,
+ "cpu_max": 9.8,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.03407781918843587,
+ "csv_write_time_avg": 6.660620371500651e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:05:32.450674",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 3.9% CPU",
+ "details": {
+ "duration": 10.03142237663269,
+ "points_saved": 30,
+ "points_rate": 2.990602815198206,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 3.9,
+ "cpu_max": 3.9,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.039195919036865236,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:05:42.486439",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 1.2% CPU",
+ "details": {
+ "duration": 10.035764694213867,
+ "points_saved": 30,
+ "points_rate": 2.9893088283842024,
+ "variables_saved": 60,
+ "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.03542471726735433,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:05:52.518557",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.0% CPU",
+ "details": {
+ "duration": 10.032118320465088,
+ "points_saved": 30,
+ "points_rate": 2.9903953523755096,
+ "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.06971513430277507,
+ "csv_write_time_avg": 0.00163878599802653
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:06:02.580615",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 8.4% CPU",
+ "details": {
+ "duration": 10.06105661392212,
+ "points_saved": 30,
+ "points_rate": 2.9817941744296625,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 8.4,
+ "cpu_max": 8.4,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.1075384537378947,
+ "csv_write_time_avg": 0.0037407239278157553
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:06:12.646709",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 10.1% CPU",
+ "details": {
+ "duration": 10.067095279693604,
+ "points_saved": 29,
+ "points_rate": 2.8806720503079046,
+ "variables_saved": 58,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 10.1,
+ "cpu_max": 10.1,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.1194514406138453,
+ "csv_write_time_avg": 0.0007159956570329337
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:06:22.700388",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 10.4% CPU",
+ "details": {
+ "duration": 10.053678750991821,
+ "points_saved": 30,
+ "points_rate": 2.983982355417953,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 10.4,
+ "cpu_max": 10.4,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.13290343284606934,
+ "csv_write_time_avg": 0.0011782566706339517
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:06:32.751642",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 8.6% CPU",
+ "details": {
+ "duration": 10.051254510879517,
+ "points_saved": 30,
+ "points_rate": 2.9847020556019035,
+ "variables_saved": 60,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 8.6,
+ "cpu_max": 8.6,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.06834772427876791,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:06:42.781420",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.6% CPU",
+ "details": {
+ "duration": 10.02977728843689,
+ "points_saved": 30,
+ "points_rate": 2.991093335101901,
+ "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.03210315704345703,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:06:52.813943",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.032523393630981,
+ "points_saved": 30,
+ "points_rate": 2.990274612172359,
+ "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.047539130846659346,
+ "csv_write_time_avg": 0.00024136702219645182
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:07:02.866672",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 8.2% CPU",
+ "details": {
+ "duration": 10.052728652954102,
+ "points_saved": 29,
+ "points_rate": 2.8847888967417856,
+ "variables_saved": 58,
+ "udp_points_sent": 0,
+ "points_lost": 0,
+ "cpu_average": 8.2,
+ "cpu_max": 8.2,
+ "delay_average": 0.0,
+ "delay_max": 0.0,
+ "read_errors": 0,
+ "csv_errors": 0,
+ "udp_errors": 0,
+ "read_time_avg": 0.09650977726640372,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:07:12.920133",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.6% CPU",
+ "details": {
+ "duration": 10.05346155166626,
+ "points_saved": 30,
+ "points_rate": 2.984046822661574,
+ "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.11041448116302491,
+ "csv_write_time_avg": 3.325144449869792e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:07:22.984963",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.064829587936401,
+ "points_saved": 30,
+ "points_rate": 2.9806763977362998,
+ "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.13236002127329508,
+ "csv_write_time_avg": 1.728534698486328e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:07:33.051485",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.066522598266602,
+ "points_saved": 30,
+ "points_rate": 2.9801751008998707,
+ "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.09970244566599527,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:07:43.120939",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.068278789520264,
+ "points_saved": 29,
+ "points_rate": 2.880333431984932,
+ "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.100341089840593,
+ "csv_write_time_avg": 8.00757572568696e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:07:53.182324",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.062559366226196,
+ "points_saved": 30,
+ "points_rate": 2.9813488704167543,
+ "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.11200049718221029,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:08:03.248668",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.066344738006592,
+ "points_saved": 30,
+ "points_rate": 2.9802277570260136,
+ "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.11709380944569905,
+ "csv_write_time_avg": 9.147326151529948e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:08:13.284417",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.035748958587646,
+ "points_saved": 29,
+ "points_rate": 2.8896697316431514,
+ "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.10250608674411116,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:08:23.345197",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.060779333114624,
+ "points_saved": 30,
+ "points_rate": 2.9818763543750815,
+ "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.10127473672231038,
+ "csv_write_time_avg": 6.071726481119791e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:08:33.393740",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.048542737960815,
+ "points_saved": 29,
+ "points_rate": 2.8859906113993468,
+ "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.10355253055177886,
+ "csv_write_time_avg": 1.8687083803374192e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:08:43.444212",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.050472497940063,
+ "points_saved": 29,
+ "points_rate": 2.8854364813140694,
+ "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.124221448240609,
+ "csv_write_time_avg": 8.270658295730065e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:08:53.512428",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.06821584701538,
+ "points_saved": 30,
+ "points_rate": 2.979673902093904,
+ "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.10421998500823974,
+ "csv_write_time_avg": 6.167093912760417e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:09:03.581941",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.068513631820679,
+ "points_saved": 30,
+ "points_rate": 2.9795857757184296,
+ "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.10213418006896972,
+ "csv_write_time_avg": 2.773602803548177e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:09:13.634389",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.053447008132935,
+ "points_saved": 29,
+ "points_rate": 2.8845827681331464,
+ "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.09918859087187669,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:09:23.709649",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.075260877609253,
+ "points_saved": 30,
+ "points_rate": 2.977590393383309,
+ "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.10045295556386312,
+ "csv_write_time_avg": 5.0942103068033855e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:09:33.787822",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.07817268371582,
+ "points_saved": 30,
+ "points_rate": 2.976730101923497,
+ "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.11741201082865398,
+ "csv_write_time_avg": 5.602836608886719e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:09:43.859536",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.071713924407959,
+ "points_saved": 30,
+ "points_rate": 2.978639010714701,
+ "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.09971142609914144,
+ "csv_write_time_avg": 2.9921531677246094e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:09:53.920726",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.061189889907837,
+ "points_saved": 29,
+ "points_rate": 2.882362853432403,
+ "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.09876858777013318,
+ "csv_write_time_avg": 1.4247565433896822e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:10:03.965291",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.044565200805664,
+ "points_saved": 30,
+ "points_rate": 2.9866897571229596,
+ "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.049120855331420896,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:10:13.994418",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.02912712097168,
+ "points_saved": 30,
+ "points_rate": 2.991287241465679,
+ "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.03253419399261474,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:10:24.025284",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.030865907669067,
+ "points_saved": 30,
+ "points_rate": 2.990768720880178,
+ "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.03693994681040446,
+ "csv_write_time_avg": 7.6214472452799475e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:10:34.056594",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.031309366226196,
+ "points_saved": 30,
+ "points_rate": 2.9906365066364287,
+ "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.03688843250274658,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:10:44.087566",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 31 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.030972242355347,
+ "points_saved": 31,
+ "points_rate": 3.0904282507236776,
+ "variables_saved": 62,
+ "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.03543023140199723,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:10:54.126966",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.039400577545166,
+ "points_saved": 29,
+ "points_rate": 2.88861867558741,
+ "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.08817623401510305,
+ "csv_write_time_avg": 1.2110019552296606e-05
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:11:04.180019",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.0530526638031,
+ "points_saved": 30,
+ "points_rate": 2.9841681928134762,
+ "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.06117257277170817,
+ "csv_write_time_avg": 1.8358230590820313e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:11:14.210427",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.030407905578613,
+ "points_saved": 30,
+ "points_rate": 2.9909052834546137,
+ "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.03783682187398275,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:11:24.240279",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.5% CPU",
+ "details": {
+ "duration": 10.029852628707886,
+ "points_saved": 30,
+ "points_rate": 2.9910708671962616,
+ "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.06331098874409993,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:11:34.300299",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.06001901626587,
+ "points_saved": 30,
+ "points_rate": 2.9821017188430283,
+ "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.11557511488596599,
+ "csv_write_time_avg": 4.855791727701823e-06
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:11:44.353903",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.053604364395142,
+ "points_saved": 29,
+ "points_rate": 2.8845376194336385,
+ "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.1047433409197577,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:11:54.419062",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.3% CPU",
+ "details": {
+ "duration": 10.0641610622406,
+ "points_saved": 30,
+ "points_rate": 2.9808743932523125,
+ "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.10392646789550782,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:12:04.462920",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 30 points saved, 0 lost, 0.8% CPU",
+ "details": {
+ "duration": 10.044856309890747,
+ "points_saved": 30,
+ "points_rate": 2.9866032001334117,
+ "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.12994245688120523,
+ "csv_write_time_avg": 0.0
+ }
+ },
+ {
+ "timestamp": "2025-08-16T21:12:14.514830",
+ "level": "info",
+ "event_type": "performance_report",
+ "message": "Performance report: 29 points saved, 0 lost, 0.2% CPU",
+ "details": {
+ "duration": 10.051910161972046,
+ "points_saved": 29,
+ "points_rate": 2.885023794752121,
+ "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.09582604210952232,
+ "csv_write_time_avg": 4.039139583193023e-05
+ }
}
],
- "last_updated": "2025-08-16T20:58:00.198061",
+ "last_updated": "2025-08-16T21:12:14.514830",
"total_entries": 1000
}
\ No newline at end of file
diff --git a/frontend/src/components/PlotHistoricalManager.jsx b/frontend/src/components/PlotHistoricalManager.jsx
index 90a290c..930ec10 100644
--- a/frontend/src/components/PlotHistoricalManager.jsx
+++ b/frontend/src/components/PlotHistoricalManager.jsx
@@ -94,145 +94,6 @@ function ConfirmationDialog({ isOpen, onClose, onConfirm, title, message, itemNa
)
}
-// Time Range Selector Component
-function TimeRangeSelector({ startTime, endTime, onTimeRangeChange, isLoading }) {
- const [localStartTime, setLocalStartTime] = useState('')
- const [localEndTime, setLocalEndTime] = useState('')
- const toast = useToast()
-
- useEffect(() => {
- // Initialize with current values with safe date handling
- if (startTime) {
- const startDate = new Date(startTime)
- if (!isNaN(startDate.getTime())) {
- setLocalStartTime(startDate.toISOString().slice(0, 16))
- }
- }
- if (endTime) {
- const endDate = new Date(endTime)
- if (!isNaN(endDate.getTime())) {
- setLocalEndTime(endDate.toISOString().slice(0, 16))
- }
- }
- }, [startTime, endTime])
-
- const handleApplyTimeRange = () => {
- if (localStartTime && localEndTime) {
- const start = new Date(localStartTime)
- const end = new Date(localEndTime)
-
- // Validate the time range
- if (start >= end) {
- toast({
- title: "Invalid Time Range",
- description: "Start time must be before end time",
- status: "error",
- duration: 3000,
- isClosable: true
- })
- return
- }
-
- if (isNaN(start.getTime()) || isNaN(end.getTime())) {
- toast({
- title: "Invalid Date",
- description: "Please enter valid dates",
- status: "error",
- duration: 3000,
- isClosable: true
- })
- return
- }
-
- onTimeRangeChange(start, end)
- }
- }
-
- const handleQuickRange = (hours) => {
- const end = new Date()
- const start = new Date(end.getTime() - hours * 60 * 60 * 1000)
-
- // Update local state
- setLocalStartTime(start.toISOString().slice(0, 16))
- setLocalEndTime(end.toISOString().slice(0, 16))
-
- // Immediately apply the time range
- onTimeRangeChange(start, end)
-
- toast({
- title: "Time Range Updated",
- description: `Set to last ${hours} hour${hours !== 1 ? 's' : ''}`,
- status: "info",
- duration: 2000,
- isClosable: true
- })
- }
-
- return (
-
-
- 📅 Time Range Selection
-
-
-
-
-
- Start Time
- setLocalStartTime(e.target.value)}
- size="sm"
- />
-
-
- End Time
- setLocalEndTime(e.target.value)}
- size="sm"
- />
-
-
-
-
-
-
-
- Quick Ranges:
-
-
-
-
-
-
-
-
-
-
-
- )
-}
-
// Collapsible Plot Items Form - Each item in the array is individually collapsible
function CollapsiblePlotItemsForm({ data, schema, uiSchema, onSave, title, icon, getItemLabel, isExpanded, onToggleExpansion }) {
const [formData, setFormData] = useState(data)
@@ -431,14 +292,6 @@ export default function PlotHistoricalManager() {
const [booleanVariables, setBooleanVariables] = useState([])
const [selectedPlotId, setSelectedPlotId] = useState('')
- const [customTimeRange, setCustomTimeRange] = useState(() => {
- const now = new Date()
- const twentyFourHoursAgo = new Date(now.getTime() - 24 * 60 * 60 * 1000)
- return {
- start: twentyFourHoursAgo,
- end: now
- }
- })
const [isLoading, setIsLoading] = useState(false)
const [isLoadingHistoricalData, setIsLoadingHistoricalData] = useState(false)
@@ -641,16 +494,22 @@ export default function PlotHistoricalManager() {
// Create historical session
const sessionId = `historical_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`
+ // Default time range - individual charts will manage their own time ranges
+ const defaultTimeRange = {
+ start: new Date(Date.now() - 24 * 60 * 60 * 1000), // 24 hours ago
+ end: new Date()
+ }
+
const newSession = {
id: sessionId,
plotId: selectedPlotId,
name: plotDef.name,
variables: variableNames,
- timeRange: { ...customTimeRange },
+ timeRange: defaultTimeRange,
config: {
...plotDef,
variables: variableNames,
- time_window: Math.floor((customTimeRange.end - customTimeRange.start) / 1000),
+ time_window: 86400, // 24 hours in seconds
y_min: plotDef.y_min,
y_max: plotDef.y_max,
trigger_variable: plotDef.trigger_variable,
@@ -696,11 +555,6 @@ export default function PlotHistoricalManager() {
})
}
- const handleTimeRangeChange = (start, end) => {
- console.log('📅 Time range changed:', { start, end })
- setCustomTimeRange({ start, end })
- }
-
const bgColor = useColorModeValue('gray.50', 'gray.900')
const cardBgColor = useColorModeValue('white', 'gray.800')
@@ -758,14 +612,6 @@ export default function PlotHistoricalManager() {
- {/* Time Range Selector */}
-
-
{/* Plot Creation */}
@@ -852,36 +698,6 @@ export default function PlotHistoricalManager() {
- {/* Plot Definitions Configuration */}
- {plotDefinitionsSchema && (
- savePlotDefinitions({ plots: newPlots })}
- title="Plot Definitions"
- icon="📊"
- getItemLabel={(item) => item.name || 'Unnamed Plot'}
- isExpanded={isDefinitionsExpanded}
- onToggleExpansion={() => setIsDefinitionsExpanded(!isDefinitionsExpanded)}
- />
- )}
-
- {/* Plot Variables Configuration */}
- {plotVariablesSchema && (
- savePlotVariables({ variables: newVariables })}
- title="Plot Variables"
- icon="🔢"
- getItemLabel={(item) => `${item.plot_id}: ${item.variable_name}` || 'Unnamed Variable'}
- isExpanded={isVariablesExpanded}
- onToggleExpansion={() => setIsVariablesExpanded(!isVariablesExpanded)}
- />
- )}
-
{isLoading && (
diff --git a/frontend/src/components/PlotHistoricalSession.jsx b/frontend/src/components/PlotHistoricalSession.jsx
index c9523e6..1a7d4fe 100644
--- a/frontend/src/components/PlotHistoricalSession.jsx
+++ b/frontend/src/components/PlotHistoricalSession.jsx
@@ -46,7 +46,7 @@ import {
Progress,
Tooltip
} from '@chakra-ui/react'
-import { SettingsIcon, RepeatIcon, ViewIcon, DeleteIcon, TimeIcon, CalendarIcon, ViewOffIcon } from '@chakra-ui/icons'
+import { SettingsIcon, RepeatIcon, ViewIcon, DeleteIcon, TimeIcon, CalendarIcon, ViewOffIcon, StarIcon, ExternalLinkIcon, ChevronUpIcon, ChevronDownIcon } from '@chakra-ui/icons'
import ChartjsHistoricalPlot from './ChartjsHistoricalPlot.jsx'
import TimePointSelector from './TimePointSelector.jsx'
import DataAvailabilityBar from './DataAvailabilityBar.jsx'
@@ -171,8 +171,8 @@ export default function PlotHistoricalSession({
const { isOpen: isConfigModalOpen, onOpen: onConfigModalOpen, onClose: onConfigModalClose } = useDisclosure()
const { isOpen: isFullscreen, onOpen: openFullscreen, onClose: closeFullscreen } = useDisclosure()
- // NEW: Simple plot mode toggle
- const [isSimplePlot, setIsSimplePlot] = useState(false)
+ // NEW: Simple plot mode toggle (default to true for better performance)
+ const [isSimplePlot, setIsSimplePlot] = useState(true)
// Keep track of the last loaded data range for optimization
const [loadedDataRange, setLoadedDataRange] = useState(null)
@@ -438,6 +438,17 @@ export default function PlotHistoricalSession({
const infoBgColor = useColorModeValue('gray.50', 'gray.700')
const subtleTextColor = useColorModeValue('gray.500', 'gray.400')
const smallTextColor = useColorModeValue('gray.400', 'gray.500')
+
+ // Additional color mode values for conditional elements
+ const whiteAlphaBg = useColorModeValue('whiteAlpha.800', 'blackAlpha.800')
+ const inputBg = useColorModeValue('white', 'gray.700')
+ const inputHoverBg = useColorModeValue('gray.50', 'gray.600')
+ const editFieldColor = useColorModeValue('gray.900', 'gray.100')
+ const editFieldBg = useColorModeValue('gray.50', 'gray.600')
+ const calendarFilter = useColorModeValue('none', 'invert(1)')
+ const modalBg = useColorModeValue('white', 'gray.700')
+ const modalTextColor = useColorModeValue('gray.600', 'gray.300')
+ const highlightBg = useColorModeValue('blue.50', 'blue.900')
// Format time range for display
const formatTimeRange = (timeRange) => {
@@ -552,20 +563,20 @@ export default function PlotHistoricalSession({
colorScheme={showDataPreview ? 'blue' : 'gray'}
/>
-
+
}
+ icon={isSimplePlot ? : }
size="sm"
variant="ghost"
onClick={() => setIsSimplePlot(!isSimplePlot)}
- colorScheme={isSimplePlot ? 'blue' : 'gray'}
+ colorScheme={isSimplePlot ? 'orange' : 'gray'}
/>
}
+ leftIcon={}
onClick={openFullscreen}
>
Fullscreen
@@ -582,7 +593,7 @@ export default function PlotHistoricalSession({
: }
+ icon={isExpanded ? : }
size="sm"
variant="ghost"
onClick={() => setIsExpanded(!isExpanded)}
@@ -687,7 +698,7 @@ export default function PlotHistoricalSession({
display="flex"
alignItems="center"
justifyContent="center"
- bg={useColorModeValue('whiteAlpha.800', 'blackAlpha.800')}
+ bg={whiteAlphaBg}
backdropFilter="blur(2px)"
>
@@ -728,6 +739,34 @@ export default function PlotHistoricalSession({
}
onChange={(e) => setCentralTime(new Date(e.target.value))}
size="sm"
+ bg={inputBg}
+ _hover={{ bg: inputHoverBg }}
+ sx={{
+ '&::-webkit-datetime-edit': {
+ color: editFieldColor
+ },
+ '&::-webkit-datetime-edit-fields-wrapper': {
+ background: 'transparent'
+ },
+ '&::-webkit-datetime-edit-hour-field': {
+ background: editFieldBg,
+ borderRadius: '2px',
+ padding: '1px 2px'
+ },
+ '&::-webkit-datetime-edit-minute-field': {
+ background: editFieldBg,
+ borderRadius: '2px',
+ padding: '1px 2px'
+ },
+ '&::-webkit-datetime-edit-second-field': {
+ background: editFieldBg,
+ borderRadius: '2px',
+ padding: '1px 2px'
+ },
+ '&::-webkit-calendar-picker-indicator': {
+ filter: calendarFilter
+ }
+ }}
/>
@@ -830,12 +869,12 @@ export default function PlotHistoricalSession({
{/* Fullscreen Modal */}
-
+
📈 {session.name} - Fullscreen Mode
-
+
Zoom: Drag to select area | Pan: Shift + Drag | Double-click to reset
@@ -904,7 +943,7 @@ export default function PlotHistoricalSession({
{/* Time range info */}
-
+
Range: {timeRangeSeconds}s
From: {formatCentralTimeInfo().start}
diff --git a/frontend/src/components/TimePointSelector.jsx b/frontend/src/components/TimePointSelector.jsx
index cd9544e..d0bc679 100644
--- a/frontend/src/components/TimePointSelector.jsx
+++ b/frontend/src/components/TimePointSelector.jsx
@@ -203,6 +203,34 @@ export default function TimePointSelector({
'& .react-datepicker__day--selected': {
backgroundColor: 'blue.500',
color: 'white'
+ },
+ // Time picker specific styles
+ '& .react-datepicker__time-container': {
+ backgroundColor: useColorModeValue('white', 'gray.800'),
+ borderLeft: '1px solid',
+ borderColor: borderColor
+ },
+ '& .react-datepicker__time-box': {
+ backgroundColor: useColorModeValue('white', 'gray.800')
+ },
+ '& .react-datepicker__time-list': {
+ backgroundColor: useColorModeValue('white', 'gray.800'),
+ '& .react-datepicker__time-list-item': {
+ color: textColor,
+ backgroundColor: useColorModeValue('white', 'gray.800'),
+ '&:hover': {
+ backgroundColor: useColorModeValue('gray.100', 'gray.700')
+ },
+ '&--selected': {
+ backgroundColor: 'blue.500',
+ color: 'white',
+ fontWeight: 'bold'
+ }
+ }
+ },
+ '& .react-datepicker__time-name': {
+ color: textColor,
+ backgroundColor: useColorModeValue('gray.50', 'gray.700')
}
}}
>