b.gwen a écrit 118 commentaires

  • [^] # Re: au hasard

    Posté par  . En réponse au message Highcharts probleme valeurs y Axis. Évalué à 1.

    Je comprend ce qu'il faut faire ,et comment fonctionne mon fichier ,mais encore une fois , ne sachant pas coder je vous demande de l'aide .

    Actuellement pour créer ma BD compteur (data_DS2423.rrd) j'utilise une valeur 'ce'

    Cette valeur 'ce' me sert aussi pour créer le fichier DS2423Status.txt ainsi que le fichier hist-CPT.txt .

    Il faut donc conserver cette valeur et en créer une autre (conso) a partir de cette valeur 'ce' .

    conso=ce-cep

    Ou trouver cep ??

    Mon fichier a été fait par un membre du forum , n'ayant pas son autorisation je peux le poster sur le forum
    PS je vous l'ai envoyé par Mail NeoX

  • [^] # Re: au hasard

    Posté par  . En réponse au message Highcharts probleme valeurs y Axis. Évalué à 1.

    Bonsoir j'ai bien un probleme de base de données RRDtool. Je vais essayer de m’exprimer correctement pour que vous compreniez mes soucis.
    Je veux enregistrer ma consommation d’eau dans une BD,j’interroge mon compteur toutes les 15 minutes, et ensuite je veux faire des Graph à bar.
    Le poids de l’impulsion de mon compteur = 100 litres d’eau, (1=100) actuellement il a la valeur de 74000 Litres.
    Pour faire ma base de données, et mon graph, je suis partie sur la fonction GAUGE, avec ces valeurs
    rrd_format="{:.0f}"
    rrd_dst="GAUGE"
    rrd_heartbeat=600,
    rrd_min='U'
    rrd_max='U'
    RRA:AVERAGE:0.5:1:288
    RRA:AVERAGE:0.5:6:336
    RRA:AVERAGE:0.5:24:372
    RRA:AVERAGE:0.5:144:732
    RRA:MIN:0.5:1:288
    RRA:MIN:0.5:6:336
    RRA:MIN:0.5:24:372
    RRA:MIN:0.5:144:732
    RRA:MAX:0.5:1:288
    RRA:MAX:0.5:6:336
    RRA:MAX:0.5:24:372
    RRA:MAX:0.5:144:732
    rrd_exports_xml start step fin_fichier
    now-24h 900, "24h.xml" # … sur 24 heures
    now-48h" 1800, "48h.xml" # … sur 48 heures
    now-8d" 3600, "1w.xml" # … sur 1 semaine
    now-1month" 14400, "1m.xml" # … sur 1 mois
    now-3month" 28800, "3m.xml" # … sur 3 mois
    now-1y", 43200, "1y.xml" # … sur 1 an
    ],
    Est ce la bonne solution?
    Voilà le Graph que j’obtiens.

    DLFP

    La valeur de départ était à 74000 Litres à 18h15, Apres, il n’y a pas eu de consommation d’eau.
    Pourquoi les barres du graph continu à être affiché avec la même valeur (7400) ? Comment faire pour avoir une barre a 7400, 7500, 7600, 7700, etc.
    Pourquoi l’axe Y indique les valeurs 0k, 20k, 40k, 60k, 80k, 100k ?

    Merci d’avance pour votre aide .

  • [^] # Re: au hasard

    Posté par  . En réponse au message Highcharts probleme valeurs y Axis. Évalué à 1. Dernière modification le 12/08/15 à 18:00.

    Bonjour Néox , je suis en vacance 15 jours , un peux de calme , je me replonge dans ton projet.

    Tu a viser juste, Est ce que çà ne viens pas de ma BD RRDTOOL ??? c'est la question que je me pose depuis pas mal de mois. Est ce qu'elle est bien créer ??
    Quand je vais fouillez dans ma base de donnée en faisant rrdtool dump data_DS2423.rrd

    voila ce que j'ai .

    <!-- 2015-07-24 02:00:00 CEST / 1437696000 --> <row><v>2.3148148148e-03</v></row>
    <!-- 2015-07-25 02:00:00 CEST / 1437782400 --> <row><v>1.1574074074e-03</v></row>
    <!-- 2015-07-26 02:00:00 CEST / 1437868800 --> <row><v>1.1574074074e-03</v></row>
    <!-- 2015-07-27 02:00:00 CEST / 1437955200 --> <row><v>4.9710270787e+04</v></row>
    <!-- 2015-07-28 02:00:00 CEST / 1438041600 --> <row><v>1.1574074074e-03</v></row>
    <!-- 2015-07-29 02:00:00 CEST / 1438128000 --> <row><v>2.3148148148e-03</v></row>
    <!-- 2015-07-30 02:00:00 CEST / 1438214400 --> <row><v>4.9710271944e+04</v></row>
    <!-- 2015-07-31 02:00:00 CEST / 1438300800 --> <row><v>1.1574074074e-03</v></row>
    <!-- 2015-08-01 02:00:00 CEST / 1438387200 --> <row><v>4.9710270787e+04</v></row>
    <!-- 2015-08-02 02:00:00 CEST / 1438473600 --> <row><v>2.3148148148e-03</v></row>
    <!-- 2015-08-03 02:00:00 CEST / 1438560000 --> <row><v>4.9710269630e+04</v></row>
    <!-- 2015-08-04 02:00:00 CEST / 1438646400 --> <row><v>1.1574074074e-03</v></row>
    <!-- 2015-08-05 02:00:00 CEST / 1438732800 --> <row><v>1.1574074074e-03</v></row>
    <!-- 2015-08-06 02:00:00 CEST / 1438819200 --> <row><v>2.3148148148e-03</v></row>
    <!-- 2015-08-07 02:00:00 CEST / 1438905600 --> <row><v>2.3148148148e-03</v></row>
    <!-- 2015-08-08 02:00:00 CEST / 1438992000 --> <row><v>1.1574074074e-03</v></row>
    <!-- 2015-08-09 02:00:00 CEST / 1439078400 --> <row><v>2.3148148148e-03</v></row>
    <!-- 2015-08-10 02:00:00 CEST / 1439164800 --> <row><v>1.1574074074e-03</v></row>
  • [^] # Re: Intuitivement...

    Posté par  . En réponse au message Problème de doublons dans un fichier txt. Évalué à 1.

    Super Super un grand merci ça fonctionne , je vais programmer la tache cron et le laisser tourner .

  • [^] # Re: Intuitivement...

    Posté par  . En réponse au message Problème de doublons dans un fichier txt. Évalué à 1.

    Oui tu as raison python 11.py 000dd379 écrit bien dans le fichier hist-CPT2 .

    mais j'ai toujours des doublons

    Tue Aug 11 17:03:29 2015 /0/74000/1
    Tue Aug 11 17:04:08 2015 /0/74000/1
    Tue Aug 11 17:04:11 2015 /0/74000/1
    Tue Aug 11 17:04:14 2015 /0/74000/1
    Tue Aug 11 17:10:26 2015 /0/74000/1
    Tue Aug 11 17:10:30 2015 /0/74000/1

    Pour les essais je vais le renommer en test.py

  • [^] # Re: Intuitivement...

    Posté par  . En réponse au message Problème de doublons dans un fichier txt. Évalué à 1. Dernière modification le 11/08/15 à 16:30.

    Merci TheBreton pour ton aide mais , excuse moi je ne comprend pas ce que veux dire (le fichier de log destination est codé en dur).
    Afin de ne pas tout cassé j'ai créer un fichier hist-CPT2 a partir de mon hist-CPT ( j'ai bien sur modifier les lignes 89 et 90 de ton script avec hist-CPT2)
    j'ai lancé le fichier en console de cette maniere
    python 11.py
    Aucune erreur , mais rien ne va s’écrire dans hist-CPT2

  • [^] # Re: Intuitivement...

    Posté par  . En réponse au message Problème de doublons dans un fichier txt. Évalué à 1.

    Pour être honnête , je souhaiterais trouver une personne qui me modifie le code , car je ne sais pas le faire et j'ai peur de tout faire planter.
    J'ai oublier de dire que je récupère les valeurs du fichier txt pour faire une page Web avec 3 Bar graph (Journalier ,Mensuel ,annuel )
    Il y a quelques mois j’ai essayé de le faire une BD rddtool mais je n'ai pas trouver la solution .

    http://linuxfr.org/forums/linux-debutant/posts/rrdtool-base-de-donnees

    PS: j'ai ajouter une photos dans le post principale .

  • [^] # Re: Base de donnees sqlite

    Posté par  . En réponse au message Problème de doublons dans un fichier txt. Évalué à 1.

    Bonjour oyoun j'ai un autre script qu'un membre du forum m'avait fait il y a quelques mois qui écrit dans une BD RDDTool , la BD se remplie bien mais impossible d'exploité ensuite les données , c'est pour cela que je veux repartir avec mon fichier txt

  • [^] # Re: Intuitivement...

    Posté par  . En réponse au message Problème de doublons dans un fichier txt. Évalué à 1.

    Bonjour GuieA_7 et merci pour ta réponse , je comprend ce qu'il faut faire , mais comme j'ai dit précédemment, je ne sais pas écrire du code .

  • [^] # Re: Intuitivement...

    Posté par  . En réponse au message Problème de doublons dans un fichier txt. Évalué à 2.

    Mon niveau de programmation est très très bas !!!
    Ce code n'est pas de moi c'est un ami qui me l'a fait il y a 2 ans quand j’avais commencé un projet de domotique sur un raspberry .
    Toute la partie électronique est de moi, et la partie programmation c’était lui.
    j'essaye donc de me débrouillé au mieux avec mes faibles connaissance .

  • [^] # Re: Intuitivement...

    Posté par  . En réponse au message Problème de doublons dans un fichier txt. Évalué à 1. Dernière modification le 10/08/15 à 13:10.

    Voila mon code python ,

    #!/usr/bin/python
    
    from sys import argv
    from time import sleep, asctime, localtime, time
    from os import path
    
    ext=''
    # compteur = 000dd379
    # A ou B ou vide
    cpt=''
    cptA=0
    cptB=0
    
    error_file='/home/www/logs/cpterr.log'
    
    if len(argv)>=2:
        ext=argv[1]
    if len(argv)>=3:
        cpt=argv[2].upper()
    
    sensorFile='/sys/bus/w1/devices/1d-0000' + ext + '/w1_slave'
    imp2liter=100
    lineA=''
    lineB=''
    crcA=''
    crcB=''
    
    def get_outputs():
        if path.isfile(sensorFile):
            i=0
            for test_output in range(10):
                i+=1
                f = open(sensorFile, "r")
                text = f.read().strip()
                f.close()
                #
                if len(text.split("\n"))==4:
                    # compteur A
                    lineA = text.split("\n")[2]
                    crcA = lineA.split("=")[1].strip(" c")
                    if (crcA=="YES"):
                        cptA = long(lineA.split("=")[2])*imp2liter
                        #print ('Compteur Ai = '+str(cptA))
                        if cpt=='A':
                            if cptA >= 0 :
                                #print ('Compteur Af = '+str(cptA))
                                return ('/'+str(cptA)+'/'+str(i))
                            else:
                                #print "ERREUR"
                                outfile = open(error_file, 'ab')
                                outfile.write(text)
                                outfile.close()
                    #
                    # compteur B
                    lineB = text.split("\n")[3]
                    crcB = lineB.split("=")[1].strip(" c")
                    if (crcB=="YES"):
                        cptB = long(lineB.split("=")[2])*imp2liter
                        #print ('Compteur Bi = '+str(cptB))
                        if cpt=='B':
                            if cptB >= 0 :
                                #print ('Compteur Bf = '+str(cptB))
                                return ('/'+str(cptB)+'/'+str(i))
                            else:
                                #print "ERREUR"
                                outfile = open(error_file, 'ab')
                                outfile.write(text)
                                outfile.close()
                    #
                    if (crcA=="YES" and crcB=="YES"):
                        if cpt=='':
                            if cptA >= 0 and cptB >= 0 :
                                return ('/'+str(cptA)+'/'+str(cptB)+'/'+str(i))
                            else:
                                #print "ERREUR"
                                outfile = open(error_file, 'ab')
                                outfile.write(text)
                                outfile.close()
                    #
                sleep(1)
            return ('N/A')
        else:
            return ('N/A')
    
    # Read sensors 
    results = get_outputs()
    if results<>'N/A':
        localtime = asctime( localtime(time()) )
        print localtime, results
    
    end

    par contre c'est la tache cron qui indique ou est le fichier hist-CPT

    */15 * * * * root python /home/www/py/1d-0000-hist.py 000dd379 >> /home/www/logs/hist-CPT 
    
  • [^] # Re: Vérifier les données avant d'écrire le fichier

    Posté par  . En réponse au message Fichier hist-EXT. Évalué à 1. Dernière modification le 17/06/15 à 12:36.

    ok Merci je vais tester

  • [^] # Re: Vérifier les données avant d'écrire le fichier

    Posté par  . En réponse au message Fichier hist-EXT. Évalué à 1.

    Aille çà bloque la.

    File "readDHT22T.py", line 90
    if s1 = '---' or s2 == '---':
    ^
    SyntaxError: invalid syntax

    #creation du fichier modulus
    #try:
    if True:
           cla = get_c_locale_abbrev()
           s1 = validatePrint(temperature)
           s2 = validatePrint(humidity) 
           if s1 = '---' or s2 == '---':
             old = open(Link_histEXT).read().split('/')
    # Pas propre, mais rapide.
             s1 = old[1]
             s2 = old[2]
           sfile = open(Temp_histEXT,'w')
           sfile.write(cla + " /" +  s1 + "/" + s2 + "/1\n")
           sfile.close()
           subprocess.Popen(["/bin/ln","-fs",Temp_histEXT,Link_histEXT])
       #creation du link  os.symlink ne marche pas si le fichier est déja linké
       #os.symlink(Temp_histEXT,Link_histEXT)
       subprocess.Popen(["/bin/ln","-fs",Temp_histEXT,Link_histEXT])
    
    
    
    #except:
    #   print("unable to create {}".format(Temp_histEXT))
  • [^] # Re: Vérifier les données avant d'écrire le fichier

    Posté par  . En réponse au message Fichier hist-EXT. Évalué à 1.

    Bonsoir et merci lolop pour ton aide , j'ai oublier encore d'expliquer quelques chose !! Ma sonde capte a la fois la température et l'humidité . C'est du tout ou rien si la lecture échoue pour la température elle échoue aussi pour l'humidité (Absence automatiquement des 2 valeurs).
    C'est pour cela que je ne comprend pas quoi et comment adapter ici ??

    if s1 = '---' or s2 == '---': # A adapter…

  • [^] # Re: Vérifier les données avant d'écrire le fichier

    Posté par  . En réponse au message Fichier hist-EXT. Évalué à 1.

    Je me suis mal exprimé , de temps en temps l’interrogation de ma sonde DHT22 échoue et je me retrouve avec comme écriture dans hist-EXT cela

    Sun Jun 14 09:20:07 2015 /---/---/1 (aucune valeur)

    ce fichier est créé avec un modulus % 5 de la minute.
    Donc 5 fichier en alternance et le dernier sera un link sur hist-EXT
    hist-EXT0.txt
    hist-EXT1.txt
    hist-EXT2.txt
    hist-EXT3.txt
    hist-EXT4.txt

    je voudrais que si la lecture échoue hist-EXT se remplisse avec un des 5 fichiers qui a les valeurs .

    Sun Jun 14 09:15:04 2015 /16.9/69.6/1

  • [^] # Re: append

    Posté par  . En réponse au message Fichier hist-EXT. Évalué à 1.

    Merci GnunuX mais le résultat attendu n'est pas la !! (ce que j'ai oublier de dire),les valeurs de ce fichier Temp_histEXT sont récupéré par un autre script donc ça ne colle pas

    Voila ce que j'ai maintenant dans Temp_histEXT
    Sun Jun 14 09:15:04 2015 /16.9/69.6/1
    Sun Jun 14 09:20:07 2015 /---/---/1
    Sun Jun 14 09:25:06 2015 /---/---/1
    Sun Jun 14 09:30:06 2015 /---/---/1

  • [^] # Re: heartbeat ?

    Posté par  . En réponse au message RRDTOOL base de données. Évalué à 1.

    Bonsoir , je reviens vers vous pour vous demander une fois de plus de l'aide , j'ai beau chercher dans tous les sens il y a un truc qui cloche au niveau de ma BD compteur d'eau ,

    voila ce que j'ai mis pour faire ma Base de donnée compteur eau

    rrd_dst="ABSOLUTE"
    rrd_heartbeat=600,
    rrd_min='U',
    rrd_max='U',

    j'ai interrogé ma base avec cette commande en console rrdtool dump data_DS2423 | less
    Et voila la réponse ,
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
    <!-- Round Robin Database Dump -->

    0003
    300 <!-- Seconds -->
    1431367207 <!-- 2015-05-11 20:00:07 CEST -->

    <ds>
    <name> CE1 </name>
    <type> ABSOLUTE </type>
    <minimal_heartbeat>600</minimal_heartbeat>
    <min>0.0000000000e+00</min>
    <max>1.0000000000e+00</max>
    <!-- PDP Status -->
    <last_ds>59800</last_ds>
    <value>NaN</value>
    <unknown_sec> 7 </unknown_sec>
    </ds>
    <!-- Round Robin Archives -->
    <rra>
    <cf>AVERAGE</cf>
    <pdp_per_row>1</pdp_per_row> <!-- 300 seconds -->
    <params>
    <xff>0.0000000000e+00</xff>
    </params>
    <cdp_prep>
    <ds>
    <primary_value>NaN</primary_value>
    <secondary_value>NaN</secondary_value>
    <value>NaN</value>
    <unknown_datapoints>0</unknown_datapoints>
    </ds>
    </cdp_prep>
    <database>
    <!-- 2015-05-11 18:05:00 CEST / 1431360300 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 18:10:00 CEST / 1431360600 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 18:15:00 CEST / 1431360900 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 18:20:00 CEST / 1431361200 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 18:25:00 CEST / 1431361500 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 18:30:00 CEST / 1431361800 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 18:35:00 CEST / 1431362100 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 18:40:00 CEST / 1431362400 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 18:45:00 CEST / 1431362700 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 18:50:00 CEST / 1431363000 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 18:55:00 CEST / 1431363300 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:00:00 CEST / 1431363600 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:05:00 CEST / 1431363900 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:10:00 CEST / 1431364200 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:15:00 CEST / 1431364500 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:20:00 CEST / 1431364800 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:25:00 CEST / 1431365100 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:30:00 CEST / 1431365400 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:35:00 CEST / 1431365700 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:40:00 CEST / 1431366000 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:45:00 CEST / 1431366300 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:50:00 CEST / 1431366600 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 19:55:00 CEST / 1431366900 --> <row><v>NaN</v></row>
    <!-- 2015-05-11 20:00:00 CEST / 1431367200 --> <row><v>NaN</v></row>
    </database>


    AVERAGE
    6 <!-- 1800 seconds -->

    <params>
    <xff>0.0000000000e+00</xff>
    </params>
    <cdp_prep>
    <ds>
    <primary_value>NaN</primary_value>
    <secondary_value>NaN</secondary_value>
    <value>0.0000000000e+00</value>
    <unknown_datapoints>0</unknown_datapoints>
    </ds>
    </cdp_prep>
    <database>
    <!-- 2013-05-11 08:30:00 CEST / 1368253800 --> <row><v>NaN</v></row>
    je ne comprend pas 59800 ce matin avant de partir au travail j'avais 59600 2 impulsions du compteur sont passé pour mettre 59800 pourquoi j'ai toujours NaN a chaque interrogation ?

  • [^] # Re: heartbeat ?

    Posté par  . En réponse au message RRDTOOL base de données. Évalué à 1.

    Je suis toujours au meme point , pour mes derniers essais je suis repassé a Gauge avec ces valeurs
    rrd_heartbeat=3600, rrd_min=0, rrd_max=1,
    la valeur mini acceptée est de: 0 et la valeur maxi de:1 Je ne sais pas si ça fonctionne comme çà je dit a ta base de considérer comme bonne toute valeur comprissent entre 0 et 1 car 1 = 100L

  • [^] # Re: heartbeat ?

    Posté par  . En réponse au message RRDTOOL base de données. Évalué à 1.

    Bonjour Eric , je vais essayé heartbeat a 86400 (24 heures ) et ABSOLUTE

  • [^] # Re: heartbeat ?

    Posté par  . En réponse au message RRDTOOL base de données. Évalué à 1.

    Bonjour Eric ,je viens de verifier effectivement j'ai toujours cette valeur NaN
    Comment faut'il bien configurer ce heartbeat ?

    Est ce que la fonction COUNTER est bien adapté ?
    car il y a COUNTER,GAUGE,DERIVE,ABSOLUTE ou COMPUTE ?
    Un autre truc bizard quand j'ai regardé ma BD avec rrdtool dump fic.rrd elle commence le 13 03 2015 alors que je l'ai créer le 01 05 2015

    <!-- 2015-03-13 01:00:00 CET / 1426204800 --> NaNNaNNaN

  • [^] # Re: Est-ce que tu as un message d'erreur ?

    Posté par  . En réponse au message Ecriture fichier txt. Évalué à 1.

    Merci a tous Super ça fonctionne .
    J'ai bricolé ce code que j'ai posté , pour essayé de comprendre le fonctionnement de la création et de l’écriture du fichier histINT.

    je pensais pouvoir me débrouiller seul pour adapter ça a mon fichier howonpi .Mais ce n'est pas du tout le cas .

    Pour écrire dans histINT j'ai fais ca .

    sfile.write(get_c_locale_abbrev() + " /" +  validatePrint(sensorInfo))

    sensorInfo n'est pas bon , je récupère trop d'information .

    Sat Apr 25 13:10:04 2015 /[['TDS1', '28-000005239592', 'T\xb0Interieure', 19.0]]

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    """
       Scan all sensors from DS18B20.conf
       store data into rrdtool database
       export chart data 
    
    """
    import locale
    import datetime
    import time
    import subprocess
    import os
    import sys
    import shlex
    import DS18B20
    from re import search
    
    
    DS = DS18B20.DS18B20()
    
    #fonction pour changer le language de la date en anglais
    
    def get_c_locale_abbrev():
      lc = locale.setlocale(locale.LC_TIME)
      try:
        locale.setlocale(locale.LC_TIME, "C")
        return time.strftime("%a %b %d %H:%M:%S %Y")
      finally:
        locale.setlocale(locale.LC_TIME, lc)
    
    
    #first read  configuration  to get DS18B20 ID and label info
    
    try:
      fileH = open("/home/www/Graph/DS18B20.conf")
      text = fileH.read()
      fileH.close()
      sensorInfo= [ s.strip().split(',') for s in text.splitlines()]
    except:
      print("Unable to read 'DS18B20.conf'")
      quit()
    
    
    NumberOfSensor= len(sensorInfo)
    
    if NumberOfSensor ==0:
      print("No sensor in configuration file 'DS18B20.conf'. Exit!")
      quit()
    
    
    #get Temperature of each sensor
    #add add it up into the sensor Info
    
    for i in sensorInfo:
     i.append(DS.read(i[1]))
    
    
    #let's update the current status file
    
    #if the value is None  just put ---
    def validatePrint(value):
      if value == None:
         return "---"
      else:
         return "{}".format(value)
    
    #if the value is None tell rrdtool that the value is unknown
    def validateRRD(value):
      if value == None:
         return ":U"
      else:
         return ":{}".format(value)
    
    ''' **********
     Ici c'est le fichier hist-INT
     ce fichier est créé avec un modulus % 5 de la minute.
     Donc 5 fichier en alternance et le dernier sera un link sur hist-INT
     pour permettre d'utiliser hist-INT sans avoir de problème
     de lecture lorsque le fichier ce fait écrire '''
    
    #current time
    current_time= datetime.datetime.now()
    histINT = "/home/www/logs/hist-INT"
    
    #Nom des fichier
    Temp_histINT= histINT + "{}".format(current_time.minute % 5) + ".txt"
    Link_histINT= histINT + ".txt"
    
    #creation du fichier modulus
    #try:
    if True:
       sfile = open(Temp_histINT,'w')
       sfile.write(get_c_locale_abbrev() +  " /"  + validatePrint(sensorInfo))
       sfile.close()
       #creation du link  os.symlink ne marche pas si le fichier est déja linké
       #os.symlink(Temp_histINT,Link_histINT)
       subprocess.Popen(["/bin/ln","-fs",Temp_histINT,Link_histINT])
    
    
    
    #except:
    #   print("unable to create {}".format(Temp_histINT))     
    
    
    
    
    
    webdata = "/home/www/Graph/webdata/"
    currentStatus = webdata + "DS18B20Status.txt"
    
    try:
    
      sfile = open(currentStatus,'w')
      for sensor in sensorInfo:
        sfile.write(sensor[0])
        sfile.write("," + sensor[1])
        sfile.write("," + sensor[2])
        sfile.write("," + validatePrint(sensor[3])+ "\n")
      sfile.close()
    except:
      print("unable to create '/home/www/Graph/webdata/DS18B20Status.txt'")
    
    
    #now let's insert the result into rrdtool database
    
    fileRrdTool = "/home/www/Graph/data_DS18B20.rrd"
    
    #let's fill the command line with the 
    
    #Current time (Right now)
    rdata = "N"
    
    #add the sensors result
    for sensor in sensorInfo:
      rdata = rdata + validateRRD(sensor[3])
    
    #now update the database
    
    subprocess.Popen(["/usr/bin/rrdtool","update",fileRrdTool,rdata])
    
    
    
    #data Extraction to create data point for the charts.
    
    #create a function with start and step parameters
    #this way we could create chart with different timing
    
    
    
    def rrdExport(start, step, XMLfile):
      texte = "rrdtool xport -s {0} -e now --step {1} ".format(start, step)
      #let's populate for each sensor
      for i in  range(NumberOfSensor):
        texte += "DEF:{}={}:{}:AVERAGE ".format(chr(ord('a')+i),fileRrdTool,sensorInfo[i][0])
        texte += "XPORT:{}:""{}"" ".format(chr(ord('a')+i),sensorInfo[i][2])
      fileout = open(webdata+XMLfile,"w")
      args = shlex.split(texte)
      subprocess.Popen(args,stdout=fileout)
      fileout.close()
    
    
    # ok extact 3 hours data
    rrdExport("now-3h",300, "temperature3h.xml")
    
    #ok 24 hours
    rrdExport("now-24h",900, "temperature24h.xml")
    
    #ok 48 hours
    rrdExport("now-48h",1800, "temperature48h.xml")
    
    #ok 1 week
    rrdExport("now-8d",3600, "temperature1w.xml")
    
    #ok 1 month
    rrdExport("now-1month",14400, "temperature1m.xml")
    
    #ok 3 month
    rrdExport("now-3month",28800, "temperature3m.xml")
    
    #ok 1 year
    rrdExport("now-1y",43200, "temperature1y.xml")
    
    #ok just print on the screen what we have
    
    for sensor in sensorInfo:
      print("{}:{}".format(sensor[2],validatePrint(sensor[3])))
    
    #done
  • [^] # Re: Est-ce que tu as un message d'erreur ?

    Posté par  . En réponse au message Ecriture fichier txt. Évalué à 1. Dernière modification le 25/04/15 à 08:44.

    Bonjour Neox , ce n'est pas le probleme de l'espace entre l'année et la valeur de température qui m'interpelle mais cette valeur 19.8853333333, ce que je veux obtenir dans mon fichier est 19.8

  • [^] # Re: Est-ce que tu as un message d'erreur ?

    Posté par  . En réponse au message Ecriture fichier txt. Évalué à 1.

    Merci lolop j'ai testé ça

    sfile.write(get_c_locale_abbrev() + ' '.join([str(x) for x in read_all()]))

    Mon fichier texte se créé et se rempli de cette façon .

    Fri Apr 24 19:18:22 201519.8853333333

    Cette ligne de commande m'indique toujours une erreur .
    sfile.write(get_c_locale_abbrev() + str(read_all()[3]))

  • [^] # Re: Est-ce que tu as un message d'erreur ?

    Posté par  . En réponse au message Ecriture fichier txt. Évalué à 1. Dernière modification le 24/04/15 à 17:09.

    Effectivement il y a du mieux , le fichier hist-INT.txt se crées bien mai il est vide .

    File "new05.py", line 141, in
    sfile.write(get_c_locale_abbrev() + ' '.join(read_all()))
    TypeError: sequence item 0: expected string, float found

    Le code du premier post que j'ai posté est un assemblage de plusieurs partie de code que j'ai mélangé pour essayé de comprendre le fonctionnement.

    Mon fichier original fonctionne , mais pas comme je le souhaite . Ce que je veux obtenir dans mon fichier hist-INT.txt est

    Thu Apr 23 12:50:03 2015 /19.1
    et ce que j'ai (Avec mon fichier original )
    Fri Apr 24 17:05:04 2015 /[['TDS1', '28-000005239592', 'T\xb0Interieure', 19.75]]

  • [^] # Re: Est-ce que tu as un message d'erreur ?

    Posté par  . En réponse au message Ecriture fichier txt. Évalué à 1.

    En effet je me suis tromper l'erreur est :

    File "new05.py", line 141, in
    sfile.write(get_c_locale_abbrev() + ' '.join(read_all(data)))
    NameError: name 'data' is not defined