Logo Mon Club Elec

Programmer le pcDuino : Pyduino : Fichier : Créer un fichier de 24H de 6 séries de données horodatées de test.

Le pcDuino est un système informatique open source qui permet aux utilisateurs de programmer leurs propres applications. Avec Pyduino, un langage de programmation open source, les utilisateurs peuvent créer des fichiers de données horodatées de test. Dans cet article, nous allons vous montrer comment créer un fichier de 24 heures de 6 séries de données horodatées de test avec Pyduino et le pcDuino.

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 : Créer un fichier de 24H de 6 séries 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 : Créer un fichier de 24H de 6 séries 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.

Ce que l’on va faire ici

  • Dans ce code, je vous montre comment ajouter 6 séries de 24H de données horodatées de test dans un fichier, au format « JJ/MM/AAAA hh:mm:ss , val1, val2, val3, val4, val5, val6 \n » pour chaque ligne de donnée. Ici, on enregistre 1 donnée toutes les minutes soit 1440 valeurs pour une journée.
  • L’intérêt ici est l’utilisation du module Python datetime qui permet de manipuler assez simplement les écarts de durée avec calcul automatique de la nouvelle heure. Ah là, là… Python je vous dis… c’est vraiment cool !
  • Une fois généré, le fichier pourra être utilisé de différentes façons :
    • soit simplement ouvert dans un éditeur
    • soit copié/collé dans un tableur
    • soit utilisé par un serveur TCP/Html/Javascript pour fournir un graphique en ligne
    • en un mot : souplesse maximale !
  • Une fois de plus, la simplicité est au rendez-vous : pas besoin de shield SD externe, les données vont être enregistrées dans un fichier du système. D’autre part, la fonction timer() de la librairie Pyduino permet d’implémenter simplement un appel régulier d’une fonction et les fonctions « temps réel » permettent un horodatage sans avoir besoin d’utiliser de librairie externe complémentaire…

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 :
$ mkdir data/text/
  • 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
Programmer le pcDuino : Pyduino : Fichier : Créer un fichier de 24H de 6 séries de données horodatées de test.

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 :

#!/usr/bin/python
# -*- 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 6 series de donnees horodatees de test sur 24H

from pyduino import * # importe les fonctions Arduino pour Python
import datetime # pour operations facilitees sur date/heure

# entete declarative
noLoop=True

#— setup —
def setup():

        myDataPath=(« data/text/ »)

        path=homePath()+myDataPath  # chemin du répertoire à utiliser
        filename=« testdata.txt » # nom du fichier
        filepath=path+filename # chemin du fichier

        print filepath

        if exists(filepath):
                print « Le fichier existe : le contenu va etre efface »
        else :
                print « Le fichier n’existe pas : le fichier va etre cree »

        #myFile=open(filepath,’a’) # ouverture pour ajout de texte
        myFile=open(filepath,‘w’) # ouverture pour ecriture avec effacement contenu

        #– ajout de chaines au fichier
        hh=str(hour())
        mm=str(minute())

        nombreSeries=6 # nombre serie de donnees

        refTime=datetime.datetime(int(year()), int(month()), int(day())) # date a utiliser – heure 00:00:00 si pas precise
        print refTime

        for t in range(1440) : # defile 1440 minutes theoriques

                dataTime=refTime+datetime.timedelta(0, t*60) # 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 , val1, val2, .. , val6 \n

                dataLine=str(dataTime)+« , »# format datetime JJ-MM-AAAA hh:mm:ss

                for serie in range(1,nombreSeries+1): # defile serie des y de 1 à n

                        dataValue=str(((serie-1)*1023)+random(0,1023)) # genere une valeur aleatoire entiere

                        if serie==nombreSeries:
                                dataLine=dataLine+str(dataValue) + « \n« # sans la virgule
                        else :
                                dataLine=dataLine+str(dataValue)+« , » # sinon avec la virgule

                myFile.write(dataLine) # ecrit la ligne dans le fichier

        myFile.close() # fermeture du fichier en ecriture

        #– lecture du fichier —
        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

        # NB : on peut aussi ouvrir le fichier dans l’editeur pour verifier son contenu

# — fin setup —

# — loop —
def loop():
        return  # si vide

# — fin loop —

#— 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/WriteDataTestDatetimex6.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 : les lignes de données sont ajoutées au fichier.
Programmer le pcDuino : Pyduino : Fichier : Créer un fichier de 24H de 6 séries de données horodatées de test.
  • On pourra à tout moment ouvrir le fichier pour voir son contenu :
Programmer le pcDuino : Pyduino : Fichier : Créer un fichier de 24H de 6 séries de données horodatées de test.
  • On pourra également visualiser les données dans un tableur.
Programmer le pcDuino : Pyduino : Fichier : Créer un fichier de 24H de 6 séries de données horodatées de test.
  • Truc un moyen simple de récupérer les données est de les copier dans le répertoire /var/www du serveur apache si installé :
$ sudo cp data/text/testdata.txt /www/var

Ensuite, les données sont accessibles depuis un navigateur à l’adresse de la forme : http://192.168.1.19/testdata.txt

  • On pourra également utiliser les données avec un serveur Tcp/Html/Javascript pour générer un graphique dans un navigateur.
Programmer le pcDuino : Pyduino : Fichier : Créer un fichier de 24H de 6 séries de données horodatées de test.

Discussion technique

  • Polyvalence maximale… et noter la simplicité du code !
Noter cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Archive Mon Club Elec

Articles populaires

Newsletter

Inscrivez-vous maintenant et bénéficiez d'un soutien continu pour réaliser vos travaux électriques en toute sécurité.