from hand_detector import HandDetector from audio_detector import get_grade from network import ApiClient, WebsocketServer import time #Classe qui coordonne les différents modules et qui s'occupe de construire l'avis au fur et a mesure class Manager(): def __init__(self): self.state = 0 self.defualtAvis = { "note": None, "commentaire": None, "notes_autres": {} } self.avis = self.defualtAvis self.server = WebsocketServer(None) self.server.start() self.handDetector = HandDetector() self.api = ApiClient() print("Backend ready") #Boucle principale def loop(self): while(True): if(self.state == 0): self.sleep() if(self.state == 1): self.camera() if(self.state == 2): self.audio() if(self.state == 3): self.thankYou() time.sleep(0.01) #Fonction qui est executée pendant que la borne est en veille, reveille la borne si une main est detectée def sleep(self): res = self.handDetector.detect() if(res != False): self.state = 1 self.server.sendMessage({"type": "state", "state": 1}) #Envoie la position de la main a l'écran et passe a l'étape suivante si une main est detectée pendant assez longtemps def camera(self): res = self.handDetector.detect() if(res != False): state, coords, size, finalDecision = res self.server.sendMessage({"type": "effects", "effects": [{"type": state, "x":coords[0], "y": coords[1], "width": size, "height": size}]}) if(finalDecision != False): self.avis["note"] = 10 if finalDecision == "thumbs_up" else 0 self.state = 2 self.server.sendMessage({"type": "state", "state": 2}) def audio(self): grade = get_grade() if(grade != False): self.server.sendMessage({"type":"new_grade","grade":grade}) self.avis["notes_autres"]["test"] = grade time.sleep(3) self.state = 3 self.server.sendMessage({"type": "state", "state": 3}) def thankYou(self): time.sleep(10) print("Reseting...") self.state = 0 self.server.sendMessage({"type": "state", "state": 0}) res = self.api.send(self.avis["note"],self.avis["notes_autres"]["test"]) print(res.text) self.avis = self.defualtAvis