
Два месяца назад компания Bose подала пример, как применять открытый подход к поддержке старых вещей: она открыла Web API для умных колонок SoundTouch.
Документация SoundTouch Web API
Привязка к фирменному ПО
Производители привыкли постоянно выпускать новые версии техники, а старые — выводить из обслуживания. В основном, это делается путём прекращения выпуска программных обновлений. Такова бизнес-модель запланированного устаревания, которая надёжно генерирует поток прибыли для производителя. Чтобы она работала, компания изначально устанавливает жёсткую привязку функциональности устройства к фирменному ПО, так называемый software tethering.
В редких случаях на рынке появляется продукт с сочетанием высокого качества и надёжности, который пользуется популярностью и спросом спустя годы и десятилетия. Как ретро-пример можно вспомнить колонки Radiotechnika S90D рижского завода VEF, которые не потеряли в цене с момента своего выпуска.

Колонки Bose серии SoundTouch стоимостью от $400 до $1500 и выше тоже весьма ценятся аудиофилами. Некоторые уверены, что изделие отлично работает спустя десять лет после выпуска.
Однако Bose в октябре 2025 года объявила, что прекращает поддержку SoundTouch. Это означает, что умную колонку отключат от облака и она перестанет поддерживаться в фирменном мобильном приложении. А если она не поддерживается в мобильном приложении, то её не получится интегрировать с музыкальными веб-сервисами вроде Spotify, а также отключатся некоторые другие продвинутые функции.
Программная поддержка очень старых устройств — довольно нетривиальная задача, потому что включает анализ древнего легаси-кода с «выплатой» технического долга, который накопился за годы. Из-за этого повышается риск сбоев, как это случилось при неудачном обновлении фирменного приложения Sonos в 2024 году, которое частично вывело из строя колонки Sonos.

Скоро умные колонки Bose тоже лишатся части «интеллекта». Такое решение производителя не понравилось фанатам бренда, у некоторых из которых установлено несколько колонок, связанных в единую систему умного дома.
Открытые Web API
В документации SoundTouch Web API описаны основные команды для управления умной колонкой.

Некоторые специальные типы WAPI (Web API):
ART_STATUS { INVALID SHOW_DEFAULT_IMAGE DOWNLOADING IMAGE_PRESENT } BOOL: "true" or "false" INT: a 32-bit integer IPADDR: an IP address, represented as a string KEY_VALUE { PLAY PAUSE STOP PREV_TRACK NEXT_TRACK THUMBS_UP THUMBS_DOWN BOOKMARK POWER MUTE VOLUME_UP VOLUME_DOWN PRESET_1 PRESET_2 PRESET_3 PRESET_4 PRESET_5 PRESET_6 AUX_INPUT SHUFFLE_OFF SHUFFLE_ON REPEAT_OFF REPEAT_ONE REPEAT_ALL PLAY_PAUSE ADD_FAVORITE REMOVE_FAVORITE INVALID_KEY } KEY_STAT E { press release } MACADDR: a MAC address, upcased, represented as a string PLAY_STATUS { PLAY_STATE PAUSE_STATE STOP_STATE BUFFERING_STATE INVALID_PLAY_STATUS } PRESET_ID: An integer, 1 through 6 inclusive SOURCE_STATUS { UNAVAILABLE READY } AUDIO_MODE { AUDIO_MODE_DIRECT AUDIO_MODE_NORMAL AUDIO_MODE_DIALOG AUDIO_MODE_NIGHT }
Указаны все методы и URL, которые используются в API.
<sources deviceID="$MACADDR"> <sourceItem source="$SOURCE" sourceAccount="$STRING" status="$SOURCE_STATUS">$STRING</sourceItem> ... </sources>
Таким образом, можно использовать всю функциональность колонок, удалённо управляя ею со своего сервера. Если Spotify тоже поддерживает такой способ, то можно самостоятельно вернуть совместимость умных колонок с музыкальным сервисом, если связать их через медиасервер на самохостинге.
Вот вариант управления колонкой через опенсорсный клиент, включающий библиотеку на Go и консольную программу soundtouch-cli:
# Basic device information soundtouch-cli --host 192.168.1.100 info get # Media controls soundtouch-cli --host 192.168.1.100 play start soundtouch-cli --host 192.168.1.100 volume set --level 50 soundtouch-cli --host 192.168.1.100 source select --source SPOTIFY # Preset management soundtouch-cli --host 192.168.1.100 preset list soundtouch-cli --host 192.168.1.100 preset store-current --slot 1 soundtouch-cli --host 192.168.1.100 preset select --slot 1 # Browse and discover content soundtouch-cli --host 192.168.1.100 browse tunein soundtouch-cli --host 192.168.1.100 station search-tunein --query "jazz" soundtouch-cli --host 192.168.1.100 station add --source TUNEIN --token <token> --name "Jazz Radio" # Speaker notifications (ST-10 only) soundtouch-cli --host 192.168.1.100 speaker tts --text "Welcome home" --app-key YOUR_KEY soundtouch-cli --host 192.168.1.100 speaker url --url "https://example.com/doorbell.mp3" --app-key YOUR_KEY soundtouch-cli --host 192.168.1.100 speaker beep # Real-time monitoring soundtouch-cli --host 192.168.1.100 events subscribe
Это пример для остальных производителей, которые привыкли использовать запланированное устаревание, чтобы подтолкнуть потребителей к замене «старых» моделей техники на новые. Но можно поступать иначе. Открытые API позволяют интегрировать любую «старую» технику в единую ткань Интернета вещей.
В последнее время всё чаще слышны призывы к производителям открывать API и исходный код для гаджетов, которые заканчивают свою жизнь. В этом случае сообщество может выполнять поддержку и даже расширять функциональность устройств. Именно так следует «заканчивать жизнь» старых моделей — через опенсорс.
