main.py 3.97 KB
"""
Created on Thu Jan 11 15:22:56 2018
@author: Robin Cavalieri 
IMA5SC - PFE 2018
P32 - Détection automatique de DoS sur réseau LoRa
Main - prédictions, affichage, vérification du trafic 
"""
###############################################################################
#LIBRAIRIES UTILES
###############################################################################
import tkinter as tkr;
import time;
import ANN;
import serial;
import recoder;
###############################################################################

###############################################################################
#VARIABLES GLOBALES
###############################################################################
ping_mesured=0; 
rssi_mesured=0;
cpt_trame=0;
result=0;
###############################################################################

##############################################################################
#DEFINITION DE LA LECTURE DE PORT 
##############################################################################
ser = serial.Serial(      
 #Pour Linux
 #port='/dev/ttyACM0',
 #Pour Windows
 port='COM4',
 #Vitesse de communication
 baudrate = 9600,
 #Parité 
 parity=serial.PARITY_NONE,
 #Bit de stop
 stopbits=serial.STOPBITS_ONE,
 #Taille du message 
 bytesize=serial.EIGHTBITS,
 #Out
 timeout=1
)
counter=0;
##############################################################################

###############################################################################
#FONCTIONS UTILES
###############################################################################
def Data_recover():
    x = ser.readline();
    debut = time.time();
    temp = debut;
    #Vérifier si la trame provient d'un emetteur connu
    #Travail ici avec un seul et unique emetteur
    if(cpt_trame == 0): #PREMIERE TRAME ET TRAME OK 
        #Récupération du ping
        debut = time.time();
        temp = debut;
        cpt_trame = cpt_trame +1;     
    elif(cpt_trame > 0 and ): #PAS LA PREMIERE ET TRAME OK
        #Récupération du ping
        fin = time.time(); 
        ping = (fin-temp)*1000;
        #Récupération de la trame
        trame = x;
        #Récupération de la puissance
        x = ser.readline();
        #Sortie de boucle
        cpt_trame = cpt_trame + 1;
    else: #TRAME INCONNUE PREMIERE OU AUTRE
        #TRAME INCONNUE = ATTAQUE
        result = 1;

def Draw():   
    result = ANN.predictions(ping_mesured, rssi_mesured);
    #FRAME INFORMATIONS
    infos=tkr.Frame(root,width=1000,height=5000,relief='groove',background='white',bd=3);
    infos.place(x=10,y=10);  
    #DATE - HEURE
    global text;
    text=tkr.Label(infos,text='HELLO');
    text.config(font=('arial', 20, 'bold'));
    text.config(bg='white', fg='black');
    text.pack();
    global ping;
    ping=tkr.Label(infos,text='\n\nPING(ms) : '+ ping_mesured);
    ping.config(font=('arial', 20, 'bold'));
    ping.config(bg='white', fg='black');
    ping.pack();
    global rssi;
    rssi=tkr.Label(infos,text='\n\nRSSI(dBm) : '+ rssi_mesured);
    rssi.config(font=('arial', 20, 'bold'));
    rssi.config(bg='white', fg='black');
    rssi.pack();
    global trame;
    trame=tkr.Label(infos,text='\n\nTrame :');
    trame.config(font=('arial', 20, 'bold'));
    trame.config(bg='white', fg='black');
    trame.pack();
    
    #FRAME CHART
    chart=tkr.Frame(root,width=985,height=530,relief='groove',background='white',bd=3);
    chart.place(x=370,y=10); 
    
    #PIED DE PAGE
    footer=tkr.Frame(root,width=1350,height=150,relief='groove',background='white',bd=3);
    footer.place(x=10,y=550);
    
def Refresher():
    global text;
    text.configure(text=time.asctime());
    root.after(1000, Refresher);#Refresh toutes les secondes

###############################################################################
#AFFICHAGE
###############################################################################
root=tkr.Tk();
Draw();
Refresher();
root.mainloop();
###############################################################################