bambuluc


Namebambuluc JSON
Version 1.3.0 PyPI version JSON
download
home_pageNone
SummaryControl completo para impresoras Bambu Lab
upload_time2025-07-23 05:50:25
maintainerNone
docs_urlNone
authorAngel Luis Barbero Guerras
requires_python>=3.7
licenseNone
keywords bambu 3d printer mqtt ftp automation 3mf gcode
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # BambuLuc v1.3.0 🖨️

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

[![Python Version](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)
[![PyPI Version](https://img.shields.io/pypi/v/bambuluc.svg)](https://pypi.org/project/bambuluc/)
[![License](https://img.shields.io/badge/license-Commercial-red.svg)](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

```bash
pip install bambuluc
```

## 📖 Uso Básico

### Configuración Inicial

```python
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

```python
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

```python
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

```python
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

```python
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

```python
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

```python
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:
- GitHub: [AngelBarbero](https://github.com/AngelBarbero)
- Issues: [bambuluc/issues](https://github.com/AngelBarbero/bambuluc/issues) con etiqueta "Commercial License Request"

Ver `LICENSE` para términos completos.

## 🆘 Soporte

- **GitHub Issues**: [Reportar bugs](https://github.com/AngelBarbero/bambuluc/issues)
- **Documentación**: Este README
- **GitHub**: [AngelBarbero](https://github.com/AngelBarbero)

## 🏷️ 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!* 🚀

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "bambuluc",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "bambu, 3d printer, mqtt, ftp, automation, 3mf, gcode",
    "author": "Angel Luis Barbero Guerras",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/db/35/11a04d85ca72c8dfe3d1d405181c756ac8467840f520cf93644190aeb6ed/bambuluc-1.3.0.tar.gz",
    "platform": null,
    "description": "# BambuLuc v1.3.0 \ud83d\udda8\ufe0f\r\n\r\n**Control completo para impresoras Bambu Lab via conexi\u00f3n de red**\r\n\r\n[![Python Version](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)\r\n[![PyPI Version](https://img.shields.io/pypi/v/bambuluc.svg)](https://pypi.org/project/bambuluc/)\r\n[![License](https://img.shields.io/badge/license-Commercial-red.svg)](LICENSE)\r\n\r\n## \ud83c\udf1f Caracter\u00edsticas\r\n\r\nBambuLuc es una librer\u00eda Python completa para controlar impresoras Bambu Lab de forma program\u00e1tica. Incluye todas las funciones necesarias para automatizar completamente el proceso de impresi\u00f3n 3D.\r\n\r\n### \u2705 **Control Manual Completo**\r\n- \ud83c\udfe0 HOME de ejes (individual o todos)\r\n- \ud83c\udf21\ufe0f Control de temperaturas (nozzle y cama)\r\n- \ud83c\udfaf Movimientos precisos de ejes X/Y/Z\r\n- \ud83d\udca7 Control de extrusi\u00f3n y retracci\u00f3n\r\n- \ud83d\udca1 Control de LED de c\u00e1mara\r\n- \ud83c\udf2a\ufe0f Control de ventiladores\r\n\r\n### \u2705 **Sistema AMS (Automatic Material System)**\r\n- \ud83d\udd27 Configuraci\u00f3n autom\u00e1tica de slots\r\n- \ud83d\udccb Detecci\u00f3n de filamentos requeridos\r\n- \ud83d\udd04 Cambio autom\u00e1tico de materiales\r\n- \ud83c\udfa8 Gesti\u00f3n de filamentos multicolor\r\n\r\n### \u2705 **Transferencia de Archivos**\r\n- \ud83d\udcc1 Subida de archivos .3mf/.gcode por FTP SSL\r\n- \ud83d\ude80 Proceso de subida optimizado y seguro\r\n- \ud83d\udce4 Gesti\u00f3n autom\u00e1tica de conexiones\r\n\r\n### \u2705 **Automatizaci\u00f3n Completa**\r\n- \u26a1 Proceso completo en una funci\u00f3n\r\n- \ud83c\udfaf AMS autom\u00e1tico + subida + impresi\u00f3n\r\n- \ud83d\udcdd Env\u00edo de comandos personalizados\r\n\r\n### \u2705 **Monitoreo de Estados**\r\n- \ud83d\udcca Consulta de estado de impresi\u00f3n en tiempo real\r\n- \ud83c\udf21\ufe0f Monitoreo de temperaturas\r\n- \ud83d\udcc8 Progreso de impresi\u00f3n\r\n- \ud83d\udd0d Estados detallados de la m\u00e1quina\r\n\r\n## \ud83d\ude80 Instalaci\u00f3n\r\n\r\n```bash\r\npip install bambuluc\r\n```\r\n\r\n## \ud83d\udcd6 Uso B\u00e1sico\r\n\r\n### Configuraci\u00f3n Inicial\r\n\r\n```python\r\nfrom bambuluc import BambuLuc\r\n\r\n# Configuraci\u00f3n de conexi\u00f3n\r\nprinter = BambuLuc(\r\n    ip=\"IP_IMPRESORA\",          # ej: 192.168.1.100\r\n    access_code=\"CODIGO_ACCESO\", # C\u00f3digo de acceso de la impresora\r\n    serial=\"SERIE_IMPRESORA\"     # N\u00famero de serie de la impresora\r\n)\r\n```\r\n\r\n> **Nota:** Configura tu impresora con `IP_IMPRESORA`, `CODIGO_ACCESO` y `SERIE_IMPRESORA` con los valores reales de tu impresora Bambu Lab.\r\n\r\n### Control Manual\r\n\r\n```python\r\nimport asyncio\r\n\r\nasync def control_manual():\r\n    printer = BambuLuc(\"IP_IMPRESORA\", \"CODIGO_ACCESO\", \"SERIE_IMPRESORA\")\r\n    \r\n    try:\r\n        # Conectar\r\n        await printer.connect()\r\n        \r\n        # Hacer HOME de todos los ejes\r\n        await printer.home_all()\r\n        \r\n        # Calentar nozzle a 210\u00b0C\r\n        await printer.set_nozzle_temperature(210)\r\n        \r\n        # Calentar cama a 60\u00b0C\r\n        await printer.set_bed_temperature(60)\r\n        \r\n        # Mover a posici\u00f3n\r\n        await printer.move_x(100)\r\n        await printer.move_y(100)\r\n        await printer.move_z(50)\r\n        \r\n        # Extruir filamento\r\n        await printer.extrude(10)\r\n        \r\n    finally:\r\n        await printer.disconnect()\r\n\r\n# Ejecutar\r\nasyncio.run(control_manual())\r\n```\r\n\r\n### Configuraci\u00f3n AMS y Subida de Archivo\r\n\r\n```python\r\nasync def configurar_ams_y_subir():\r\n    printer = BambuLuc(\"IP_IMPRESORA\", \"CODIGO_ACCESO\", \"SERIE_IMPRESORA\")\r\n    \r\n    try:\r\n        await printer.connect()\r\n        \r\n        # Configurar AMS (4 slots con diferentes filamentos)\r\n        filamentos_requeridos = [\"PLA\", \"PETG\", \"ABS\", \"TPU\"]\r\n        await printer.configure_ams(filamentos_requeridos)\r\n        \r\n        # Subir archivo 3MF por FTP\r\n        resultado = await printer.upload_file(\"mi_modelo.3mf\")\r\n        if resultado:\r\n            print(\"\u2705 Archivo subido exitosamente\")\r\n        else:\r\n            print(\"\u274c Error al subir archivo\")\r\n            \r\n    finally:\r\n        await printer.disconnect()\r\n\r\nasyncio.run(configurar_ams_y_subir())\r\n```\r\n\r\n### \ud83d\udcca Consulta de Estados\r\n\r\n```python\r\nasync def consultar_estados():\r\n    printer = BambuLuc(\"IP_IMPRESORA\", \"CODIGO_ACCESO\", \"SERIE_IMPRESORA\")\r\n    \r\n    try:\r\n        await printer.connect()\r\n        \r\n        # Estado general de impresi\u00f3n\r\n        estado = await printer.get_print_status()\r\n        print(f\"Estado: {estado}\")\r\n        \r\n        # Progreso de impresi\u00f3n (0-100%)\r\n        progreso = await printer.get_print_progress()\r\n        print(f\"Progreso: {progreso}%\")\r\n        \r\n        # Temperaturas actuales\r\n        temp_nozzle = await printer.get_nozzle_temperature()\r\n        temp_bed = await printer.get_bed_temperature()\r\n        print(f\"Nozzle: {temp_nozzle}\u00b0C, Cama: {temp_bed}\u00b0C\")\r\n        \r\n        # Estado de la cama (nivelaci\u00f3n, etc.)\r\n        estado_cama = await printer.get_bed_status()\r\n        print(f\"Estado cama: {estado_cama}\")\r\n        \r\n        # Informaci\u00f3n del filamento actual\r\n        filamento_info = await printer.get_current_filament()\r\n        print(f\"Filamento: {filamento_info}\")\r\n        \r\n    finally:\r\n        await printer.disconnect()\r\n\r\nasyncio.run(consultar_estados())\r\n```\r\n\r\n### Proceso Completo Automatizado\r\n\r\n```python\r\nasync def proceso_completo():\r\n    printer = BambuLuc(\"IP_IMPRESORA\", \"CODIGO_ACCESO\", \"SERIE_IMPRESORA\")\r\n    \r\n    try:\r\n        await printer.connect()\r\n        \r\n        # AMS + Subida + Impresi\u00f3n en un solo paso\r\n        resultado = await printer.auto_print(\r\n            archivo=\"modelo.3mf\",\r\n            filamentos_requeridos=[\"PLA\", \"PETG\"]\r\n        )\r\n        \r\n        if resultado:\r\n            print(\"\ud83c\udf89 \u00a1Proceso completo exitoso!\")\r\n            \r\n            # Monitorear progreso\r\n            while True:\r\n                estado = await printer.get_print_status()\r\n                progreso = await printer.get_print_progress()\r\n                \r\n                print(f\"Estado: {estado} - Progreso: {progreso}%\")\r\n                \r\n                if estado in [\"FINISH\", \"FAILED\"]:\r\n                    break\r\n                    \r\n                await asyncio.sleep(30)  # Revisar cada 30 segundos\r\n        else:\r\n            print(\"\u274c Error en el proceso\")\r\n            \r\n    finally:\r\n        await printer.disconnect()\r\n\r\n# Ejecutar proceso completo\r\nif __name__ == \"__main__\":\r\n    result = asyncio.run(proceso_completo())\r\n```\r\n\r\n## \ud83d\udd27 Control Avanzado\r\n\r\n### Movimientos Precisos\r\n\r\n```python\r\nasync def movimientos_avanzados():\r\n    printer = BambuLuc(\"IP_IMPRESORA\", \"CODIGO_ACCESO\", \"SERIE_IMPRESORA\")\r\n    \r\n    try:\r\n        await printer.connect()\r\n        \r\n        # Movimiento coordinado XYZ\r\n        await printer.move_xyz(x=150, y=150, z=100)\r\n        \r\n        # Movimiento relativo\r\n        await printer.move_relative(x=10, y=-5)\r\n        \r\n        # Control de velocidad de extrusi\u00f3n\r\n        await printer.set_extrusion_rate(110)  # 110% velocidad\r\n        \r\n        # Retraer filamento\r\n        await printer.retract(2)  # Retraer 2mm\r\n        \r\n    finally:\r\n        await printer.disconnect()\r\n\r\nasyncio.run(movimientos_avanzados())\r\n```\r\n\r\n### Control de Ventiladores y LED\r\n\r\n```python\r\nasync def control_ventiladores():\r\n    printer = BambuLuc(\"IP_IMPRESORA\", \"CODIGO_ACCESO\", \"SERIE_IMPRESORA\")\r\n    \r\n    try:\r\n        await printer.connect()\r\n        \r\n        # Encender ventilador de capa al 80%\r\n        await printer.set_part_fan(80)\r\n        \r\n        # Ventilador auxiliar al 50%\r\n        await printer.set_aux_fan(50)\r\n        \r\n        # Encender LED de c\u00e1mara\r\n        await printer.set_camera_led(True)\r\n        \r\n        # Apagar LED despu\u00e9s de 10 segundos\r\n        await asyncio.sleep(10)\r\n        await printer.set_camera_led(False)\r\n        \r\n    finally:\r\n        await printer.disconnect()\r\n\r\nasyncio.run(control_ventiladores())\r\n```\r\n\r\n## \ud83d\udccb Requisitos\r\n\r\n- Python 3.7+\r\n- Impresora Bambu Lab compatible (A1 mini, A1, X1C, P1P, P1S, etc.)\r\n- Conexi\u00f3n de red con la impresora\r\n- C\u00f3digo de acceso de la impresora habilitado\r\n\r\n## \u26a0\ufe0f Configuraci\u00f3n Requerida\r\n\r\nAntes de usar BambuLuc, configura tu impresora:\r\n\r\n1. **Habilitar acceso LAN**: \r\n   - Men\u00fa impresora \u2192 Configuraci\u00f3n \u2192 LAN \u2192 Habilitar\r\n   \r\n2. **Obtener c\u00f3digo de acceso**:\r\n   - Men\u00fa impresora \u2192 Configuraci\u00f3n \u2192 LAN \u2192 C\u00f3digo de acceso\r\n   \r\n3. **Obtener n\u00famero de serie**:\r\n   - Men\u00fa impresora \u2192 Configuraci\u00f3n \u2192 General \u2192 Informaci\u00f3n del dispositivo\r\n\r\n### Par\u00e1metros de Configuraci\u00f3n\r\n\r\n- `IP_IMPRESORA`: Direcci\u00f3n IP de tu impresora (ej: 192.168.1.100)\r\n- `CODIGO_ACCESO`: C\u00f3digo de 8 d\u00edgitos de acceso LAN \r\n- `SERIE_IMPRESORA`: N\u00famero de serie de 15 caracteres\r\n\r\n## \ud83d\udee0\ufe0f M\u00e9todos Disponibles\r\n\r\n### Conexi\u00f3n\r\n- `connect()` - Conectar a la impresora\r\n- `disconnect()` - Desconectar de la impresora\r\n\r\n### Control Manual\r\n- `home_all()` - HOME todos los ejes\r\n- `home_x()`, `home_y()`, `home_z()` - HOME ejes individuales\r\n- `move_x(pos)`, `move_y(pos)`, `move_z(pos)` - Movimientos absolutos\r\n- `move_xyz(x, y, z)` - Movimiento coordinado\r\n- `move_relative(x, y)` - Movimiento relativo\r\n\r\n### Temperaturas\r\n- `set_nozzle_temperature(temp)` - Establecer temperatura nozzle\r\n- `set_bed_temperature(temp)` - Establecer temperatura cama\r\n- `get_nozzle_temperature()` - Obtener temperatura actual nozzle\r\n- `get_bed_temperature()` - Obtener temperatura actual cama\r\n\r\n### Extrusi\u00f3n\r\n- `extrude(length)` - Extruir filamento\r\n- `retract(length)` - Retraer filamento\r\n- `set_extrusion_rate(rate)` - Velocidad de extrusi\u00f3n (%)\r\n\r\n### Control de Ventiladores/LED\r\n- `set_part_fan(speed)` - Ventilador de capa (0-100%)\r\n- `set_aux_fan(speed)` - Ventilador auxiliar (0-100%)\r\n- `set_camera_led(on)` - LED de c\u00e1mara (True/False)\r\n\r\n### Sistema AMS\r\n- `configure_ams(filaments)` - Configurar slots AMS\r\n- `get_current_filament()` - Informaci\u00f3n filamento actual\r\n\r\n### Transferencia y Control\r\n- `upload_file(filepath)` - Subir archivo por FTP\r\n- `auto_print(archivo, filamentos)` - Proceso completo automatizado\r\n\r\n### Estados y Monitoreo\r\n- `get_print_status()` - Estado de impresi\u00f3n actual\r\n- `get_print_progress()` - Progreso de impresi\u00f3n (%)\r\n- `get_bed_status()` - Estado de la cama\r\n- `get_machine_status()` - Estado general de la m\u00e1quina\r\n\r\n## \ud83d\udc1b Soluci\u00f3n de Problemas\r\n\r\n### Error de Conexi\u00f3n\r\n- Verificar que la impresora est\u00e1 encendida y conectada a la red\r\n- Comprobar la IP de la impresora\r\n- Verificar que el acceso LAN est\u00e1 habilitado\r\n\r\n### Error de Autenticaci\u00f3n\r\n- Verificar el c\u00f3digo de acceso de 8 d\u00edgitos\r\n- Verificar el n\u00famero de serie de 15 caracteres\r\n- Regenerar c\u00f3digo de acceso si es necesario\r\n\r\n### Error de Subida FTP\r\n- Verificar que el archivo existe\r\n- Comprobar formato del archivo (.3mf o .gcode)\r\n- Verificar espacio disponible en la impresora\r\n\r\n## \ud83e\udd1d Contribuir\r\n\r\n1. Fork del repositorio\r\n2. Crear rama para nueva caracter\u00edstica\r\n3. Commit de cambios\r\n4. Push a la rama\r\n5. Crear Pull Request\r\n\r\n## \ud83d\udcc4 Licencia\r\n\r\nEste proyecto est\u00e1 bajo una **Licencia Comercial Personalizada**:\r\n\r\n- \u2705 **GRATIS** para uso personal, educativo e investigaci\u00f3n\r\n- \u274c **USO COMERCIAL PROHIBIDO** sin licencia separada  \r\n- \ud83d\udcb0 **ROYALTIES** requeridos para uso comercial\r\n\r\nPara **licencias comerciales**, contacta:\r\n- GitHub: [AngelBarbero](https://github.com/AngelBarbero)\r\n- Issues: [bambuluc/issues](https://github.com/AngelBarbero/bambuluc/issues) con etiqueta \"Commercial License Request\"\r\n\r\nVer `LICENSE` para t\u00e9rminos completos.\r\n\r\n## \ud83c\udd98 Soporte\r\n\r\n- **GitHub Issues**: [Reportar bugs](https://github.com/AngelBarbero/bambuluc/issues)\r\n- **Documentaci\u00f3n**: Este README\r\n- **GitHub**: [AngelBarbero](https://github.com/AngelBarbero)\r\n\r\n## \ud83c\udff7\ufe0f Versiones\r\n\r\n### v1.3.0 (Actual)\r\n- \u2705 Control manual completo\r\n- \u2705 Sistema AMS autom\u00e1tico\r\n- \u2705 Transferencia FTP SSL\r\n- \u2705 Proceso automatizado completo\r\n- \u2705 Monitoreo de estados en tiempo real\r\n- \u2705 Control avanzado de ventiladores y LED\r\n\r\n---\r\n\r\n**Desarrollado con \u2764\ufe0f por Angel Luis Barbero Guerras**\r\n\r\n*\u00a1Automatiza tu impresi\u00f3n 3D con BambuLuc!* \ud83d\ude80\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Control completo para impresoras Bambu Lab ",
    "version": "1.3.0",
    "project_urls": {
        "Bug Reports": "https://github.com/AngelBarbero/bambuluc/issues",
        "Documentation": "https://github.com/AngelBarbero/bambuluc/blob/main/README.md",
        "Homepage": "https://github.com/AngelBarbero/bambuluc",
        "Source": "https://github.com/AngelBarbero/bambuluc"
    },
    "split_keywords": [
        "bambu",
        " 3d printer",
        " mqtt",
        " ftp",
        " automation",
        " 3mf",
        " gcode"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a8382c8474cc0f64cf3f50672b6367f36cc8fe65b9a1bec5eb3975572cb9168b",
                "md5": "2c1f219c40f95e8d4819a67108b9f4a1",
                "sha256": "7badd71028bc7d0e6741fecf2ddbcc53bb48a07a8c0f888d6cb273b42a36fa23"
            },
            "downloads": -1,
            "filename": "bambuluc-1.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2c1f219c40f95e8d4819a67108b9f4a1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 863206,
            "upload_time": "2025-07-23T05:50:24",
            "upload_time_iso_8601": "2025-07-23T05:50:24.596367Z",
            "url": "https://files.pythonhosted.org/packages/a8/38/2c8474cc0f64cf3f50672b6367f36cc8fe65b9a1bec5eb3975572cb9168b/bambuluc-1.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "db3511a04d85ca72c8dfe3d1d405181c756ac8467840f520cf93644190aeb6ed",
                "md5": "de10bdafb37317148ba0395038ed031f",
                "sha256": "331d63d94ad1da705fd56daa8f57e19ec907ca5958ebd67f71318c01c7831cee"
            },
            "downloads": -1,
            "filename": "bambuluc-1.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "de10bdafb37317148ba0395038ed031f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 860098,
            "upload_time": "2025-07-23T05:50:25",
            "upload_time_iso_8601": "2025-07-23T05:50:25.811679Z",
            "url": "https://files.pythonhosted.org/packages/db/35/11a04d85ca72c8dfe3d1d405181c756ac8467840f520cf93644190aeb6ed/bambuluc-1.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-23 05:50:25",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "AngelBarbero",
    "github_project": "bambuluc",
    "github_not_found": true,
    "lcname": "bambuluc"
}
        
Elapsed time: 1.35995s