Bonjour à tous,
Je tente de me faire une petite station météo.
J'ai un arduino avec un dht22, dont je lis les valeurs de température et d'humidité, et que j'enregistre dans un fichier grace à mon raspberry pi qui lit les valeurs de readln de l'arduino grace à un petit code en python :
#!/bin/env python
import serial
import datetime
import time
ser = serial.Serial(
port='/dev/ttyACM0',
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
file_data = open('/home/pi/arduino/temp.txt', 'w+')
ser.flushInput()
time.sleep(4)
x=ser.readline()
file_data.write(x)
Dans le fichier temp.txt j'obtiens constamment les deux dernières valeurs de H et de T.
Puis à l'aide de cron je démarre un autre script, qui toutes les minutes, attribut dans un nouveau fichier la date et les deux valeurs de temp.txt
echo 'date +\%Y\%m\%d\%H\%M\%S,' && cat /home/pi/arduino/temp.txt
et mon cron :
* * * * * /usr/bin/python /home/pi/arduino/retrievedata.py >> /home/pi/arduino/out.txt 2>&1
* * * * * /home/pi/arduino/shtemp.sh >>/home/pi/arduino/temp.csv
* * * * * sudo cp /home/pi/arduino/temp.csv /var/www/html/
Le soucis étant que j'obtiens quelque chose comme ça :
20160715065502,56.80,22.50^M
20160715065602,5656.80,22.50^M
20160715065701,56.90,22.50^M
20160715065801,56.80,22.50^M
20160715065901,20160715070002,57.30,22.60^M
20160715070102,57.20,22.60^M
20160715070201,57.20,22.70^M
Avec pour première colonne la date, puis l'humidité, puis la température. Et la c'est vraiment moche.
Parfois j'ai deux dates qui se suivent (ce qui veut dire que l'arduino n'a pas envoyé les valeurs dans le fichier temp.txt, ou parfois deux valeurs qui se suivent, comme le 5656.80 d'humidité...
Comment pourrais-je rendre l'ensemble plus harmonieux, et surtout plus synchrone ?
Merci à vous tous pour vos réponses !