Commit da5d2b560886d30d5641d54fee7bda4333038453

Authored by lwadbled
1 parent b12775c2

feat(Matrice): petit changement bdd + ajout de l'interface de la matrice

Python/client.py
1 1 import socket
  2 +import sys
2 3  
3 4 if __name__ == '__main__':
4 5 # TODO : Prendre en arguments les donnees et l'adresse de la RPi
5 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 9 dataFromServer,sourceAddress = clientSocket.recvfrom(1024);
9 10 print(dataFromServer.decode());
... ...
Python/serveur.py
1 1 import socket
2 2  
3 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 5 serverSocket.bind(("172.26.145.62",9090)); # Adresse du serveur à modifer selon l'IP de la RASPBERRY
6 6 while(True):
7 7 dataFromClient, sourceAddress = serverSocket.recvfrom(1024);
8 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
... ...
... ... @@ -7,6 +7,7 @@
7 7 drop table if exists reservation ;
8 8 drop table if exists equipement ;
9 9 drop table if exists banc ;
  10 +drop table if exists equip_type ;
10 11 drop table if exists creneau ;
11 12 drop table if exists utilisateur ;
12 13  
... ... @@ -22,11 +23,14 @@ create table creneau
22 23 create table banc
23 24 (NUMERO int PRIMARY KEY);
24 25  
  26 +create table equip_type
  27 + (TYPE char(30) PRIMARY KEY);
  28 +
25 29 create table equipement
26 30 (numero int REFERENCES banc,
27 31 IP char(15) PRIMARY KEY,
28 32 NOM char(50),
29   - TYPE char(30));
  33 + type char(30) REFERENCES equip_type);
30 34  
31 35 create table reservation
32 36 (numero int REFERENCES banc,
... ... @@ -44,6 +48,11 @@ insert into utilisateur values ('admin','glopglop');
44 48  
45 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 56 insert into banc values (1);
48 57  
49 58 /* Creation des vues pour faciliter l'utilisation de la BDD sur l'interface Web */
... ...
html/Matrice/commandes_matrice.php 0 → 100644
... ... @@ -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 +?>
... ...
html/Matrice/main_matrice.php 0 → 100644
... ... @@ -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 1 import socket
  2 +import sys
2 3  
3 4 if __name__ == '__main__':
4 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 8 dataFromServer,sourceAddress = clientSocket.recvfrom(1024);
8 9 print(dataFromServer.decode());
... ...
html/gestionAppareil.php
... ... @@ -30,6 +30,9 @@
30 30 $requete = "SELECT * FROM banc";
31 31 $exec_requete = mysqli_query($db,$requete);
32 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 36 mysqli_close($db);
34 37 /* Affichage des appareils */
35 38 echo "<table class='table table-striped'>";
... ... @@ -62,7 +65,11 @@
62 65 echo "</select></td>";
63 66 echo "<td><input type='text' name='ip' required></td>";
64 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 73 echo "<td><button class='btn-lg btn-success' type='submit'>Ajouter l'appareil</button></td>";
67 74 echo "</tr>";
68 75 echo "</tbody>";
... ...
html/main.php
... ... @@ -38,7 +38,7 @@
38 38 $_SESSION['banc']=$Banc;
39 39 $_SESSION['heure']=$heure;
40 40 $requete = "SELECT * FROM equipement WHERE
41   - num = $Banc";
  41 + numero = $Banc";
42 42 $exec_requete = mysqli_query($db,$requete);
43 43 $reponse = mysqli_fetch_all($exec_requete);
44 44 foreach($reponse as $element){
... ... @@ -56,7 +56,7 @@
56 56 $Banc = $_SESSION['banc'];
57 57 $heure = $_SESSION['heure'];
58 58 $requete = "SELECT * FROM equipement WHERE
59   - num =$Banc";
  59 + numero =$Banc";
60 60 $exec_requete = mysqli_query($db,$requete);
61 61 $reponse = mysqli_fetch_all($exec_requete);
62 62 foreach($reponse as $element){
... ... @@ -87,7 +87,7 @@
87 87  
88 88 /* Recherche des fichiers 'commandes_type.php' dans les dossiers des types d'appareils sélectionnés
89 89 * Ces fichiers vont effectuer les commandes de l'appareil si un bouton est utilisé */
90   - /* TODO
  90 + /* TODO */
91 91 for($i=0;$i<count($Appareil);$i++){
92 92 $chemin = $Appareil[$i]['type'];
93 93 $adresse = $Appareil[$i]['adresse'];
... ... @@ -98,14 +98,14 @@
98 98 include($cmd_path);
99 99 }
100 100 }
101   - }*/
  101 + }
102 102 ?>
103 103 </div>
104 104 <br/>
105 105 <?php
106 106 /* Recherche des fichiers 'main_type.php' dans les dossiers des types d'appareils sélectionnés
107 107 * Ces fichiers vont afficher une capture de l'appareil et les commandes que l'utilisateur peut utiliser */
108   - /* TODO
  108 + /* TODO */
109 109 for($i=0;$i<count($Appareil);$i++){
110 110 $chemin = getcwd().'/'.$Appareil[$i]['type'];
111 111 $adresse = $Appareil[$i]['adresse'];
... ... @@ -118,7 +118,7 @@
118 118 echo '</div>';
119 119 }
120 120 }
121   - }*/
  121 + }
122 122 /* Appel du script du rafraichissement des images, un script par appareil */
123 123 /* TODO for($i=0;$i<count($Appareil);$i++){
124 124 include('Scripts/refresh_img.php');
... ...