Slt , je reviens vers vous pour un petit soucis sur ma sonde DHT 22
voila un bout de code qui me sert a créer un fichier hist-EXT , De temps en temps ce fichier hist-EXT est vide .( certainement un plantage lors de l'interrogation de la sonde ) Est'il possible de trouver une solution pour que ce fichier ne sois pas vide (garder la dernière valeur lue) mais quoi ajouter dans le if True?
Merci d'avance.
Ici c'est le fichier hist-EXT
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
pour permettre d'utiliser hist-EXT sans avoir de problème
de lecture lorsque le fichier ce fait écrire '''
#current time
current_time= datetime.datetime.now()
histEXT = "/home/www/logs/hist-EXT"
#Nom des fichier
Temp_histEXT= histEXT + "{}".format(current_time.minute % 5) + ".txt"
Link_histEXT= histEXT + ".txt"
#creation du fichier modulus
#try:
if True:
sfile = open(Temp_histEXT,'w')
sfile.write(get_c_locale_abbrev() + " /" + validatePrint(temperature) + "/" + validatePrint(humidity) + "/1\n")
sfile.close()
#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))
# append
Posté par GnunuX (site web personnel) . Évalué à 2.
Au lieu de "w", tu devrais essayer "a+".
S'il y a un risque que la sonde traceback, tu devrais déjà récupérer la valeur de la sonde, puis l'écrire dans le fichier si ok.
Cela ressemblera à :
val = get_c_locale_abbrev() + " /" + validatePrint(temperature) + "/" + validatePrint(humidity) + "/1\n"
sfile = open(Temp_histEXT,'a+')
sfile.write(val)
sfile.close()
[^] # Re: append
Posté par b.gwen . É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
# Vérifier les données avant d'écrire le fichier
Posté par lolop (site web personnel) . Évalué à 2.
Si ça plante alors que le fichier est ouvert (hormis un pb d'écriture sur le disque), c'est qu'un appel à
get_c_locale_abbrev()
ouvalidatePrint()
a échoué. Le mieux est de les réaliser avant d'ouvrir le fichier:Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Vérifier les données avant d'écrire le fichier
Posté par lolop (site web personnel) . Évalué à 2.
Éventuellement… contrôler que cla, s1 et s2 sont des chaînes (si
get_c_locale()
ouvalidatePrint()
peuvent retourner autre chose).Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Vérifier les données avant d'écrire le fichier
Posté par b.gwen . É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: Vérifier les données avant d'écrire le fichier
Posté par lolop (site web personnel) . Évalué à 2. Dernière modification le 15 juin 2015 à 23:01.
Dans ce cas, commences par relire le dernier fichier que tu as créé (qui est normalement accessible via le lien symbolique /home/www/logs/hist-EXT.txt avant que tu ne le changes), extrais les valeurs (un split sur '/' devrait le faire, puis récup des valeurs aux index 1 et 2), et en cas d'erreur tu recombines les anciennes valeurs valides avec la date courante.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Vérifier les données avant d'écrire le fichier
Posté par lolop (site web personnel) . Évalué à 2.
Du genre:
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Vérifier les données avant d'écrire le fichier
Posté par b.gwen . É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 lolop (site web personnel) . Évalué à 2.
C'est justement pour ce que tu indiques - ne sachant pas s'il pouvait y avoir une des deux valeurs valides… c'était à adapter. Mais vu ce que tu écrits, tu peux laisser le code tel quel (le
or
sera juste superflux) ou bien te contenter de tester si s1 est à '---'.Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Vérifier les données avant d'écrire le fichier
Posté par b.gwen . Évalué à 1.
Aille çà bloque la.
File "readDHT22T.py", line 90
if s1 = '---' or s2 == '---':
^
SyntaxError: invalid syntax
[^] # Re: Vérifier les données avant d'écrire le fichier
Posté par lolop (site web personnel) . Évalué à 4.
L'erreur est sous les yeux:
=
→==
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Vérifier les données avant d'écrire le fichier
Posté par b.gwen . Évalué à 1. Dernière modification le 17 juin 2015 à 12:36.
ok Merci je vais tester
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.