Commit Graph

29 Commits

Author SHA1 Message Date
jessikitty 65512de526 feat: Add complete tag_colors.json with 82 themed tag mappings
All tags from folder_mapping.txt and key_mapping.txt with
franchise-themed colors and effects:
- Marvel heroes: reds, greens, blues
- Star Wars: red pulse (Sith), green (Jedi)
- Ninjago: red/gold cycles
- Dreamzzz: purple cycles/pulses
- Racing (F1, McLaren): red cycles, orange
- Frozen: ice blue pulse
- And 70+ more themed entries

Colors tuned for deeper output on portal LEDs (max ~200).
2026-04-06 21:20:11 +10:00
jessikitty c7dd1a6be4 feat: Add Tag Color Editor GUI tool
tkinter-based GUI for editing tag_colors.json:
- Color picker with RGB sliders, hex input, and 25 preset colors
- Effect selector (solid, flash, pulse, cycle)
- Speed slider control
- Add/remove/duplicate tags
- Save/load JSON files
- Presets tuned for deeper colors on portal LEDs
2026-04-06 21:02:17 +10:00
jessikitty ac190d49c1 fix: Don't kill cycle effect when removing non-cycle tags
Previously stop_cycle_effect() was called on every tag removal,
which froze the cycle when a non-cycle tag was removed. Now the
removal logic has three distinct paths:

1. Cycle tag removed → stop cycle, restore other pads
2. Non-cycle tag removed while cycle still active → do nothing,
   let the cycle thread keep controlling all pads
3. Normal removal (no cycle) → just turn off the pad
2026-04-06 17:00:30 +10:00
jessikitty 2b4ca6423d fix: Restore other pads when cycle effect tag is removed
When a tag with a cycle effect is removed, other pads were left
frozen in whatever color the cycle left them at. Now:
- Pads with active tags get their lighting theme re-applied
- Pads with no tags get turned off properly
2026-04-06 16:50:46 +10:00
jessikitty 40fd25e14b docs: Add cycle effect examples and documentation
- Document "cycle" effect for revolving lights
- Add Police Lights and Ocean Wave cycle examples
- Add effect_notes section explaining each effect
- Add police_red and police_blue to preset colors
2026-04-06 16:38:44 +10:00
jessikitty 26608de850 feat: Add support for cycle effect in CLI client
- apply_tag_color() now uses reader.apply_effect() with speed param
- on_tag_remove() properly stops cycle effect before turning off pad
- Updated help text to document "cycle" effect option
- Works with tag_colors.json: set "effect": "cycle" for revolving lights
2026-04-06 16:38:02 +10:00
jessikitty 692c1493b7 feat: Add software_cycle effect for revolving pad lights
- New software_cycle() method creates rotating light chase across all pads
- Pattern: CENTER → LEFT → RIGHT → CENTER (customizable)
- Speed parameter controls rotation speed
- apply_effect() now supports "cycle" effect type
- Updates module to v1.5.0
2026-04-06 16:36:19 +10:00
jessikitty 3606afd1f8 fix: Light up only the specific pad where tag is placed
- Changed apply_tag_color() to accept pad parameter
- LED effects now apply to tag.pad instead of Pad.ALL
- Tag removal only turns off the specific pad, not all pads
- Added active_pads tracking dictionary
- Added speed parameter support from tag_colors.json
2026-04-06 16:15:09 +10:00
jessikitty 8a9faac09c Fix API to use correct Moonlight endpoint
- POST /api/video/play with JSON {"nfc_id": "card_id"}
- Matches web_interface.py api_play_video() endpoint
- Proper JSON Content-Type header
- Better error handling and response parsing
- Added skip video support
- Version bump to 1.3.0
2026-02-22 12:57:32 +11:00
jessikitty a904f89d1d Send 10-digit card ID as plain text (keyboard-style input)
- Sends card ID as plain text with Content-Type: text/plain
- Uses 10-digit zero-padded format (e.g., "0983187584")
- Tries /api/input first, falls back to /api/play
- Updated default URL to 100.94.163.117:8547
- Version bump to 1.2.0
2026-02-21 19:08:28 +11:00
jessikitty 93041f0db8 Add example video mappings file with decimal card ID format 2026-02-21 19:00:01 +11:00
jessikitty 6a2304baf8 Update to use nfc_card_id (decimal) for API calls and mappings
- Mapping file now uses decimal card IDs: "983187584": "video.mp4"
- API calls include card_id as decimal integer
- Displays NFC Card ID in logs for easy mapping creation
- Version bump to 1.1.0
2026-02-21 18:59:39 +11:00
jessikitty 203ea48c21 Add nfc_card_id field (bytes 3-6 as decimal) for standard NFC reader compatibility
- TagInfo now includes nfc_card_id: the 10-digit decimal ID standard NFC readers display
- Calculated from bytes 3-6 of the 7-byte UID as big-endian uint32
- Example: UID 042B603A9A4080 -> nfc_card_id 983187584
- Updated standalone test to display nfc_card_id
- Version bump to 1.4.0
2026-02-21 18:59:01 +11:00
jessikitty 0da6f54889 docs: Add speed parameter to tag_colors.json.example
- Added speed field to default and tag entries
- Updated instructions with speed range info
- Added fast flash example tag
- Reference GUI tool in instructions
2026-02-21 18:37:33 +11:00
jessikitty ebd0240dc7 docs: Add GUI Configuration Tool documentation
- Added Tools Included table
- New section documenting portal_config_gui.py features
- Speed control and effect configuration details
2026-02-21 18:36:10 +11:00
jessikitty 13f0ae59f3 feat: Add Portal Configuration GUI v1.1.0 with speed control
- Tag theme editor with color picker and RGB sliders
- Effect type selection: Solid, Flash, Pulse
- Speed control slider (0.2x fast to 3.0x slow) for Flash/Pulse effects
- Tag list with search/filter functionality
- Live portal connection and tag detection
- JSON config file import/export
- Video path assignments for Moonlight integration
- Real-time LED preview testing
- Default theme configuration
2026-02-21 18:34:34 +11:00
jessikitty 727ed71f4e v1.3.0: Remove default LED blink, add software effects
- Removed automatic green flash + cyan color on tag insert
- Callbacks now fully control LED behavior
- Added software_flash() for reliable cross-portal flashing
- Added software_pulse() for breathing effect
- Added apply_effect() unified interface
- Effects run in background threads (non-blocking)
- Tag removal stops any running effects on that pad
- Added legacy_key field to TagInfo for config lookup
2026-02-21 12:11:30 +11:00
jessikitty 3bcf573160 fix: Stop LED flash when tag is removed (v1.2.2)
- Add per-pad stop event system (_flash_stop_events dictionary)
- Add stop_flash(pad) method to cancel active flash animations
- flash_pad now checks stop events at multiple points in loop
- Tag removal handler calls stop_flash before setting pad to OFF
- Fixes issue where LED flash continued indefinitely after figure removed
2026-02-20 23:12:03 +11:00
jessikitty 62a61b2d36 Fix flash_pad with software-based implementation (v1.2.1)
- Replace broken hardware 0xC8 flash command with software-based blinking
- Hardware flash causes color corruption on some portals
- Software flash uses rapid solid color toggling (works reliably)
- Add Windows USB backend setup for proper libusb detection
- Add proper endpoint discovery with fallbacks
- Add timeout/pipe error detection helpers
2026-02-20 23:00:30 +11:00
jessikitty a2fce69395 Add tag colors config example
- Configure per-tag LED colors and effects (pulse/flash/solid)
- All effects sync across all 3 portal pads
- Includes preset colors reference
2026-01-26 21:33:07 +11:00
jessikitty bbc4f0878c Add CLI client with refined LED sequence and JSON color config
- Tag detection turns ALL LEDs off immediately
- Server success shows CENTER blue blink (150ms)
- Theme effects (pulse/flash/solid) apply to ALL pads
- External tag_colors.json for customizable per-tag themes
- Debounce logic preserves theme effect even when skipping server
2026-01-26 21:32:54 +11:00
jessikitty faa3b91e65 Add .gitignore 2026-01-24 10:37:03 +11:00
jessikitty 296bbca9cd Add example video mappings template 2026-01-24 10:36:57 +11:00
jessikitty c517d78ce6 Add Moonlight Drive-In integration example 2026-01-24 10:36:29 +11:00
jessikitty 56d758d7fc Add complete character/vehicle database 2026-01-24 10:36:00 +11:00
jessikitty ea7297e7f2 Add requirements.txt 2026-01-24 10:35:16 +11:00
jessikitty dc4c30dcd0 Update README with comprehensive documentation 2026-01-24 10:34:58 +11:00
jessikitty a4650b33af Add main LEGO Dimensions portal reader module 2026-01-24 10:33:48 +11:00
jessikitty 8bfb39f7a4 Initial commit 2026-01-24 10:32:07 +11:00