A web-based tool to decode Z-Wave SmartStart QR codes and generate printable device labels. Perfect for home automation enthusiasts and Z-Wave device management.
Note: This project was vibe coded with Claude.ai π€
β¨ QR Code Decoding
- Decode Z-Wave SmartStart QR codes instantly
- π· Camera scanning - Point and scan with your device camera
- Extract Device Specific Key (DSK)
- Parse manufacturer ID, product type, and product ID
- Display security classes and supported protocols
π·οΈ Label Generation
- Generate professional device labels
- Embedded QR codes for easy re-scanning
- Multiple export formats: SVG, PNG
- Compact 250px width design perfect for label printers
π Device Lookup
- Automatic device identification from local database
- Fallback to Z-Wave JS database API
- Display manufacturer name, device label, and description
- Search links for unknown devices
π οΈ Developer-Friendly
- Built-in debug tools
- API lookup debugging
- TLV parsing visualization
- Clean, modern interface
https://gthrift.github.io/zwave-label-creator/
Paste your Z-Wave SmartStart QR code text to instantly decode device information:
9001621570034149504483534436062309043170212686520047001006144025600220006342867261443005120803003
The tool generates compact labels with:
- QR code for device provisioning
- Manufacturer and product information
- Product Type and ID
- Full DSK (Device Specific Key)
Simply open index.html in a web browser. No server required for basic functionality!
git clone https://github.com/yourusername/zwave-qr-decoder.git
cd zwave-qr-decoder
open index.html # or double-click the fileFor full device lookup functionality using the PHP API:
# Clone the repository
git clone https://github.com/yourusername/zwave-qr-decoder.git
cd zwave-qr-decoder
# Start a PHP development server
php -S localhost:8000
# Open in browser
open http://localhost:8000Upload all files to your web server:
index.html- Main applicationlookup.php- Device lookup API endpointdevices.json- Local device database
Ensure PHP is enabled on your web server.
-
Obtain QR Code
-
Option A: Camera Scanning π·
- Click the camera icon in the input field
- Grant camera permission when prompted
- Position the QR code in the target box
- Automatic detection and decoding!
-
Option B: Manual Entry
- Scan Z-Wave device QR code with any QR scanner app
- Or locate the printed code text on device packaging
- Paste into the input field
-
-
Decode
- QR code text appears in the input field
- Click "π Decode QR Code" (or automatic after camera scan)
- View decoded device information
-
Generate Label
- Click "π·οΈ Generate Label" button
- Preview the generated label
- Download as SVG or PNG
Note: Camera access requires HTTPS or localhost. Works on all modern browsers with camera support.
- SVG: Vector format, perfect for scaling and editing
- PNG: High-quality raster image (2x resolution)
JPEG: Currently hidden but available in code
The tool includes a local devices.json database for offline device lookup.
The repository comes with a pre-populated device database. For most users, this is sufficient.
To get the latest devices from Z-Wave JS:
Quick method:
- See DEVICE_EXTRACTION_QUICKSTART.md for 5-minute setup
Detailed method:
- See DEVICE_EXTRACTION.md for comprehensive guide
Using the extraction script:
# Clone Z-Wave JS repository
git clone https://github.com/zwave-js/node-zwave-js.git
cd node-zwave-js
# Run the extraction script
python3 extract_devices.py
# Copy to your tool
cp zwave_devices_db.json /path/to/zwave-qr-decoder/devices.jsonTo add devices manually, edit devices.json:
{
"manufacturerId": "0x0086",
"manufacturer": "AEON Labs",
"devices": [
{
"productType": "0x0003",
"productId": "0x0084",
"label": "ZW096",
"description": "Smart Switch 6"
}
]
}- Z-Wave JS Device Database - Primary source
- OpenSmartHouse Database - Alternative source
extract_devices.py- Automated extraction from Z-Wave JS repository
zwave-qr-decoder/
βββ index.html # Main application (single-file app)
βββ lookup.php # PHP API for device lookups
βββ devices.json # Local device database
βββ README.md # This file
βββ LICENSE # MIT License
βββ .gitignore # Git ignore rules
Z-Wave SmartStart QR codes follow the format:
- Lead-in:
90(SmartStart identifier) - Version: 2 digits
- Checksum: 5 digits
- Requested Keys: 3 digits (security classes)
- DSK: 40 digits (Device Specific Key)
- TLVs: Variable length (Type-Length-Value pairs)
- Type 2: Manufacturer/Product information
- Type 8: Supported protocols (Z-Wave, Z-Wave LR)
- Dimensions: 250px Γ 140px
- QR Code: 100px Γ 100px
- Text: Variable size (10-14pt)
- Format: SVG with embedded QR code
- β Chrome/Edge (Recommended)
- β Firefox
- β Safari
- β Mobile browsers
GET /lookup.php?manufacturerId=0x0086&productType=0x0003&productId=0x0084
GET https://devices.zwave-js.io/api/devices?manufacturerId=0x0086&productType=0x0003&productId=0x0084
Built with vanilla JavaScript - no frameworks required!
Dependencies:
- QRCode.js - QR code generation
Enable debug information to see:
- TLV parsing details
- API request/response logs
- Device lookup process
Contributions are welcome! Please feel free to submit a Pull Request.
- Add more devices to
devices.json - Improve label designs
- Add support for additional TLV types
- Multi-language support
- Batch QR code processing
- JPEG export is currently disabled (available in code)
- Some older browsers may have issues with SVG export
- Initial release
- QR code decoding
- Label generation (SVG/PNG)
- Device database lookup
- Debug tools
- Fixed PNG export QR code rendering bug
Vibe coded with Claude.ai π
This project was created using Claude, an AI assistant by Anthropic, demonstrating the power of AI-assisted development for creating practical tools.
MIT License - see LICENSE file for details
If you find this tool useful, please:
- β Star this repository
- π Report issues
- π§ Submit pull requests
- π’ Share with other Z-Wave enthusiasts
Made with β€οΈ and Claude.ai for the Z-Wave community