blob: 89bed3f1e82d796863f8c44da985026c59743482 [file] [log] [blame]
Shad Ansari3a8a3912021-11-18 00:44:50 +00001import paho.mqtt.client as mqtt
2import time
3import os
4import sys
5import threading
6import logging as log
7
8mqttBroker ="localhost"
9
10resolution = {}
11timer = {}
12timestamp = {}
13
14def init(device):
15 set_resolution(device, "low")
16
17
18def person_detected(device, num):
19 timestamp[device] = time.time()
20 if device in resolution and resolution[device] == "high":
21 return
22 set_resolution(device, "high")
23
24
25def start_timer(device):
26 # log.info("Start timer for device {}".format(device))
27 timer[device] = threading.Timer(10.0, timer_expiry, device)
28 timer[device].start()
29
30
31def remove_timer(device):
32 del timer[device]
33
34
35def set_resolution(device, level):
36 log.info("Setting camera {} resolution to {}".format(device, level))
37 resolution[device] = level
38 if level == "high" and device not in timer:
39 start_timer(device)
40 client = mqtt.Client()
41 client.connect(mqttBroker)
42 client.publish("camera/" + str(5000 + int(device)), level)
43
44
45def timer_expiry(device):
46 now = time.time()
47 diff = now - timestamp[device]
48 # log.info("timer_expiry() - now:{}, timestamp:{}".format(now, timestamp[device]))
49 if diff > 5.0:
50 set_resolution(device, "low")
51 remove_timer(device)
52 else:
53 start_timer(device)