au fait voila ton script adapter pour le python2 mais le truc qui me parait bizarre c'est le mélange de code pour python2 et python 3, je te conseille d'essayer de le lancer a la main et de mettre ici le retour car c'est sur il y aura des messages d'erreur
Code : Tout sélectionner
#!/usr/bin/python2.7
import RPi.GPIO as GPIO
import os
import time
#import gdata.calendar.service
#import gdata.calendar
#import atom.service
#import atom
#import gdata.service
import datetime
import MySQLdb
import httplib2
from RPi import GPIO
from apiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import AccessTokenRefreshError
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.tools import run_flow
from oauth2client.client import flow_from_clientsecrets
GPIO.setmode (GPIO.BOARD)
GPIO.setup(15,GPIO.OUT)
GPIO.setup(16,GPIO.OUT)
GPIO.setup(18,GPIO.OUT)
GPIO.setup(21,GPIO.OUT)
#parametre de connexion au compte google pour recuperer l'agenda
#cal_client = gdata.calendar.service.CalendarService()
#cal_client.email = "user@gmail.com"
#cal_client.password = "mdp"
#cal_client.source = 'Google-Calendar_Python_Sample-1.0'
#cal_client.ProgrammaticLogin()
#definition de la categorie pour les log
cat='Piscine'
#pompemarche=0
#evenement=0
#connexion a la base SQL
mydb=MySQLdb.connect (host="192.168.1.5",port=3306, user="toto", passwd="mdp", db="logdomo")
mycursor=mydb.cursor()
#recuperation du mode de fontionnement dans la base SQL
mycursor.execute('SELECT pompe FROM variables WHERE ID=1')
enr=mycursor.fetchall()
for row in enr:
for col in row :
pompe=col
pompe=int(pompe)
print pompe
#recuperation de l'etat actuelle de la pompe
mycursor.execute('SELECT pompemarche FROM variables WHERE ID=1')
enr=mycursor.fetchall()
for row in enr:
for col in row :
pompemarche=col
pompemarche=int(pompemarche)
print pompemarche
#recuperation de l'etat precedent de la pompe
mycursor.execute('SELECT etatpompe FROM variables WHERE ID=1')
enr=mycursor.fetchall()
for row in enr:
for col in row :
evenement=col
evenement=int(evenement)
print evenement
mycursor.close()
mydb.close()
if pompe==1: #si la pompe passe a l'arret, inscription dans les log
pompemarche=0
mydb=MySQLdb.connect (host="192.168.1.5",port=3306, user="toto", passwd="mdp", db="logdomo")
mycursor=mydb.cursor()
mycursor.execute ('UPDATE variables SET pompemarche=0 WHERE ID=1')
mydb.commit()
mycursor.close()
mydb.close()
GPIO.output (21, True) # et arret de la pompe
GPIO.output (15, True)
GPIO.output (16, False)
GPIO.output (18, False)
elif pompe==2: #si la pompe passe en marche programme
GPIO.output (15, False)
GPIO.output (16, True)
GPIO.output (18, False)
#verification de l'agenda du jour pour voir si il y a des evenements prevus
scope = 'https://www.googleapis.com/auth/calendar'
flow = flow_from_clientsecrets('client_secret.json', scope=scope)
storage = Storage('credentials.dat')
credentials = storage.get()
class fakeargparse(object): # fake argparse.Namespace
noauth_local_webserver = True
logging_level = "ERROR"
flags = fakeargparse()
if credentials is None or credentials.invalid:
credentials = run_flow(flow, storage, flags)
http = httplib2.Http()
http = credentials.authorize(http)
service = build('calendar', 'v3', http=http)
# get the next 12 hours of events
epoch_time = time.time()
print epoch_time
start_time = epoch_time - 3600 # 1 hour ago
end_time = epoch_time + 12 * 3600 # 12 hours in the future
tz_offset = - time.altzone / 3600
if tz_offset < 0:
tz_offset_str = "-%02d00" % abs(tz_offset)
else:
tz_offset_str = "+%02d00" % abs(tz_offset)
start_time = datetime.datetime.fromtimestamp(start_time).strftime("%Y-%m-%dT%H:%M:%S") + tz_offset_str
end_time = datetime.datetime.fromtimestamp(end_time).strftime("%Y-%m-%dT%H:%M:%S") + tz_offset_str
#start_time = datetime.datetime.now()
#end_time = datetime.datetime.now()
print "Getting calendar events between: " + start_time + " and " + end_time
print start_time
print end_time
events = service.events().list(calendarId='id@group.calendar.google.com', timeMin=start_time, timeMax=end_time, singleEvents=True).execute()
#pprint.pprint(events)
for event in events['items']:
print event["summary"]
print event["start"]
str_date_deb=event["start"]
print str_date_deb
print type (str_date_deb)
print event["end"]
str_date_fin=event["end"]
print str_date_fin
str_date_deb=str(str_date_deb)
date_deb = datetime.datetime(int(str_date_deb[16:20]) , int(str_date_deb[21:23]), int(str_date_deb[24:26]), int(str_date_deb[27:29]), int(str_date_deb[30:32]), int(str_date_deb[33:35]))
str_date_fin=str(str_date_fin)
date_fin = datetime.datetime(int(str_date_fin[16:20]) , int(str_date_fin[21:23]), int(str_date_fin[24:26]), int(str_date_fin[27:29]), int(str_date_fin[30:32]), int(str_date_fin[33:35]))
print date_deb
print date_fin
maintenant=datetime.datetime.now()
maintenant=str(maintenant)
print maintenant
la = datetime.datetime(int(maintenant[0:4]) , int(maintenant[5:7]), int(maintenant[8:10]), int(maintenant[11:13]), int(maintenant[14:16]), int(maintenant[17:19]))
#maintenant=maintenant[0:19]
#maintenant=datetime.datetime(int(maintenant))
#print maintenant
print la
#inscription dans les log du la mise en marche programme
evenement=0
mydb=MySQLdb.connect (host="192.168.1.5",port=3306, user="toto", passwd="mdp", db="logdomo")
mycursor=mydb.cursor()
mycursor.execute ('UPDATE variables SET etatpompe=0 WHERE ID=1')
mydb.commit()
mycursor.close()
print evenement
if ((date_deb<=la) and (date_fin>=la)): #si on se trove pendant un evenement
print 'action en cours'
#print ("Cons.:",event.title.text)
print pompemarche
print 'en periode'
#pompemarche=1
evenement=1 #enregistrement de l'etat de la pompe pour le prochain test
mydb=MySQLdb.connect (host="192.168.1.5",port=3306, user="toto", passwd="mdp", db="logdomo") #log du demarrage du programme
mycursor=mydb.cursor()
mycursor.execute ('UPDATE variables SET etatpompe=1 WHERE ID=1')
mydb.commit()
mycursor.close()
print evenement
#GPIO.output (21, False)
#break
else: # si on est hors periode
print 'pas d action'
print 'hors periode'
#pompemarche=0
#evenement=0
#GPIO.output (21, True)
#break
if evenement==1 : # si la pompe doit marcher
if pompemarche==0 : #mais qu'elle etait arrete jusqu'a maintenant on log le demarrage
print ('demarrage programme')
j= time.strftime('%d-%m-%Y')
h=time.strftime('%H:%M:%S')
m='demarrage programme'
mydb=MySQLdb.connect (host="192.168.1.5",port=3306, user="toto", passwd="mdp", db="logdomo")
mycursor=mydb.cursor()
mycursor.execute ('INSERT INTO log (jour, heure, categorie, action) VALUES (%s,%s,%s,%s)',(j,h,cat,m))
mydb.commit()
mycursor.close()
pompemarche=1
#print ('arret systeme pompe')
mydb=MySQLdb.connect (host="192.168.1.5",port=3306, user="toto", passwd="mdp", db="logdomo") #et on confirme qu'elle est en marche
mycursor=mydb.cursor()
mycursor.execute ('UPDATE variables SET pompemarche=1 WHERE ID=1')
mydb.commit()
mycursor.close()
GPIO.output (21, False) #on met la pompe en marche
elif evenement==0: #si la pompe doit etre a l'arret
if pompemarche==1 : #et qu'elle etait en marche precedemment, on log la mise a l'arret
print 'arret programme'
j= time.strftime('%d-%m-%Y')
h=time.strftime('%H:%M:%S')
m='arret programme'
mydb=MySQLdb.connect (host="192.168.1.5",port=3306, user="toto", passwd="mdp", db="logdomo")
mycursor=mydb.cursor()
mycursor.execute ('INSERT INTO log (jour, heure, categorie, action) VALUES (%s,%s,%s,%s)',(j,h,cat,m))
mydb.commit()
mycursor.close()
pompemarche=0 #on confirme qu'elle est arrete
#print ('arret systeme pompe')
mydb=MySQLdb.connect (host="192.168.1.5",port=3306, user="toto", passwd="mdp", db="logdomo")
mycursor=mydb.cursor()
mycursor.execute ('UPDATE variables SET pompemarche=0 WHERE ID=1')
mydb.commit()
mycursor.close()
GPIO.output (21, True) #on arrete la pompe
elif pompe==3: #si la pompe passe en mode marche forcee
#print ('demarrage marche force')
pompemarche=1
mydb=MySQLdb.connect (host="192.168.1.5",port=3306, user="toto", passwd="mdp", db="logdomo") #on confirme sont etat en marche
mycursor=mydb.cursor()
mycursor.execute ('UPDATE variables SET pompemarche=1 WHERE ID=1')
mydb.commit()
mycursor.close()
GPIO.output (21, False) #on met la pompe en marche
GPIO.output (15, False)
GPIO.output (16, False)
GPIO.output (18, True)
print"pompe 1=" , pompemarche, " "
#time.sleep(30)