diff --git a/PC/MQTT_MySQL.py b/PC/MQTT_MySQL.py
new file mode 100644
index 0000000000000000000000000000000000000000..d2c0443a26c28fe9339615e1226e96a8030036a2
--- /dev/null
+++ b/PC/MQTT_MySQL.py
@@ -0,0 +1,129 @@
+import MySQLdb
+import paho.mqtt.client as mqtt
+import time
+import sys
+
+db = MySQLdb.connect(host="pil-09.univlehavre.lan",   
+                     user="firediag",         
+                     passwd="firediag$!",  
+                     db="firediag");
+
+global topics ; global frequenceSeuils; # frequenceSeuils => Map utilisee pour verifier l'effet de seuil
+topics = []; frequenceSeuils = {};
+
+topic_changeCapteur = "/system/changeCapteur";
+
+def on_connect(client, userdata, flags, rc):
+    if rc == 0:
+        print("Connected to broker");
+	client.subscribe(topic_changeCapteur);
+
+        global Connected;
+        Connected = True;
+ 
+    else:
+        print("Connection failed");
+
+def on_message(client, userdata, msg):
+	global topics ; global frequenceSeuils ;
+
+	print(msg.topic + " Payload -> " +str(msg.payload));
+	message_topic = msg.topic;
+	message_valeur = msg.payload;
+
+	if message_topic == topic_changeCapteur: # Mise a jour des topics auxquelles on s'abonne
+		for topic in topics:
+			client.unsubscribe(topic);
+		
+		update_capteur();
+		print("Update des topics => "+" ".join(topics));
+	else :					# Arrivee d'une valeur d'un capteur
+		cursor = db.cursor();
+		cursor.execute('SELECT topic, id, idUser, nom, idGroupe FROM capteur WHERE visible = TRUE');
+		for capteur in cursor.fetchall():
+	   		if capteur[0] == message_topic:
+				try:
+					cursor.execute("INSERT INTO `valeur` (`temps`, `valeur`, `idCapteur`) VALUES ('"+
+						time.strftime('%Y-%m-%d %H:%M:%S')+"', '"+str(message_valeur)+"', '"+str(capteur[1])+"')");
+					
+					print("Nouvelle valeur ('"+time.strftime('%Y-%m-%d %H:%M:%S')+"', '"+str(message_valeur)+"', '"+str(capteur[1])+"')");
+
+					if unicode(str(message_valeur).strip(), 'utf-8').isnumeric(): # Si c'est une valeur numerique
+						# Gestion des notifications des utilisateurs (ajout des alertes)
+						cursorNotif = db.cursor();
+						cursorNotif.execute('SELECT id, nom, valeur, regle, frequence FROM seuil WHERE idCapteur = '+str(capteur[1]));
+						
+						for seuil in cursorNotif.fetchall():
+							frequence = int(seuil[0]);
+							if	(seuil[3] == "sup" and int(message_valeur) > int(seuil[2])) or \
+								(seuil[3] == "inf" and int(message_valeur) < int(seuil[2])) or \
+								(seuil[3] == "eq" and int(message_valeur) == int(seuil[2])):
+
+								if frequence not in frequenceSeuils:	# on ajoute le seuil a la map 	
+									frequenceSeuils[frequence] = 1;
+								else: # sinon on l'incremente
+									frequenceSeuils[frequence] = frequenceSeuils[frequence]+1;
+
+								# Si l'effet de seuil est depassee, on lance l'alerte
+								if frequenceSeuils[frequence] >= seuil[4]:
+
+									print(" Alerte  \""+seuil[1]+"\" => "+message_valeur+" "+seuil[3]+" "+str(int(seuil[2])));
+									titre = "Alerte sur "+str(capteur[3]);
+									message = "Le seuil \""+str(seuil[1])+"\" a ete franchi ("+message_valeur ;
+									if seuil[3] == "sup" : message += " > " ;
+									elif seuil[3] == "inf" : message += " < " ;
+									else : message += " = " ;
+									message += str(int(seuil[2]))+")" ;
+
+									cursorNotif.execute("INSERT INTO `notification` (`temps`, `titre`, `message`, `idUser`, `idCapteur`, `vu`) VALUES ('"+
+										time.strftime('%Y-%m-%d %H:%M:%S')+"', '"+titre+"', '"+message+"', '"+str(capteur[2])+"', '"+str(capteur[1])+"', false)")
+									
+									# notification du changement
+									client.publish("/system/notification/"+str(capteur[2]), str(capteur[4])+"/"+str(capteur[1]));
+									
+									frequenceSeuils[frequence] = 0;
+							else:
+								frequenceSeuils[frequence] = 0; 
+							
+					db.commit();
+				except Exception as e:
+					db.rollback();
+					print("rollback ");
+					print(e);
+				
+
+def update_capteur():
+	global topics ;
+
+	topics = [];
+	cursor = db.cursor();
+	cursor.execute('SELECT topic FROM capteur WHERE visible = TRUE');
+	
+	for capteur in cursor.fetchall():
+		topics.append(capteur[0]);
+		client.subscribe(capteur[0]);
+	db.commit();
+	
+Connected = False;
+
+client = mqtt.Client(transport="websockets");
+client.on_connect = on_connect;
+client.on_message = on_message;
+client.connect("pil-09.univlehavre.lan", 9001, 60);
+ 
+client.loop_start() ;
+
+while Connected != True: 
+    time.sleep(0.1);
+
+update_capteur();
+
+try:
+	while True:
+		time.sleep(1);
+		 
+except KeyboardInterrupt:
+	print "exiting";
+	client.disconnect();
+	client.loop_stop();
+	db.close();
diff --git a/PC/Verification.py b/PC/Verification.py
new file mode 100644
index 0000000000000000000000000000000000000000..774f7a71e22df088aa00c34bdca92c85cbcdb66d
--- /dev/null
+++ b/PC/Verification.py
@@ -0,0 +1,96 @@
+import paho.mqtt.client as mqtt
+import time
+import sys
+import subprocess
+import os
+import signal
+from random import randint
+
+# Pour couper le script :
+# > ps -A | grep python
+# > sudo kill -9 ...
+ 
+global mqttTopic, errorDelay, lastMessageTime ;
+global pid_MySQL, pid_Generation, client;
+mqttTopic = "/system/mqtt";
+errorDelay = 60; # On laisse 60 secondes au serveur avant de le redemmarer
+
+def on_connect(client, userdata, flags, rc):
+    if rc == 0:
+        print("Connected to broker");
+
+        global Connected;
+        Connected = True;
+ 
+    else:
+        print("Connection failed");
+
+
+def on_message(client, userdata, msg):
+	global mqttTopic, lastMessageTime ;
+	print(msg.topic + " Payload -> " +str(msg.payload));
+	if msg.topic == mqttTopic :
+		lastMessageTime = time.time();	
+		print(" MQTT fonctionne ");
+
+
+def startBackgroundScript():
+	global pid_MySQL;#, pid_Generation;
+	global Connected, client ;
+	
+	client = mqtt.Client(transport="websockets");
+	client.on_connect = on_connect;
+	client.on_message = on_message;
+
+	try:
+		client.connect("pil-09.univlehavre.lan", 9001, 60);
+	except:
+		print("Echec connection");
+	
+	client.loop_start() ;
+
+	while Connected != True: 
+	    time.sleep(0.1);
+
+	client.subscribe(mqttTopic);
+
+	#proc = subprocess.Popen("sudo python GenerationDonneesMQTT.py", shell=True, preexec_fn=os.setsid);
+	#pid_Generation = proc.pid ;
+	proc = subprocess.Popen("sudo python MQTT_MySQL.py", shell=True, preexec_fn=os.setsid);
+	pid_MySQL = proc.pid ;
+
+	print("\n\nSTART SERVER : "+str(pid_MySQL));#+" "+str(pid_Generation));
+
+def restartServer():
+	global pid_MySQL;#, pid_Generation;
+	
+	print("\n\nERROR SERVER : "+str(pid_MySQL));#+" "+str(pid_Generation));
+	
+	os.killpg(os.getpgid(pid_MySQL), signal.SIGKILL) ;
+	#os.killpg(os.getpgid(pid_Generation), signal.SIGKILL) ;
+	
+	subprocess.Popen("sudo systemctl restart mosquitto", shell=True);
+	time.sleep(2);
+
+	startBackgroundScript();
+
+Connected = False;
+
+startBackgroundScript();
+lastMessageTime = time.time();
+
+try:
+    while True:	
+	print((time.time()-lastMessageTime));
+	if (time.time()-lastMessageTime) > errorDelay:
+		restartServer();	
+		lastMessageTime = time.time();
+
+	time.sleep(10); # 10 secondes
+
+        client.publish(mqttTopic, 0);
+	print("messsage securite");
+	
+except KeyboardInterrupt:
+    client.disconnect();
+    client.loop_stop();