WiFi-колонка SoundTouch 30 Series III образца 2015 года
WiFi-колонка SoundTouch 30 Series III образца 2015 года

Два месяца назад компания Bose подала пример, как применять открытый подход к поддержке старых вещей: она открыла Web API для умных колонок SoundTouch.

Привязка к фирменному ПО

Производители привыкли постоянно выпускать новые версии техники, а старые — выводить из обслуживания. В основном, это делается путём прекращения выпуска программных обновлений. Такова бизнес-модель запланированного устаревания, которая надёжно генерирует поток прибыли для производителя. Чтобы она работала, компания изначально устанавливает жёсткую привязку функциональности устройства к фирменному ПО, так называемый 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 и исходный код для гаджетов, которые заканчивают свою жизнь. В этом случае сообщество может выполнять поддержку и даже расширять функциональность устройств. Именно так следует «заканчивать жизнь» старых моделей — через опенсорс.