Merge branch 'master' into 'master'

Envoie de mail automatique, état de l'imprimante

L'imprimante envoie un mail quand elle est débranchée ou si elle n'a plus de papier.

See merge request !3
This commit is contained in:
Gabriel Detraz 2015-12-05 19:01:51 +01:00
commit 945801053d
6 changed files with 82 additions and 2 deletions

View file

@ -1,6 +1,6 @@
#!/usr/bin/env python
#-*- coding: utf-8 -*-
PIDFILE = '/var/run/daemon.pid'
PIDFILE = '/var/run/cransticket.pid'
USER='crans_ticket'
GROUP='adm'

View file

@ -3,11 +3,16 @@
from __future__ import print_function
import sys,os,pwd,grp
# Bad namming: change namming
from AdafruitThermal import Adafruit_Thermal as AdafruitThermal
import common
import pika
import json
import dump
import config
import threading, time, smtplib
from email.mime.text import MIMEText
from config import DEVICE
def run():
conn = pika.BlockingConnection(config.PARAMS)
@ -22,9 +27,57 @@ def run():
conn.close()
# fork en arrière plan + pidfile
def checkPaper():
printer = AdafruitThermal(DEVICE, 19200, timeout=5)
messageCourant = False
messagePapier = False
def sendMel(msgfile, etat):
fp = open(msgfile, 'rb')
msg = MIMEText(fp.read())
fp.close()
me = 'oison@crans.org'
dest = 'respbats@crans.org'
msg['Subject'] = '''Etat de l'imprimante thermique : %s''' % etat
msg['From'] = me
msg['To'] = dest
s = smtplib.SMTP('smtp.crans.org', 25)
s.sendmail(me, [dest], msg.as_string())
s.quit()
def checkPrinter(dejaVu, messageCourant, messagePapier):
try:
papier = printer.hasPaper()
if messageCourant:
sendMel('melSecteur', 'alimentation')
messageCourant = False
else:
if not (messagePapier or papier):
sendMel('melPasPapier', 'papier')
messagePapier = True
if messagePapier and papier:
sendMel('melPapier', 'papier')
messagePapier = False
except TypeError:
if not messageCourant:
if dejaVu:
sendMel('melSurBatterie', 'alimentation')
messageCourant = True
else:
time.sleep(600)
messageCourant, messagePapier = checkPrinter(True, messageCourant, messagePapier)
return messageCourant, messagePapier
while True:
time.sleep(60)
messageCourant, messagePapier = checkPrinter(False, messageCourant, messagePapier)
if __name__ == "__main__":
if '-fg' in sys.argv:
thHasPaper = threading.Thread(target = checkPaper, name = 'checkPaper')
thHasPaper.start()
run()
exit()
# do the UNIX double-fork magic, see Stevens' "Advanced
@ -55,6 +108,9 @@ if __name__ == "__main__":
print("fork #2 failed: %d (%s)" % (e.errno, e.strerror),file=sys.stderr)
sys.exit(1)
# start the daemon main loop
# start the daemon thread to monitor the printer
thHasPaper = threading.Thread(target = checkPaper, name = 'checkPaper')
thHasPaper.start()
#main loop
run()

6
melPapier Normal file
View file

@ -0,0 +1,6 @@
Retour du papier !
Le sain papier est de retour, loue soit il !
--
Oison

6
melPasPapier Normal file
View file

@ -0,0 +1,6 @@
Help !!!
Gentils cableurs, je n'ai plus de papier.
--
Oison

6
melSecteur Normal file
View file

@ -0,0 +1,6 @@
Le courant est revenue !
Merci de m'avoir branche.
--
Oison

6
melSurBatterie Normal file
View file

@ -0,0 +1,6 @@
Help !!!
Gentils cableurs derriere le bar, rebranchez moi, please !
--
Oison