Múltiples instancias Klipper

Hemos comentado muchas veces la versatilidad y modularidad de Klipper, en este caso os vamos a mostrar como tener varias instancias Klipper para controlar múltiples impresoras desde un host.

En nuestro caso vamos a usar Kiauh (Klipper Installer And Update Helper) que nos va a facilitar enormemente la vida.

Es aconsejable que tengamos nuestra instalación totalmente limpia o si partimos de una instancia tenerla totalmente actualizada y funcionando.

Desde Octubre 2022 Moonraker ha introducido cambios en la estructura de la configuración que pueden afectar al proceso ya sea bien por la instalación existente o por el propio Kiauh.

Os recordamos que a más instancias tengáis en un host Klipper más probabilidades de que cualquier fallo en este afecte a vuestras impresiones.

Además, es importante dimensionar correctamente el host Klipper al número de instancias que queramos montar para evitar que esté saturado y pueda ocasionar problemas también.

Kiauh nos permite instalar Klipper y sus componentes, además de otros y algunas utilidades, de una forma extremadamente sencilla y mediante menús. A partir de este punto usaremos nuestro terminal SSH para realizar el proceso.

Para seguir los pasos siguientes se ha de tener instalado Kiauh, podéis encontrar las instrucciones para hacerlo aqui.

Instalar varias instancias de Klipper:

  • Lanzaremos Kiauh desde nuestro terminal SSH:

./kiauh/kiauh.sh

Como indicador interesante Kiauh en su menú inicial nos indicará el número de instancias y versión de cada componente, en nuestro ejemplo no teníamos nada instalado.

  • Seleccionaremos la opción #1 Install

  • Volveremos a seleccionar la opción #1 Klipper

    • Seleccionaremos nuestra versión de Phyton

    • Seleccionaremos el número de instancias Klipper que queremos instalar

    • Nos preguntará si queremos personalizar los nombres de nuestras instancias o dejarlas por defecto

  • Klipper comenzará a descargarse e instalarse. Una vez finalizado volverá al menú inicial.

Instalar varias instancias de Moonraker

Moonraker es una API y se encarga de las comunicaciones entre Klipper y terceros, como por ejemplo una UI como Mainsail/Fluidd.

  • Seleccionaremos de nuevo la opción #1 Install

  • En este caso seleccionaremos #2 Moonraker

    • Kiauh nos preguntará el número de instancias a instalar de Moonraker, recuerda que este debe de coincidir con el número de instancias de Klipper... aunque en el propio menú ya nos lista las instaladas.

  • Moonraker comenzará a descargarse e instalarse. Una vez finalizado volverá al menú inicial.

  • Una vez finalizado el proceso nos indicará las IP y puertos para Moonraker de cada una de las instancias instaladas

Revisar estado y puertos de nuestras instancias:

Podemos revisar el estado y puertos de nuestras instancias mediante el comando sudo ss -lntp o con sudo netstat -ltnp el cual nos dirá que procesos están escuchando en que puertos:

En el ejemplo anterior, para una instancia, podremos ver la siguiente información:

  • tenemos en el puerto 80 un interfaz web de Klipper usando el proceso nginx

  • en el puerto 22 tenemos el demonio sshd para conexión SSH+

  • en el puerto 7125 tenemos un proceso Klipper (python) de una instancia

Gestionar/Controlar varias impresoras

Ahora que ya tenemos diferentes instancias de Klipper/Moonraker y para gestionarlas/configurarlas tal como hacemos con una instancia deberemos acceder a ellas por separado.

Podremos hacerlo desde nuestra UI favorita además que os mostramos como hacerlo en el caso que usemos KlipperScreen o el módulo de Telegram.

Mainsail

Para añadir diferentes IPs a nuestro Mainsail tan solo necesitamos conocer la IP y puerto de Moonraker para la o las instancias que queramos añadir.

Podemos hacerlo siguiendo estos sencillos pasos

  • desde el interfaz de Mainsail iremos a las opciones pulsando en el icono de los engranajes:

  • En las opciones de Mainsail iremos al apartado PRINTERS y ADD PRINTER, y nos aseguraremos que añadimos las IPs/puerto de cada una de nuestras instancias antes creadas:

Configuración printer.cfg en múltiples instancias

Ahora que ya disponemos de varias instancias y tenemos acceso a cada una mediante la interfaz web ya podemos ponernos a trabajar en nuestros printer.cfg, os aconsejamos revisar nuestra guía de primeros pasos por las secciones más importantes.

Volviendo al tema de múltiples instancias, en ocasiones vamos a querer gestionar impresoras iguales o con la misma electrónica y esto puede ser un problema. Normalmente, al generar el firmware Klipper para nuestra electrónica/MCU por defecto genera el serial ID basado en valores fijos dependiendo del tipo de MCU... simplificando que va a utilizar el mismo ID de USB en todas las MCU similares siendo un problema a la hora de montar múltiples instancias.

Para solventar esto tenemos varias opciones siendo las más comunes:

  • Utilizar como serial la cadena de conexión obtenida utilizando un ls /dev/serial/by-path/*, by-path en lugar de by-serial (recordemos lo comentado anteriormente sobre el ID de USB a la hora de crear el firmware). Los puntos de montaje serial usando by-path se basan en el puerto USB físico y no en el dispositivo. El problema por contra es que las impresoras siempre ha de estar conectada al mismo puerto USB.

KlipperScreen

Si nos gusta tener una pantalla para la gestión de nuestras impresoras, no necesitaremos tener múltiples de ellas si tenemos varias bajo Klipper, estén o no en el mismo host.

Para poder añadir diferentes impresoras en KlipperScreen editaremos nuestro KlipperScreen.conf y añadiremos la configuración de cada una tal como vemos a continuación:

# Define printer and name. Name is anything after the first printer word
[printer Ender 3 Pro]
# Define the moonraker host/port if different from 127.0.0.1 and 7125
moonraker_host: 127.0.0.1
# ports 443 and 7130 will use https/wss
moonraker_port: 7125
# Moonraker API key if this is not connecting from a trusted client IP
moonraker_api_key: False

Telegram

En el caso que usemos el módulo de Telegram para controlar nuestras impresoras de forma remota podremos tener diferentes instancias de este para poder gestionarlas de forma individual.

No vamos a entrar en el proceso de instalación o configuración detallado, el cual podéis encontrar aquí.

Comenzaremos clonando el repositorio e instalando:

cd
git clone https://github.com/Raabi91/moonraker-telegram moonraker-telegram2
cd moonraker-telegram2
chmod 755 ./scripts/install.sh
./scripts/install.sh

IMPORTANTE!!

  • en el comando git clone la parte final indica el directorio donde lo instalaremos. Os aconsejamos usar moonraker-telegram2, moonraker-telegram3,...

  • en el comando cd lo adaptaremos dependiendo a lo usado en el punto anterior

Durante la instalación nos solicitará el path de Moonraker y de Klipper de cada instancia, aseguraos de poner el correcto para cada instancia ya que ahí dejará el fichero de configuración necesario para su configuración.

Por último nos preguntará el identificador del servicio que es útil para poder evitar problemas de arranque, parada o reinicio del serivicio.

if you want to use multiple instances on one pi, enter an identifier here. this is needed to create the sytemd service
If you only use it once per hardware, simply press enter.

Por ejemplo si usamos 2 la instalación creará una instancia de servicio de arranque llamada moonraker-telegram2.service

Revisaremos en cada instancia nuestro telegram_config.sh ajustando el puerto de Moonraker para que coincida con el de cada instancia.

Además si contamos con varias cámaras nos aseguraremos que la URL en el valor webcam (sobretodo el puerto) es el correcto de nuestra instancia.

Crowsnest

Crowsnest es un gestor de cámaras que en el caso de disponer de varias instancias/impresoras y estas cuenten con cámaras separadas deberemos de instalar múltiples instancias en caso de que no queremos dependencias entre ellas.

Dado que una instancia de Crowsnest puede gestionar varias cámaras nuestra sugerencia es de usar una única instancia con todas las cámaras que necesitemos y configurar en cada instancia/impresora de Klipper la que utilicemos en cada caso.

Lo primero de todo comentar que a día de hoy Crowsnest no está preparado para su instalación en multi instancia, por lo que el proceso va a ser manual.

Ejecutaremos los siguientes comandos desde la linea de comandos SSH:

SSH command line
cd ~/crowsnest
make config

Nos aparecerá un "wizard" desde el cual nos preguntará el path, donde podremos encontrar los ficheros de configuracion crowsnest.conf crowsnest.env y crowsnest.log, para realizar la instalación y que utilizaremos tantas veces como necesitemos para crear nuestras instancias.

Una vez finalizada la generación del fichero de configuración desde el asistente ejecutaremos:

SSH command line
sudo make install

Seguiremos las instrucciones y una vez finalizado no olvides reiniciar tu host. Recuerda añadir en el Update Manager de Moonraker cada una de tus instancias respectivamente.

Última actualización