Cameteo/raspberry/python/serial_module.py

69 lines
2.1 KiB
Python

#!/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)