mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 02:20:17 +01:00
intégration backend / api
backend avec api d'ajout d'avis (note principale uniquement)
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
from hand_detector import HandDetector
|
from hand_detector import HandDetector
|
||||||
from audio_detector import get_grade
|
from audio_detector import get_grade
|
||||||
from network import WebsocketServer
|
from network import ApiClient, WebsocketServer
|
||||||
import time
|
import time
|
||||||
|
|
||||||
#Classe qui coordonne les différents modules et qui s'occupe de construire l'avis au fur et a mesure
|
#Classe qui coordonne les différents modules et qui s'occupe de construire l'avis au fur et a mesure
|
||||||
@@ -17,6 +17,7 @@ class Manager():
|
|||||||
self.server = WebsocketServer(None)
|
self.server = WebsocketServer(None)
|
||||||
self.server.start()
|
self.server.start()
|
||||||
self.handDetector = HandDetector()
|
self.handDetector = HandDetector()
|
||||||
|
self.api = ApiClient()
|
||||||
print("Backend ready")
|
print("Backend ready")
|
||||||
|
|
||||||
#Boucle principale
|
#Boucle principale
|
||||||
@@ -35,21 +36,10 @@ class Manager():
|
|||||||
#Fonction qui est executée pendant que la borne est en veille, reveille la borne si une main est detectée
|
#Fonction qui est executée pendant que la borne est en veille, reveille la borne si une main est detectée
|
||||||
def sleep(self):
|
def sleep(self):
|
||||||
res = self.handDetector.detect()
|
res = self.handDetector.detect()
|
||||||
print(res)
|
|
||||||
if(res != False):
|
if(res != False):
|
||||||
self.state = 1
|
self.state = 1
|
||||||
self.server.sendMessage({"type": "state", "state": 1})
|
self.server.sendMessage({"type": "state", "state": 1})
|
||||||
|
|
||||||
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 = 2
|
|
||||||
self.server.sendMessage({"type": "state", "state": 3})
|
|
||||||
|
|
||||||
|
|
||||||
#Envoie la position de la main a l'écran et passe a l'étape suivante si une main est detectée pendant assez longtemps
|
#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):
|
def camera(self):
|
||||||
res = self.handDetector.detect()
|
res = self.handDetector.detect()
|
||||||
@@ -61,10 +51,21 @@ class Manager():
|
|||||||
self.state = 2
|
self.state = 2
|
||||||
self.server.sendMessage({"type": "state", "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):
|
def thankYou(self):
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
print("Reseting...")
|
||||||
self.state = 0
|
self.state = 0
|
||||||
self.server.sendMessage({"type": "state", "state": 0})
|
self.server.sendMessage({"type": "state", "state": 0})
|
||||||
self.sendReview()
|
res = self.api.send(self.avis["note"],self.avis["notes_autres"]["test"])
|
||||||
|
print(res.text)
|
||||||
self.avis = self.defualtAvis
|
self.avis = self.defualtAvis
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import requests
|
||||||
import asyncio
|
import asyncio
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
@@ -23,6 +24,7 @@ class WebsocketServer(threading.Thread):
|
|||||||
async def handler(self,websocket):
|
async def handler(self,websocket):
|
||||||
while True:
|
while True:
|
||||||
for msg in self.messageQueue:
|
for msg in self.messageQueue:
|
||||||
|
# print("sending", json.dumps(msg))
|
||||||
await websocket.send(json.dumps(msg))
|
await websocket.send(json.dumps(msg))
|
||||||
self.messageQueue.pop(0)
|
self.messageQueue.pop(0)
|
||||||
await asyncio.sleep(0.01)
|
await asyncio.sleep(0.01)
|
||||||
@@ -35,3 +37,13 @@ class ApiClient():
|
|||||||
self.host = host
|
self.host = host
|
||||||
self.port = port
|
self.port = port
|
||||||
|
|
||||||
|
def send(self,note,note_autre):
|
||||||
|
#Exemple ajout d'un commentaire depuis la borne (site ou geste)
|
||||||
|
avis = {
|
||||||
|
"note": note,
|
||||||
|
"source": "borne",
|
||||||
|
"commentaire":"",
|
||||||
|
#Optionel
|
||||||
|
"notes_autre": '{"proprete":'+str(note_autre)+',"calme":10}',
|
||||||
|
}
|
||||||
|
return requests.post("http://"+self.host+":"+self.port+"/add_review", data=avis)
|
||||||
|
|||||||
@@ -7,11 +7,12 @@ class AudioPage {
|
|||||||
set enabled(isEnabled) {
|
set enabled(isEnabled) {
|
||||||
this.isEnabled = isEnabled;
|
this.isEnabled = isEnabled;
|
||||||
this.DOMElement.style.display = isEnabled ? "block" : "none";
|
this.DOMElement.style.display = isEnabled ? "block" : "none";
|
||||||
|
document.getElementById("grade").innerHTML = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
setGrade(grade) {
|
setGrade(grade) {
|
||||||
if(this.isEnabled) {
|
if(this.isEnabled) {
|
||||||
this.DOMElement.getElementById("grade").innerHTML = grade.toString();
|
document.getElementById("grade").innerHTML = grade.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,6 +12,8 @@ class WebsocketClient {
|
|||||||
onNewEffects(msg.effects);
|
onNewEffects(msg.effects);
|
||||||
}else if(msg.type == "state") {
|
}else if(msg.type == "state") {
|
||||||
onNewState(msg.state);
|
onNewState(msg.state);
|
||||||
|
}else if(msg.type == "new_grade") {
|
||||||
|
onNewGrade(Number(msg.grade));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
<div id="audio">
|
<div id="audio">
|
||||||
<div class="instructions">
|
<div class="instructions">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<h1>Enregistrement audio blabal</h1>
|
<h1>Dites-nous en plus</h1>
|
||||||
</div>
|
</div>
|
||||||
<p>Donnez une note sur 10 au critère suivant</p>
|
<p>Donnez une note sur 10 au critère suivant</p>
|
||||||
<table>
|
<table>
|
||||||
|
|||||||
Reference in New Issue
Block a user