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.