Bonjour, merci pour ta reponse. Voici ce que j'ai fait:
Grace a un scripte lua j'enregistre mes donnés de teleinfo dans un fichier texte toutes les minute.
Grace a un scrip python j'ouvre le fichier texte et je sauvegarde dans une base Sql.
Cela fait 3 jours que cela fonctionne mais je trouve que c'est un peu lourd. Je ne suis pas arrivé a faire cela directement avec un seul scripte
Code : Tout sélectionner
vIINST1 = 0
vIINST2 = 0
vIINST3 = 0
vMOTDETAT = 0
vOPTARIF = 0
vISOUSC = 0
vADCO = 0
vHCHC = 0
vHCHP = 0
vPAPP = 0
vIMAX1 = 0
vIMAX2 = 0
vIMAX3 = 0
vHHPHC = 0
vBASE = 0
vBBRHCJB = 0
vBBRHPJB = 0
vBBRHCJW = 0
vBBRHPJW = 0
vBBRHCJR = 0
vBBRHPJR = 0
vPEJP = 0
vPTEC = 0
vADPS = 0
vPPOT = 0
t1 = os.time()
print (t1)
--timestamp = date.timestamp()
--vDATE = t.strftime(" %Y-%m-%d ")
--vHEURE = t.strftime(" %H:%M:%S ")
vDATE = os.date('%Y-%m-%d', t1)
vHEURE = os.date('%H:%M:%S', t1)
-- 2013-12-25 22:09:51
print(vDATE)
print(vHEURE)
local consignehp = otherdevices_svalues['Heures pleine']
local consignehc = otherdevices_svalues['Heures creuses']
s = otherdevices_lastupdate['Heures pleine']
-- returns a date time like 2013-07-11 17:23:12
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
commandArray = {}
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
print(difference)
if (difference < 60) then
print ("Ok donc on sauv")
typeh="hp"
print (consignehp)
commandArray['Heures pleines EDF']='On'
else
print ("et bien on passe aux heures creuse")
typeh="hc"
commandArray['Heures pleines EDF']='Off'
end
fichier = io.open("pleine.txt","w")
fichier:write(t1,";",vDATE,";",vHEURE,";",consignehp,";",consignehc,";",typeh)
fichier:close()
return commandArray
Code : Tout sélectionner
#!/usr/bin/python
# -*- coding: utf-8 -*-
#=========================================================================
# Python Source File
# NAME: teleinfo.py
# AUTHOR: Sebastien Joly
# DATE : 11/06/2013
# COMMENT: Collecteur de trames Teleinformation
#=========================================================================
# Dependances / Librairies
#=========================================================================
import domoticz
import time
import serial
import MySQLdb
import subprocess
from time import sleep
import datetime
#local consigne = otherdevices_svalues['Heures creuse']
#=========================================================================
# Fonction Tableau/Dictionnaire
#=========================================================================
def checksum (etiquette, valeur):
sum = 32
for c in etiquette: sum = sum + ord(c)
for c in valeur: sum = sum + ord(c)
sum = (sum & 63) + 32
return chr(sum)
#=========================================================================
# Fonction LireTeleinfo
#=========================================================================
# print('Lecture des trames Teleinformation avec la carte RPIDOM')
#=========================================================================
# Connexion au port
#=========================================================================
#=========================================================================
# Definition variables de trame et chargement d'une valeur initiale
#=========================================================================
vIINST1 = 0
vIINST2 = 0
vIINST3 = 0
vMOTDETAT = 0
vOPTARIF = "HC.."
vISOUSC = 20
vADCO = 020726055630
vHCHC = 0
vHCHP = 0
vPAPP = 0
vIMAX1 = 0
vIMAX2 = 0
vIMAX3 = 0
vHHPHC = 0
vBASE = 0
vBBRHCJB = 0
vBBRHPJB = 0
vBBRHCJW = 0
vBBRHPJW = 0
vBBRHCJR = 0
vBBRHPJR = 0
vPEJP = 0
vPTEC = 0
vADPS = 0
vPPOT = 0
#=========================================================================
# Traitement Premiere voie RPIDOM
#=========================================================================
#=========================================================================
# Definition des des variables temporelles
#=========================================================================
#vHEURE = datetime.datetime.now().strftime('%H:%M')
#vDATE = datetime.datetime.today().strftime('%Y-%m-%d')
t = datetime.datetime.now()
timestamp = time.mktime(t.timetuple())
timestamp = int(timestamp)
vDATE = t.strftime(" %Y-%m-%d ")
vHEURE = t.strftime(" %H:%M:%S ")
#========================================================================= ouvrir fichier
# Ouverture du fichier source
source = open("/home/pi/domoticz/pleine.txt", "r")
pleine = source.readline()
print (pleine)
# Fermerture du fichier source
source.close()
timestamp,vDATE,vHEURE,vPAPP1,vHCHP,vPAPP2,vHCHC,theure = pleine.split(";")
print theure
if theure == "hp":
vPAPP=vPAPP1
vPTEC=0
exit
else:
vPAPP=vPAPP2
vPTEC="HC.."
#=========================================================================
if vHCHC == 0:
print vHCHC
exit
else:
db = MySQLdb.connect("localhost","root","12345678","teleinfo")
cursor = db.cursor()
cursor.execute("""INSERT INTO teleinfo(timestamp,rec_date, rec_time, inst1, inst2, inst3, motdetat, optarif, isousc, adco, hchc, hchp, papp, imax1, imax2, imax3, hhphc, ptec, ppot)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""" ,(timestamp, vDATE, vHEURE, vIINST1, vIINST2, vIINST3, vMOTDETAT, vOPTARIF, vISOUSC, vADCO, vHCHC, vHCHP, vPAPP, vIMAX1, vIMAX2, vIMAX3, vHHPHC, vPTEC, vPPOT))
#=.execute ('INSERT INTO teleinfo (timestamp, rec_date, rec_time, adco, optarif, isousc, hchp, hchc, ptec, inst1, inst2, inst3, imax1, imax2, imax3, pmax, papp, hhphc, motdetat, ppot, adir1, adir2, adir3) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)',(timestamp,rec_date,rec_time,vADCO,vOPTARIF,vISOUSC,vHCHP,vHCHC,vPTEC,vIINST,0,0,vIMAX,0,0,0,vPAPP,vHHPHC,'000000', '',0,0,0))
# Envoyer dans la base de donnees
db.commit()
db.rollback()
db.close()
#=========================================================================
Voila il y a surement mieu a faire si vous avez des idees je suis preneur.