Skip to main content

Control completo para impresoras Bambu Lab

Project description

BambuLuc v1.3.0 🖨️

Control completo para impresoras Bambu Lab via conexión de red

Python Version PyPI Version License

🌟 Características

BambuLuc es una librería Python completa para controlar impresoras Bambu Lab de forma programática. Incluye todas las funciones necesarias para automatizar completamente el proceso de impresión 3D.

Control Manual Completo

  • 🏠 HOME de ejes (individual o todos)
  • 🌡️ Control de temperaturas (nozzle y cama)
  • 🎯 Movimientos precisos de ejes X/Y/Z
  • 💧 Control de extrusión y retracción
  • 💡 Control de LED de cámara
  • 🌪️ Control de ventiladores

Sistema AMS (Automatic Material System)

  • 🔧 Configuración automática de slots
  • 📋 Detección de filamentos requeridos
  • 🔄 Cambio automático de materiales
  • 🎨 Gestión de filamentos multicolor

Transferencia de Archivos

  • 📁 Subida de archivos .3mf/.gcode por FTP SSL
  • 🚀 Proceso de subida optimizado y seguro
  • 📤 Gestión automática de conexiones

Automatización Completa

  • ⚡ Proceso completo en una función
  • 🎯 AMS automático + subida + impresión
  • 📝 Envío de comandos personalizados

Monitoreo de Estados

  • 📊 Consulta de estado de impresión en tiempo real
  • 🌡️ Monitoreo de temperaturas
  • 📈 Progreso de impresión
  • 🔍 Estados detallados de la máquina

🚀 Instalación

pip install bambuluc

📖 Uso Básico

Configuración Inicial

from bambuluc import BambuLuc

# Configuración de conexión
printer = BambuLuc(
    ip="IP_IMPRESORA",          # ej: 192.168.1.100
    access_code="CODIGO_ACCESO", # Código de acceso de la impresora
    serial="SERIE_IMPRESORA"     # Número de serie de la impresora
)

Nota: Configura tu impresora con IP_IMPRESORA, CODIGO_ACCESO y SERIE_IMPRESORA con los valores reales de tu impresora Bambu Lab.

Control Manual

import asyncio

async def control_manual():
    printer = BambuLuc("IP_IMPRESORA", "CODIGO_ACCESO", "SERIE_IMPRESORA")
    
    try:
        # Conectar
        await printer.connect()
        
        # Hacer HOME de todos los ejes
        await printer.home_all()
        
        # Calentar nozzle a 210°C
        await printer.set_nozzle_temperature(210)
        
        # Calentar cama a 60°C
        await printer.set_bed_temperature(60)
        
        # Mover a posición
        await printer.move_x(100)
        await printer.move_y(100)
        await printer.move_z(50)
        
        # Extruir filamento
        await printer.extrude(10)
        
    finally:
        await printer.disconnect()

# Ejecutar
asyncio.run(control_manual())

Configuración AMS y Subida de Archivo

async def configurar_ams_y_subir():
    printer = BambuLuc("IP_IMPRESORA", "CODIGO_ACCESO", "SERIE_IMPRESORA")
    
    try:
        await printer.connect()
        
        # Configurar AMS (4 slots con diferentes filamentos)
        filamentos_requeridos = ["PLA", "PETG", "ABS", "TPU"]
        await printer.configure_ams(filamentos_requeridos)
        
        # Subir archivo 3MF por FTP
        resultado = await printer.upload_file("mi_modelo.3mf")
        if resultado:
            print("✅ Archivo subido exitosamente")
        else:
            print("❌ Error al subir archivo")
            
    finally:
        await printer.disconnect()

asyncio.run(configurar_ams_y_subir())

📊 Consulta de Estados

async def consultar_estados():
    printer = BambuLuc("IP_IMPRESORA", "CODIGO_ACCESO", "SERIE_IMPRESORA")
    
    try:
        await printer.connect()
        
        # Estado general de impresión
        estado = await printer.get_print_status()
        print(f"Estado: {estado}")
        
        # Progreso de impresión (0-100%)
        progreso = await printer.get_print_progress()
        print(f"Progreso: {progreso}%")
        
        # Temperaturas actuales
        temp_nozzle = await printer.get_nozzle_temperature()
        temp_bed = await printer.get_bed_temperature()
        print(f"Nozzle: {temp_nozzle}°C, Cama: {temp_bed}°C")
        
        # Estado de la cama (nivelación, etc.)
        estado_cama = await printer.get_bed_status()
        print(f"Estado cama: {estado_cama}")
        
        # Información del filamento actual
        filamento_info = await printer.get_current_filament()
        print(f"Filamento: {filamento_info}")
        
    finally:
        await printer.disconnect()

asyncio.run(consultar_estados())

Proceso Completo Automatizado

async def proceso_completo():
    printer = BambuLuc("IP_IMPRESORA", "CODIGO_ACCESO", "SERIE_IMPRESORA")
    
    try:
        await printer.connect()
        
        # AMS + Subida + Impresión en un solo paso
        resultado = await printer.auto_print(
            archivo="modelo.3mf",
            filamentos_requeridos=["PLA", "PETG"]
        )
        
        if resultado:
            print("🎉 ¡Proceso completo exitoso!")
            
            # Monitorear progreso
            while True:
                estado = await printer.get_print_status()
                progreso = await printer.get_print_progress()
                
                print(f"Estado: {estado} - Progreso: {progreso}%")
                
                if estado in ["FINISH", "FAILED"]:
                    break
                    
                await asyncio.sleep(30)  # Revisar cada 30 segundos
        else:
            print("❌ Error en el proceso")
            
    finally:
        await printer.disconnect()

# Ejecutar proceso completo
if __name__ == "__main__":
    result = asyncio.run(proceso_completo())

🔧 Control Avanzado

Movimientos Precisos

async def movimientos_avanzados():
    printer = BambuLuc("IP_IMPRESORA", "CODIGO_ACCESO", "SERIE_IMPRESORA")
    
    try:
        await printer.connect()
        
        # Movimiento coordinado XYZ
        await printer.move_xyz(x=150, y=150, z=100)
        
        # Movimiento relativo
        await printer.move_relative(x=10, y=-5)
        
        # Control de velocidad de extrusión
        await printer.set_extrusion_rate(110)  # 110% velocidad
        
        # Retraer filamento
        await printer.retract(2)  # Retraer 2mm
        
    finally:
        await printer.disconnect()

asyncio.run(movimientos_avanzados())

Control de Ventiladores y LED

async def control_ventiladores():
    printer = BambuLuc("IP_IMPRESORA", "CODIGO_ACCESO", "SERIE_IMPRESORA")
    
    try:
        await printer.connect()
        
        # Encender ventilador de capa al 80%
        await printer.set_part_fan(80)
        
        # Ventilador auxiliar al 50%
        await printer.set_aux_fan(50)
        
        # Encender LED de cámara
        await printer.set_camera_led(True)
        
        # Apagar LED después de 10 segundos
        await asyncio.sleep(10)
        await printer.set_camera_led(False)
        
    finally:
        await printer.disconnect()

asyncio.run(control_ventiladores())

📋 Requisitos

  • Python 3.7+
  • Impresora Bambu Lab compatible (A1 mini, A1, X1C, P1P, P1S, etc.)
  • Conexión de red con la impresora
  • Código de acceso de la impresora habilitado

⚠️ Configuración Requerida

Antes de usar BambuLuc, configura tu impresora:

  1. Habilitar acceso LAN:

    • Menú impresora → Configuración → LAN → Habilitar
  2. Obtener código de acceso:

    • Menú impresora → Configuración → LAN → Código de acceso
  3. Obtener número de serie:

    • Menú impresora → Configuración → General → Información del dispositivo

Parámetros de Configuración

  • IP_IMPRESORA: Dirección IP de tu impresora (ej: 192.168.1.100)
  • CODIGO_ACCESO: Código de 8 dígitos de acceso LAN
  • SERIE_IMPRESORA: Número de serie de 15 caracteres

🛠️ Métodos Disponibles

Conexión

  • connect() - Conectar a la impresora
  • disconnect() - Desconectar de la impresora

Control Manual

  • home_all() - HOME todos los ejes
  • home_x(), home_y(), home_z() - HOME ejes individuales
  • move_x(pos), move_y(pos), move_z(pos) - Movimientos absolutos
  • move_xyz(x, y, z) - Movimiento coordinado
  • move_relative(x, y) - Movimiento relativo

Temperaturas

  • set_nozzle_temperature(temp) - Establecer temperatura nozzle
  • set_bed_temperature(temp) - Establecer temperatura cama
  • get_nozzle_temperature() - Obtener temperatura actual nozzle
  • get_bed_temperature() - Obtener temperatura actual cama

Extrusión

  • extrude(length) - Extruir filamento
  • retract(length) - Retraer filamento
  • set_extrusion_rate(rate) - Velocidad de extrusión (%)

Control de Ventiladores/LED

  • set_part_fan(speed) - Ventilador de capa (0-100%)
  • set_aux_fan(speed) - Ventilador auxiliar (0-100%)
  • set_camera_led(on) - LED de cámara (True/False)

Sistema AMS

  • configure_ams(filaments) - Configurar slots AMS
  • get_current_filament() - Información filamento actual

Transferencia y Control

  • upload_file(filepath) - Subir archivo por FTP
  • auto_print(archivo, filamentos) - Proceso completo automatizado

Estados y Monitoreo

  • get_print_status() - Estado de impresión actual
  • get_print_progress() - Progreso de impresión (%)
  • get_bed_status() - Estado de la cama
  • get_machine_status() - Estado general de la máquina

🐛 Solución de Problemas

Error de Conexión

  • Verificar que la impresora está encendida y conectada a la red
  • Comprobar la IP de la impresora
  • Verificar que el acceso LAN está habilitado

Error de Autenticación

  • Verificar el código de acceso de 8 dígitos
  • Verificar el número de serie de 15 caracteres
  • Regenerar código de acceso si es necesario

Error de Subida FTP

  • Verificar que el archivo existe
  • Comprobar formato del archivo (.3mf o .gcode)
  • Verificar espacio disponible en la impresora

🤝 Contribuir

  1. Fork del repositorio
  2. Crear rama para nueva característica
  3. Commit de cambios
  4. Push a la rama
  5. Crear Pull Request

📄 Licencia

Este proyecto está bajo una Licencia Comercial Personalizada:

  • GRATIS para uso personal, educativo e investigación
  • USO COMERCIAL PROHIBIDO sin licencia separada
  • 💰 ROYALTIES requeridos para uso comercial

Para licencias comerciales, contacta:

Ver LICENSE para términos completos.

🆘 Soporte

🏷️ Versiones

v1.3.0 (Actual)

  • ✅ Control manual completo
  • ✅ Sistema AMS automático
  • ✅ Transferencia FTP SSL
  • ✅ Proceso automatizado completo
  • ✅ Monitoreo de estados en tiempo real
  • ✅ Control avanzado de ventiladores y LED

Desarrollado con ❤️ por Angel Luis Barbero Guerras

¡Automatiza tu impresión 3D con BambuLuc! 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bambuluc-1.3.0.tar.gz (860.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bambuluc-1.3.0-py3-none-any.whl (863.2 kB view details)

Uploaded Python 3

File details

Details for the file bambuluc-1.3.0.tar.gz.

File metadata

  • Download URL: bambuluc-1.3.0.tar.gz
  • Upload date:
  • Size: 860.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for bambuluc-1.3.0.tar.gz
Algorithm Hash digest
SHA256 331d63d94ad1da705fd56daa8f57e19ec907ca5958ebd67f71318c01c7831cee
MD5 de10bdafb37317148ba0395038ed031f
BLAKE2b-256 db3511a04d85ca72c8dfe3d1d405181c756ac8467840f520cf93644190aeb6ed

See more details on using hashes here.

File details

Details for the file bambuluc-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: bambuluc-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 863.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for bambuluc-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7badd71028bc7d0e6741fecf2ddbcc53bb48a07a8c0f888d6cb273b42a36fa23
MD5 2c1f219c40f95e8d4819a67108b9f4a1
BLAKE2b-256 a8382c8474cc0f64cf3f50672b6367f36cc8fe65b9a1bec5eb3975572cb9168b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page