mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 10:30:17 +01:00
amélioration interface borne
This commit is contained in:
@@ -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):
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
3
code/interface_borne/assets/img/logo_tp.svg
Normal file
3
code/interface_borne/assets/img/logo_tp.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 34 KiB |
@@ -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");
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user