Skip to content

Commit 65b4b83

Browse files
fix: fix socket connecting and async function
1 parent 6065d46 commit 65b4b83

File tree

3 files changed

+22
-18
lines changed

3 files changed

+22
-18
lines changed

IdleAlgorithm.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from confs import configs
55
import utils
66
import numpy as np
7+
import time
78

89

910
class IdleAlgorithm:
@@ -18,21 +19,24 @@ def __init__(
1819
self._image_extractor = image_extractor
1920
self._model_predictor = model_predictor
2021
self._reporter = reporter
22+
self._min_epoch_time = 2 # replace on config in future
2123

22-
async def run(self):
23-
iter_idx = 0
24+
async def start(self) -> None:
2425
while True:
25-
iter_idx += 1
26-
if iter_idx % 60 == 0:
27-
self._logger.info("60 iterations passed")
26+
start_epoch_time = time.time()
27+
self._run_one_idle_epoch()
28+
end_epoch_time = time.time()
29+
passed_time = end_epoch_time - start_epoch_time
30+
if passed_time < self._min_epoch_time:
31+
await asyncio.sleep(self._min_epoch_time - passed_time)
32+
33+
def _run_one_idle_epoch(self) -> None:
2834
img, start_tracking = self._image_extractor.get_snapshot()
2935
if img is None:
30-
asyncio.sleep(1)
31-
continue
36+
return
3237
preds = self._model_predictor.predict(img)
3338
if preds is None:
34-
asyncio.sleep(1)
35-
continue
39+
return
3640
if preds.size != 0 and not np.any(preds == 1.):
3741
self._logger.info("Telephone is detected")
3842
if utils.bboxes_not_equal(prev_preds, preds, configs["threshold"]):
@@ -42,4 +46,3 @@ async def run(self):
4246
else:
4347
self._logger.debug("Equal bboxes")
4448
prev_preds = preds
45-
asyncio.sleep(2)

connection/ImageHTTPExtractor.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ def get_snapshot(self) -> Tuple[Union[cv2.Mat, None], Union[datetime.time, None]
2727
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
2828
return img, curr_time
2929
except Exception as exc:
30-
self.logger.error(f"Cannot retrieve image. Following error raised - {exc}")
30+
self.logger.warning(f"Cannot retrieve image. Following error raised - {exc}")
31+
print(images.keys())
3132
return None, None
3233

3334
@sio.event
@@ -36,9 +37,9 @@ async def connect():
3637

3738
@sio.event
3839
async def snapshot_updated(data):
39-
camera_url, screen = data.get("camera_ip"), data.get("screenshot")
40+
camera_ip, screen = data.get("camera_ip"), data.get("screenshot")
4041
global images
41-
images[camera_url] = screen
42+
images[camera_ip] = screen
4243

4344
async def run_sio(url):
4445
await sio.connect(url)

main.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import utils
2-
import connection
2+
from connection import run_sio, IdleReporter, ImageHTTPExtractor, ModelPredictionsReceiver
33
from confs import configs
44
from dotenv import load_dotenv
55
from IdleAlgorithm import IdleAlgorithm
@@ -20,13 +20,13 @@
2020
logger = utils.create_logger()
2121

2222
prev_preds = np.array([[]]).astype(np.float32)
23-
reporter = connection.IdleReporter(folder, server_url, configs["wait_time"], logger)
24-
image_extractor = connection.ImageHTTPExtractor(camera_ip, logger, username=username, password=password)
25-
model_predictor = connection.ModelPredictionsReceiver(server_url, logger)
23+
reporter = IdleReporter(folder, server_url, configs["wait_time"], logger)
24+
image_extractor = ImageHTTPExtractor(camera_ip, logger, username=username, password=password)
25+
model_predictor = ModelPredictionsReceiver(server_url, logger)
2626
algo = IdleAlgorithm(logger, image_extractor, model_predictor, reporter)
2727

2828
async def main():
29-
await asyncio.gather(connection.run_sio(server_url + ':3456'), algo.run())
29+
await asyncio.gather(run_sio(server_url + ':3456'), algo.start())
3030

3131
loop = asyncio.get_event_loop()
3232
try:

0 commit comments

Comments
 (0)