Le pcDuino est une plateforme de développement open source qui permet aux développeurs de créer des applications et des systèmes embarqués. Avec Pyduino, un langage de programmation Python spécialement conçu pour le pcDuino, il est possible d’ajouter une ligne de donnée horodatée à intervalle régulier dans un fichier texte, avec une journalisation automatique toutes les minutes. Dans cet article, nous allons vous expliquer comment programmer le pcDuino pour ajouter une ligne de donnée horodatée à intervalle régulier dans un fichier texte, avec une journalisation automatique toutes les minutes.
Programmer le pcDuino : Pyduino : Fichier : Ajouter une ligne de donnée horodatée à intervalle régulier dans un fichier texte, avec « journalisation » automatique toutes les minutes.
Ce que l’on va faire ici
- Dans ce code, je vous montre comment ajouter une ligne de données horodatées dans un fichier à intervalle régulier, avec journalisation automatique du fichier toutes les minutes. Autrement dit, lorsque l’on change de minute, un nouveau fichier est créé.
- L’intérêt ici est essentiellement de tester la journalisation automatique des fichiers… sans avoir à attendre 24H pour s’assurer du bon fonctionnement.
- Le fichier obtenu pourra être lu dans un navigateur web à l’aide du code suivant : Afficher une courbe à partir d’un fichier de données Veuiller simplement à utiliser le même nom de fichier dans les 2 codes.
Pré-requis
- un mini-PC (pcDuino conseillé) avec système Lubuntu opérationnel. Voir si besoin la page d’accueil du pcDuino
- Langage Python (2.7) et l’IDE Pyduino ou l’éditeur Geany installés. Voir si besoin : Logiciel pour développer avec Pyduino
- ma librairie pyDuino installée : voir si besoin : Télécharger et installer Pyduino sur le pcDuino
- D’autre part, vérifier que le répertoire utilisé pour le stockage des données existe, à savoir ~/data/text/ (ici, le ~ symbolise le répertoire /home/user/). Si le répertoire n’existe pas, le créer graphiquement ou le faire avec la commande :
- Noter qu’il est également possible de le faire directement depuis le code Pyduino…
Schéma fonctionnel
- Le code Pyduino lance écrit des données dans un fichier texte
Matériel nécessaire
Système
- Le pcDuino
- On pourra utiliser au choix le stockage en mémoire NAND interne (par défaut), ou bien sur une carte SD ou une clé USB. Le chemin sera à adapter en conséquence.
E/S
- Pas utilisées.
Instructions de montage
- Aucun montage.
Le montage à réaliser
- Aucun montage
Le fichier *.yno
Copier/coller ce code dans l’IDE Pyduino
Le fichier *.py
Copier/coller ce code dans l’éditeur Geany :
# -*- coding: utf-8 -*-
# exemple pyDuino – par X. HINAULT – www.mon-club-elec.fr
# Aout 2013- Tous droits réservés – GPLv3
# voir : https://github.com/sensor56/pyDuino
# Creer un fichier de donnees horodatees avec journalisation (=nouveau fichier) auto par minute
from pyduino import * # importe les fonctions Arduino pour Python
import datetime # pour operations facilitees sur date/heure
# entete declarative
noLoop=True
filepath=« »
filename=« »
myDataPath=« »
compt=0
refTime=None
intervalle=1 # intervalle en sec entre 2 mesures
#nombreMesures=1000 # nombre de mesures
minute0=« » # derniere minute prise en compte
today0=« » # dernier jour pris en compte
hour0=« » # derniere heure prise en compte
# duree = intervalle x (nombreMesure-1)
#— setup —
def setup():
global filepath, filename, myDataPath, today0, hour0, minute0, refTime
# définition initiale fichier
myDataPath=(« data/text/ ») # chemin d’enregistrement
createFilename() # cree le nom du fichier a utiliser en se basant sur l’heure courante
print filepath
# creation fichier au besoin
if exists(filepath):
print « Le fichier existe »
else :
print « Le fichier n’existe pas : creation du fichier »
myFile=open(filepath,‘w’) # création du fichier
myFile.close()
# memorise temps de reference
#refTime=datetime.datetime(int(year()), int(month()), int(day())) # date a utiliser – heure 00:00:00 si pas precise
#print refTime
loop() # premier appel loop
# NB : on peut aussi ouvrir le fichier dans l’editeur pour verifier son contenu
# — fin setup —
# — loop —
def loop():
global filepath, filename, myDataPath, today0, hour0, minute0, refTime, compt
if minute0!=minute(): # si la minute memorisee est differente minute courante
createFilename()
# creation fichier au besoin
if exists(filepath):
print « Le fichier existe »
else :
print « Le fichier n’existe pas : creation du fichier »
myFile=open(filepath,‘w’) # création du fichier
myFile.close()
addDataToFile(filepath) #ajoute donnee au fichier
else: # sinon…
addDataToFile(filepath) #ajoute donnee au fichier
« » »
#– lecture du fichier — pour debug
myFile=open(filepath,’r’) # ouverture en lecture
print (« Contenu du fichier : « )
myFile.seek(0) # se met au debut du fichier
print myFile.read() # lit le fichier
myFile.close() # fermeture du fichier
« » »
# auto rappel de loop
compt=compt+1 # incrémente compteur
timer(intervalle*1000, loop) # auto appel de loop toutes les secondes
# — fin loop —
def addDataToFile(filepathIn):
global filepath, filename, myDataPath, today0, hour0, minute0, refTime, compt
myFile=open(filepathIn,‘a’) # ouverture pour ajout de texte
#myFile=open(filepath,’w’) # ouverture pour ecriture avec effacement contenu
#– ajout de chaines au fichier
#for t in range(1440) : # defile 1440 minutes theoriques
dataValue=str(random(0,1023)) # genere une valeur aleatoire entiere
#dataTime=refTime+datetime.timedelta(0, t*60) # jours, secondes – ici toutes les minutes
#dataTime=refTime+datetime.timedelta(0, compt*intervalle) # jours, secondes – ici toutes les minutes
#dataTime=datetime.timedelta(0, t*60) # jours, secondes – ici toutes les minutes – sans refTime
#print dataTime
# format de donnees utilise : JJ/MM/YYYY hh:mm:ss , val \n
#dataLine=today(‘/’) + » » + hh + »: »+mm + « : » + str(t)+ », »+dataValue+ »\n »
#dataLine=str(dataTime)+ », »+dataValue+ »\n » # format datetime JJ-MM-AAAA hh:mm:ss
dataLine=today(« -« )+ » « + hour() +« : »+ minute() +« : »+ second() +« , » + dataValue+« \n« # format datetime JJ-MM-AAAA hh:mm:ss
print dataLine # debug
myFile.write(dataLine) # ecrit la ligne dans le fichier
myFile.close() # fermeture du fichier en ecriture
# fin addDataToFile
# fonction pour creer nom fichier
def createFilename() :
global filepath, filename, myDataPath, today0, hour0, minute0, refTime, compt
today0=today(« _ ») # memorise jour courant
hour0=hour() # memorise heure courante
minute0=minute() # memorise minute courante
path=homePath()+myDataPath # chemin du répertoire à utiliser
filename=« data_ »+today0+« _ »+hour0+« _ »+minute0+« .txt » # nom du fichier
filepath=path+filename # chemin du fichier
print filepath
#— obligatoire pour lancement du code —
if __name__==« __main__ »: # pour rendre le code executable
setup() # appelle la fonction main
while not noLoop: loop() # appelle fonction loop sans fin
Ce code est également disponible ici : https://raw.github.com/sensor56/pyduino-exemples/master/SD/WriteDataTestDatetimeTimerMinuteAuto.py
Utilisation
- Réaliser le montage et connecter le clavier sur le port USB
- Appuyer sur le bouton exécuter dans Geany
- Une fenêtre de Terminal doit apparaître : une ligne de données horodatée s’affiche à intervalle régulier correspondant à la ligne ajoutée au fichier.

- On pourra à tout moment ouvrir le fichier pour voir son contenu :

- Visualisation depuis un navigateur :

Discussion technique
- On pose ici les bases d’un datalogging automatisé, avec création d’un fichier différent, automatiquement, pour une période donnée (minute, heure, ou même journée)
Articles similaires:
- Programmer le pcDuino : Pyduino : Fichier : Ajouter une ligne de donnée horodatée à intervalle régulier dans un fichier texte, pendant une durée voulue.
- Programmer le pcDuino : Pyduino : Fichier : Créer un fichier de 24H de données horodatées de test.
- Programmer le pcDuino : Pyduino : Fichier : Créer un fichier de 24H de 6 séries de données horodatées de test.
- Programmer le pcDuino : Pyduino : Fichier : Ajouter une ligne à intervalle régulier dans un fichier texte.
- Programmer le pcDuino : Fichiers : Enregistrer une mesure analogique dans un fichier texte à intervalle régulier. – compatible Dygraphs
Articles Liés
- Programmer le pcDuino : Pyduino : Fichier : Ajouter une ligne de donnée horodatée à intervalle régulier dans un fichier texte, pendant une durée voulue.
Le pcDuino est une plateforme de développement open source qui permet aux développeurs de créer…
- Programmer le pcDuino : Pyduino : Fichier : Créer un fichier de données horodatées de test.
Le pcDuino est un système informatique open source qui offre aux développeurs une plateforme puissante…
- Javascript : Graphique Dygraphs simple
Le Javascript est un langage de programmation très populaire et puissant qui permet aux développeurs…