amélioration interface borne

This commit is contained in:
Quentin Roussel
2023-03-23 00:01:03 +01:00
parent 7284494283
commit 82171ca6fc
8 changed files with 88 additions and 26 deletions

View File

@@ -68,8 +68,6 @@ class HandDetector():
thumbsUpCount = sum(map(lambda x : x == "thumbs_up", self.resultBuffer)) thumbsUpCount = sum(map(lambda x : x == "thumbs_up", self.resultBuffer))
thumbsDownCount = sum(map(lambda x : x == "thumbs_down", self.resultBuffer)) thumbsDownCount = sum(map(lambda x : x == "thumbs_down", self.resultBuffer))
print(thumbsUpCount,thumbsDownCount)
if(thumbsUpCount > self.DETECTION_THRESHOLD * self.BUFFER_LENGTH): if(thumbsUpCount > self.DETECTION_THRESHOLD * self.BUFFER_LENGTH):
result = "thumbs_up" result = "thumbs_up"
elif(thumbsDownCount > self.DETECTION_THRESHOLD * self.BUFFER_LENGTH): elif(thumbsDownCount > self.DETECTION_THRESHOLD * self.BUFFER_LENGTH):

View File

@@ -2,6 +2,7 @@ from hand_detector import HandDetector
from network import WebsocketServer from network import 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
class Manager(): class Manager():
def __init__(self): def __init__(self):
self.state = 0 self.state = 0
@@ -15,6 +16,7 @@ class Manager():
self.handDetector = HandDetector() self.handDetector = HandDetector()
print("Backend ready") print("Backend ready")
#Boucle principale
def loop(self): def loop(self):
while(True): while(True):
if(self.state == 0): if(self.state == 0):
@@ -24,12 +26,14 @@ class Manager():
time.sleep(0.01) 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): def sleep(self):
res = self.handDetector.detect() res = self.handDetector.detect()
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})
#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()
if(res != False): if(res != False):

View File

@@ -70,8 +70,16 @@ services:
- ./interface_admin/out:/usr/local/apache2/htdocs/ - ./interface_admin/out:/usr/local/apache2/htdocs/
container_name: interface_admin container_name: interface_admin
ports: ports:
- 80:80 - 800:80
#Formulaire de retour d'avis
Formulaire:
image: httpd:latest
volumes:
- ./Formulaire:/usr/local/apache2/htdocs/
container_name: Formulaire
ports:
- 80:80
# #Backend de la borne : scripts pythons de reconnaissances video et audio # #Backend de la borne : scripts pythons de reconnaissances video et audio
# #Envoient les infos a l'interface de la borne par websocket pour mettre a jour l'interface rapidement # #Envoient les infos a l'interface de la borne par websocket pour mettre a jour l'interface rapidement
# #Met a jour les avis en faisant des requêtes a l'API # #Met a jour les avis en faisant des requêtes a l'API

View File

@@ -1,3 +1,7 @@
* {
font-family: Arial, Helvetica, sans-serif;
}
html, body { html, body {
margin: 0; margin: 0;
height: 100%; height: 100%;
@@ -25,3 +29,23 @@ html, body {
#camera > canvas { #camera > canvas {
z-index: 1; z-index: 1;
} }
.instructions {
width: max-content;
height: 300px;
margin: auto;
background: #A6CC00;
padding: 20px;
border-radius: 10px;
border: 3px #6B8000 solid;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
text-align: center;
}
.instructions > .title {
border-bottom: 3px #6B8000 solid;
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -1,5 +1,5 @@
class WebsocketClient { class WebsocketClient {
constructor(onNewEffects, onNewState) { constructor(onNewEffects, onNewGrade, onNewState) {
this.socket = new WebSocket("ws://localhost:5000"); this.socket = new WebSocket("ws://localhost:5000");
this.socket.addEventListener("open", (event) => { this.socket.addEventListener("open", (event) => {
this.socket.send("connected"); this.socket.send("connected");

View File

@@ -25,8 +25,6 @@ class StateManager {
this._cameraPage.enabled = false; this._cameraPage.enabled = false;
this._audioPage.enabled = false; this._audioPage.enabled = false;
this._thankYouPage.enabled = false; this._thankYouPage.enabled = false;
//TODO: Remove qd implémenté dans le backend
document.getElementById("sleeping-page-continue").onclick = () => this.setState(STATE.video);
} }
setState(newState) { setState(newState) {

View File

@@ -15,19 +15,46 @@
<body> <body>
<div id="sleeping-page" class="page"> <div id="sleeping-page" class="page">
<h1>Venez donner votre avis</h1> <div class="instructions">
<!-- Boutton pour test --> <div class="title">
<button id="sleeping-page-continue">Continuer</button> <h1>Votre avis nous intéresse</h1>
</div>
<span>Faites un</span>
<img width=50 src="assets/img/thumbs_up.png">
<span>ou un</span>
<img width=50 src="assets/img/thumbs_down.png">
<span> avec votre main pour commencer</span>
</div>
</div> </div>
<div id="camera"> <div id="camera">
<canvas id="overlay-canvas"></canvas> <canvas id="overlay-canvas"></canvas>
<video id="camera-video"></video> <video id="camera-video"></video>
</div> </div>
<div id="audio"> <div id="audio">
<div class="instructions">
<div class="title">
<h1>Enregistrement audio blabal</h1> <h1>Enregistrement audio blabal</h1>
</div> </div>
<p>Prononcez à voix haute les notes correspondant aux critères suivants dans l'ordre</p>
<table>
<tr>
<th>Critère</td>
<th>Note / 10</td>
</tr>
<tr>
<td>Calme</td>
<td> /10</td>
</tr>
</table>
</div>
</div>
<div id="thank-you"> <div id="thank-you">
<h1>Merci pour votre avis !!!!!!!!!!</h1> <div class="instructions">
<div class="title">
<h1>Merci pour votre avis</h1>
</div>
<span>Nous esperons vous revoir bientôt</span>
</div>
</div> </div>
<script src="assets/js/camera_page.js"></script> <script src="assets/js/camera_page.js"></script>
<script src="assets/js/network.js"></script> <script src="assets/js/network.js"></script>