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.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 18 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...