746 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			746 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # FilaMan Wiki - English
 | |
| 
 | |
| ## Table of Contents
 | |
| 
 | |
| 1. [Overview](#overview)
 | |
| 2. [Installation](#installation)
 | |
| 3. [Hardware Requirements](#hardware-requirements)
 | |
| 4. [Initial Setup](#initial-setup)
 | |
| 5. [Configuration](#configuration)
 | |
| 6. [Usage](#usage)
 | |
| 7. [NFC Tags](#nfc-tags)
 | |
| 8. [Bambu Lab Integration](#bambu-lab-integration)
 | |
| 9. [Spoolman Integration](#spoolman-integration)
 | |
| 10. [Octoprint Integration](#octoprint-integration)
 | |
| 11. [Manufacturer Tags](#manufacturer-tags)
 | |
| 12. [Troubleshooting](#troubleshooting)
 | |
| 13. [Support](#support)
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Overview
 | |
| 
 | |
| FilaMan is a comprehensive filament management system for 3D printers based on ESP32 hardware. It provides weight measurement, NFC tag management, and seamless integration with Spoolman and Bambu Lab 3D printers.
 | |
| 
 | |
| ### Key Features
 | |
| 
 | |
| - **Precise weight measurement** with HX711 load cell amplifier
 | |
| - **NFC tag reading and writing** for filament identification
 | |
| - **OLED display** for status information
 | |
| - **WiFi connectivity** with easy configuration
 | |
| - **Web-based user interface** with real-time updates
 | |
| - **Spoolman integration** for inventory management
 | |
| - **Bambu Lab AMS control** via MQTT
 | |
| - **OpenSpool NFC format** compatibility
 | |
| - **Manufacturer tag support** for automatic setup
 | |
| 
 | |
| ### System Requirements
 | |
| 
 | |
| - **ESP32 Development Board**
 | |
| - **Spoolman Instance** (required for full functionality)
 | |
| - **WiFi Network**
 | |
| - **Web Browser** (Chrome/Firefox/Safari)
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Installation
 | |
| 
 | |
| ### Easy Installation (Recommended)
 | |
| 
 | |
| 1. **Open the [FilaMan Web Installer](https://www.filaman.app/installer.html)**
 | |
|    - Use a Chrome-based browser
 | |
| 
 | |
| 2. **Prepare ESP32**
 | |
|    - Connect ESP32 via USB to your computer
 | |
|    - Click "Connect"
 | |
| 
 | |
| 3. **Select Port**
 | |
|    - Choose the appropriate USB port
 | |
|    - Confirm selection
 | |
| 
 | |
| 4. **Start Installation**
 | |
|    - Click "Install FilaMan"
 | |
|    - Wait for installation to complete
 | |
| 
 | |
| ### Manual Compilation
 | |
| 
 | |
| For advanced users with PlatformIO:
 | |
| 
 | |
| ```bash
 | |
| git clone https://github.com/ManuelW77/Filaman.git
 | |
| cd FilaMan/esp32
 | |
| pio lib install
 | |
| pio run --target upload
 | |
| ```
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Hardware Requirements
 | |
| 
 | |
| ### Required Components
 | |
| 
 | |
| | Component | Description | Amazon Link (Affiliate) |
 | |
| |-----------|-------------|-------------------------|
 | |
| | ESP32 Development Board | Any ESP32 variant | [Amazon](https://amzn.to/3FHea6D) |
 | |
| | HX711 + Load Cell | 5kg Load Cell Amplifier | [Amazon](https://amzn.to/4ja1KTe) |
 | |
| | OLED Display | 0.96" I2C 128x64 SSD1306 | [Amazon](https://amzn.to/445aaa9) |
 | |
| | PN532 NFC Module | V3 RFID Module | [Amazon](https://amzn.eu/d/gy9vaBX) |
 | |
| | NFC Tags | NTAG213/NTAG215 | [Amazon](https://amzn.to/3E071xO) |
 | |
| | TTP223 Touch Sensor | Optional for tare function | [Amazon](https://amzn.to/4hTChMK) |
 | |
| 
 | |
| ### Pin Configuration
 | |
| 
 | |
| | Component | ESP32 Pin | Function |
 | |
| |-----------|-----------|----------|
 | |
| | HX711 DOUT | 16 | Load cell data output |
 | |
| | HX711 SCK | 17 | Load cell clock |
 | |
| | OLED SDA | 21 | I2C data |
 | |
| | OLED SCL | 22 | I2C clock |
 | |
| | PN532 IRQ | 32 | Interrupt |
 | |
| | PN532 RESET | 33 | Reset |
 | |
| | PN532 SDA | 21 | I2C data (shared) |
 | |
| | PN532 SCL | 22 | I2C clock (shared) |
 | |
| | TTP223 I/O | 25 | Touch sensor (optional) |
 | |
| 
 | |
| ### Important Notes
 | |
| 
 | |
| - **PN532 DIP switches** must be set to I2C mode
 | |
| - **3V pin** from ESP32 for touch sensor
 | |
| - **Load cell wiring**: E+ (red), E- (black), A- (white), A+ (green)
 | |
| 
 | |
| 
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Initial Setup
 | |
| 
 | |
| ### After Installation
 | |
| 
 | |
| 1. **ESP32 Restart**
 | |
|    - System automatically creates a WiFi hotspot "FilaMan"
 | |
| 
 | |
| 2. **WiFi Configuration**
 | |
|    - Connect to the "FilaMan" network
 | |
|    - Open browser (automatic portal or <http://192.168.4.1>)
 | |
|    - Configure your WiFi credentials
 | |
| 
 | |
| 3. **First Access**
 | |
|    - After successful WiFi connection, access system at <http://filaman.local>
 | |
|    - Alternative: Use IP address assigned by router
 | |
| 
 | |
| ### Spoolman Preparation
 | |
| 
 | |
| **Important Note**: Spoolman must run in debug mode:
 | |
| 
 | |
| ```env
 | |
| # Uncomment in Spoolman's .env file:
 | |
| SPOOLMAN_DEBUG_MODE=TRUE
 | |
| ```
 | |
| 
 | |
| This is required as Spoolman doesn't support CORS domain configuration yet.
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Configuration
 | |
| 
 | |
| ### Scale Calibration
 | |
| 
 | |
| 1. **Start Calibration**
 | |
|    - Go to "Scale" page
 | |
|    - Prepare a 500g reference weight (e.g., water glass)
 | |
| 
 | |
| 2. **Calibration Steps**
 | |
|    - Follow instructions on display
 | |
|    - Place weight when prompted
 | |
|    - Wait for calibration to complete
 | |
| 
 | |
| 3. **Validation**
 | |
|    - Test accuracy with known weights
 | |
|    - Use "Tare Scale" for zero adjustment if needed
 | |
| 
 | |
| ### Spoolman Connection
 | |
| 
 | |
| 1. **Enter Spoolman URL**
 | |
|    - Go to "Spoolman/Bambu" page
 | |
|    - Enter complete URL of your Spoolman instance
 | |
|    - Format: `http://spoolman-server:7912`
 | |
| 
 | |
| 2. **Test Connection**
 | |
|    - System automatically checks connection
 | |
|    - Successful connection shown by green status
 | |
| 
 | |
| ### Bambu Lab Printer (Optional)
 | |
| 
 | |
| 1. **Printer Settings**
 | |
|    - Open settings menu on your Bambu printer
 | |
|    - Note the following data:
 | |
|      - Printer IP address
 | |
|      - Access Code
 | |
|      - Serial Number
 | |
| 
 | |
| 2. **FilaMan Configuration**
 | |
|    - Enter printer data on "Spoolman/Bambu" page
 | |
|    - Enable "Auto Send to Bambu" for automatic AMS assignment
 | |
| 
 | |
| 3. **Auto-Send Timeout**
 | |
|    - Configure waiting time for automatic spool detection
 | |
|    - Recommended value: 10-30 seconds
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| ### Basic Operation
 | |
| 
 | |
| 1. **Weigh Filament**
 | |
|    - Place spool on scale
 | |
|    - Weight automatically displayed on screen and web interface
 | |
| 
 | |
| 2. **Scan NFC Tag**
 | |
|    - Hold tag near PN532 module
 | |
|    - Recognized tags display spool information
 | |
|    - Weight automatically updated in Spoolman
 | |
| 
 | |
| 3. **Status Monitoring**
 | |
|    - **OLED Display** shows current weight and connection status
 | |
|    - **Web Interface** provides detailed information and control
 | |
| 
 | |
| ### Web Interface Navigation
 | |
| 
 | |
| - **Home**: Main functions and current status
 | |
| - **Scale**: Scale calibration and settings
 | |
| - **Spoolman/Bambu**: System configuration
 | |
| - **Statistics**: Usage statistics (if enabled)
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## NFC Tags
 | |
| 
 | |
| ### Supported Tag Types
 | |
| 
 | |
| - **NTAG213**: 144 bytes (basic functions)
 | |
| - **NTAG215**: 504 bytes (recommended)
 | |
| - **NTAG216**: 888 bytes (extended functions)
 | |
| 
 | |
| ### Writing Tags
 | |
| 
 | |
| 1. **Prepare Spool in Spoolman**
 | |
|    - Create new spool in Spoolman
 | |
|    - Ensure all required data is entered
 | |
| 
 | |
| 2. **Start Tag Writing**
 | |
|    - Select spool from list
 | |
|    - Click "Write Tag"
 | |
|    - Display shows "Waiting for Tag"
 | |
| 
 | |
| 3. **Place Tag**
 | |
|    - Position NFC tag on PN532 module
 | |
|    - Wait for confirmation
 | |
| 
 | |
| 4. **Success Message**
 | |
|    - Successful writing shows checkmark
 | |
|    - Tag is now linked to Spoolman spool
 | |
| 
 | |
| ### Reading Tags
 | |
| 
 | |
| 1. **Scan Tag**
 | |
|    - Place the spool with NFC tag on the scale over the NFC reader
 | |
|    - If reading fails: Reposition spool slightly (not completely at the edge)
 | |
|    - Spool information automatically loaded
 | |
| 
 | |
| 2. **Automatic Updates**
 | |
|    - Current weight transferred to Spoolman
 | |
|    - Spool automatically selected in web interface
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Bambu Lab Integration
 | |
| 
 | |
| ### AMS (Automatic Material System)
 | |
| 
 | |
| 1. **Display AMS Status**
 | |
|    - Web interface shows current state of all AMS slots
 | |
|    - Loaded slots display filament information
 | |
| 
 | |
| 2. **Manual Filament Assignment**
 | |
|    - Select spool from Spoolman list
 | |
|    - Click corresponding AMS slot icon
 | |
|    - Filament assigned to slot
 | |
| 
 | |
| 3. **Automatic Assignment**
 | |
|    - After weighing with "Auto Send to Bambu" enabled
 | |
|    - System waits for new spools in AMS
 | |
|    - Calibrated filaments automatically assigned
 | |
| 
 | |
| ### Bambu Studio Integration
 | |
| 
 | |
| 1. **Sync Filament Profiles**
 | |
|    - Calibrate filaments in Bambu Studio
 | |
|    - Use Device → AMS → Pencil icon → Select
 | |
| 
 | |
| 2. **Save Setting IDs**
 | |
|    - FilaMan automatically detects available setting IDs
 | |
|    - Click "Save Settings to Spoolman"
 | |
|    - Profiles used for future prints
 | |
| 
 | |
| ### Restore Connection
 | |
| 
 | |
| - For connection issues, click red dot in menu bar
 | |
| - System automatically establishes new connection
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Spoolman Integration
 | |
| 
 | |
| ### Automatic Functions
 | |
| 
 | |
| 1. **Spool Synchronization**
 | |
|    - Automatic transfer of weight changes
 | |
|    - Real-time updates of spool data
 | |
| 
 | |
| 2. **Extra Fields**
 | |
|    - FilaMan automatically creates required custom fields
 | |
|    - NFC tag UID stored as reference
 | |
| 
 | |
| 3. **Filtering**
 | |
|    - "Show only spools without NFC tag" for easy tag assignment
 | |
|    - Categorization by manufacturers and material types
 | |
| 
 | |
| ### Spoolman Octoprint Plugin
 | |
| 
 | |
| For Octoprint users, automatic spool assignment is available:
 | |
| 
 | |
| 1. **Install Plugin**
 | |
| 
 | |
|    ```text
 | |
|    https://github.com/ManuelW77/OctoPrint-Spoolman-Filaman/archive/refs/heads/master.zip
 | |
|    ```
 | |
| 
 | |
| 2. **Configure FilaMan**
 | |
|    - Enable "Send to Octo-Plugin"
 | |
|    - Enter Octoprint URL and API key
 | |
| 
 | |
| 3. **Automatic Assignment**
 | |
|    - After weighing, spool automatically activated in Octoprint
 | |
|    - Currently supports only Tool0 (first nozzle)
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Manufacturer Tags
 | |
| 
 | |
| ### Overview
 | |
| 
 | |
| Manufacturer tags allow filament producers to provide pre-configured NFC tags that automatically create all necessary entries in Spoolman.
 | |
| 
 | |
| ### Getting Started with Manufacturer Tags
 | |
| 
 | |
| 1. **Scan Tag**
 | |
|    - Place spool with manufacturer tag on the scale over the NFC reader
 | |
|    - If reading fails: Reposition spool slightly (not completely at the edge)
 | |
|    - System automatically recognizes manufacturer format
 | |
| 
 | |
| 2. **Automatic Creation**
 | |
|    - **Brand** created in Spoolman (if not present)
 | |
|    - **Filament type** created with all specifications
 | |
|    - **Spool** automatically registered
 | |
| 
 | |
| 3. **Future Scans**
 | |
|    - After initial setup, tags use fast-path system
 | |
|    - Immediate weight measurement without re-setup
 | |
| 
 | |
| ### Supported Manufacturers
 | |
| 
 | |
| - **RecyclingFabrik**: First official partner
 | |
| - More manufacturers coming soon
 | |
| 
 | |
| ### Benefits
 | |
| 
 | |
| - ✅ **Zero manual setup**
 | |
| - ✅ **Perfect data accuracy**
 | |
| - ✅ **Instant integration**
 | |
| - ✅ **Future-proof**
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Troubleshooting
 | |
| 
 | |
| ### Common Issues
 | |
| 
 | |
| #### WiFi Connection
 | |
| 
 | |
| **Issue**: Cannot connect to FilaMan hotspot
 | |
| 
 | |
| - Solution: Ensure ESP32 is started
 | |
| - Alternative: Manually navigate to <http://192.168.4.1>
 | |
| 
 | |
| **Issue**: Web interface not accessible
 | |
| 
 | |
| - Solution: Check IP address in router
 | |
| - Alternative: Use <http://filaman.local>
 | |
| 
 | |
| #### Scale
 | |
| 
 | |
| **Issue**: Inaccurate weight measurements
 | |
| 
 | |
| - Solution: Repeat calibration
 | |
| - Tip: Use "Tare Scale" for zero adjustment
 | |
| 
 | |
| **Issue**: Load cell not responding
 | |
| 
 | |
| - Solution: Check wiring (E+, E-, A+, A-)
 | |
| - Tip: Test with multimeter
 | |
| 
 | |
| #### NFC Tags
 | |
| 
 | |
| **Issue**: Tag not recognized
 | |
| 
 | |
| - Solution: Check PN532 DIP switches (I2C mode)
 | |
| - Tip: Reposition spool slightly on scale (not completely at the edge)
 | |
| 
 | |
| **Issue**: Cannot write tag
 | |
| 
 | |
| - Solution: Use NTAG215 for better compatibility
 | |
| - Tip: Ensure tag is not write-protected
 | |
| 
 | |
| #### Spoolman
 | |
| 
 | |
| **Issue**: Connection to Spoolman fails
 | |
| 
 | |
| - Solution: Enable SPOOLMAN_DEBUG_MODE=TRUE
 | |
| - Tip: Check URL formatting
 | |
| 
 | |
| **Issue**: Spools not displayed
 | |
| 
 | |
| - Solution: Ensure Spoolman is running
 | |
| - Tip: Check network firewall settings
 | |
| 
 | |
| #### Bambu Lab
 | |
| 
 | |
| **Issue**: Printer won't connect
 | |
| 
 | |
| - Solution: Check access code and IP address
 | |
| - Tip: Ensure printer is in LAN mode
 | |
| 
 | |
| **Issue**: AMS status not displayed
 | |
| 
 | |
| - Solution: Check MQTT connection
 | |
| - Note: Bambu may close API at any time
 | |
| 
 | |
| ### Debug Information
 | |
| 
 | |
| If you have problems, you can use these steps for diagnosis:
 | |
| 
 | |
| #### Serial Monitor (for developers)
 | |
| 
 | |
| - Connect the ESP32 via USB to your computer
 | |
| - Open a serial monitor (e.g., Arduino IDE) with 115200 baud
 | |
| - You will see detailed log messages from the system
 | |
| 
 | |
| #### Browser Console
 | |
| 
 | |
| - Open the FilaMan web interface
 | |
| - Press F12 to open developer tools
 | |
| - Check the console for error messages
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Maintenance and Updates
 | |
| 
 | |
| ### Firmware Update
 | |
| 
 | |
| 1. **Via Web Interface**: Access `http://filaman.local/upgrade.html`
 | |
| 2. **Select firmware file** (.bin format)
 | |
| 3. **Upload** - System restarts automatically
 | |
| 4. **Configuration preserved** - Settings remain intact
 | |
| 
 | |
| ### System Reset
 | |
| 
 | |
| For persistent issues:
 | |
| 
 | |
| 1. Disconnect ESP32 from power
 | |
| 2. Wait 10 seconds
 | |
| 3. Reconnect
 | |
| 4. Wait 30 seconds for complete startup
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Support and Information
 | |
| 
 | |
| **Manufacturer**: Your Company Name
 | |
| **Maintainer**: Manuel W.
 | |
| 
 | |
| ### Scale Technology
 | |
| 
 | |
| #### Weight Stabilization
 | |
| 
 | |
| The system uses multiple filters for precise measurements:
 | |
| 
 | |
| ```cpp
 | |
| // Moving Average Filter with 8 values
 | |
| #define MOVING_AVERAGE_SIZE 8
 | |
| // Low-Pass Filter for smoothing
 | |
| #define LOW_PASS_ALPHA 0.3f
 | |
| // Thresholds for updates
 | |
| #define DISPLAY_THRESHOLD 0.3f    // Display update
 | |
| #define API_THRESHOLD 1.5f        // API actions
 | |
| ```
 | |
| 
 | |
| #### Calibration Algorithm
 | |
| 
 | |
| 1. **System Pause**: All tasks are temporarily paused
 | |
| 2. **Zero Setting**: Tare scale without weight
 | |
| 3. **Reference Measurement**: 500g weight for 10 measurements
 | |
| 4. **Calculation**: `newValue = rawValue / SCALE_LEVEL_WEIGHT`
 | |
| 5. **NVS Storage**: Permanent value with verification
 | |
| 6. **Filter Reset**: New baseline for stabilization
 | |
| 
 | |
| #### Auto-Tare Logic
 | |
| 
 | |
| ```cpp
 | |
| // Conditions for Auto-Tare
 | |
| if (autoTare && (weight > 2 && weight < 7) || weight < -2) {
 | |
|     scale_tare_counter++;
 | |
|     if (scale_tare_counter >= 5) {
 | |
|         // Automatic zero setting
 | |
|         scale.tare();
 | |
|         resetWeightFilter();
 | |
|     }
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### NFC Technology
 | |
| 
 | |
| #### PN532 Communication
 | |
| 
 | |
| - **Interface**: I2C at 400kHz
 | |
| - **IRQ Pin**: Interrupt-based tag detection
 | |
| - **Reset Handling**: Automatic recovery from communication errors
 | |
| - **DIP Switches**: Must be set to I2C mode (00)
 | |
| 
 | |
| #### NDEF Implementation
 | |
| 
 | |
| ```json
 | |
| // FilaMan Spoolman Format (with sm_id)
 | |
| {
 | |
|   "sm_id": "123",
 | |
|   "color": "#FF5733",
 | |
|   "type": "PLA", 
 | |
|   "brand": "Example Brand"
 | |
| }
 | |
| ```
 | |
| 
 | |
| #### Manufacturer Tag Schema
 | |
| 
 | |
| Compact JSON format for storage efficiency:
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "b": "RecyclingFabrik",           // brand
 | |
|   "an": "FX1_PLA-S175-1000-RED",  // article number
 | |
|   "t": "PLA",                      // type
 | |
|   "c": "FF0000",                   // color (hex without #)
 | |
|   "cn": "Red",                     // color name
 | |
|   "et": "210",                     // extruder temp
 | |
|   "bt": "60",                      // bed temp
 | |
|   "di": "1.75",                    // diameter
 | |
|   "de": "1.24",                    // density
 | |
|   "sw": "240",                      // spool weight
 | |
|   "u": "https://www.yoururl.com/search?q=" // URL used vor Brand Link and Filament Link
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Display System
 | |
| 
 | |
| #### OLED Architecture (SSD1306)
 | |
| 
 | |
| - **Resolution**: 128x64 pixels monochrome
 | |
| - **Areas**:
 | |
|   - Status bar: 0-16 pixels (version, icons)
 | |
|   - Main area: 17-64 pixels (weight, messages)
 | |
| - **Update Interval**: 1 second for status line
 | |
| 
 | |
| #### Icon System
 | |
| 
 | |
| Bitmap icons for various states:
 | |
| 
 | |
| ```cpp
 | |
| // Status Icons (16x16 pixels)
 | |
| - icon_success: Checkmark for successful operations
 | |
| - icon_failed: X for errors
 | |
| - icon_transfer: Arrow for data transmission
 | |
| - icon_loading: Loading circle for ongoing operations
 | |
| 
 | |
| // Connection Icons with strikethrough indicator
 | |
| - wifi_on/wifi_off: WLAN status
 | |
| - bambu_on: Bambu Lab connection
 | |
| - spoolman_on: Spoolman API status
 | |
| ```
 | |
| 
 | |
| ### API Integration
 | |
| 
 | |
| #### Spoolman REST API
 | |
| 
 | |
| FilaMan interacts with the following endpoints:
 | |
| 
 | |
| ```http
 | |
| GET  /api/v1/spool/          # List spools
 | |
| POST /api/v1/spool/          # Create new spool
 | |
| PUT  /api/v1/spool/{id}/     # Update spool
 | |
| 
 | |
| GET  /api/v1/vendor/         # List vendors
 | |
| POST /api/v1/vendor/         # Create new vendor
 | |
| 
 | |
| GET  /api/v1/filament/       # List filaments
 | |
| POST /api/v1/filament/       # Create new filament
 | |
| ```
 | |
| 
 | |
| #### Request Handling
 | |
| 
 | |
| ```cpp
 | |
| // Sequential API processing
 | |
| enum spoolmanApiStateType {
 | |
|     API_IDLE = 0,
 | |
|     API_PROCESSING = 1,
 | |
|     API_ERROR = 2
 | |
| };
 | |
| ```
 | |
| 
 | |
| Prevents simultaneous API calls and deadlocks.
 | |
| 
 | |
| #### Weight Update Logic
 | |
| 
 | |
| ```cpp
 | |
| // Conditions for Spoolman update
 | |
| if (activeSpoolId != "" && 
 | |
|     weigthCouterToApi > 3 &&    // 3+ stable measurements
 | |
|     weightSend == 0 &&          // Not yet sent
 | |
|     weight > 5 &&               // Minimum weight 5g
 | |
|     spoolmanApiState == API_IDLE) {
 | |
|     updateSpoolWeight(activeSpoolId, weight);
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Bambu Lab MQTT
 | |
| 
 | |
| #### Connection Parameters
 | |
| 
 | |
| ```cpp
 | |
| // SSL/TLS Configuration
 | |
| #define BAMBU_PORT 8883
 | |
| #define BAMBU_USERNAME "bblp"
 | |
| 
 | |
| // Topic Structure
 | |
| String topic = "device/" + bambu_serial + "/report";
 | |
| String request_topic = "device/" + bambu_serial + "/request";
 | |
| ```
 | |
| 
 | |
| #### AMS Data Structure
 | |
| 
 | |
| ```cpp
 | |
| struct AMSData {
 | |
|     String tray_id;
 | |
|     String tray_type;
 | |
|     String tray_color;
 | |
|     String tray_material;
 | |
|     String setting_id;
 | |
|     String tray_info_idx;
 | |
|     bool has_spool;
 | |
| };
 | |
| ```
 | |
| 
 | |
| #### Auto-Send Mechanism
 | |
| 
 | |
| ```cpp
 | |
| // After tag recognition
 | |
| if (bambuCredentials.autosend_enable) {
 | |
|     autoSetToBambuSpoolId = activeSpoolId.toInt();
 | |
|     // Countdown starts automatically
 | |
|     // Waits for new spool in AMS
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### WebSocket Communication
 | |
| 
 | |
| #### Message Types
 | |
| 
 | |
| ```javascript
 | |
| // Client → Server
 | |
| {
 | |
|   "type": "writeNfcTag",
 | |
|   "tagType": "spool",
 | |
|   "payload": { /* JSON data */ }
 | |
| }
 | |
| 
 | |
| {
 | |
|   "type": "scale",
 | |
|   "payload": "tare|calibrate|setAutoTare",
 | |
|   "enabled": true
 | |
| }
 | |
| 
 | |
| // Server → Client
 | |
| {
 | |
|   "type": "heartbeat",
 | |
|   "freeHeap": 245,
 | |
|   "bambu_connected": true,
 | |
|   "spoolman_connected": true
 | |
| }
 | |
| 
 | |
| {
 | |
|   "type": "amsData",
 | |
|   "data": [ /* AMS array */ ]
 | |
| }
 | |
| ```
 | |
| 
 | |
| #### Connection Management
 | |
| 
 | |
| - **Auto-Reconnect**: Client-side reconnection
 | |
| - **Heartbeat**: Every 30 seconds for connection monitoring
 | |
| - **Cleanup**: Automatic removal of dead connections
 | |
| 
 | |
| ### Watchdog and Error Handling
 | |
| 
 | |
| #### System Watchdog
 | |
| 
 | |
| ```cpp
 | |
| // WDT Configuration
 | |
| esp_task_wdt_init(10, true);  // 10s timeout, panic on overflow
 | |
| esp_task_wdt_add(NULL);       // Add current task
 | |
| ```
 | |
| 
 | |
| #### Error Recovery
 | |
| 
 | |
| - **NFC Reset**: Automatic PN532 restart on communication errors
 | |
| - **MQTT Reconnect**: Bambu Lab connection automatically restored
 | |
| - **WiFi Monitoring**: Connection check every 60 seconds
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Support
 | |
| 
 | |
| ### Community
 | |
| 
 | |
| - **Discord Server**: [https://discord.gg/my7Gvaxj2v](https://discord.gg/my7Gvaxj2v)
 | |
| - **GitHub Issues**: [Filaman Repository](https://github.com/ManuelW77/Filaman/issues)
 | |
| - **YouTube Channel**: [German explanation video](https://youtu.be/uNDe2wh9SS8?si=b-jYx4I1w62zaOHU)
 | |
| 
 | |
| ### Documentation
 | |
| 
 | |
| - **Official Website**: [www.filaman.app](https://www.filaman.app)
 | |
| - **GitHub Wiki**: [Detailed documentation](https://github.com/ManuelW77/Filaman/wiki)
 | |
| - **Hardware Reference**: ESP32 pinout diagrams in `/img/`
 | |
| 
 | |
| ### Support Development
 | |
| 
 | |
| If you'd like to support the project:
 | |
| 
 | |
| [](https://www.buymeacoffee.com/manuelw)
 | |
| 
 | |
| ### License
 | |
| 
 | |
| This project is released under the MIT License. See [LICENSE](LICENSE.txt) for details.
 | |
| 
 | |
| ---
 | |
| 
 | |
| **Last Updated**: August 2025  
 | |
| **Version**: 2.0  
 | |
| **Maintainer**: Manuel W. |