Commit 11329db50ea3e084fc500e6a18b9751b39920f51

Authored by Antoine Duquenoy
1 parent e9db2061

Ansible terminé et démonstration fonctionnelle

Ansible/ansible.yml
... ... @@ -12,17 +12,33 @@
12 12  
13 13 - name: "Copie du fichier de lecture série"
14 14 copy:
15   - src: ~/pfe/serial
16   - dest: /home/pi/{{ servernames }}/serial
  15 + src: ~/pfe/seriallistener
  16 + dest: /home/pi/{{ servernames }}/seriallistener
  17 +
  18 + - name: "Droit d'execution pour serial_listener"
  19 + shell: chmod +x /home/pi/{{ servernames }}/seriallistener
17 20  
18 21 - name: "Copie du binaire pour le(s) capteur(s)"
19 22 copy:
20 23 src: ~/pfe/files/{{ binary_dir }}/out.bin
21 24 dest: /home/pi/{{ servernames }}/out.bin
22 25  
  26 + - name: "Copie du ficher de correspondance"
  27 + shell: cp /home/pi/config_raspberry.txt /home/pi/{{ servernames }}/
  28 +
  29 + - name: "Récupération des périphériques à flasher"
  30 + shell: grep -Ff /home/pi/{{ servernames }}/config_experimentation.txt /home/pi/config_raspberry.txt | cut -d= -f3
  31 + register: devices_to_flash
  32 +
  33 + - name: "Flashage des boards"
  34 + shell: cp /home/pi/{{ servernames }}/out.bin /media/pi/{{ item }}
  35 + with_items: "{{ devices_to_flash.stdout_lines }}"
  36 +
23 37 - name: "Lancement du programme de lecture série"
24   - command: /home/pi/while
25   - async: 3000000
  38 + command: /home/pi/{{ servernames }}/seriallistener
  39 + args:
  40 + chdir: ./{{ servernames }}
  41 + async: 3000000
26 42 poll: 0
27 43  
28 44 - name: "Exp en cours ..."
... ... @@ -30,7 +46,7 @@
30 46 seconds: "{{ exp_duration }}"
31 47  
32 48 - name: "Kill de l'application"
33   - shell: pkill while
  49 + shell: pkill -9 seriallistener
34 50  
35 51 - name: "Récupération des noms des résultats"
36 52 shell: (cd /home/pi/{{ servernames }}/res; find . -maxdepth 1 -type f) | cut -d'/' -f2
... ... @@ -45,3 +61,9 @@
45 61  
46 62 - name: "Suppression du dossier sur le noeud"
47 63 shell: rm -rf /home/pi/{{ servernames }}
  64 +
  65 + - name: "Suppression du fichier d'experimentation"
  66 + file:
  67 + path: "~/pfe/toflash/{{ servernames }}.yml.started"
  68 + state: absent
  69 + delegate_to: 127.0.0.1
... ...
Raspberry/listener deleted
No preview for this file type
Raspberry/listener.c
... ... @@ -25,14 +25,10 @@ typedef struct{
25 25  
26 26 void sig_handler(int sig)
27 27 {
28   - if (sig == SIGINT){
  28 + if (sig == SIGTERM){
29 29 printf("\nSignal SIGINT received\n");
30 30 sig_received = 1;
31 31 }
32   - else if (sig == SIGKILL){
33   - printf("\nSignal SIGKILL received\n");
34   - sig_received = 1;
35   - }
36 32 }
37 33  
38 34 void create_error_file(char *str, char *msg){
... ... @@ -67,7 +63,7 @@ void save_data(int pt, char* sensor){
67 63 while(1){
68 64 int r = read(pt ,line,1);
69 65 if(r>=0){
70   - printf("sensor : %s - c = %c (characters read : %d)\n\n", sensor, line[0], r);
  66 + //printf("sensor : %s - c = %c (characters read : %d)\n\n", sensor, line[0], r);
71 67 r = fprintf(file, "%c",line[0]);
72 68 }
73 69 fflush(file);
... ... @@ -78,18 +74,18 @@ void save_data(int pt, char* sensor){
78 74 }
79 75 }
80 76 fclose(file);
81   - printf("end save_data\n");
  77 + //printf("end save_data\n");
82 78 }
83 79  
84 80 void reset_serial(int pt){
85 81 tcsetattr(pt, TCSANOW, &old);
86 82 close(pt);
87   - printf("end reset_serial\n");
  83 + //printf("end reset_serial\n");
88 84 }
89 85  
90 86 int set_serial(SensorAndPort* sensorAndPort){
91 87 char *device = sensorAndPort->port;
92   - printf("device : %s\n",device);
  88 + //printf("device : %s\n",device);
93 89 int pt = open(device, O_RDWR | O_NOCTTY | O_SYNC); // retourne une erreur si le terminal n'est connecté à rien (pas de STM32 ni de Arduino dans notre cas)
94 90 if(pt == -1){
95 91 create_error_file(sensorAndPort->sensor, "impossible de se connecter au port série, veuillez vérifier le microprocesseur et la raspberry");
... ... @@ -165,7 +161,7 @@ void get_ports_to_read(char list_sensors[MAX_SENSORS][30], char list_serial_port
165 161 j++;
166 162 }
167 163 if(j==count_serial_port){
168   - printf("Il n'y a pas de capteurs avec ce nom : %s\n",list_sensors[i]);
  164 + //printf("Il n'y a pas de capteurs avec ce nom : %s\n",list_sensors[i]);
169 165 create_error_file(list_sensors[i],"Il n'y a pas de capteurs avec ce nom");
170 166 }
171 167 j=0;
... ... @@ -181,11 +177,11 @@ int main(int argc, char *argv[]){
181 177 char * config_experimentation = "config_experimentation.txt";
182 178 char * config_raspberry = "config_raspberry.txt";
183 179 if(argc>1){
184   - printf("fichier contenant la liste des capteurs de l'experimentation : %s\n",argv[1]);
  180 + //printf("fichier contenant la liste des capteurs de l'experimentation : %s\n",argv[1]);
185 181 char * config_experimentation = argv[1];
186 182 }
187 183 if(argc>2){
188   - printf("fichier contenant la correspondance de tous les capteurs avec leur liaison série : %s\n",argv[2]);
  184 + //printf("fichier contenant la correspondance de tous les capteurs avec leur liaison série : %s\n",argv[2]);
189 185 char * config_raspberry = argv[2];
190 186 }
191 187 SensorAndPort sensorAndPort[MAX_SENSORS];
... ... @@ -200,8 +196,8 @@ int main(int argc, char *argv[]){
200 196 count_serial_port = read_file_by_line(list_serial_port, config_raspberry);
201 197 get_ports_to_read(list_sensors,list_serial_port,count_sensors, count_serial_port, sensors_ports);
202 198  
203   - action.sa_handler=sig_handler;
204   - sigaction(SIGINT, &action, NULL);
  199 + //action.sa_handler=sig_handler;
  200 + //sigaction(SIGTERM, &action, NULL);
205 201  
206 202 for(i=0;i<count_sensors;i++){
207 203 strcpy(sensorAndPort[i].sensor,list_sensors[i]);
... ... @@ -216,4 +212,4 @@ int main(int argc, char *argv[]){
216 212  
217 213 //169.254.24.80
218 214  
219   -//169.254.25.26
220 215 \ No newline at end of file
  216 +//169.254.25.26
... ...
Raspberry/seriallistener 0 → 100755
No preview for this file type
Serveur/main
No preview for this file type
Serveur/main.c
... ... @@ -205,7 +205,7 @@ int process_exp(Experiment *experiment) {
205 205 }
206 206 }
207 207 sprintf(cmd2, "mkdir ~/exp_%d", experiment->exp_id);
208   - sprintf(cmd1, "runuser -l %s -c \'echo \"%s\" | ssh pi@%s \"%s && cat > ~/exp_%d/sensors.txt\"",
  208 + sprintf(cmd1, "runuser -l %s -c \'echo \"%s\" | ssh pi@%s \"%s && cat > ~/exp_%d/config_experimentation.txt\"",
209 209 USERNAME,
210 210 sensors_list,
211 211 experiment->nodes[i].ip,
... ... @@ -224,7 +224,7 @@ int process_exp(Experiment *experiment) {
224 224 fclose(hosts_fp);
225 225  
226 226 char ansible_command[512];
227   - sprintf(ansible_command, "runuser -l %s -c \'ansible-playbook /etc/ansible/roles/test.yml -i %s -e \"servernames=exp_%d exp_duration=%d binary_dir=%s\"",
  227 + sprintf(ansible_command, "runuser -l %s -c \'ansible-playbook /home/antoine/pfe/ansible.yml -i %s -e \"servernames=exp_%d exp_duration=%d binary_dir=%s\"",
228 228 USERNAME,
229 229 hosts_filename,
230 230 experiment->exp_id,
... ... @@ -275,8 +275,9 @@ void check_files() {
275 275  
276 276 if(dir != NULL) {
277 277 while(dirent = readdir(dir)) {
278   - if(dirent->d_type == DT_REG) {
  278 + if((dirent->d_type == DT_REG) && (strstr(dirent->d_name, ".started") == NULL)) {
279 279 char file_name[128];
  280 + char new_file_name[128];
280 281 strcpy(file_name, TOFLASH_PATH);
281 282 strcat(file_name, dirent->d_name);
282 283 Experiment *experiment = read_file(file_name);
... ... @@ -284,7 +285,9 @@ void check_files() {
284 285 print_exp(experiment);
285 286 #endif
286 287 if(!process_exp(experiment)) {
287   - remove(file_name);
  288 + strcpy(new_file_name, file_name);
  289 + strcat(new_file_name, ".started");
  290 + rename(file_name, new_file_name);
288 291 }
289 292 free_exp(experiment);
290 293 }
... ... @@ -320,4 +323,4 @@ int main(int argc, char **argv) {
320 323 sleep(10);
321 324 }
322 325 return 0;
323   -}
324 326 \ No newline at end of file
  327 +}
... ...
Serveur/serial deleted
... ... @@ -1 +0,0 @@
1   -blabla