[python] lancer un programme à la connexion internet

Fermé
totem95d - 3 juil. 2017 à 17:08
 gudu - 4 juil. 2017 à 18:29
Bonjour,

Je suis un débutant dans la programmation, j'ai comme projet de créer un programme qui : - - envoi un mail lorsqu'un contact est fermé.
- envoi un mail au démarrage du système

Actuellement mon programme fonctionne à peu près correctement même si il doit pouvoir s'écrire de manière plus correcte.

mon souci c'est que lorsque je redémarre le système, le programme se lance avant d'être connecté à internet.

J'aimerais créer d'abord une boucle qui vérifie la connexion, et qui envoie ensuite la mail si la connexion est établie. Comment faire ?

#!/usr/bin/env python
# -*- coding:Utf-8 -*-


#script envoie de mail

import smtplib
import RPi.GPIO as GPIO
import time

pin_fin_res = 23
pin_dem_add = 22
pin_coup_cour = 27
pin_rem_tens = 18

debounce = 0.1 #attente anti rebond
GPIO.setmode(GPIO.BCM)

###########################
#test de connexion internet
###########################

#???

###########################
#Démarrage de l'additiveur et envoie d'un mail
###########################

content = 'additiveur societe X redemarre'
mail = smtplib.SMTP('smtp.gmail.com',587)
mail.ehlo()
mail.starttls()
mail.login('***@***',"monmdp")
mail.sendmail('***@***','***@***',content)
mail.close()
print ("Additiveur redémarré mail envoyé")



while True:


#contact de réservoir vide

# Le GPIO "pin_fin_res" est initialisé en entrée. Il est en pull-up pour éviter les faux signaux
GPIO.setup(pin_fin_res, GPIO.IN, pull_up_down=GPIO.PUD_UP)

print ("En attente de fin de reservoir")
time.sleep(debounce) #délais en seconde
GPIO.wait_for_edge(pin_fin_res, GPIO.FALLING)
print ("\nAppui detecté")
GPIO.cleanup() # reinitialisation GPIO lors d'une sortie CTRL+C
time.sleep(5)

content = 'Reservoir vide PIN23'
mail = smtplib.SMTP('smtp.gmail.com',587)
mail.ehlo()
mail.starttls()
mail.login('***@***',"monmdp")
mail.sendmail('***@***','***@***',content)
mail.close()
print ("Réservoir vide PIN23 mail envoyé à ***@***")

1 réponse

De toute façon, rien ne garanti qu'une connexion internet soit établie à coup sûr, donc il faut bien la tester de toute façon.

En cherchant ping et python, on trouve des choses intéressantes.
Par ex, https://stackoverflow.com/questions/316866/ping-a-site-in-python
Ou encore
https://stackoverflow.com/questions/17679887/python-check-whether-a-network-interface-is-up
0