-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
80 lines (58 loc) · 3.74 KB
/
main.py
File metadata and controls
80 lines (58 loc) · 3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
### IMPORTATION DES MODULES
import serial #module permettant de "lire" les ports la carte Arduino
import mysql.connector #pip install mysql-connector-python #module permettant de faire des requêtes SQL
import time #module permettant de mettre le programme en pause
import os #module permettant de travailler avec des dossiers / fichiers
import paho.mqtt.client as mqtt
import shutil, webbrowser #travailler avec des fichiers / ouvrir des sites web
### INITIALISATION
print("Ouverture de Xampp...")
os.system(r"c: && cd C:\xampp && xampp_start") #On lance xampp
connection = mysql.connector.connect(host='localhost', database='', user='root', password='')
curseur = connection.cursor()
requete_creation_bdd = "CREATE DATABASE IF NOT EXISTS TEMPERATURES" #création de la base de données
curseur.execute(requete_creation_bdd)
connection.close()
#On refait une connection en spécifiant cette fois la base de donnée afin d'y effectuer des actions :
connection = mysql.connector.connect(host='localhost',database='TEMPERATURES',user='root',password='')
curseur = connection.cursor()
curseur.execute("CREATE TABLE IF NOT EXISTS `TEMPERATURES_GLACIERE` ( `id_horodatage` DATETIME NOT NULL, `temperatures` FLOAT NOT NULL ) ENGINE = InnoDB;")
# print("On vide la table")
# curseur.execute("TRUNCATE `TEMPERATURES_GLACIERE`") #On vide la table ( au cas où elle existe déjà )
# connection.commit() #On soumet la requete
#On crée la fonction ajout_temperature_BDD, qui va nous permettre de creer une requete SQL qui ajoute la temperature dans la base de donnée
def ajout_temperature_BDD(temperature):
print(f"Ajout de la température {temperature} dans la base de donnée")
# print(f"INSERT INTO `TEMPERATURES_GLACIERE` ( `id_horodatage`, `temperatures`) VALUES (NOW(),'{temperature}')")
curseur.execute(f"INSERT INTO `TEMPERATURES_GLACIERE` ( `id_horodatage`, `temperatures`) VALUES ( NOW(),'{temperature}')")
connection.commit() #On soumet la requete
os.chdir("site") #On change de dossier
files = ['suivi_temperature_glaciere.php', 'style_site.css', 'fond.jpg', 'icone.png']
for file in files:
try:
shutil.copy(file, r'C:\xampp\htdocs')
except shutil.Error: #Si le fichier a deja été déplacé
pass
webbrowser.open("http://localhost/phpmyadmin/sql.php?db=temperatures&table=temperatures_glaciere&pos=0")
webbrowser.open("http://localhost/suivi_temperature_glaciere.php") #On ouvre le site en local
def publication(topic, message): #On publie un topic et un message
client.publish(topic, message)
print(f"Publication de la température {message} au topic {topic}")
broker_mqtt = "test.mosquitto.org" #On définit la localisation du broker MQTT ( utilisation du broker test fourni par mosquitto )
client = mqtt.Client("glaciere")
client.connect(broker_mqtt) #Connection au broker
valeur_precedente = None
### MAIN
ARDUINO = "COM3" #On part du principe que la carte Arduino se trouve sur le port 3
ser = serial.Serial(ARDUINO, timeout=1) #On lit le port de la carte Arduino
ser.flushInput()
while True: #Boucle infinie
serialValue = ser.readline().strip()
if len(serialValue) == 5: #On filtre la valeur pour n'avoir que la température
# if serialValue != valeur_precedente:
# print(float(serialValue))
ajout_temperature_BDD(float(serialValue)) #On appelle la fonction afin d'ajouter la température dans la base de donnée
publication("temperature_glaciere", float(serialValue)) #On appelle la fonction afin d'ajouter la température dans la base de donnée
# valeur_precedente = serialValue
time.sleep(1) #On met le programme en pause durant deux secondes, pour éviter d'avoir trop de valeur dans la base de donnée
main()