Chercher dans la communauté
Résultats des étiquettes.
1 résultat trouvé
-
Coucou tout le monde... Juste un petit topic pour partager un truc avec lequel j'ai fait un peu mumuse aujourd'hui sur mon Raspberry. J'ai commandé des matrices de led Max7219 et j'ai fait un pti script python rapidos pour interroger octoprint et afficher les infos dessus. Si ça vous intéresse, il faut juste un prérequis pour interroger l'url octo : pip install requests et voilà mon script : #! /usr/bin/env python import json import requests import time import math from random import randrange # Import library import multilineMAX7219 as LEDMatrix # Import fonts from multilineMAX7219_fonts import CP437_FONT, SINCLAIRS_FONT, LCD_FONT, TINY_FONT # The following imported variables make it easier to feed parameters to the library functions from multilineMAX7219 import DIR_L, DIR_R, DIR_U, DIR_D from multilineMAX7219 import DIR_LU, DIR_RU, DIR_LD, DIR_RD from multilineMAX7219 import DISSOLVE, GFX_ON, GFX_OFF, GFX_INVERT # Initialise the library and the MAX7219/8x8LED arrays LEDMatrix.init() #### A MODIFIER #### octo_api_url = 'http://monurlocto/api' api_key = 'maclefapi' #################### job_url = "{}/job?apikey={}".format(octo_api_url, api_key) reponse = requests.get(job_url, verify=False) data = reponse.json() print "-------------" print data print "-------------" state = data['state'] completion = data['progress']['completion'] time_left = data['progress']['printTimeLeft'] print_time = data['progress']['printTime'] printed_object = data['job']['file']['name'] msg_state = "@:{}".format(state) if msg_state == "@:Printing": if type(completion) == int or type(completion) == float: msg_completion = "%:{}".format(round(completion, 2)) else: msg_completion = "%:{}".format(completion) if type(print_time) == int or type(print_time) == float: msg_printtime = "PT~:{}".format(print_time/60) else: msg_printtime = "PT~:{}".format(print_time) if type(time_left) == int or type(time_left) == float: msg_timeleft = "~ETA:{}".format(time_left/60) else: msg_timeleft = "~ETA~:{}".format(time_left) msg_matrix = " " + msg_state + " (" + printed_object + ") - " + msg_completion + " - " + msg_printtime + " - " + msg_timeleft LEDMatrix.brightness(0) LEDMatrix.scroll_message_horiz([msg_matrix], 4.5//3, 4.5, DIR_L) else: exit(0) Il faut d'abord récupérer le projet multilineMAX7219 ici -> https://github.com/tutRPi/multilineMAX7219 en faisant un pti : git clone https://github.com/tutRPi/multilineMAX7219.git -- ATTENTION A BIEN LIRE LA DOC DU FICHIER multilineMAX7219.py -- Il y a des choses a changer en fonction de votre setup de matrices LED -- puis copier mon script dans le dossier, et l'éditer pour modifier l'url et la clé API avec les lignes : octo_api_url = 'http://monurlocto/api' api_key = 'maclefapi' puis pour le tester le script : python octoprint.py ATTENTION, par défaut, mon script n'affiche quelque chose que si un print est en cours... Une fois que vous êtes sur qu'il fonctionne, vous pouvez le mettre en crontab toutes les 5min dans le style : */5 * * * * /home/pi/multilineMAX7219/octoprint.py Normalement ça doit donner un truc du genre :