bonjour
décidement, plus j'avance dans la programmation plus j apprends mais le tatonnement et la difficulté à faire du debug tout seul bonjour les heures
bon, j'ai essayé plusieurs choses mais trop newbee, rien ne fonctionne
j'ai plusieurs tables basées sur le même modéle voir copie écran
l'insertion des données de type float et datetime me pose problème. j'ai vérifié le format du date time entre mon code python et la base sql, il a l'air bon. Pour le type float, j'ai un type float dans ma base sans limitation poutant j'ai une erreur a priori sur la longueur de données. j'ai essayé d'arrondir pa la commande round en changeant le type de données mais l'erreur est tjs là. je ne recherche pas une précision absolue s'il y a un moyen de convertir afin que je puisse insérer dans la base mysql $)
Voilà les erreurs avec les valeurs retournées, le code python et la structure de la table tbl-Solar-temp en copie écran
merci d'avance et déjà pour les réponses données dans les différents posts
2014-08-19 00:29:59 <---------DATE
17
I2C: Device 0x04 returned the following from reg 0x00
[0, 0, 48, 66]
(44.0,) <----- HUMIDITE
dhtco2.py:81: Warning: Data truncated for column 'Humidite' at row 1
con.execute(sql_command)
dhtco2.py:81: Warning: Out of range value for column 'Date_Mesure' at row 1
con.execute(sql_command)
I2C: Wrote 0x03 to register 0x00
I2C: Device 0x04 returned the following from reg 0x00
[0, 0, 12, 66]
35.0 <-----TEMPERATURE
dhtco2.py:103: Warning: Data truncated for column 'Temperature' at row 1
con.execute(sql_command)
dhtco2.py:103: Warning: Out of range value for column 'Date_Mesure' at row 1
con.execute(sql_command)
I2C: Wrote 0x04 to register 0x00
I2C: Device 0x04 returned the following from reg 0x00
[194, 181, 5, 70]
8557.43945312 <------------TAUX CO2
dhtco2.py:125: Warning: Data truncated for column 'Taux_co2' at row 1
con.execute(sql_command)
dhtco2.py:125: Warning: Out of range value for column 'Date_Mesure' at row 1
con.execute(sql_command)
Traceback (most recent call last):
File "dhtco2.py", line 128, in
if mysql_errno() :
NameError: name 'mysql_errno' is not defined
LE CODE PYTHON
#!/usr/bin/env python
# -*- coding: latin-1 -*-
# === ArduPi-I2C ================================================
# Communication entre Arduino et Raspberry Pi via le BUS I2C
# ===============================================================
# Tutoriel: http://mchobby.be/wiki/index.php?title=ArduPi-I2C
#
# Programme Master qui envoi des instructions vers un Arduino par
# l'intermédiaire de "registres" de façon logiciel sur Arduino.
# S'utilise avec le programme Arduino SlaveRegisterDataTypes.ino
#
# Ecrit par D. Meurisse pour MCHobby.be
# www.mchobby.be - Vente de kit et composant Arduino et Raspberry Pi
# Licence CC-BY-SA
#
# Basé sur Adafruit_I2C.py librairie Python écrite par AdaFruit Industries
# www.adafruit.com
import time
import struct
from Adafruit_I2C import Adafruit_I2C
import MySQLdb
from time import sleep, gmtime, strftime
import smtplib
import os
import sys
import smtplib
i2c = Adafruit_I2C( 0x04 )
db = MySQLdb.connect(host="localhost",user="root",passwd="poi",db="db_rheorthe")
con = db.cursor()
date_mesure = strftime("%Y-%m-%d %H:%M:%S", gmtime())
print date_mesure
# --- Demander le NO de version ---
# Transfert d'un type BYTE
# Ecriture de la valeur 0x01 dans le registre 0
i2c.write8( 0, 0x01 );
time.sleep( 0.020 );
print( i2c.readU8( 0x00 ) );
# Donner un delai au périphérique I2C pour qu'il soit prêt a recevoir
# une nouvelle communication... sinon on recoit l'erreur
# Error accessing 0x04: Check your I2C address
time.sleep( 0.100 )
# --- Demander une valeur décimale ---
# Transfert d'un type DOUBLE
# demander l'opération de reception d'un float h humidité, placer 0x02 dans le
# le registre d'exécution 0
i2c.write8( 0x00, 0x02 )
time.sleep(0.100)
i2c.debug = True
# transformer en string pour unpack
lstData=i2c.readList(0x00,4)
sData = ''
for aByte in lstData:
sData = sData + chr(aByte)
h_data=struct.unpack('<f',sData)
print h_data # Affiche la valeur en Float.
#h_data_i=round(h_data,2)
#print h_data_i
capteur_ht='SOLAR_H'
# INSERT de la mesure
sql_command = "INSERT INTO tbl_Solar_Hum (Capteur,Humidite, Date_Mesure) VALUES('capteur_ht', 'h_data', 'date_mesure');"
con.execute(sql_command)
db.commit
# demander l'opération de reception d'un float t temperature, placer 0x03 dans le
# le registre d'exécution 0
i2c.write8( 0x00, 0x03 )
time.sleep(0.100)
i2c.debug = True
# transformer en string pour unpack
lstData=i2c.readList(0x00,4)
sData = ''
for aByte in lstData:
sData = sData + chr(aByte)
t_data, = struct.unpack('<f',sData)
print t_data # Affiche la valeur en Float.
capteur_ht='SOLAR_T'
# INSERT de la mesure
sql_command = "INSERT INTO tbl_Solar_Temp (Capteur, Temperature,Date_Mesure) VALUES('capteur_ht', 't_data', 'date_mesure');"
con.execute(sql_command)
db.commit
# demander l'opération de reception d'un float c02, placer 0x04 dans le
# le registre d'exécution 0
i2c.write8( 0x00, 0x04 )
time.sleep(0.100)
i2c.debug = True
# transformer en string pour unpack
lstData=i2c.readList(0x00,4)
sData = ''
for aByte in lstData:
sData = sData + chr(aByte)
co2_data, = struct.unpack('<f',sData)
print co2_data # Affiche la valeur en Float.
capteur_co2='SOLAR_CO2'
# INSERT de la mesure
sql_command = "INSERT INTO tbl_Solar_Co2 (Capteur,Taux_co2,Date_Mesure) VALUES('capteur_co2', 'Taux_co2', 'date_mesure');"
con.execute(sql_command)
db.commit
if mysql_errno() :
sendTextMail()
db.rollback()