Le script lit les trames sur le port série et les enregistre toutes les 5mn dans un fichier (ce qui donne une précision correcte). Toutes les 10mn, le script envoie le contenu du fichier au serveur web.
Lors de la lecture d'une trame sur le port série, le script Python ajoute une info de datage car l'Arduino ne le permet pas (à moins de l'équiper d'un DTC1307).
Accessoirement, le script fait, toutes les 24 heures, le ménage dans le fichier émis pour ne pas que celui-ci grossisse de trop.
Les données supprimées du fichier sont sauvegardées dans un fichier d'historique, avec une précision de 2 heures.
Ce fichier est lui aussi envoyé vers le serveur pour un affichage ultérieur.
Explications du script, dans les grandes lignes:
Déclaration du port série et lecture du port:
Nota: La lecture du port série nécessite d'installer la librairie pyserial.
import serial
ser = serial.Serial('COM4',9600) # Le num de port est à récupérer sous Windows. La vitesse doit être cohérente de celle configurée sur l'Arduino
line = ser.readline() # Lecture d'une trame sur le port série
Connexion à un serveur ftp et envoi de fichier:
connect = ftp.FTP(host,user,password) # on se connecte au serveur ftp
# host: adresse du serveur FTP
# user: votre identifiant
# password: votre mot de passe
a = open('TempsData.txt', 'rb') # On ouvre le fichier à envoyer en binaire
connect.storbinary('STOR TempsData.txt',a) # On envoie le fichier de données
a.close()
Le script Python est téléchargeable ici.
A bientôt pour la partie PHP (mais ça ne va pas être pour tout de suite, il faut que je fasse un peu de ménage dans le script)