Chercher dans la communauté
Résultats des étiquettes.
1 résultat trouvé
-
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 ....