intégration backend / api

backend avec api d'ajout d'avis (note principale uniquement)
This commit is contained in:
Quentin Roussel
2023-03-23 11:14:46 +01:00
parent e097c1fd23
commit 90a7d20250
5 changed files with 33 additions and 17 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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();
} }
} }
} }

View File

@@ -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));
} }
}; };
} }

View File

@@ -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>
@@ -43,7 +43,7 @@
</tr> </tr>
<tr> <tr>
<td>Calme</td> <td>Calme</td>
<td> <span id="grade"></span>/10</td> <td><span id="grade"></span>/10</td>
</tr> </tr>
</table> </table>
</div> </div>