2cv001 Posté(e) Décembre 28, 2024 Posté(e) Décembre 28, 2024 (modifié) J'en ai déjà parlé, mais je ne peux pas m'empêcher de tenter d'automatiser les choses (à mon niveau qui est assez bas). Première étape : faire en sorte que quand je suis sous FreeCAD, en appuyant sur un bouton, ça génère un stl assez fin (pas de facettes) puis ça allume l'imprimante, puis ça lance QIDIStudio. Si ça intéresse quelqu'un, je peux donner plus de détails, mais rien de difficile et je ne suis pas le premier à le faire : La macro (python) FreeCAD que j'ai faite envoie un ordre d'allumage par MQTT via Jeedom à une prise connectée (en wifi) ( pour moi comme j'ai jeedom, c'est plus centralisateur de passer par jeedom, mais on peut très facilement s'en passer) La même macro lance l'exe de QIDISlicer en passant le nom du fichier stl qui a été généré par freeCAD en paramètre afin que le Slicer s'ouvre avec le bon stl chargé. Rien de bien sorcier et il y a plein de façons de le faire. Si ça intéresse quelqu'un, on fonction de sa configuration, je peux l'aider. Bon, ça s'est fait. Après, j'ai voulu voir si on pouvait aller plus loin. Par exemple relancer une impression ou connaitre en temps réel la température de la buse (histoire de couper à la fin le courant via une prise connecté qu'une fois que non seulement l'impression est fini, mais aussi que la ou les températures soient suffisamment basses (en particulier la buse). J'ai avancé sur le sujet, et vous pouvez en faire l'expérience pour vous amuser. En fait, QIDI ou plutôt moonRaker met à disposition des API Rest. Concrètement un mode de dialogue avec l'imprimante dans les deux sens. Faites l'expérience suivante imprimante allumée : Si vous êtes en windows, ouvrez une fenêtre de commande . Pour le trouver, vous tapez invite dans cette recherche Puis, dans la fenêtre de commande vous tapez : curl -X GET http://192.168.1.4:7125/printer/info Après bien sûr avoir remplacé l'adresse ip par l'adresse ip de votre imprimante. Et là, miracle, vous obtenez un truc du genre {"result": {"state_message": "Printer is ready", "klipper_path": "/home/mks/klipper", "config_file": "/home/mks/klipper_config/printer.cfg", "software_version": "v0.10.0-530-g3387a9c2-dirty", "hostname": "mkspi", "cpu_info": "4 core ?", "state": "ready", "python_path": "/home/mks/klippy-env/bin/python", "log_file": "/home/mks/klipper_logs/klippy.log"}} On voit que l'imprimante est prête. Je suppose qu'ainsi on peut savoir si elle est en train d'imprimer. Un autre exemple : pour obtenir les températures : Vous tapez (ou recopiez) curl -X GET http://192.168.1.4:7125/printer/objects/query?heater_bed et on obtient {"result": {"status": {"heater_bed": {"temperature": 17.43, "power": 0.0, "target": 0.0}}, "eventtime": 355.354429168}} Pour la température de l'extrudeur : curl -X GET "http://192.168.1.4:7125/printer/objects/query?extruder" {"result": {"status": {"extruder": {"pressure_advance": 0.032, "target": 0.0, "power": 0.0, "can_extrude": false, "smooth_time": 0.03, "temperature": 19.0}}, "eventtime": 491.743618525}} On peut aussi demander plusieurs paramètres à la fois : ...../printer/objects/query?heater_bed&extruder On peut aussi donner des ordres à l'imprimante. Par exemple lui envoyer des gcodes Faire chauffer le plateau à 20°C curl -X POST "http://192.168.1.4:7125/printer/gcode/script" -H "Content-Type: application/json" -d "{\"script\": \"M140 S20\"}" Et pour arrêter la chauffe curl -X POST "http://192.168.1.4:7125/printer/gcode/script" -H "Content-Type: application/json" -d "{\"script\": \"M140 S0\"}" A noter quand même que ça veut dire que n'importe qui sur le réseau peut déclencher des actions sur l'imprimante ! Il va falloir que je recherche coté sécurité. Etape suivante, mais pas avant 15 jours : faire pareil mais en MQTT. A priori, c'est possible. Modifié (le) Décembre 28, 2024 par 2cv001
fran6p Posté(e) Décembre 28, 2024 Posté(e) Décembre 28, 2024 La gestion des prises de courant peut se faire directement via Moonraker (section [power]). Si tu gères déjà ta prise via MQTT, c'est cette section. Ensuite, pour éteindre l'imprimante après avoir attendu que des températures soient descendues au-dessous de telle valeur, c'est via des macros Gcode qu'habituellement ça se fait. Exemple avec ma XM3 (ce sont des prises Tasmota et HomeAssistant possède une intégration de Moonraker donc de nombreux paramètres pourraient être automatisés (ce que je ne fais pas parce que mes imprimantes sont dans mon bureau… à portée de main… j'ai beau être un procrastinateur né, faut pas exagérer non plus ). - macros Klipper : #===================================================== # Power Operations / HA Plug #===================================================== [gcode_macro POWER_ON_KS] gcode: {action_call_remote_method("set_device_power", device="Klipperscreen", state="on")} [gcode_macro POWER_OFF_KS] gcode: {action_call_remote_method("set_device_power", device="Klipperscreen", state="off")} [gcode_macro POWER_OFF_PRINTER] gcode: {action_call_remote_method("set_device_power", device="Qidi_XMax3", state="off")} [gcode_macro POWER_OFF_ALL] gcode: KS_LAN_HALT #G4 P10000 # wait 10 seconds to shutdown RPi0V2 #POWER_OFF_KS # Find a way, if ever possible to shutdown filesystem before power off POWER_OFF_PRINTER [delayed_gcode delayed_printer_off] initial_duration: 0 # Set 0 to interrupt the delayed macro # use UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=300 in START_PRINTER macro with the time wanted gcode: {% if printer.extruder.target > 50 or printer.extruder.temperature > 50 or printer.heater_bed.temperature > 55 or printer.idle_timeout.state| upper == "PRINTING" or printer.pause_resume.is_paused %} UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=300 {% else %} POWER_OFF_ALL {% endif %} # alternative mode #{% if printer.idle_timeout.state == "Idle" or printer.idle_timeout.state == "Ready" %} #{% if printer.extruder.target == 0.0 and printer.heater_bed.target == 0.0 %} # Target Temp = 0 #{% if printer.extruder.temperature < 60.0 %} #UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=0 # DURATION=0 don't re-execute #POWER_OFF #{% else %} # Extruder Temp > 60 #UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=10 # Waiting Cooling Heater #{% endif %} #{% else %} # Target Temp > 0 #UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=600 # Not Printing + Heating... #{% endif %} #{% else %} #UPDATE_DELAYED_GCODE IDdelayed_printer_off DURATION=600 # Printing #{% endif %} [delayed_gcode ks_on] initial_duration: 5.0 gcode: POWER_ON_KS - gestion des prises Tasmota (moonraker.conf) : ## Gestion prise électrique via Tasmota [power Qidi_XMax3] # athom-sp2 type: tasmota address: 192.168.1.186 locked_while_printing: true restart_klipper_when_powered: True restart_delay: 5. off_when_shutdown: False # Set to True to power off the device when Klipper enters "shutdown" state #off_when_shutdown_delay: 5 [power Klipperscreen] # athom-sp1 type: tasmota address: 192.168.1.185 #locked_while_printing: true #restart_klipper_when_powered: True #restart_delay: 5. 2
2cv001 Posté(e) Décembre 28, 2024 Auteur Posté(e) Décembre 28, 2024 (modifié) @fran6p Tout ce que tu dis est à ajouter danss le fichier moonraker.conf non ? Si j'ai bien compris, pour le mqtt, il faut aussi ajouter dans ce même fichier un truc du style [mqtt] enabled: true host: localhost port: 1883 topic_prefix: klipper client_id: qidi_q1pro Question bête, il y a plusieurs fichiers moonraker.conf : C'est celui qui est dans klipper_config/ qu'il faut éditer ? Modifié (le) Décembre 28, 2024 par 2cv001
fran6p Posté(e) Décembre 28, 2024 Posté(e) Décembre 28, 2024 (modifié) il y a 15 minutes, 2cv001 a dit : C'est celui qui est dans klipper_config/ qu'il faut éditer ? C'est le seul. Les trois premiers sont des sauvegardes effectuées par KIAUH. Avec le Klipper de Qidi, les fichiers utilisés pour les configurations sont uniquement dans ~/klipper_config (~ est le raccourci de l'emplacement du dossier utilisateur (/home/mks/)). il y a 15 minutes, 2cv001 a dit : Tout ce que tu dis est à ajouter danss le fichier moonraker.conf non ? Non, seulement les sections [power …]. Les autres [gcode_macro XXXX], [delayed_gcode ZZZZ] sont des macros à ajouter dans le fichier printer.cfg ou dans leur propre fichier de configuration «configurationdemesprisesdalimentation.conf]» (enregistré dans ~/klipper_config) puis en ajoutant dans printer.cfg une section [include configurationdemesprisesdalimentation.conf] (par exemple ). Modifié (le) Décembre 28, 2024 par fran6p 1
2cv001 Posté(e) Février 10 Auteur Posté(e) Février 10 (modifié) Je ne crois pas avoir mis le lien ici : Pour le MQTT, ça ce passe ici : Modifié (le) Février 10 par 2cv001 1
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant