Dies ist ein Skript, das Python überwacht, wenn der 3D-Drucker Mojo gestoppt wird, und Sie über Skype benachrichtigt.
Überwachen Sie die Protokolle von Mojo und senden Sie vorerst alle Protokolle per Skype-Chat. Wenn es aufhört, werde ich einen Anruf tätigen.
Da Mojo häufig in einem neu startbaren Zustand stoppt, werde ich Sie benachrichtigen, wenn es stoppt. Es wird nicht automatisch neu gestartet, da visuell nach Druckstörungen gesucht werden muss.
Legen Sie einfach den Pfad zum Mojo-Protokoll und zu den Skype-Kontakten fest Wenn Sie es ausführen, wird die Überwachung gestartet
python
# -*- coding: utf-8 -*-
import time
import os
import re
import numpy as np
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
import Skype4Py
#Pfad zu Mojos Protokoll
BASEDIR = "C:/ProgramData/Mojo/Mojo 3D Printer Software/Log/"
log_filename = "SystemLog.log"
#Kontaktinformation
user_name = 'Frend name'
#-------Skype4Py-Beispiele->callfriend.Kopie von py(Für einen Anruf)--------->
# This variable will get its actual value in OnCall handler
CallStatus = 0
# Here we define a set of call statuses that indicate a call
# has been either aborted or finished
CallIsFinished = set([Skype4Py.clsFailed, Skype4Py.clsFinished,
Skype4Py.clsMissed, Skype4Py.clsRefused,
Skype4Py.clsBusy, Skype4Py.clsCancelled]);
def AttachmentStatusText(status):
return skype.Convert.AttachmentStatusToText(status)
def CallStatusText(status):
return skype.Convert.CallStatusToText(status)
# This handler is fired when status of Call object has changed
def OnCall(call, status):
global CallStatus
CallStatus = status
print 'Call status: ' + CallStatusText(status)
# This handler is fired when Skype attatchment status changes
def OnAttach(status):
print 'API attachment status: ' + AttachmentStatusText(status)
if status == Skype4Py.apiAttachAvailable:
skype.Attach()
#<--Bisher kopieren und einfügen----------------------------------------------------
#Hängen Sie Chat-Einstellungen an Skype an
skype = Skype4Py.Skype()
if not skype.Client.IsRunning:
print 'Starting Skype..'
skype.Client.Start()
skype.Attach()
skype.OnAttachmentStatus = OnAttach
skype.OnCallStatus = OnCall
chat = skype.CreateChatWith(user_name)
chat.SendMessage('Mojo''s watchdog has been started!')
#Mojo-Protokollüberwachung
class ChangeHandler(FileSystemEventHandler):
def on_modified(self, event):
if event.is_directory:
return
else:
time.sleep(5)
data = np.loadtxt(
os.path.join(BASEDIR, log_filename),
delimiter="\n", dtype=str)
#-Letzte Zeile um 1(Neueste Protokollinformationen)Nur Ausgabe
print(data[-1])
chat.SendMessage(data[-1])
#Rufen Sie an, wenn Pause enthalten ist
n = len(re.findall('pause', data[-1])) + \
len(re.findall('Paused', data[-1]))
if n > 0:
skype.PlaceCall(user_name)
while not CallStatus in CallIsFinished:
pass
#"Watchdog ist sehr nützlich für die Dateiüberwachung"Kopieren Sie den Code von
if __name__ in '__main__':
while 1:
event_handler = ChangeHandler()
observer = Observer()
observer.schedule(event_handler, BASEDIR, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Recommended Posts