From d7df607f924ab4ac4f51a7bb0247a52101cb5779 Mon Sep 17 00:00:00 2001 From: Aaska Black Wolf Date: Thu, 4 Jun 2026 13:07:31 +0200 Subject: [PATCH] timeout to prevent blocked process due to serial interface not receiving any data --- config.json | 3 ++- worker.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/config.json b/config.json index 926fadc..b72b868 100644 --- a/config.json +++ b/config.json @@ -2,5 +2,6 @@ "device": "/dev/serial/by-id/usb-VictronEnergy_BV_VE_Direct_cable_VEAWDESA-if00-port0", "database": "VEDirect.db", "logfile": "VEDirect.log", - "loglevel": "off" + "loglevel": "off", + "timeout": 30 } diff --git a/worker.php b/worker.php index 5f39433..90a56b2 100644 --- a/worker.php +++ b/worker.php @@ -105,7 +105,8 @@ $bytesToRead = $config->bytesToRead; writeLog("Reading $bytesToRead Byte from VE.Direct interface\r\n", 3); $dataStream = ""; - while(strlen($dataStream) < $bytesToRead) + $startTime = time(); + while(strlen($dataStream) < $bytesToRead && time() < $startTime + $config->timeout) $dataStream .= dio_read($VEinterface, $bytesToRead); dio_close($VEinterface); writeLog($dataStream . "\r\n\r\n", 4);