Résolu sur le forum : Borne Wallbox Pulsar Plus 7,4 kW sur abonnement 6 kVA : quel délestage avant accord copro (urgent)Ma panne diagnostiquée — réponse sous 48 h29 €

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.

Électroniquemis à jour le 23 avril 2023

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, pendant une durée voulue. Dans cet article, nous allons vous expliquer comment programmer le pcDuino pour réaliser cette tâche.

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.

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, pendant une durée voulue.
  • 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.
  • 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

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 donnees horodatees de duree voulue avec enregistrement auto

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

# entete declarative
noLoop=True

filepath=«  »
filename=«  »
today0=«  »

compt=0
refTime=None
intervalle=1 # intervalle en sec entre 2 mesures
nombreMesures=1000 # nombre de mesures

# duree = intervalle x (nombreMesure-1)

#— setup —
def setup():

        global filepath, filename, today0, refTime

ÉlectroniqueChamp électrique : les notions fondamentales expliquées simplement

        myDataPath=(« data/text/ »)

        today0=today() # memorise jour courant

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

        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, today0, refTime, compt

        myFile=open(filepath,‘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

ÉlectroniqueBien chauffer son atelier d’électronique : confort, sécurité et continuité de travail

        # 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
        print dataLine # debug
        myFile.write(dataLine) # ecrit la ligne dans le fichier

        myFile.close() # fermeture du fichier en ecriture

        «  » »
        #– 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
        if compt>nombreMesures: exit() # stop si assez de mesure

        timer(intervalle*1000, loop) # auto appel de loop toutes les secondes

# — 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/WriteDataTestDatetimeTimerDuree.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

  • Difficile de faire plus simple !

Donnez votre avis

Soyez le 1er à noter cet article
ou bien laissez un avis détaillé


Partagez cet article maintenant !


Ça ne règle pas votre cas ?

Décrivez la panne sur le forum, avec une photo si vous pouvez : les membres qui ont eu la même répondent, et le sujet reste pour les suivants.

Avatar photoAvatar photoAvatar photoAvatar photoAvatar photoRejoindre les 54 membres — gratuit, 44 pannes résolues

Dans le même tiroir

Les feux de circulation (6 Leds)
Électronique

Les feux de circulation (6 Leds)

Les feux de circulation sont des dispositifs de signalisation routière qui permettent aux conducteurs de savoir quand ils peuvent avancer…

Portrait de Inès DameronInès Dameron · 20 Avr 2023

Réagissez à cet article

La lettre du club

Une lettre par mois, accrochée au panneau

Les sujets du forum résolus dans le mois, un guide, un chiffre qu’on peut vérifier chez soi. Rien d’autre, jamais plus souvent — et on se désabonne d’un clic.

Ce qu’il y a dedans

Votre adresse

Une lettre par mois. Désabonnement en un clic.

Partagez votre réaction