Commit da5d2b560886d30d5641d54fee7bda4333038453
1 parent
b12775c2
feat(Matrice): petit changement bdd + ajout de l'interface de la matrice
Showing
8 changed files
with
113 additions
and
14 deletions
Show diff stats
Python/client.py
1 | import socket | 1 | import socket |
2 | +import sys | ||
2 | 3 | ||
3 | if __name__ == '__main__': | 4 | if __name__ == '__main__': |
4 | # TODO : Prendre en arguments les donnees et l'adresse de la RPi | 5 | # TODO : Prendre en arguments les donnees et l'adresse de la RPi |
5 | clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); | 6 | clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); |
6 | - data = "Hello Server!"; # TODO : Modifer les donnees a prendre | ||
7 | - clientSocket.sendto(data.encode(),("172.26.145.62",9090)); # TODO : Modifier adresse avec adresse de la raspberry | 7 | + data = sys.argv[2]; |
8 | + clientSocket.sendto(data.encode(),(sys.argv[1],9090)); | ||
8 | dataFromServer,sourceAddress = clientSocket.recvfrom(1024); | 9 | dataFromServer,sourceAddress = clientSocket.recvfrom(1024); |
9 | print(dataFromServer.decode()); | 10 | print(dataFromServer.decode()); |
Python/serveur.py
1 | import socket | 1 | import socket |
2 | 2 | ||
3 | if __name__=='__main__': | 3 | if __name__=='__main__': |
4 | - server.Socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); | 4 | + serverSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); |
5 | serverSocket.bind(("172.26.145.62",9090)); # Adresse du serveur à modifer selon l'IP de la RASPBERRY | 5 | serverSocket.bind(("172.26.145.62",9090)); # Adresse du serveur à modifer selon l'IP de la RASPBERRY |
6 | while(True): | 6 | while(True): |
7 | dataFromClient, sourceAddress = serverSocket.recvfrom(1024); | 7 | dataFromClient, sourceAddress = serverSocket.recvfrom(1024); |
8 | print("Data from %s is %s"%(sourceAddress,dataFromClient.decode())); | 8 | print("Data from %s is %s"%(sourceAddress,dataFromClient.decode())); |
9 | - serverSocket.sendto("Hello Client!".encode(),sourceAddress); # TODO : Modifier les donnees a renvoyer au serveur Web | 9 | + serverSocket.sendto("Communication réalisée".encode(),sourceAddress); # TODO : Modifier les donnees a renvoyer au serveur Web |
bdd.sql
@@ -7,6 +7,7 @@ | @@ -7,6 +7,7 @@ | ||
7 | drop table if exists reservation ; | 7 | drop table if exists reservation ; |
8 | drop table if exists equipement ; | 8 | drop table if exists equipement ; |
9 | drop table if exists banc ; | 9 | drop table if exists banc ; |
10 | +drop table if exists equip_type ; | ||
10 | drop table if exists creneau ; | 11 | drop table if exists creneau ; |
11 | drop table if exists utilisateur ; | 12 | drop table if exists utilisateur ; |
12 | 13 | ||
@@ -22,11 +23,14 @@ create table creneau | @@ -22,11 +23,14 @@ create table creneau | ||
22 | create table banc | 23 | create table banc |
23 | (NUMERO int PRIMARY KEY); | 24 | (NUMERO int PRIMARY KEY); |
24 | 25 | ||
26 | +create table equip_type | ||
27 | + (TYPE char(30) PRIMARY KEY); | ||
28 | + | ||
25 | create table equipement | 29 | create table equipement |
26 | (numero int REFERENCES banc, | 30 | (numero int REFERENCES banc, |
27 | IP char(15) PRIMARY KEY, | 31 | IP char(15) PRIMARY KEY, |
28 | NOM char(50), | 32 | NOM char(50), |
29 | - TYPE char(30)); | 33 | + type char(30) REFERENCES equip_type); |
30 | 34 | ||
31 | create table reservation | 35 | create table reservation |
32 | (numero int REFERENCES banc, | 36 | (numero int REFERENCES banc, |
@@ -44,6 +48,11 @@ insert into utilisateur values ('admin','glopglop'); | @@ -44,6 +48,11 @@ insert into utilisateur values ('admin','glopglop'); | ||
44 | 48 | ||
45 | insert into creneau values (01/12/2021); | 49 | insert into creneau values (01/12/2021); |
46 | 50 | ||
51 | +insert into equip_type values ("Oscilloscope"); | ||
52 | +insert into equip_type values ("Generateur"); | ||
53 | +insert into equip_type values ("Matrice"); | ||
54 | +insert into equip_type values ("Multimetre"); | ||
55 | + | ||
47 | insert into banc values (1); | 56 | insert into banc values (1); |
48 | 57 | ||
49 | /* Creation des vues pour faciliter l'utilisation de la BDD sur l'interface Web */ | 58 | /* Creation des vues pour faciliter l'utilisation de la BDD sur l'interface Web */ |
@@ -0,0 +1,19 @@ | @@ -0,0 +1,19 @@ | ||
1 | +<?php | ||
2 | + if(isset($_POST['bout'])){ | ||
3 | + $bout = $_POST['bout']; | ||
4 | + foreach($bout as $value){ | ||
5 | + $aaa = explode(':',$value); | ||
6 | + $nouveau[$aaa[0]] = $aaa[1]; | ||
7 | + } | ||
8 | + $texte=''; | ||
9 | + for($a = 1;$a<=25;$a++){ | ||
10 | + if(!isset($nouveau[$a])){ | ||
11 | + $nouveau[$a]=0; | ||
12 | + } | ||
13 | + } | ||
14 | + for($a = 1;$a<=25;$a++){ | ||
15 | + $texte = $texte.$nouveau[$a]; | ||
16 | + } | ||
17 | + $reponse_rpi = shell_exec("python3 Python/client.py $adresse $texte"); | ||
18 | + } | ||
19 | +?> |
@@ -0,0 +1,62 @@ | @@ -0,0 +1,62 @@ | ||
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | + <?php | ||
4 | + echo '<div class="d-md-flex flex-md-equal w-100 my-md-3 pl-md-3">'; | ||
5 | + echo '<div class="bg-light mr-md-3 pt-3 px-3 pt-md-5 px-md-5 overflow-hidden">'; | ||
6 | + /* Commandes de l'appareil */ | ||
7 | + echo '<div class="my-3 py-3">'; | ||
8 | + echo '<h2 class="display-6 text-center">Panel de commande</h2>'; | ||
9 | + echo '</div>'; | ||
10 | + //$chemin = getcwd().'/'.$Appareil[$i]['type']; | ||
11 | + //$files = array_diff(scandir($chemin),array('..','.')); | ||
12 | + echo "Veuillez choisir les entrées et sorties à relier"; | ||
13 | + if(isset($reponse_rpi)){ | ||
14 | + echo "<br> Réponse de la matrice : $reponse_rpi"; | ||
15 | + } | ||
16 | + echo '<div class="d-md-flex flex-md-equal w-100 my-md-3 pl-md-3">'; | ||
17 | + /* On parcourt l'arborescence pour trouver les fichiers 'form_fichiers.php' | ||
18 | + * Ces fichiers affichent les différents boutons correspondant aux commandes de l'appareil */ | ||
19 | + /* Affichage des appareils */ | ||
20 | + echo "<table class='table table-striped'>"; | ||
21 | + echo "<form method='POST' action='main.php'>"; | ||
22 | + echo "<thead>"; | ||
23 | + echo "<tr>"; | ||
24 | + echo "<th></th>"; | ||
25 | + echo "<th>Entrée 1</th>"; | ||
26 | + echo "<th>Entrée 2</th>"; | ||
27 | + echo "<th>Entrée 3</th>"; | ||
28 | + echo "<th>Entrée 4</th>"; | ||
29 | + echo "<th>Entrée 5</th>"; | ||
30 | + echo "</tr>"; | ||
31 | + echo "</thead>"; | ||
32 | + echo "<tbody>"; | ||
33 | + for($i=1;$i<6;$i++){ | ||
34 | + echo "<tr>"; | ||
35 | + echo "<td>Sortie $i</td>"; | ||
36 | + for($j=0;$j<5;$j++){ | ||
37 | + $calc=$i+(5*$j); | ||
38 | + echo "<td><input type='checkbox' class='form-check-input' id='bout$calc' name='bout[]' value='$calc:0' onclick='boutton(bout$calc)'></button></td>"; | ||
39 | + } | ||
40 | + echo "</tr>"; | ||
41 | + } | ||
42 | + echo "</tbody>"; | ||
43 | + echo "</table>"; | ||
44 | + echo "<button class='btn-lg btn-primary' type='submit'> Changer les états de la matrice</button>"; | ||
45 | + echo "</form>"; | ||
46 | + echo '</div>'; | ||
47 | + echo '</div>'; | ||
48 | + echo '</div>'; | ||
49 | + ?> | ||
50 | + <script type="text/javascript"> | ||
51 | + function boutton(numBout){ | ||
52 | + var bout = document.getElementById(numBout.id); | ||
53 | + var tab = bout.value.split(':'); | ||
54 | + var valeur = tab[1]; | ||
55 | + if(valeur=='0'){ | ||
56 | + bout.value=tab[0]+':1'; | ||
57 | + }else{ | ||
58 | + bout.value=tab[0]+':0'; | ||
59 | + } | ||
60 | + }; | ||
61 | + </script> | ||
62 | +</html> |
html/Python/client.py
1 | import socket | 1 | import socket |
2 | +import sys | ||
2 | 3 | ||
3 | if __name__ == '__main__': | 4 | if __name__ == '__main__': |
4 | clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); | 5 | clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); |
5 | - data = "Hello Server!"; | ||
6 | - clientSocket.sendto(data.encode(),("172.26.145.62",9090)); | 6 | + data = sys.argv[2]; |
7 | + clientSocket.sendto(data.encode(),(sys.argv[1],9090)); | ||
7 | dataFromServer,sourceAddress = clientSocket.recvfrom(1024); | 8 | dataFromServer,sourceAddress = clientSocket.recvfrom(1024); |
8 | print(dataFromServer.decode()); | 9 | print(dataFromServer.decode()); |
html/gestionAppareil.php
@@ -30,6 +30,9 @@ | @@ -30,6 +30,9 @@ | ||
30 | $requete = "SELECT * FROM banc"; | 30 | $requete = "SELECT * FROM banc"; |
31 | $exec_requete = mysqli_query($db,$requete); | 31 | $exec_requete = mysqli_query($db,$requete); |
32 | $banc = mysqli_fetch_all($exec_requete); | 32 | $banc = mysqli_fetch_all($exec_requete); |
33 | + $requete = "SELECT * FROM equip_type"; | ||
34 | + $exec_requete = mysqli_query($db,$requete); | ||
35 | + $equip_type = mysqli_fetch_all($exec_requete); | ||
33 | mysqli_close($db); | 36 | mysqli_close($db); |
34 | /* Affichage des appareils */ | 37 | /* Affichage des appareils */ |
35 | echo "<table class='table table-striped'>"; | 38 | echo "<table class='table table-striped'>"; |
@@ -62,7 +65,11 @@ | @@ -62,7 +65,11 @@ | ||
62 | echo "</select></td>"; | 65 | echo "</select></td>"; |
63 | echo "<td><input type='text' name='ip' required></td>"; | 66 | echo "<td><input type='text' name='ip' required></td>"; |
64 | echo "<td><input type='text' name='name' required></td>"; | 67 | echo "<td><input type='text' name='name' required></td>"; |
65 | - echo "<td><input type='text' name='type' required></td>"; | 68 | + echo "<td><select class='select' name='type' id='type' required>"; |
69 | + foreach($equip_type as $value){ | ||
70 | + echo '<option value="'.$value[0].'">'.$value[0].'</option>'; | ||
71 | + } | ||
72 | + echo "</select></td>"; | ||
66 | echo "<td><button class='btn-lg btn-success' type='submit'>Ajouter l'appareil</button></td>"; | 73 | echo "<td><button class='btn-lg btn-success' type='submit'>Ajouter l'appareil</button></td>"; |
67 | echo "</tr>"; | 74 | echo "</tr>"; |
68 | echo "</tbody>"; | 75 | echo "</tbody>"; |
html/main.php
@@ -38,7 +38,7 @@ | @@ -38,7 +38,7 @@ | ||
38 | $_SESSION['banc']=$Banc; | 38 | $_SESSION['banc']=$Banc; |
39 | $_SESSION['heure']=$heure; | 39 | $_SESSION['heure']=$heure; |
40 | $requete = "SELECT * FROM equipement WHERE | 40 | $requete = "SELECT * FROM equipement WHERE |
41 | - num = $Banc"; | 41 | + numero = $Banc"; |
42 | $exec_requete = mysqli_query($db,$requete); | 42 | $exec_requete = mysqli_query($db,$requete); |
43 | $reponse = mysqli_fetch_all($exec_requete); | 43 | $reponse = mysqli_fetch_all($exec_requete); |
44 | foreach($reponse as $element){ | 44 | foreach($reponse as $element){ |
@@ -56,7 +56,7 @@ | @@ -56,7 +56,7 @@ | ||
56 | $Banc = $_SESSION['banc']; | 56 | $Banc = $_SESSION['banc']; |
57 | $heure = $_SESSION['heure']; | 57 | $heure = $_SESSION['heure']; |
58 | $requete = "SELECT * FROM equipement WHERE | 58 | $requete = "SELECT * FROM equipement WHERE |
59 | - num =$Banc"; | 59 | + numero =$Banc"; |
60 | $exec_requete = mysqli_query($db,$requete); | 60 | $exec_requete = mysqli_query($db,$requete); |
61 | $reponse = mysqli_fetch_all($exec_requete); | 61 | $reponse = mysqli_fetch_all($exec_requete); |
62 | foreach($reponse as $element){ | 62 | foreach($reponse as $element){ |
@@ -87,7 +87,7 @@ | @@ -87,7 +87,7 @@ | ||
87 | 87 | ||
88 | /* Recherche des fichiers 'commandes_type.php' dans les dossiers des types d'appareils sélectionnés | 88 | /* Recherche des fichiers 'commandes_type.php' dans les dossiers des types d'appareils sélectionnés |
89 | * Ces fichiers vont effectuer les commandes de l'appareil si un bouton est utilisé */ | 89 | * Ces fichiers vont effectuer les commandes de l'appareil si un bouton est utilisé */ |
90 | - /* TODO | 90 | + /* TODO */ |
91 | for($i=0;$i<count($Appareil);$i++){ | 91 | for($i=0;$i<count($Appareil);$i++){ |
92 | $chemin = $Appareil[$i]['type']; | 92 | $chemin = $Appareil[$i]['type']; |
93 | $adresse = $Appareil[$i]['adresse']; | 93 | $adresse = $Appareil[$i]['adresse']; |
@@ -98,14 +98,14 @@ | @@ -98,14 +98,14 @@ | ||
98 | include($cmd_path); | 98 | include($cmd_path); |
99 | } | 99 | } |
100 | } | 100 | } |
101 | - }*/ | 101 | + } |
102 | ?> | 102 | ?> |
103 | </div> | 103 | </div> |
104 | <br/> | 104 | <br/> |
105 | <?php | 105 | <?php |
106 | /* Recherche des fichiers 'main_type.php' dans les dossiers des types d'appareils sélectionnés | 106 | /* Recherche des fichiers 'main_type.php' dans les dossiers des types d'appareils sélectionnés |
107 | * Ces fichiers vont afficher une capture de l'appareil et les commandes que l'utilisateur peut utiliser */ | 107 | * Ces fichiers vont afficher une capture de l'appareil et les commandes que l'utilisateur peut utiliser */ |
108 | - /* TODO | 108 | + /* TODO */ |
109 | for($i=0;$i<count($Appareil);$i++){ | 109 | for($i=0;$i<count($Appareil);$i++){ |
110 | $chemin = getcwd().'/'.$Appareil[$i]['type']; | 110 | $chemin = getcwd().'/'.$Appareil[$i]['type']; |
111 | $adresse = $Appareil[$i]['adresse']; | 111 | $adresse = $Appareil[$i]['adresse']; |
@@ -118,7 +118,7 @@ | @@ -118,7 +118,7 @@ | ||
118 | echo '</div>'; | 118 | echo '</div>'; |
119 | } | 119 | } |
120 | } | 120 | } |
121 | - }*/ | 121 | + } |
122 | /* Appel du script du rafraichissement des images, un script par appareil */ | 122 | /* Appel du script du rafraichissement des images, un script par appareil */ |
123 | /* TODO for($i=0;$i<count($Appareil);$i++){ | 123 | /* TODO for($i=0;$i<count($Appareil);$i++){ |
124 | include('Scripts/refresh_img.php'); | 124 | include('Scripts/refresh_img.php'); |