13 Commits
Author SHA1 Message Date
imonlinux 4f05312e16 Per LED Control Added
Integrated per-LED rendering into the existing effect/state pipeline:

solid/off uses ring frames directly,

blink toggles between frames (color ↔ off),

pulse now rewrites LED_RING_COLOR with scaled RGB per step (instead of relying on global brightness),

spin uses a single “dot” moving around the 12 LEDs.

Ensured the controller uses the XVF3800’s fixed ring size (12) where appropriate.

Fixed the “stuck in Responding” issue by subscribing the voice_idle handler so Idle effects reapply correctly when returning to IDLE.
2026-01-01 15:16:13 -08:00
imonlinux 3d7cc49466 Add support for XVF380 LEDs
Keeps all existing DotStar/NeoPixel behavior intact.

Adds a USB-based XVF3800 backend using the legacy LED controls (LED_EFFECT, LED_BRIGHTNESS, LED_SPEED, LED_COLOR).

Plugs it into LedController by treating "led_type": "xvf3800", "interface": "usb" as a new backend.
2025-12-08 14:06:45 -08:00
imonlinux 8d474acdab Update led_controller.py
Wrap the board import in a try/except and introduce a _BOARD_AVAILABLE flag.

If board (or Blinka/platformdetect) is not available or fails, log a clear warning and skip hardware LED initialization.

Keep the event subscriptions intact, but ensure all LED actions become no-ops when _is_ready is False.
2025-11-21 16:59:04 -08:00
imonlinux 37922351f6 Update led_controller.py
__init__ was completely rewritten to be decoupled. It now receives loop, event_bus, config, and preferences directly and no longer has any reference to ServerState.
2025-11-17 21:49:21 -08:00
imonlinux a1c1336ba2 Update led_controller.py
Update led_controller.py to subscribe to the new, normalized state events being published by satellite.py
2025-11-17 15:09:36 -08:00
imonlinux 8bef7e0f7a Add Support for NEOPixel via SPI 2025-10-15 20:34:12 -07:00
imonlinux 24c0d30540 Fix bug effecting Scenes 2025-10-12 20:24:14 -07:00
imonlinux 798c371943 Bug Identified With GPIO LEDs (Grove) 2025-10-12 16:14:21 -07:00
imonlinux 53b8fc4da9 Implement MQTT for Advanced LVA Controls
Refactored for Full Configurability: The controller has been re-architected to remove all hard-coded effects and colors.

Central Configuration: It now uses a central configs dictionary to store the effect, color, and brightness settings for each voice assistant state (idle, listening, etc.).

Dynamic State Management: Subscribes to new set_<state>_effect and set_<state>_color events from the event bus to update its configuration in real-time.

Applies Custom Effects: The main voice event handlers (voice_stt_start, voice_stt_end, etc.) have been simplified to look up the user's chosen configuration and apply it.

New Animations: Implements a full suite of animations (Slow/Medium/Fast Pulse, Slow/Medium/Fast Blink, Spin) to be used by the effect selectors.
2025-10-12 12:56:26 -07:00
imonlinux 3fb4ee8066 Revert API Microphone Mute Switch 2025-10-12 10:12:40 -07:00
imonlinux d90943fe8e Add Microphone Mute Switch Entity
Subscribes to the new mic_muted and mic_unmuted events.

Provides visual feedback by setting the LEDs to a solid dim red when muted and calling the idle state handler (turning the LEDs off) when unmuted.
2025-10-11 17:11:00 -07:00
imonlinux 9811328182 Update resulting from adding HAL and Marvin
This is to support my personal use cases of HAL-9000 and Marvin voice assistants.
2025-10-11 16:17:54 -07:00
imonlinux de30740dce Adds a LedController class to manage LED Events
Subscribes to voice assistant events (voice_wakeword, voice_stt_start, voice_vad_start, etc.) from the event bus.
2025-10-11 12:36:26 -07:00