Bonjour , je souhaite automatiser mon programme gmail.py ,ce programme me sert a envoyé des mails avec pièces jointes.
Actuellement ce programme fonctionne quand je le lance par putty ( Console).
Ce que je souhaite faire:
je voudrais que l'envoie du mail se fasse automatiquement si le fichier texte (SOstate)est present sur mon raspberry .
Pour être plus précis , je capte un code émis en 433Mhz,ce code traiter me crée un fichier SO-state.txt, qui ensuite prend une photos provenant d'une camera IP. On envoye le mail , et on vide SOstate et So.
#!/usr/bin/env python
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os
USERNAME = "adre@gmail.com"
PASSWORD = "123"
NAME = "PiHome"
SOstate='/home/www/logs/SO-state.txt'
So='/home/www/capture/sonnette.jpg'
def sendMail(to, subject, text, files=[]):
assert type(to)==list
assert type(files)==list
msg = MIMEMultipart()
msg['From'] = 'PiHome <adre@gmail.com>'
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach( MIMEText(text) )
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo_or_helo_if_needed()
server.starttls()
server.ehlo_or_helo_if_needed()
server.login(USERNAME,PASSWORD)
server.sendmail(USERNAME, to, msg.as_string())
server.quit()
sendMail( ["4@free.fr"],
"Sonnette",
"Sonnette rue !",
["/home/www/capture/sonnette.jpg"] )
# Suppression de SOstate
os.remove(SOstate)
os.remove(So)
# inotifywait
Posté par olaf . Évalué à 1.
Comme proposé ici :
http://unix.stackexchange.com/questions/24952/script-to-monitor-folder-for-new-files
# Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par b.gwen . Évalué à 1.
Merci inotifywait pour ton liens mais ca me parait très compliqué ! ( pour moi débutant ) je pensais que l'on pouvais ajouter quelques chose dans mon script python .
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par NeoX . Évalué à 3.
ben ce que tu cherches, c'est à lancer ton script quand un fichier apparait,
s'il n'y a pas de fichier ce serait dommage d'user du processeur en attendant à ne rien faire.
donc il faut un truc qui :
- detecte la presence du fichier
- execute le script
ah ben tiens, c'est justement ce que fait inotify
il surveille un dossier/fichier, et quand il change, il execute une action…
bon parce que sinon, tu peux aussi ajouter une boucle for/while qui va tourner dans le vide, et regarder toutes les X boucles s'il y a un fichier dans le dossier, mais ce ne sera pas optimisé, ca va bouffer du CPU, alors que le systeme dispose d'un truc qui est fait pour ca.
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par palm123 (site web personnel) . Évalué à 3.
En Python, l'équivalent de inotify, c'est pyinotify, un exemple d'utilisation tout bête, quand est fichier est complètement copié dans un répertoire donné (évènement CLOSE_WAIT), alors on déclenche une action
http://forum.ubuntu-fr.org/viewtopic.php?id=916501
ウィズコロナ
# Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par b.gwen . Évalué à 1.
Bonsoir NeoX , tu as tout compris , il faut détecté la présence du fichier SO-state.txt et ensuite exécuté le script Gmail.py
Je vais faire des recherches pour comprendre comment fonctionne inotify
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par NeoX . Évalué à 3.
si tu n'es pas à la seconde pres,
tu peux faire un cron qui va tourner toutes les minutes et au choix :
ou
# Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par b.gwen . Évalué à 1.
Bonjour NeoX j'ai un fichier en C++ qui tourne en tache Cron pour détecter le code en 433Mhz , et ça me crée et m'ecrit le mot Dring dans le fichier SO-state.txt .Est ce que ce n'est pas a partir de ce fichier que je devrais ajir ? .
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par NeoX . Évalué à 3.
L'avantage de Linux, c'est que tu es libre.
Et donc, oui, tu peux,
il suffit d'ajouter un appel à gmail.py dans ton programme C++
Mais à ce compte là, pourquoi ne pas carrement ecrire et envoyer le mail en C++ ;)
# Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par b.gwen . Évalué à 1.
'''Mais à ce compte là, pourquoi ne pas carrément écrire et envoyer le mail en C++ '''
Parce que je ne sais pas faire !!
Ma première idée c’était l'envoie d'un MMS , ( Dongle relié sur raspberry ) , mais ne trouvant pas de solution , je me suis rabattu vers l'envoie d’émail avec pièces jointes .
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par NeoX . Évalué à 3.
Tu as bien su ecrire du code Python pour envoyer un email (ou le copier d'internet)
il doit bien y avoir des exemples en C++ sur internet pour faire la meme chose.
Parce que là, tu as quand meme un gros enchainement pas optimiser du tout.
ah, et sinon, quand tu veux repondre à quelqu'un sur le forum, il faut cliquer sur "Repondre" en dessous de son post, plutot que sur "envoyer un commentaire".
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par b.gwen . Évalué à 1. Dernière modification le 04 février 2015 à 18:42.
Je sais c'est un peux une usine a gaz mon truc !!
Pour expliquer un peux ma situation ,Il y a 2 ans j’ai commencé un projet de domotique sur un raspberry avec un ami, toute la partie électronique est de moi, et la partie programmation c’était lui.
Actuellement, il est très malade et fatigué, et ne peux plus m’aider. Je me retrouve donc dans l’impasse. Et mon projet n’est hélas pas fini. j'essaye donc de me débrouillé seul avec mes faible connaissance en programmation !
Mon fichier en language C++ ( RFSniffer )tourne 24/24 par une tache Cron , ce fichier capte des codes en 433Mhz que je lui ai indiqué ( Alarme ,Alarme Incendie , Boite au lettre et sonnette ) ce fichier crée a chaque détection un fichier texte qui est exploité ensuite par une page Php pour l'affichage ,ou pour l'envoie de SMS ( Alarme ) .
Merci pour l'info du bouton répondre , je ne l'avais pas vu.
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par ptit_poulet . Évalué à -1.
Bonsoir,
Ce serait pas du RFXCOM ton module radio ?
Car si c'est le cas je te conseille de jeter un oeil à Jeedom, solution domotique gratuite qui s'installe sur un Raspberry Pi. Et là niveau possibilité, tu devrais trouver ton bonheur ;)
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par b.gwen . Évalué à 1.
Bonjour ptit_poulet mon module n'est pas le RFXCOM c'est ce petit module de réception 433 MHz.
et la base de mon script a été prise ici http://blogwifi.fr/?p=12901
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par b.gwen . Évalué à 1.
Bonjour NeoX , je suis en train de suivre des conseils, j'essaye de modifier mon fichier C++ afin de supprimer des étapes . mais j'ai encore un probleme . impossible Make !!
Je capte le code radio radio_code==BPSO et je veux capturer la photos et ensuite l'envoyé par Mail . voila ce que j'ai fais
voila l'erreur que j'ai
cpp:140:29: warning: character constant too long for its type [enabled by default]
RFSniffer.cpp:140:80: warning: character constant too long for its type [enabled by default]
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par NeoX . Évalué à 2.
je ne connais pas ton code en particulier, et ne suis pas expert en C++, mais une fois remise en forme pour respecter les accolades ouvrantes/fermantes et l'indentation, ca me surprend de voir :
ton appel à system se fait en dehors de la condition if radio_code==BPSO,
pour moi cela devrait se faire dans la foulée, mais toujours conditionné par la reception du code BPSO, donc etre ecrit comme ca :
tu peux aussi aller lire le code à la ligne 140, entre le caractere 29 et 80 car visiblement CPP rale à cet endroit là.
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par b.gwen . Évalué à 1.
Toujours pareil , impossible de Make probleme de code ligne 140
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par copapa . Évalué à 1.
Je ne connais pas ton code mais peut-être :
Copier coller un bout de code sans le comprendre ne m'a jamais rien appris personnellement.if (radio_code==BPSO('http://192.168.1.18:80/cgi-bin/net_jpeg.cgi?ch=1','/home/www/capture/sonnette.jpg') {
system("python /home/www/py/gmail.py");
}
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par b.gwen . Évalué à 1.
il me manque chose pour la capture de la photo
[^] # Re: Automatiser tache python a partir d'un fichier Txt sur raspberry
Posté par b.gwen . Évalué à 1.
J'ouvre ce nouveau probleme dans le forum C++
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.