Quel est l’intérêt de log toutes les 5 secondes vu l'inertie de la chaudière .??
juste par moment , lors de la phase d’allumage et juste sur certains index ( o2, t fumées) , c'est plus pour du fun que autre chose , puis ça apprend le langage surtout.
Pense à mettre tout ça sur un SSD .... la carte ne supportera pas longtemps
c'est prévue en effet , j'ai deja flinguer une vielle sd
et par pitié ... merci de faire une table avec (id auto increment ,timestamp auto) en Primary Key
se sera plus rapide ....
je comprend pas tout compris , mais sur un capteur pir , raccorder au gpio , et attendant de faire mieux :
Code : Tout sélectionner
try:
cur = con.cursor()
cur.execute("""INSERT INTO conso(conso) VALUES(%s)""", ('1'))
con.commit()
et la table
Code : Tout sélectionner
# Nom Type Interclassement Attributs Null Valeur par défaut Commentaires Extra
1 timestamp timestamp Non CURRENT_TIMESTAMP
2 conso int(1) Non Aucune
ça me dit qu'il à fait un tour à telle heure . 1 tour = 0.024 kg
une requette sur phpmyadmin
Code : Tout sélectionner
SELECT * FROM `conso` WHERE `timestamp` > '2017-11-05 00:00:00'
reponse 186 lignes donc 186*0.024 ~ 4.6kg
ok pas pratique j'avoue mais pour le moment je peut connaître la conso journalière
Sinon si tu insiste .... tu pourrais faire avec un modulo sur un unix timestamp et tu change ton diviseur en fonction de ta fréquence d'enregistrement
(Oups je t'ai peut être perdu ...
)
désoler moi pas encore causer chinois
mais ça va venir.
le but finale?
une station météo/jardin/arrosage/logdata P4 .
bonus pour voir l'arrivé des data
https://youtu.be/FLjk8N0N2rw
edit:
comme je suis un peut bloquer sur la récupération d'une trame , j'ai tester d'autre choses.
Code : Tout sélectionner
#!/usr/bin/python
# -*- coding: utf-8 -*-
import serial
import MySQLdb as mdb
#import datetime
import time
ser = serial.Serial('/dev/ttyUSB0', 57600)
def storeFunction(channel):
con = mdb.connect(host="localhost",user="chris",passwd="1709",db="datalog");
try:
cur = con.cursor()
cur.execute("""INSERT INTO p4(valeur, id) VALUES(%s, s%)""", (valeur, index))
con.commit()
except mdb.Error, e:
logger.error(e)
finally:
if con:
con.close()
while True:
#time.sleep(2)
data_in = ser.readline().decode('latin-1') # latin-1 pour avoir les bon characteres
data_in = data_in.strip('\n\r')
data = data_in.split(";")
nom= data[0]
valeur= data[1]
index= data[2]
div= data[3]
unite= data[4]
print index,nom,valeur,div,unite
storeFunction(2)
chris@rpi3:~/script $ sudo python dbserial.py
1 $ Prêt 0019 1 zst
Traceback (most recent call last):
File "dbserial.py", line 33, in <module>
storeFunction(2)
File "dbserial.py", line 13, in storeFunction
cur.execute("""INSERT INTO p4(valeur, id) VALUES(%s, s%)""", (valeur, index))
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 210, in execute
query = query % args
ValueError: unsupported format character ')' (0x29) at index 40
ce probléme de "charactere" encodage ma peut être fait trouver une soluce.
et le debut d'une trame . parce que contrairement à se que je pensais il n'y a pas de fin de trame
0d1a2420
donc avec un readline qui prend en compte "0d1a2420" comme fin de ligne j'aurais toutes la trame en prenant l'avant dernière reçue.