Если вы увлекаетесь Интернетом вещей и Интернетом или любите использовать передовые технологии, ориентированные на пользователя, вам стоит попробовать Web Bluetooth.

Сейчас самое подходящее время для веб-Bluetooth. Стандарт развивается, появляются наборы инструментов и API, и, что самое интересное, на этой неделе был выпущен Chrome 53!

Chrome 53 имеет пробную версию Origin для Bluetooth, что означает, что веб-сайты могут отказаться от использования этой функции и автоматически включить веб-Bluetooth для всех своих посетителей. Это первый случай, когда такая технология, позволяющая использовать Интернет вещей прямо из Интернета, развернута в реальных условиях.

Если вы хотите присоединиться к пробной версии Origin, все, что вам нужно сделать, это зарегистрировать свой сайт здесь, а затем добавить код, чтобы присоединиться к пробной версии. Команда Chrome завершит пробную версию в январе следующего года (2017 г.), и после этого они ожидают, что смогут стабилизировать функцию и приблизить ее к общему выпуску.

Обновление. Chrome 56, выпущенный 31 января 2017 г., теперь включает веб-интерфейс Bluetooth, включенный по умолчанию для пользователей Mac, Android 6 и Chrome OS. Ура!

Так что, если вы и ваши разработчики уже используете последнюю версию Web Bluetooth, вы будете готовы к работе, как только ваш бизнес-аналитик прибежит по коридору, косо коснувшись волос и костюма в тонкую полоску, беспокоясь о какой-то новой «штучке Web Bluetooth» и требуя чтобы он был добавлен на сайт на следующей неделе.

Возможно, что более реалистично, Origin Trial для Chrome означает, что вы можете экспериментировать с Web Bluetooth и проверять свои идеи на реальных пользователях, пока стандарт набирает обороты. И он появляется во все большем количестве мест и технических стеков.

Например, в конце этого месяца мои друзья Франсуа Бофор из команды Chrome DevRel, Гил Финк из sparXys и я проведем семинар по веб-Bluetooth в AngularConnect в Лондоне. Мы познакомим разработчиков Angular с этой технологией и покажем, как можно подключиться к умной лампочке (не буду предполагать, что все читали мой пост об этом ;-), некоторые роботы MiP, и кто знает, какие устройства могут появиться в мастерской, чтобы с ними поиграть…

В ответ на мои предыдущие сообщения, а также во время моих выступлений о веб-Bluetooth я получил кучу хороших вопросов о веб-Bluetooth, и я постараюсь ответить на многие из них ниже.

Какие ОС поддерживают веб-Bluetooth?

На момент написания этой статьи Web Bluetooth изначально поддерживается Android 6+ (Marshmallow), Chrome OS и Mac OS X. Linux тоже поддерживается, но требует изменения настроек, поэтому большинство пользователей этого делать не будут ( хотя, если вам интересно, посмотрите это руководство).

По официальной статистике - 40% пользователей Android используют Marshmallow или новее. Однако он быстро растет - 16 месяцев назад он составлял всего 2% (источник), а Mac OS X занимает около 10% мирового рынка (около 17,5% в США), согласно Википедии. Это неплохой сегмент рынка, но ...

Винда все еще отсутствует!

Несколько недель назад я начал работать над добавлением веб-поддержки Bluetooth в Chrome для Windows и уже добился определенных успехов - вы уже можете сканировать ближайшие устройства Bluetooth.

Обновление. По состоянию на октябрь 2018 г. веб-Bluetooth полностью поддерживается в Windows 10 при использовании Chrome.

И обратиться к слону в комнате…

По-прежнему нет официальной * поддержки iOS. Да, к сожалению, на данный момент Web Bluetooth не поддерживается в iOS. Мы ждем, когда Apple подберет его и внедрит в свой движок веб-браузера WebKit. Chrome для iOS использует WebKit, поэтому после того, как Apple внедрит его в WebKit, Chrome также подберет его. А пока, я уверен, мы справимся.

* Я говорю без официальной поддержки, потому что похоже, что кто-то создал специальный веб-браузер с поддержкой Bluetooth для iOS даже без официального разрешения Apple, и он даже с открытым исходным кодом. Все это говорит о том, что это возможно, но пока что непросто.

Есть ли в настоящее время у Web Bluetooth какие-либо ограничения?

Как и все мы, веб-Bluetooth смертелен (или…?).

Прямо сейчас Web Bluetooth может взаимодействовать только с устройствами Bluetooth Low Energy (BLE). Многие устройства, например, развлекательные системы в большинстве автомобилей, говорят по классическому Bluetooth. Если на устройстве указано Bluetooth Low Energy или Bluetooth Smart, оно может работать с Web Bluetooth. Если написано «Bluetooth 2 или 3» или «Bluetooth Classic» - к сожалению, он не будет поддерживаться. Как ни странно, Bluetooth 4 обычно означает, что устройство поддерживает BLE, но не всегда. Тем не менее, внедрение и использование BLE постоянно увеличивается, и я ожидаю, что эта тенденция сохранится, и мы увидим почти все, что поддерживает ее в будущем.

Как вкратце обсуждалось в предыдущем посте, BLE выполняет две роли: центральную и периферийную. Central сканирует периферийные устройства и может быть подключен к нескольким периферийным устройствам одновременно, в зависимости от оборудования. Периферийные устройства пассивны - это означает, что они не могут инициировать соединение, и обычно они могут быть связаны только с одним партнером (то есть с одним центральным). Большинство оборудования поддерживает обе роли, то есть как центральную, так и периферийную, но не всегда. Например, мой телефон Nexus 5 может быть только центральным, но не периферийным. В новом Nexus 5X поддерживаются оба режима. Но важно отметить, что нет никаких соединений центральный-центральный или периферийный-периферийный; он всегда от центра к периферии.

Web Bluetooth поддерживает только центральную роль, что означает, что вы можете подключаться только к периферийным устройствам. Это означает, что вы не можете установить прямое соединение BLE между двумя веб-страницами на разных устройствах с помощью Web Bluetooth. Однако вы можете установить соединение между Web Bluetooth (в качестве центрального) и собственным приложением, реализующим периферийную службу.

Наконец, в текущем состоянии Web Bluetooth вы не можете сканировать все устройства вокруг вас - по уважительным причинам конфиденциальности - и вы не можете просто подключиться к любому устройству в любое время. Поэтому определенные варианты использования, такие как периодический опрос устройства в фоновом режиме, управление устройством с помощью push-уведомлений, полученных через Web Push API, или постановка шоу для посетителей вашего веб-сайта, заставляя их умные фонари дома сходить с ума, на самом деле не являются возможно только пока.

Тем не менее, похоже, что разрабатывается спецификация для добавления возможностей сканирования в Web Bluetooth, так что нам просто нужно подождать и посмотреть, что нас ждет в будущем!

Короче говоря (для тех из вас, кто более «TL; DR»):

  • Только BLE, без классического Bluetooth
  • Только центральный, без периферийных устройств
  • Одно устройство за раз, без сканирования (пока)

(p.s. - Если вам интересно узнать причины некоторых из этих ограничений, ознакомьтесь с официальными часто задаваемыми вопросами.)

BLE и безопасность

Проблемы безопасности Web Bluetooth уже рассматриваются в этой замечательной статье, в которой также сравнивается Web Bluetooth с BLE в нативных приложениях.

Сам BLE обеспечивает некоторое шифрование, но оно доступно только при сопряжении устройств до их подключения. Многие потребительские устройства BLE работают из коробки без сопряжения, чтобы упростить / улучшить взаимодействие с пользователем, и, очевидно, даже при сопряжении с PIN-кодом кажется, что современный компьютер может легко перебрать все возможные комбинации за считанные секунды.

Однако похоже, что последняя спецификация BLE 4.2, выпущенная более 18 месяцев назад, поддерживает строгий алгоритм согласования ключей Эллиптической кривой Диффи – Хеллмана (ECDH), но большинство устройств BLE по-прежнему не реализуют много безопасности.

Есть ли на Horizon интересные веб-API, связанные с Интернетом вещей?

Вы делаете ставку! Вот несколько:

  • WebNFC: этот API активирует возможности связи ближнего поля (NFC) (хорошо, сейчас только избранные варианты использования) для веб-Bluetooth. Довольно аккуратно, особенно для пользователей Android и когда-нибудь iOS (надеюсь, скоро!)
  • WebUSB: вы когда-нибудь хотели напрямую и безопасно подключить свое оборудование к Интернету? WebUSB позволяет вам это делать; Я уже мечтаю о новых крутых контроллерах для веб-игр, которые придумают люди ...
  • Web Midi: любители музыки, будьте готовы: API Web Midi, уже присутствующий в Chrome, довольно вонючий. API позволяет вам как управлять внешними MIDI-устройствами с помощью JavaScript, так и использовать MIDI-устройства для управления вещами в Интернете. Интернет-синтезаторные оркестры, кто-нибудь?

Как я могу присоединиться к вечеринке?

Как минимум, вам понадобятся две вещи:

  1. Устройство, поддерживающее Web Bluetooth (см. Выше, но tl; dr: Android 6, Mac OSX с оборудованием с поддержкой Bluetooth 4, Linux или Chrome OS)
  2. Устройство для подключения! Подойдет все, что угодно - умная лампочка за 10 долларов, робот MiP за 50 долларов, или бесплатно, попробуйте BLE Peripheral Simulator или nRF Connect для Android или LightBlue для iOS.

Я подробно рассмотрел основы в своем последнем посте на тему Интернет Bluetooth и PWA, и в Интернете есть масса других ресурсов, которые помогут вам начать работу.

Самое замечательное в веб-Bluetooth - в сочетании с такими вещами, как Physical Web и Progressive Web Apps - это то, что небо действительно является пределом для того, что вы можете создать с его помощью (ну, это, а также Windows и официальная поддержка iOS ...).

В следующем посте мы покажем, как построить симулятор умной лампочки с помощью JavaScript. Как всегда, не стесняйтесь обращаться ко мне в комментариях, если у вас есть дополнительные вопросы (я всегда могу добавить / расширить этот пост), отличные идеи, классные фрагменты кода, хорошие истории о том, как напугать ваших соседей ... ну, вы знаете.