|
1 | | -# Notice |
2 | | - |
3 | | -The component and platforms in this repository are not meant to be used by a |
4 | | -user, but as a "blueprint" that custom component developers can build |
5 | | -upon, to make more awesome stuff. |
6 | | - |
7 | | -HAVE FUN! 😎 |
8 | | - |
9 | | -## Why? |
10 | | - |
11 | | -This is simple, by having custom_components look (README + structure) the same |
12 | | -it is easier for developers to help each other and for users to start using them. |
13 | | - |
14 | | -If you are a developer and you want to add things to this "blueprint" that you think more |
15 | | -developers will have use for, please open a PR to add it :) |
16 | | - |
17 | | -## What? |
18 | | - |
19 | | -This repository contains multiple files, here is a overview: |
20 | | - |
21 | | -File | Purpose | Documentation |
22 | | --- | -- | -- |
23 | | -`.devcontainer.json` | Used for development/testing with Visual Studio Code. | [Documentation](https://code.visualstudio.com/docs/remote/containers) |
24 | | -`.github/ISSUE_TEMPLATE/*.yml` | Templates for the issue tracker | [Documentation](https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository) |
25 | | -`custom_components/integration_blueprint/*` | Integration files, this is where everything happens. | [Documentation](https://developers.home-assistant.io/docs/creating_component_index) |
26 | | -`CONTRIBUTING.md` | Guidelines on how to contribute. | [Documentation](https://help.github.com/en/github/building-a-strong-community/setting-guidelines-for-repository-contributors) |
27 | | -`LICENSE` | The license file for the project. | [Documentation](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/licensing-a-repository) |
28 | | -`README.md` | The file you are reading now, should contain info about the integration, installation and configuration instructions. | [Documentation](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax) |
29 | | -`requirements.txt` | Python packages used for development/lint/testing this integration. | [Documentation](https://pip.pypa.io/en/stable/user_guide/#requirements-files) |
30 | | - |
31 | | -## How? |
32 | | - |
33 | | -1. Create a new repository in GitHub, using this repository as a template by clicking the "Use this template" button in the GitHub UI. |
34 | | -1. Open your new repository in Visual Studio Code devcontainer (Preferably with the "`Dev Containers: Clone Repository in Named Container Volume...`" option). |
35 | | -1. Rename all instances of the `integration_blueprint` to `custom_components/<your_integration_domain>` (e.g. `custom_components/awesome_integration`). |
36 | | -1. Rename all instances of the `Integration Blueprint` to `<Your Integration Name>` (e.g. `Awesome Integration`). |
37 | | -1. Run the `scripts/develop` to start HA and test out your new integration. |
38 | | - |
39 | | -## Next steps |
40 | | - |
41 | | -These are some next steps you may want to look into: |
42 | | -- Add tests to your integration, [`pytest-homeassistant-custom-component`](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component) can help you get started. |
43 | | -- Add brand images (logo/icon) to https://github.com/home-assistant/brands. |
44 | | -- Create your first release. |
45 | | -- Share your integration on the [Home Assistant Forum](https://community.home-assistant.io/). |
46 | | -- Submit your integration to [HACS](https://hacs.xyz/docs/publish/start). |
| 1 | +# Marshall Bluetooth Speakers - Home Assistant Integration |
| 2 | + |
| 3 | +A Home Assistant integration for controlling Marshall Bluetooth speakers over BLE (Bluetooth Low Energy). |
| 4 | + |
| 5 | +## Features |
| 6 | + |
| 7 | +- 🔊 **Media Player Control**: Play, pause, next, previous track controls |
| 8 | +- 🔈 **Volume Control**: Adjust speaker volume with real-time feedback |
| 9 | +- 💡 **LED Brightness**: Control speaker LED brightness (0-35 range) |
| 10 | +- 🎵 **Audio Source Selection**: Switch between Bluetooth, Aux, and RCA inputs (model-dependent) |
| 11 | +- 🎧 **EQ Presets**: Select equalizer presets - Flat, Bright, Warm, Voice (Stanmore II only) |
| 12 | +- 📊 **Media Metadata**: Display track title, artist, and album information |
| 13 | +- 🔌 **Connection Status**: Track device connectivity |
| 14 | +- 🏷️ **Device Information**: Model, serial number, firmware, and hardware details |
| 15 | +- 🎯 **Multi-Model Support**: Acton II, Stanmore II, and extensible for additional models |
| 16 | + |
| 17 | +## Supported Devices |
| 18 | + |
| 19 | +| Model | Features | |
| 20 | +|-------|----------| |
| 21 | +| **Acton II** | Volume, LED Brightness, Audio Source (Bluetooth/Aux), Media Controls, Media Info | |
| 22 | +| **Stanmore II** | Volume, LED Brightness, Audio Source (Bluetooth/Aux/RCA), EQ Presets, Media Controls, Media Info | |
| 23 | + |
| 24 | +## Installation |
| 25 | + |
| 26 | +### HACS (Recommended) |
| 27 | + |
| 28 | +1. Open Home Assistant and go to **Settings** → **Devices & Services** → **Custom repositories** |
| 29 | +2. Add this repository URL: `https://github.com/elrobertocarlos/marshall_bluetooth_speaker` |
| 30 | +3. Search for "Marshall Bluetooth Speakers" in HACS and install |
| 31 | + |
| 32 | +### Manual Installation |
| 33 | + |
| 34 | +1. Copy the `custom_components/marshall` folder to your Home Assistant `custom_components` directory |
| 35 | +2. Restart Home Assistant |
| 36 | +3. Go to **Settings** → **Devices & Services** → **Create Integration** |
| 37 | +4. Search for "Marshall Bluetooth Speakers" and select it |
| 38 | + |
| 39 | +## Configuration |
| 40 | + |
| 41 | +### Discovery |
| 42 | + |
| 43 | +The integration will automatically discover nearby Marshall speakers via Bluetooth: |
| 44 | + |
| 45 | +1. Go to **Settings** → **Devices & Services** |
| 46 | +2. Look for "Discovered" section showing your Marshall speaker |
| 47 | +3. Click "Add" to add the integration |
| 48 | +4. Confirm the device when prompted (prevents accidental pairing) |
| 49 | + |
| 50 | +### Manual Setup |
| 51 | + |
| 52 | +If auto-discovery doesn't work: |
| 53 | + |
| 54 | +1. Open **Settings** → **Devices & Services** → **Create Integration** |
| 55 | +2. Search for "Marshall Bluetooth Speakers" |
| 56 | +3. Select and configure (will prompt for device address) |
| 57 | + |
| 58 | +## Entities |
| 59 | + |
| 60 | +### Media Player |
| 61 | +- **Play/Pause/Next/Previous**: Full playback control |
| 62 | +- **Media Title**: Shows current track - artist (album) |
| 63 | +- **Source Selection**: Switch between available audio inputs |
| 64 | +- **Volume**: Adjustable via slider (0-32) |
| 65 | + |
| 66 | +### Numbers |
| 67 | +- **LED Brightness**: Adjustable LED brightness (0-35) |
| 68 | + |
| 69 | +### Selectors |
| 70 | +- **Audio Source**: Bluetooth, Aux, RCA (model-dependent) |
| 71 | +- **EQ Preset**: Flat, Bright, Warm, Voice (Stanmore II only) |
| 72 | + |
| 73 | +### Sensors (Diagnostic Category) |
| 74 | +- **Device Name**: Speaker name from device |
| 75 | +- **Model**: Device model name |
| 76 | +- **Serial Number**: Device serial number |
| 77 | +- **Firmware Version**: Current firmware version |
| 78 | +- **Hardware Version**: Hardware revision |
| 79 | +- **Volume Level**: Current volume setting (0-32) |
| 80 | +- **Audio Source**: Currently active audio source |
| 81 | +- **Play Status**: Current playback state (playing/paused/stopped) |
| 82 | + |
| 83 | +### Binary Sensors (Diagnostic Category) |
| 84 | +- **Connected**: Speaker connection status |
| 85 | + |
| 86 | +## Usage Examples |
| 87 | + |
| 88 | +### Toggle Playback |
| 89 | +```yaml |
| 90 | +service: media_player.toggle |
| 91 | +target: |
| 92 | + entity_id: media_player.acton_ii |
| 93 | +``` |
| 94 | +
|
| 95 | +### Change Volume |
| 96 | +```yaml |
| 97 | +service: media_player.volume_set |
| 98 | +target: |
| 99 | + entity_id: media_player.acton_ii |
| 100 | +data: |
| 101 | + volume_level: 0.5 |
| 102 | +``` |
| 103 | +
|
| 104 | +### Switch Audio Source |
| 105 | +```yaml |
| 106 | +service: select.select_option |
| 107 | +target: |
| 108 | + entity_id: select.acton_ii_source |
| 109 | +data: |
| 110 | + option: "Aux" |
| 111 | +``` |
| 112 | +
|
| 113 | +### Set EQ Preset (Stanmore II) |
| 114 | +```yaml |
| 115 | +service: select.select_option |
| 116 | +target: |
| 117 | + entity_id: select.stanmore_ii_eq_preset |
| 118 | +data: |
| 119 | + option: "Bright" |
| 120 | +``` |
| 121 | +
|
| 122 | +### Adjust LED Brightness |
| 123 | +```yaml |
| 124 | +service: number.set_value |
| 125 | +target: |
| 126 | + entity_id: number.acton_ii_led_brightness |
| 127 | +data: |
| 128 | + value: 20 |
| 129 | +``` |
| 130 | +
|
| 131 | +## Troubleshooting |
| 132 | +
|
| 133 | +### Device Not Discovered |
| 134 | +- Ensure the speaker is powered on and in Bluetooth pairing mode |
| 135 | +- Check that your Home Assistant device has Bluetooth capability |
| 136 | +- Try rebooting Home Assistant |
| 137 | +
|
| 138 | +### Connection Timeouts |
| 139 | +- Move the speaker closer to your Home Assistant device |
| 140 | +- Reduce interference from other Bluetooth devices |
| 141 | +- Restart the speaker |
| 142 | +
|
| 143 | +### Volume/Source Not Changing |
| 144 | +- Ensure the characteristic is writable |
| 145 | +- Check the device is responding to commands (LED should blink) |
| 146 | +- Verify the speaker model supports the feature |
| 147 | +
|
| 148 | +### Missing EQ Preset Select |
| 149 | +- This is only available on Stanmore II models |
| 150 | +- Check the device model in the entity details |
| 151 | +
|
| 152 | +## Contributing |
| 153 | +
|
| 154 | +Contributions are welcome! Please open an issue or submit a PR for: |
| 155 | +- Additional Marshall speaker models |
| 156 | +- Bug fixes |
| 157 | +- Feature improvements |
| 158 | +- Documentation updates |
| 159 | +
|
| 160 | +## License |
| 161 | +
|
| 162 | +This project is licensed under the Apache License 2.0. See the [LICENSE](LICENSE) file for details. |
| 163 | +
|
| 164 | +## Disclaimer |
| 165 | +
|
| 166 | +This is an unofficial integration and is not affiliated with Marshall Amplification plc. |
| 167 | +
|
| 168 | +## Credits |
| 169 | +
|
| 170 | +This integration was developed by reverse-engineering the Marshall Bluetooth protocol and is built upon research and insights from: |
| 171 | +
|
| 172 | +- [rabbit-aaron/marshall-stanmore-2](https://github.com/rabbit-aaron/marshall-stanmore-2) - Protocol analysis and characteristic research for Marshall speakers |
| 173 | +
|
| 174 | +Developed for controlling Marshall speakers via BLE without requiring official apps. |
0 commit comments