Il s'agit d'un script que Python surveille lorsque l'imprimante 3D Mojo est arrêtée et vous avertit via Skype.
Surveillez les journaux de Mojo et envoyez tous les journaux via le chat Skype pour le moment. Quand il s'arrêtera, je passerai un appel.
Étant donné que Mojo s'arrête fréquemment dans un état redémarrable, je vous avertirai lorsqu'il s'arrête. Il ne redémarre pas automatiquement car il est nécessaire de vérifier visuellement les anomalies d'impression.
Définissez simplement le chemin d'accès au journal Mojo et aux contacts Skype Si vous l'exécutez, la surveillance commencera
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
#Chemin vers le journal de Mojo
BASEDIR = "C:/ProgramData/Mojo/Mojo 3D Printer Software/Log/"
log_filename = "SystemLog.log"
#Informations de contact
user_name = 'Frend name'
#-------Exemples Skype4Py->callfriend.Copier depuis py(Pour appel)--------->
# 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()
#<--Copiez et collez jusqu'à présent----------------------------------------------------
#Joindre les paramètres de chat à Skype
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!')
#Surveillance des journaux Mojo
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)
#-Dernière ligne à 1(Dernières informations du journal)Seulement sortie
print(data[-1])
chat.SendMessage(data[-1])
#Passer un appel lorsque la pause est incluse
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 est très utile pour la surveillance des fichiers"Copiez le code de
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