Commit Graph
98 Commits
Author SHA1 Message Date
imonlinux f707f3232a Updated with Instructions for MQTT and Grove LEDs 2025-10-12 16:33:07 -07:00
imonlinux 6077a31baa Bug Identified With GPIO LEDs (Grove) 2025-10-12 16:15:22 -07:00
imonlinux dbc371ce8f Bug Identified With GPIO LEDs (Grove) 2025-10-12 16:14:52 -07:00
imonlinux 798c371943 Bug Identified With GPIO LEDs (Grove) 2025-10-12 16:14:21 -07:00
imonlinux 26cdd5159b Updated for MQTT Enable Configurations 2025-10-12 14:11:31 -07:00
imonlinux 37898c8241 Updated for MQTT 2025-10-12 14:04:37 -07:00
imonlinux 939dd8963c Update README.md
Updated for MQTT Implementation
2025-10-12 13:52:22 -07:00
imonlinux 58be335eb7 Update user-pw-linux-voice-assistant.service
Add configs entries for MQTT
2025-10-12 13:35:02 -07:00
imonlinux a26e91eb70 Update user-pa-linux-voice-assistant.service
Add config entries for MQTT
2025-10-12 13:34:12 -07:00
imonlinux 7e4686b8f6 Update user-linux-voice-assistant.service
Add config entries for MQTT
2025-10-12 13:33:36 -07:00
imonlinux 7d4edbf369 Delete linux_voice_assistant/led_controller_marvin.py
Deprecated. All LED effects are configurable via MQTT controls.
2025-10-12 13:12:36 -07:00
imonlinux 6958b09f4d Delete linux_voice_assistant/led_controller_hal.py
Deprecated. All LED controls are configurable via MQTT.
2025-10-12 13:11:52 -07:00
imonlinux 1eef4ba917 Implement MQTT for Advanced LVA Controls
Includes various compatibility fixes, reversions, and clean-up from the previous development cycle to create a stable base for the MQTT implementation. This ensures the application starts reliably with the pinned aioesphomeapi version.
2025-10-12 13:00:52 -07:00
imonlinux 226dc7f11d Implement MQTT for Advanced LVA Controls
Includes various compatibility fixes, reversions, and clean-up from the previous development cycle to create a stable base for the MQTT implementation. This ensures the application starts reliably with the pinned aioesphomeapi version.
2025-10-12 13:00:18 -07:00
imonlinux a435cc97e7 Implement MQTT for Advanced LVA Controls
Includes various compatibility fixes, reversions, and clean-up from the previous development cycle to create a stable base for the MQTT implementation. This ensures the application starts reliably with the pinned aioesphomeapi version.
2025-10-12 12:59:42 -07:00
imonlinux 402a6d1855 Implement MQTT for Advanced LVA Controls
Adds a handler for the VOICE_ASSISTANT_ERROR event, publishing a voice_error event to the EventBus so the LedController can provide visual feedback.

Fixes a race condition where the "Responding" LED effect was being cancelled prematurely, ensuring it now plays for the full duration of the TTS audio.
2025-10-12 12:58:24 -07:00
imonlinux e0bef20398 Implement MQTT for Advanced LVA Controls
Adds command-line arguments (--mqtt-host, --mqtt-port, etc., and --num-leds) to configure the MQTT connection and initial LED setup.

Instantiates and starts the MqttController on application startup if an MQTT host is provided.

Includes the MicMuteHandler class, which listens for mute commands, updates the global mic_muted state, and clears the audio queue on unmute to prevent processing stale audio.

Updates the process_audio loop to respect the mic_muted flag.
2025-10-12 12:57:11 -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 824ac111ff Implement MQTT for Advanced LVA Controls
Adds paho-mqtt as a core dependency to enable MQTT communication.

Pins aioesphomeapi==41.13.0 to ensure stability with the existing codebase and avoid unresolved library issues on some platforms.
2025-10-12 12:55:33 -07:00
imonlinux bad38a3ece Implement MQTT for Advanced LVA Controls
Introduces the MqttController, a new class that manages all communication with the MQTT broker.

On startup, it connects to the broker and publishes discovery configurations for all entities, automatically creating them in Home Assistant.

Subscribes to command topics to receive instructions from the HA interface.

Subscribes to state topics to read retained messages on startup, ensuring all user settings are persistent.

Acts as a bridge, translating incoming MQTT messages into internal EventBus events for other components to act upon.
2025-10-12 12:54:12 -07:00
imonlinux f90ecdcda3 MQTT Support 2025-10-12 10:33:11 -07:00
imonlinux 01c49d4888 MQTT Entity Support 2025-10-12 10:32:34 -07:00
imonlinux 515ce2c5b2 Merge pull request #24 from imonlinux/Revert_Mic_Mute
Revert mic mute
2025-10-12 10:18:22 -07:00
imonlinux 3fb4ee8066 Revert API Microphone Mute Switch 2025-10-12 10:12:40 -07:00
imonlinux 524ad02228 Revert API Microphone Mute Switch 2025-10-12 10:11:56 -07:00
imonlinux d071803257 Revert API Microphone Mute Switch 2025-10-12 10:11:22 -07:00
imonlinux 6868651823 Revert API Microphone Mute Switch 2025-10-12 10:09:45 -07:00
imonlinux 834a15beb9 Revert API Microphone Mute Switch 2025-10-12 10:08:43 -07:00
imonlinux e78675aec2 Update README.md
Microphone mute switch bug!
2025-10-11 22:20:14 -07:00
imonlinux ccf5af8875 Update install_pipewire.md
Clean up during testing.
2025-10-11 20:07:41 -07:00
imonlinux 13c64687fe Update install_pulseaudio.md
Cleanup and fixes during testing.
2025-10-11 20:05:35 -07:00
imonlinux 82290688e2 Clean up typos and errors. 2025-10-11 20:00:29 -07:00
imonlinux bb4556a2ec Fix some typos and errors 2025-10-11 19:55:27 -07:00
imonlinux 98c8585ae3 Microphone Mute Button Bug
Bug fix to eliminate "pending" wake word detections while the mic was muted.
2025-10-11 19:34:14 -07:00
imonlinux aecf118983 Merge pull request #23 from imonlinux/Cleanup_Service_Files
Cleanup service files
2025-10-11 18:36:31 -07:00
imonlinux 63862487fb Rename user-pa-linux-voice-assistant.service.service to user-pa-linux-voice-assistant.service
Clean-up for user-mode systemd service unit files and refactored code base from Release v1.0.0
2025-10-11 18:34:32 -07:00
imonlinux 3d07872f49 Rename user-pw-linux-voice-assistant.service.service.service to user-pw-linux-voice-assistant.service
Clean-up for user-mode systemd service unit files and refactored code base from Release v1.0.0
2025-10-11 18:34:11 -07:00
imonlinux ca34354948 Rename user-pw-mww-linux-voice-assistant.service.service.service to user-pw-linux-voice-assistant.service.service.service
Clean-up for user-mode systemd service unit files and refactored code base from Release v1.0.0
2025-10-11 18:33:39 -07:00
imonlinux 6a4163d32a Update user-pw-mww-linux-voice-assistant.service.service.service
Clean-up for user-mode systemd service unit files and refactored code base from Release v1.0.0
2025-10-11 18:32:35 -07:00
imonlinux 085e944a85 Update and rename user-pa-mww-linux-voice-assistant.service.service to user-pa-linux-voice-assistant.service.service
Clean-up for user-mode systemd service unit files and refactored code base from Release v1.0.0
2025-10-11 18:30:48 -07:00
imonlinux eda9ac7d0d Update user-linux-voice-assistant.service
Clean-up for user-mode systemd service unit files and refactored code base from Release v1.0.0
2025-10-11 18:27:34 -07:00
imonlinux b3a853b94b Delete service/user-pw-oww-linux-voice-assistant.service.service
wyoming-openwakeword dependent service not required with Release v1.0.0
2025-10-11 18:24:07 -07:00
imonlinux 7049ec969e Delete service/user-pa-oww-linux-voice-assistant.service.service
wyoming-openwakeword dependent service not required with Release v1.0.0
2025-10-11 18:23:53 -07:00
imonlinux 541496e852 Delete service/pa-mww-linux-voice-assistant.service
System mode systemd service unit files are not needed now
2025-10-11 18:23:26 -07:00
imonlinux 8ccfbdec17 Delete service/alsa-mww-linux-voice-assistant.service
System mode systemd service unit files are not needed now
2025-10-11 18:23:13 -07:00
imonlinux 02494e3bbd Delete service/pa-oww-linux-voice-assistant.service
wyoming-openwakeword dependent service not required with Release v1.0.0
2025-10-11 18:22:17 -07:00
imonlinux 7b74e25759 Delete service/alsa-oww-linux-voice-assistant.service
wyoming-openwakeword dependent service not required with Release v1.0.0
2025-10-11 18:22:04 -07:00
imonlinux 1ccd9b35c8 Delete service/user-wyoming-openwakeword.service.service
wyoming-openwakeword service not required with Release v1.0.0
2025-10-11 18:21:16 -07:00
imonlinux 81f3cb5425 Delete service/wyoming-openwakeword.service
wyoming-openwakeword service not required with Release v1.0.0
2025-10-11 18:20:47 -07:00
imonlinux cd4ad4bdfc Delete service/pulseaudio.service
Avahi detection is not needed with Release v1.0.0
2025-10-11 18:20:06 -07:00
imonlinux 3e99e651f1 Delete service/10-tuning.conf
Avahi detection is not needed with Release v1.0.0
2025-10-11 18:19:50 -07:00
imonlinux d5b1507379 Delete service/10-avahi.conf
Avahi detection is not needed with Release v1.0.0
2025-10-11 18:19:24 -07:00
imonlinux 355f8c8150 Updated to support User-Mode Service Unit File
So much easier than with system mode service unit files.
2025-10-11 18:13:51 -07:00
imonlinux 5fcb8b2623 Updated for the Release v1.0.0 codebase 2025-10-11 18:07:59 -07:00
imonlinux 1a5cc3005f Updated to note working LED Events 2025-10-11 17:21:48 -07:00
imonlinux 002c22c622 Add Microphone Mute Switch Entity
Updated readme.me to include the newly added mic mute switch.
2025-10-11 17:17:06 -07:00
imonlinux a7c797991b Merge pull request #22 from imonlinux/Mic_Mute_Switch
Add Microphone Mute Switch Entity
2025-10-11 17:12:46 -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 39d6d3e010 Add Microphone Mute Switch Entity
Implements the core mute functionality.

Adds a new MicMuteHandler class that subscribes to the set_mic_mute event. This handler updates the state.mic_muted flag and publishes secondary mic_muted or mic_unmuted events for LED feedback.

Modifies the process_audio function to check the state.mic_muted flag in its main loop, pausing audio processing when the flag is True.
2025-10-11 17:10:15 -07:00
imonlinux 4d12149dae Add Microphone Mute Switch Entity
Instantiates the MicMuteSwitchEntity on startup to register it with Home Assistant.

Updates the central message handler to correctly route SwitchCommandRequest messages from Home Assistant to the appropriate entity.
2025-10-11 17:09:26 -07:00
imonlinux 415130aeb4 Add Microphone Mute Switch Entity
Defines a new MicMuteSwitchEntity class that creates the switch entity in Home Assistant.

When the switch is toggled, it publishes a set_mic_mute event to the internal event bus with the new state (True for muted, False for unmuted).
2025-10-11 17:08:42 -07:00
imonlinux bceb7640ef Add Microphone Mute Switch Entity
Adds a mic_muted: bool flag to the ServerState dataclass to globally track the mute status of the microphone.
2025-10-11 17:07:15 -07:00
imonlinux 3e52720925 Refactored to Release v1.0.0
Removed reference to OWW and MWW service files.
2025-10-11 16:42:49 -07:00
imonlinux 507fe66032 Refactored based on Release v1.0.0
Updated fork to the latest release from https://github.com/OHF-Voice/linux-voice-assistant.
2025-10-11 16:40:44 -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 aa3ebff8f4 Add support for HAL and Marvn led_controller.py files
This is to support my personal use cases of HAL-9000 and Marvin voice assistants.
2025-10-11 16:16:41 -07:00
imonlinux 081ebd4103 Add HAL and Marvin
Files specifically configured for my personal use cases of a HAL-9000 and Marvin voice assistants.
2025-10-11 16:15:00 -07:00
imonlinux 18f29c52da Implement Volume Persistence
Updates the MediaPlayerEntity to handle the saving and loading logic.

The entity's internal volume state is now initialized from the saved preferences.volume_level.

When a volume change command is received from Home Assistant, the handle_message method now updates the Preferences object and calls save_preferences() to persist the new volume level to disk.
2025-10-11 15:35:23 -07:00
imonlinux 92867db2b2 Implement Volume Persistence
Modifies the startup sequence to read the volume_level from the loaded preferences.

This saved value is then passed as the initial_volume when creating the music_player and tts_player instances.
2025-10-11 15:34:45 -07:00
imonlinux efbcbc599f Implement Volume Persistence
Updates the MpvMediaPlayer constructor (__init__) to accept an initial_volume parameter.

This allows the volume to be set immediately when the mpv process is created, applying the saved setting at startup.
2025-10-11 15:34:09 -07:00
imonlinux 6e63111e63 Implement Volume Persistence
Adds a new volume_level: float field to the Preferences dataclass. This creates a dedicated entry in the preferences.json file to store the user's desired volume (from 0.0 to 1.0).
2025-10-11 15:33:13 -07:00
imonlinux d5eef16235 Add suport for PA and PW
Updated file to support both PulseAudio and PipeWire.
2025-10-11 12:44:35 -07:00
imonlinux 164e01682f Replaced by led_controller.py 2025-10-11 12:42:59 -07:00
imonlinux 2c5a881736 Replaced by led_controller.py 2025-10-11 12:42:47 -07:00
imonlinux e7c9b58ef4 Replaced by led_controller.py 2025-10-11 12:42:36 -07:00
imonlinux b195cfde56 Replaced by led_controller.py 2025-10-11 12:42:23 -07:00
imonlinux 688cc97d7d Replaced by led_controller.py 2025-10-11 12:41:58 -07:00
imonlinux 6ce1c5f2b7 Integrates the event bus into the VoiceSatelliteProtocol
Translates low-level aioesphomeapi events into meaningful application events.

Publishes events for key moments in the voice assistant lifecycle, including: voice_wakeword, voice_stt_start, voice_vad_start, voice_stt_end, voice_tts_start, and voice_run_end.
2025-10-11 12:41:06 -07:00
imonlinux abcc7aeaef Updates for EventBus and LedController.
Passes the event_bus and loop instances into the ServerState object upon creation.

Adds new command-line arguments (--led-interface, --led-clock-pin, --led-data-pin) to allow the user to select and configure the LED hardware interface at runtime.
2025-10-11 12:39:57 -07:00
imonlinux 7f8bdefa39 Adds two new fields to the ServerState dataclass:
event_bus: EventBus

loop: asyncio.AbstractEventLoop

This provides a globally accessible instance of the event bus and the main asyncio event loop to any component that needs them.
2025-10-11 12:38:00 -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
imonlinux dfe992ec35 Delete linux_voice_assistant/event_led.py
Replaced with led_controller.py
2025-10-11 12:34:45 -07:00
imonlinux fd54c25303 Introduces a simple, generic publish/subscribe event bus system.
This decouples hardware components (like the LED controller) from the core application logic, allowing for a more modular and extensible design.
2025-10-11 12:33:40 -07:00
imonlinux 710610035c Add support for GPIO LED Interface
This change supports the inclusion of the Grove GPIO port on the ReSpeaker 2 Mic Hat.
2025-10-11 12:31:12 -07:00
imonlinux 70ca927617 bug squashing 2025-10-10 19:40:01 -07:00
imonlinux 21a0108a82 Indentation Bug mpv_player.py 2025-10-10 19:36:23 -07:00
imonlinux a463709ef2 Update setup 2025-10-10 19:31:55 -07:00
imonlinux abcbae1b8f Add User Mode Unit File 2025-10-10 19:27:58 -07:00
imonlinux 6a66bd7128 Add PulseAudio and PipeWire functionality to mpv_player.py 2025-10-10 19:11:21 -07:00
imonlinux 0a44238655 Add LED Events to satellite.py 2025-10-10 19:05:18 -07:00
imonlinux ec51b0b11e Add LED Events to __main__.py 2025-10-10 19:04:08 -07:00
imonlinux bc8e6e0ef7 Add files via upload 2025-10-10 18:47:51 -07:00
imonlinux 87a7cfa7b2 Add files via upload 2025-10-10 18:45:40 -07:00
imonlinux 1baae464d1 Add files via upload 2025-10-10 18:45:00 -07:00
imonlinux 853e25cf60 Add files via upload 2025-10-10 18:44:08 -07:00
imonlinux eb73cb5baa Delete linux_voice_assistant/respeaker2mic directory 2025-10-10 18:42:56 -07:00
imonlinux ab8f09048e Delete linux_voice_assistant/docs directory 2025-10-10 18:42:44 -07:00
imonlinux 68992feb9a Add files via upload 2025-10-10 18:37:52 -07:00