Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from configparser import ConfigParser
- parser = ConfigParser()
- parser.read('configuration.ini')
- import hashlib
- import socket
- IPaddress=socket.gethostbyname(socket.gethostname())
- import mysql.connector
- from mysql.connector import Error
- from mysql.connector import errorcode
- from datetime import datetime
- today = datetime.today()
- curentTime = today.strftime("%Y-%m-%d %H:%M:%S")
- import csv
- radarHash = parser.get('info', 'identifiant')
- radarId = parser.get('info', 'radarBDDID')
- configFileModificationDate = parser.get('settings', 'modificationDate')
- softwareVersion = parser.get('settings', 'version')
- speedLimit = parser.get('settings', 'speedLimit')
- maxSpeed = parser.get('settings', 'maxSpeed')
- pluieWarning = parser.get('settings', 'pluieWarning')
- ventWarning = parser.get('settings', 'ventWarning')
- speedMessageLimitText = parser.get('settings', 'speedMessageLimitText')
- speedMessageLimitColor = parser.get('settings', 'speedMessageLimitColor')
- maxSpeedMessageText = parser.get('settings', 'maxSpeedMessageText')
- maxSpeedMessageColor = parser.get('settings', 'maxSpeedMessageColor')
- pluieMessage = parser.get('settings', 'pluieMessage')
- ventMessage = parser.get('settings', 'ventMessage')
- note = parser.get('settings', 'note')
- configDataId = parser.get('data', 'dataid')
- configDataNumber = parser.get('data', 'datanumber')
- if radarHash == "":
- reconfigureDB = True
- timeForHash = curentTime.encode('utf-8')
- newHash = hashlib.sha224(timeForHash).hexdigest()
- configFile = open('configuration.ini','r+')
- parser.set('info', 'identifiant', newHash)
- parser.write(configFile)
- configFile.close()
- print ("Un identifiant unique à été généré :", newHash)
- else:
- reconfigureDB = False
- print ("Il est :", curentTime)
- import time
- starttime=time.time()
- print ("Connexion à la base de données")
- try:
- bdd = mysql.connector.connect(host=parser.get('basededonnees', 'host'),
- database=parser.get('basededonnees', 'database'),
- user=parser.get('basededonnees', 'username'),
- password=parser.get('basededonnees', 'password'))
- if bdd.is_connected():
- cursor = bdd.cursor()
- db_Info = bdd.get_server_info()
- print ("Connexion reussie")
- print ("Informations serveur :" ,db_Info)
- if (reconfigureDB == True):
- print ("Inscription du radar dans la base de données")
- GPSCoord = parser.get('info', 'GPSCoord')
- sql_query1 = """INSERT INTO radars (id, hash, locationGps, name, lastHeartbeat, lastIp) VALUES (%s, %s, %s, %s, %s, %s)"""
- sql_values1 = (None, newHash, GPSCoord, "Radar Pedagogique", curentTime, IPaddress)
- cursor.execute(sql_query1, sql_values1)
- sql_query2 = """SELECT id FROM radars WHERE hash = '%s'""" % (newHash)
- cursor.execute(sql_query2)
- radarId = cursor.fetchone()
- radarId = radarId[0]
- radarId = str(radarId)
- print ("Le numéro du radar est:", radarId)
- configFile = open('configuration.ini','r+')
- parser.set('info', 'radarBDDID', radarId)
- parser.write(configFile)
- configFile.close()
- reconfigureDB = False
- print ("Vérification des informations de configuration")
- sql_query = """SELECT modificationDate FROM radarsSettings WHERE radarId = '%s'""" % (radarId)
- cursor.execute(sql_query)
- bddModificationDate = cursor.fetchone()
- if (bddModificationDate != None):
- bddModificationDate = bddModificationDate[0]
- bddModificationDate = str(bddModificationDate)
- bddModificationDate = datetime.strptime(bddModificationDate, "%Y-%m-%d %H:%M:%S")
- configFileModificationDate = datetime.strptime(configFileModificationDate, "%Y-%m-%d %H:%M:%S")
- if (bddModificationDate>configFileModificationDate):
- sql_query = """SELECT * FROM radarsSettings WHERE radarId = '%s'""" % (radarId)
- cursor.execute(sql_query)
- sql_resultats = cursor.fetchall()
- for row in sql_resultats:
- configFileModificationDate = row[2]
- softwareVersion = row[3]
- speedLimit = row[4]
- maxSpeed = row[5]
- pluieWarning = row[6]
- ventWarning = row[7]
- speedMessageLimitText = row[8]
- speedMessageLimitColor = row[9]
- maxSpeedMessageText = row[10]
- maxSpeedMessageColor = row[11]
- pluieMessage = row[12]
- ventMessage = row[13]
- note = row[14]
- configFile = open('configuration.ini','r+')
- parser.set('settings', 'modificationDate', str(configFileModificationDate))
- parser.set('settings', 'version', str(softwareVersion))
- parser.set('settings', 'speedLimit', str(speedLimit))
- parser.set('settings', 'maxSpeed', str(maxSpeed))
- parser.set('settings', 'pluieWarning', str(pluieWarning))
- parser.set('settings', 'ventWarning', str(ventWarning))
- parser.set('settings', 'speedMessageLimitText', str(speedMessageLimitText))
- parser.set('settings', 'speedMessageLimitColor', str(speedMessageLimitColor))
- parser.set('settings', 'maxSpeedMessageText', str(maxSpeedMessageText))
- parser.set('settings', 'maxSpeedMessageColor', str(maxSpeedMessageColor))
- parser.set('settings', 'pluieMessage', str(pluieMessage))
- parser.set('settings', 'ventMessage', str(ventMessage))
- parser.set('settings', 'note', str(note))
- parser.write(configFile)
- configFile.close()
- print ("Les Informations de configuration locales ont été mises à jour. Les nouvelles datent du ",bddModificationDate)
- if (bddModificationDate<configFileModificationDate):
- sql_query = """UPDATE radarsSettings SET modificationDate = %s, version = %s, speedLimit = %s, maxSpeed = %s, pluieWarning = %s, ventWarning = %s, speedMessageLimitText = %s, speedMessageLimitColor = %s, maxSpeedMessageText = %s, maxSpeedMessageColor = %s, pluieMessage = %s, ventMessage = %s, note = %s WHERE radarId= %s"""
- sql_values = (configFileModificationDate, softwareVersion, speedLimit, maxSpeed, pluieWarning, ventWarning, speedMessageLimitText, speedMessageLimitColor, maxSpeedMessageText, maxSpeedMessageColor, pluieMessage, ventMessage, note, radarId)
- cursor.execute(sql_query, sql_values)
- print ("Les Informations de configuration distantes été mises à jour. Les nouvelles datent du ",configFileModificationDate)
- else:
- sql_query = """INSERT INTO radarsSettings (id, radarId, modificationDate, version, speedLimit, maxSpeed, pluieWarning, ventWarning, speedMessageLimitText, speedMessageLimitColor, maxSpeedMessageText, maxSpeedMessageColor, pluieMessage, ventMessage, note) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
- sql_values = (None, radarId, configFileModificationDate, softwareVersion, speedLimit, maxSpeed, pluieWarning, ventWarning, speedMessageLimitText, speedMessageLimitColor, maxSpeedMessageText, maxSpeedMessageColor, pluieMessage, ventMessage, note)
- cursor.execute(sql_query, sql_values)
- print ("Les Informations de configuration distantes ont été mises à jour. Les nouvelles datent du ",configFileModificationDate)
- print("Lecture du fichier log")
- with open('log.txt') as csv_file:
- csv_reader = csv.reader(csv_file, delimiter=',')
- data_count = 0
- for row in csv_reader:
- if data_count == 0:
- data_count += 1
- else:
- dataId = row[0]
- vitesse = row[1]
- pluie = row[2]
- vent = row[3]
- temp = row[4]
- time = row[5]
- if (dataId > configDataId):
- sql_query = """INSERT INTO data (id, radarId, vitesse, pluie, vent, temp, time) VALUES (%s, %s, %s, %s, %s, %s, %s)"""
- sql_values = (None, radarId, vitesse, pluie, vent, temp, time)
- cursor.execute(sql_query, sql_values)
- sql_query = """UPDATE radars SET lastHeartbeat = %s WHERE id= %s"""
- sql_values = (curentTime, radarId)
- cursor.execute(sql_query, sql_values)
- data_count += 1
- configFile = open('configuration.ini','r+')
- parser.set('data', 'dataid', str(dataId))
- parser.set('data', 'datanumber', str(data_count))
- parser.write(configFile)
- configFile.close()
- bdd.commit()
- print ("Les valeurs ont correctement été envoyées!")
- except mysql.connector.Error as error:
- print("Impossible de se connecter au serveur MySQL {}".format(error))
- finally:
- if (bdd.is_connected()):
- cursor.close()
- bdd.close()
- print("La connexion MySQL est terminée.")
Advertisement
Add Comment
Please, Sign In to add comment