mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 02:20:17 +01:00
72 lines
2.5 KiB
Python
72 lines
2.5 KiB
Python
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
|
|
|