A modern web-based Bluetooth controller for Home Depot's 6.5 ft Ultra Skelly animatronic skeleton and 7 ft Lethal Lily animatronic witch. Control lights, sounds, animations, and file management directly from your browser using Web Bluetooth API.
A live version of this project is hosted here https://martinecker.github.io/SkellyUltraWebController/
There is a companion project that provides a Home Assistant integration here https://github.com/martinecker/SkellyUltra
This project also has a REST Server that can act as a BLE proxy, see REST Proxy Connection.
- Upload Audio Files: Send MP3 and other audio files directly to your animatronic via Bluetooth
- Automatic Conversion: Built-in audio conversion to optimize files for the device (8kHz, mono, 32kbps MP3)
- File List Management: View, play, pause, and delete files stored on the device
- Storage Monitoring: Check available storage capacity in real-time
- Edit File Metadata: Modify file properties including lights, animations, and eye icons
- Dual Zone Control: Separate control for head and torso lights
- RGB Color Picker: Choose any color for head and torso lights independently
- Brightness Control: Adjust brightness from 0-255 for each zone
- Effect Modes:
- Static: Solid color
- Strobe: Flashing effect with adjustable speed
- Pulsing: Breathing effect with adjustable speed
- Color Cycling: Enable rainbow color cycling mode
- Effect Speed: Fine-tune strobe and pulsing speeds (0-255)
- Eye Icons: Choose from multiple eye designs to display on the Ultra Skelly (not available for Lethal Lily)
- Movement Control: Enable/disable movement animations for:
- Ultra Skelly:
- Head movements
- Arm movements
- Torso movements
- Lethal Lily:
- Head movements
- Wrist movements
- Elbow movements
- Eye movements
- All movements (combined control)
- Ultra Skelly:
- Classic Bluetooth Audio: Enable live mode to stream audio from your phone via Bluetooth
- Real-time Adjustments: Change lights, colors, effects, and animations on-the-fly
- Volume Control: Adjust playback volume (0-255)
- Quick Eye Selection: Fast access to eye icon switching during live mode
- Device Status: Monitor connection state and device parameters
- Web Bluetooth Connection: No drivers or apps required—connect directly from Chrome, Edge, or compatible browsers
- Device Information: View firmware version, Bluetooth name, and device parameters
- Query Commands: Access advanced device queries for troubleshooting
- Connection Status: Visual indicators for connection state and signal strength
- Raw Command Mode: Send custom protocol commands for advanced users
- Detailed Logging: View all Bluetooth communication (TX/RX) in real-time
- Progress Tracking: Monitor file transfer progress with visual indicators
- File Edit Dialog: Comprehensive file editing interface
This controller supports two connection modes:
Requires a browser with Web Bluetooth API support:
- ✅ Chrome/Chromium (desktop and Android mobile)
- ✅ Microsoft Edge
- ✅ Opera
- ✅ Bluefy (iPhone mobile, see https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055)
- ❌ Firefox (Web Bluetooth not supported)
- ❌ Safari (Web Bluetooth not supported)
Use the Skelly Ultra REST Server as a BLE proxy to:
- Use Any Browser: Works with Firefox, Safari, or any browser without Web Bluetooth support
- Improve Range: Run the server on a machine close to the animatronic for better Bluetooth connectivity, while controlling from any device on your network
- Remote Control: Access your animatronic from anywhere on your local network or over the internet
- Open the Controller: Load
index.htmlin a compatible browser - Accept the Warning: Read and accept the risk acknowledgment
- Connect Your Device: Click "Connect", select "Direct BLE", and choose your animatronic from the Bluetooth device list
- Start Controlling: Upload files, adjust lights, and control your animatronic!
- Start the REST Server: Install and run the Skelly Ultra REST Server on a machine with Bluetooth
- Open the Controller: Load
index.htmlin any browser - Accept the Warning: Read and accept the risk acknowledgment
- Connect via Proxy: Click "Connect", select "REST Server Proxy", enter the server URL (e.g.,
http://localhost:8765orhttp://192.168.1.100:8765), and select your device - Start Controlling: Upload files, adjust lights, and control your animatronic!
- Keep Browser Tab Active: File transfers require the browser tab to remain in focus
- Stable Power: Ensure your animatronic remains powered on during file transfers
- Transfer Speed: Large files may take several minutes to upload and process
- Modular JavaScript: ES6 modules for clean code organization
- State Management: Centralized state management for device status and UI updates
- Protocol Parser: Custom protocol implementation for BLE animatronic communication
- Audio Processing: Client-side MP3 encoding using LameJS library
ble-manager.js: Handles all Bluetooth Low Energy communicationconnection-manager.js: Abstracts away direct BLE or REST server BLE proxy connectionsconstants.js: Commonly used constants for BLE protocol commands and responses and othersedit-modal.js: File editing interface logicfile-manager.js: Manages file transfers and audio conversionprotocol-parser.js: Protocol parsing and command buildingrest-proxy.js: Handles communication with the REST server used as BLE proxystate-manager.js: Centralized application statetransfer-modal.js: File transfer and TTS interface logic
This tool communicates directly with your device's Bluetooth interface. While tested, there is no guarantee against potential device issues. Always:
- Avoid power interruptions during transfers
- Keep backups of important files
- Proceed at your own risk
Note: This is an unofficial community tool and is not affiliated with or endorsed by the manufacturer of Ultra Skelly/Lethal Lily.
