V3DP Posté(e) il y a 15 heures Posté(e) il y a 15 heures (modifié) Bonjour à tous J'ai libéré mes X Max 3 et tourne sur Klipper 0.12 actuellement J'essaye d'améliorer mes macros PAUSE RESUME (déjà non standard) pour couper les ventilateurs lors de la mise en pause et les redémarrer à la vitesse définie lors de l'arrêt à la reprise. Donc passage par une variable définie lors de la macro PAUSE et récupération lors de la macro RESUME, comme c'est déjà le cas pour la température de la buse. Voici la macro PAUSE [gcode_macro PAUSE] description: Pause the actual running print rename_existing: PAUSE_BASE gcode: ##### get user parameters or use default ##### {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} {% set partfan_speed = printer.partfan if printer.partfan != '' else 0 %} {% set filterfan_speed = printer.filterfan if printer.filterfan != '' else 0 %} {% set sidefan_speed = printer.sidefan if printer.sidefan != '' else 0 %} ##### end of definitions ##### SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE={temp} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_restore VALUE={restore} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_partfan_speed VALUE={partfan_speed} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_filterfan_speed VALUE={filterfan_speed} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_sidefan_speed VALUE={sidefan_speed} # set a new idle_timeout value {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=True M104 S0 M106 S0 M106 P2 S0 M106 P3 S0 SFS_DISABLE PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} Et la partie de la macro RESUME [gcode_macro RESUME] description: Resume the actual running print rename_existing: RESUME_BASE variable_last_extruder_temp: 0 variable_last_extruder_restore: False variable_last_partfan_speed: 0 variable_last_filterfan_speed: 0 variable_last_sidefan_speed: 0 variable_restore_idle_timeout: 0 variable_idle_state: False gcode: ##### get user parameters or use default ##### {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" # no runout else True if not printer[client.runout_sensor].enabled # sensor is disabled else printer[client.runout_sensor].filament_detected %} # sensor status {% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder {% set do_resume = False %} {% set prompt_txt = [] %} ##### end of definitions ##### #### Printer comming from timeout idle state #### {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_restore %} # we need to use the unicode (\u00B0) for the ° as py2 env's would throw an error otherwise RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp) }' M109 S{last_extruder_temp} M106 S{last_partfan_speed} M106 P2 S{last_sidefan_speed} M106 P3 S{last_filterfan_speed} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} En lançant la macro PAUSE, j'obtiens une erreur lors de l'évaluation de la variable partant_speed !! Unable to parse '' as a literal: invalid syntax (, line 0) Donc à priori c'est que la variable qui doit être un décimal n'est pas du bon format. Si je spécifie que c'est la valeur de objet set partfan_speed = printer.partfan.value, j'obtiens une erreur bloquante lors du démarrage de Klipper !! Error evaluating 'gcode_macro PAUSE:gcode': jinja2.exceptions.UndefinedError: 'extras.gcode_macro.GetStatusWrapper object' has no attribute 'partfan' Pourtant dans le guide de référence des états output_pin¶ Les informations suivantes sont disponibles dans les objets output_pin nom_de_la_sortie : value : la "valeur" de la broche, telle que définie par une commande SET_PIN. Et le printer.cfg définit les ventilateurs de la X Max 3 comme des output_pin et non pas des fan. J'ai essayé avec la syntaxe complète : printer[printer.partfan].value sans succès. Impossible de récupérer la valeur numérique de la sortie du ventilateur. Si quelqu'un a une idée .... Modifié (le) il y a 15 heures par V3DP
fran6p Posté(e) il y a 14 heures Posté(e) il y a 14 heures Salut, Pas vraiment d'idées , d'autant plus que mes ventilateurs ne sont pas déclarés en [output_pin …], mais en [fan_generic …] ################################################# # Fans # ################################################# ############### Side fan (auxiliary) ############ #[output_pin fan2] # => auxiliary_cooling_fan #pin: PA8 #pwm: True #cycle_time: 0.0100 #hardware_pwm: false #value: 0.00 #scale: 255 #shutdown_value: 0.0 [fan_generic auxiliary_cooling_fan] pin: PA8 shutdown_speed: 0.0 cycle_time: 0.0100 hardware_pwm: false kick_start_time: 0.100 off_below: 0.0 # # use via SET_FAN_SPEED FAN=auxilary_fan SPEED=value ################### Chamber fan ################ ## Ventilateur extraction air interne via filtre à charbon actif #[output_pin fan3] # => chamber_circulation_fan #pin:PC9 #pwm: True #cycle_time: 0.0100 #hardware_pwm: false #value: 0.0 #scale: 255 #shutdown_value: 0.0 [fan_generic chamber_circulation_fan] pin: PC9 shutdown_speed: 0.0 cycle_time: 0.0100 hardware_pwm: false kick_start_time: 0.100 off_below: 0.0 # # use via SET_FAN_SPEED FAN=exhaust_fan SPEED=valeur ################### Parts fan ################## ## FAN0 refroidissement filament (buse) #[output_pin fan0] #pin: MKS_THR:gpio2 #pwm: True #cycle_time: 0.0100 #hardware_pwm: false #value: 0 #scale: 255 #shutdown_value: 0.0 [fan_generic cooling_fan] pin: MKS_THR:gpio2 max_power: 1.0 shutdown_speed: 0.0 cycle_time: 0.0100 hardware_pwm: false kick_start_time: 0.100 off_below: 0.0 # use via SET_FAN_SPEED FAN=cooling_fan SPEED=value @Savate, une idée ?
V3DP Posté(e) il y a 13 heures Auteur Posté(e) il y a 13 heures il y a une heure, fran6p a dit : Salut, Pas vraiment d'idées , d'autant plus que mes ventilateurs ne sont pas déclarés en [output_pin …], mais en [fan_generic …] Merci @fran6p Oui, c'est plus simple dans ce cas, car la propriété speed est décrite. Un printer.fan.speed remonte la valeur Par contre je ne sais pas si cela continuerait à fonctionner avec l'écran d'origine flashé avec FreeDi. J'ai suivi le GitHub de Phil1988 pour la configuration du printer.cfg pour que ça fonctionne avec l'écran flashé
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