Jump to content

script to send an email if the printer pauses


aag

Recommended Posts

Posted (edited) · script to send an email if the printer pauses

you will have to install a mail transport, such as postfix. Then, simply start this script on the printer

 

#!/usr/bin/python3
### BEGIN INIT INFO
# Provides:          pause_alert.py
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

import systemd.journal
import socket
from time import sleep
import smtplib
import email
from smtplib import SMTP
from email.message import EmailMessage
import datetime


def main():
  j = systemd.journal.Reader()
  j.seek_tail()
  j.get_previous()
  while True:
    event = j.wait(1000000)
    if event == systemd.journal.APPEND:
      for entry in j:
         print (entry['MESSAGE'] + " " + str(datetime.datetime.now()))
         alertmail(entry['MESSAGE'])

def alertmail(logEntry):
    # returns first occurrence of Substring
    trigger_text = 'pause'
    result = logEntry.find(trigger_text)
    if (logEntry.find(trigger_text) != -1):
        print ("Contains '" + trigger_text + "' at index:", result)
        msg = EmailMessage()
        msg.set_content(str(datetime.datetime.now()) + " \n " + logEntry)
        msg['Subject'] = ' '.join(logEntry[24:].split())
        msg['From'] = "ultimaker@mail.bellariastrasse.com"
        msg['To'] = "adriano.aguzzi@usz.ch"

        smtp = smtplib.SMTP('mail.bellariastrasse.com', port='587')
        smtp.ehlo()  # send the extended hello to our server
        smtp.starttls()  # tell server we want to communicate with TLS encryption
        smtp.login('ultimaker@mail.bellariastrasse.com', 'scrap10')  # login to our email server

        # send our email message 'msg' to our boss
        smtp.send_message(msg)
        smtp.quit()  # finally, don't forget to close the connection
    else:
        print ("Doesn't contain substring '" + trigger_text +"'")

if __name__ == '__main__':
    main()

 

Edited by aag
updated code
  • Like 1
Link to post
Share on other sites

Posted · script to send an email if the printer pauses

This works on S5?  Very cool.

 

@Smithy maybe you could add a feature that installs postfix and then installs the above script?  Ha ha - your tool is getting more and more complicated all the time.  🙂

 

 

  • Link to post
    Share on other sites

    Posted · script to send an email if the printer pauses

    @aag Great idea, but should work without a local installed mail transport agent as well, or do I miss something? You connect directly to the destination. 
     

    @gr5 yes, should be no problem, if aag agree with it.?

  • Link to post
    Share on other sites

    • 9 months later...
    Posted · script to send an email if the printer pauses
    On 1/23/2022 at 4:07 PM, gr5 said:

    This works on S5?  Very cool.

     

    @Smithy maybe you could add a feature that installs postfix and then installs the above script?  Ha ha - your tool is getting more and more complicated all the time.  🙂

     

    Hi , how to upload this on my ultimaker s5 I have made sharedmail box for smtp ect

     

     

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.8 Stable released 🎉
        In the Cura 5.8 stable release, everyone can now tune their Z seams to look better than ever. Method series users get access to new material profiles, and the base Method model now has a printer profile, meaning the whole Method series is now supported in Cura!
        • 5 replies
      • Introducing the UltiMaker Factor 4
        We are happy to announce the next evolution in the UltiMaker 3D printer lineup: the UltiMaker Factor 4 industrial-grade 3D printer, designed to take manufacturing to new levels of efficiency and reliability. Factor 4 is an end-to-end 3D printing solution for light industrial applications
          • Thanks
          • Like
        • 3 replies
    ×
    ×
    • Create New...