Re: lancer un sript python au demarrage
Posté : mer. 26 avr. 2017 08:32
Bonjour ,
Lorsque je fais "sudo /home/pi/porte.py" dans le terminal, il s' éxécute normalement.
Je vous avoue que j'ai pas tout compris pour les environnements différents. Mes connaissances en informatique sont limités.
J'ai plus l'habitude de programmer des API .
Donc je préfére vous envoyer mon script , J'espére que ça pourra vous aider.
#!/usr/bin/python3
#-*-coding: utf-8 -*-
import wiringpi#importation du module wiringpi
import time #importation du module time
import mysql.connector# module d'interface avec le serveur web
wiringpi.wiringPiSetupGpio()#on utilise la numérotation connecteur
#connexion base de donées
conn = mysql.connector.connect(host="localhost", user="root", password="raspberry", database="poulailler")
cursor = conn.cursor()
if conn :
print ("connexion base de données reussie")
else :
print("erreur de connexion")
cursor.execute("UPDATE poulailler SET heure_ouverture=15 WHERE id=1")
ouvert = int(10) #cycle porte ouverte
ferme = int(3) #cycle porte fermée
position = int(5) #cycle init
wiringpi.pinMode(13,2)#configure la broche 32 en sortie PWM
wiringpi.pwmSetMode(0)#mode wiringpi frequence constante
wiringpi.pwmSetRange(384)#valeur max rapport cyclique
wiringpi.pwmSetClock(1)#valeur du diviseur
def commande_ouverture() :
global position
while position != ouvert :
position = position + 1
wiringpi.pwmWrite(13,int(position))
time.sleep(0.5)
def commande_fermeture() :
global position
while position != ferme :
position = position - 1
wiringpi.pwmWrite(13,int(position))
time.sleep(0.5)
wiringpi.pwmWrite(13, int(position))
time.sleep(2)
while True :
#Récupération des valeurs de la base
cursor.execute("SELECT * FROM poulailler WHERE id=1")
row = cursor.fetchone()
while row is not None:
type_po = row[1]
commande = row[2]
h_ouv = row[3]
m_ouv = row[4]
h_ferm = row[5]
m_ferm = row[6]
row = cursor.fetchone()
print(type_po , commande , h_ouv , m_ouv , h_ferm , m_ferm)
#Récupération de l'heure
h = time.localtime().tm_hour# heure du systeme
m = time.localtime().tm_min# minute du sysyteme
print ( "heure :",h,":",m)
hm = (h * 60) + m
ouv_hm = (h_ouv * 60) + m_ouv
ferm_hm = (h_ferm * 60) +m_ferm
print ( "heure :",hm, " minute ouverture :",ouv_hm," minute fermeture :",ferm_hm)
time.sleep(1)
if type_po == 1:#Mode Manuel
if commande == 1:# demande ouverture
if position == ouvert:
print ("ouvert", position)
else:
commande_ouverture() #appel de la fonction ouverture
else:#demande fermeture
if position == ferme :
print ("fermé", position)
else :
commande_fermeture()# appel de la fonction commande fermeture
else:#Mode Horloge
if (hm > ouv_hm) and (hm < ferm_hm):# demande ouverture
if position == ouvert:
print ("ouvert", position)
else:
commande_ouverture() # appel de la fonction ouverture
else:#demande fermeture
if position == ferme :
print ("fermé", position)
else :
commande_fermeture() #appel de la fonction fermeture
GPIO.cleanup()
Merci à vous
Lorsque je fais "sudo /home/pi/porte.py" dans le terminal, il s' éxécute normalement.
Je vous avoue que j'ai pas tout compris pour les environnements différents. Mes connaissances en informatique sont limités.
J'ai plus l'habitude de programmer des API .
Donc je préfére vous envoyer mon script , J'espére que ça pourra vous aider.
#!/usr/bin/python3
#-*-coding: utf-8 -*-
import wiringpi#importation du module wiringpi
import time #importation du module time
import mysql.connector# module d'interface avec le serveur web
wiringpi.wiringPiSetupGpio()#on utilise la numérotation connecteur
#connexion base de donées
conn = mysql.connector.connect(host="localhost", user="root", password="raspberry", database="poulailler")
cursor = conn.cursor()
if conn :
print ("connexion base de données reussie")
else :
print("erreur de connexion")
cursor.execute("UPDATE poulailler SET heure_ouverture=15 WHERE id=1")
ouvert = int(10) #cycle porte ouverte
ferme = int(3) #cycle porte fermée
position = int(5) #cycle init
wiringpi.pinMode(13,2)#configure la broche 32 en sortie PWM
wiringpi.pwmSetMode(0)#mode wiringpi frequence constante
wiringpi.pwmSetRange(384)#valeur max rapport cyclique
wiringpi.pwmSetClock(1)#valeur du diviseur
def commande_ouverture() :
global position
while position != ouvert :
position = position + 1
wiringpi.pwmWrite(13,int(position))
time.sleep(0.5)
def commande_fermeture() :
global position
while position != ferme :
position = position - 1
wiringpi.pwmWrite(13,int(position))
time.sleep(0.5)
wiringpi.pwmWrite(13, int(position))
time.sleep(2)
while True :
#Récupération des valeurs de la base
cursor.execute("SELECT * FROM poulailler WHERE id=1")
row = cursor.fetchone()
while row is not None:
type_po = row[1]
commande = row[2]
h_ouv = row[3]
m_ouv = row[4]
h_ferm = row[5]
m_ferm = row[6]
row = cursor.fetchone()
print(type_po , commande , h_ouv , m_ouv , h_ferm , m_ferm)
#Récupération de l'heure
h = time.localtime().tm_hour# heure du systeme
m = time.localtime().tm_min# minute du sysyteme
print ( "heure :",h,":",m)
hm = (h * 60) + m
ouv_hm = (h_ouv * 60) + m_ouv
ferm_hm = (h_ferm * 60) +m_ferm
print ( "heure :",hm, " minute ouverture :",ouv_hm," minute fermeture :",ferm_hm)
time.sleep(1)
if type_po == 1:#Mode Manuel
if commande == 1:# demande ouverture
if position == ouvert:
print ("ouvert", position)
else:
commande_ouverture() #appel de la fonction ouverture
else:#demande fermeture
if position == ferme :
print ("fermé", position)
else :
commande_fermeture()# appel de la fonction commande fermeture
else:#Mode Horloge
if (hm > ouv_hm) and (hm < ferm_hm):# demande ouverture
if position == ouvert:
print ("ouvert", position)
else:
commande_ouverture() # appel de la fonction ouverture
else:#demande fermeture
if position == ferme :
print ("fermé", position)
else :
commande_fermeture() #appel de la fonction fermeture
GPIO.cleanup()
Merci à vous