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:
commit
945801053d
6 changed files with 82 additions and 2 deletions
|
@ -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'
|
||||
|
||||
|
|
58
daemon.py
58
daemon.py
|
@ -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
6
melPapier
Normal file
|
@ -0,0 +1,6 @@
|
|||
Retour du papier !
|
||||
|
||||
Le sain papier est de retour, loue soit il !
|
||||
|
||||
--
|
||||
Oison
|
6
melPasPapier
Normal file
6
melPasPapier
Normal file
|
@ -0,0 +1,6 @@
|
|||
Help !!!
|
||||
|
||||
Gentils cableurs, je n'ai plus de papier.
|
||||
|
||||
--
|
||||
Oison
|
6
melSecteur
Normal file
6
melSecteur
Normal file
|
@ -0,0 +1,6 @@
|
|||
Le courant est revenue !
|
||||
|
||||
Merci de m'avoir branche.
|
||||
|
||||
--
|
||||
Oison
|
6
melSurBatterie
Normal file
6
melSurBatterie
Normal file
|
@ -0,0 +1,6 @@
|
|||
Help !!!
|
||||
|
||||
Gentils cableurs derriere le bar, rebranchez moi, please !
|
||||
|
||||
--
|
||||
Oison
|
Loading…
Add table
Add a link
Reference in a new issue