#!/usr/bin/python3
# -*- coding: UTF8 -*-

# Reception de données depuis un arduino via port série

version = "0.1"

#Configuration du port série
port_serie = "/dev/ttyACM1"
#port_serie_alt = "/dev/ttyACM1"

baud_rate = 115200

#############
import serial
from pprint import pprint

str_line = []           #une ligne de donnée lue sur le port série et prétraitée 
data = dict()           #une donnée d'un capteur
data_package = dict()   #un paquet de donnée à un moment
data_set = dict()       #ensemble des paquets de données

with serial.Serial(port_serie, baud_rate) as comm: #, timeout = 0
    
    print("Initialization du microcontroleur en cours...")
    
    while True:
        line = comm.readline()
        if line == b'###Init_end###\r\n' :
            break
        else:
            print(".")

    while True:
        line = comm.readline()
        if line == b'###Data_start###\r\n' :
            break
        else:
            print("En attente d'un nouveau paquet de données...")

    while True:
        line = comm.readline()
        if line == b'###Data_start###\r\n' :
            print("Nouveau paquet de données !")
            #break
        elif line == b'###Data_end###\r\n' :
            print("Fin du paquet de données !") 
        else:
            #Nettoyage des caractères spéciaux inutile (retour chariot...) et 
            # conversion en liste de chaînes de caractères
            str_line = line.decode("ascii").strip().split('\t')
            #Mise en tableau de données
            data['type'] = str_line[0].strip()
            data['sensor'] = str_line[1].strip()
            data['value'] = str_line[2].strip()
            if len(str_line) > 3 and str_line[3].strip() != "-":
                data['unit'] = str_line[3].strip()
            else:
                data['unit'] = None
                
            if len(str_line) > 4:
                data['comment'] = str_line[4]
            else:
                data['comment'] = None
        
            data_package[data['type'] + "_" + data['sensor']] = data
            data = {}
            
            pprint(data_package)