Espruino:Примеры/Маяки Eddystone
Маяки Eddystone[1]
Eddystone – это открытый формат маяков от Google для передачи URL-ссылки, появляющейся в виде уведомления на телефоне пользователя.
Телефоны с Android 4.4 (и новее) эту функцию поддерживают, но её, возможно, нужно будет включить. Более подробно читайте тут.
Всё, что нужно – это воспользоваться модулем «ble_eddystone» (более подробно о модулях читайте тут).
require("ble_eddystone").advertise("goo.gl/B3J0Oc");
С этого момента Espruino начнёт рассылать заданную URL-ссылку всем прослушивающим устройствам в округе. Это полезно, например, если у вашей веб-страницы информативный и содержательный заголовок, так как он будет показан в области уведомления.
Хотя Espruino может отправлять что угодно, сам телефон будет уведомлять вас не обо всех URL:
- Это должна быть HTTPS-ссылка.
- Длина URL-ссылки должна быть меньше или равна 17 символам.
Сократить URL-ссылку можно при помощи сервиса Google URL Shortener. Вы по-прежнему сможете пользоваться символом «#» для передачи данных – например, «https://goo.gl/D8sjLK#42».
Хотя у вас в запасе всего 17 символов, фрагменты «https://», «www.», «.com», «.org», «.edu», «.net», «.info», «.biz» и «.gov» в URL будут автоматически обрезаны. То есть, например, URL «https://www.espruino.com/Puck.js» всё равно подойдёт, даже если кажется слишком длинным.
Чтобы выключить рассылку объявлений, просто вызовите NRF.setAdvertising({});.
Пример
- Перейдите на сайт Meme Generator.
- Сгенерируйте какое-нибудь изображение и скопируйте его HTTPS-URL-ссылку.
- Перейдите на сокращатель URL-ссылок Bitly.
- Создайте сокращённый URL и скопируйте его в команду require("ble_eddystone").advertise("https://bit.ly/abcdef");
- После выполнения этой команды (и отключения) Espruino начнёт рассылать Eddystone-объявления.
- Вы также можете вызвать NRF.setAdvertising({});, чтобы прекратить рассылку.
Продвинутое использование
Функция require("ble_eddystone").advertise заменяет данные, рассылаемые Espruino (название, сервисы и т.д.), на Eddystone-пакет.
При помощи функции require("ble_eddystone").get (в которой заданы те же настройки, что и в advertise), можно прочесть массив рассылаемых данных. Затем их можно напрямую «скормить» функции NRF.setAdvertising(), позволяющей задать и другие настройки (например, частоту рассылки данных).
Кроме того, в Espruino 1v92 и новее есть возможность задать массив рассылаемых данных, чтобы Espruino могла отсылать пакеты объявлений по очереди.
Данные Eddystone и стандартная информация подключения Espruino:
NRF.setAdvertising([
require("ble_eddystone").get(...),
{} // Это добавит стандартный пакет объявления,
// показывающий название и так далее:
], {interval:100});
Данные Eddystone, iBeacon и информация о заряде батареи:
NRF.setAdvertising([
require("ble_ibeacon").get(...),
require("ble_eddystone").get(...),
{ 0x180F : [95] }
], {interval:100});
Кроме того, вы можете добавить Eddystone-данные к данным, которые Espruino уже рассылает – при помощи функции setScanResponse():
NRF.setScanResponse(require("ble_eddystone").get("goo.gl/B3J0Oc"));
UUID для Eddystone-устройств
URL-ссылки Eddystone – это лишь один способ рассылки Eddystone-объявлений. При помощи модуля «ble_eddystone_uid» вы можете делать это при помощи UUID – просто задайте массивы namespace и instance как объясняется в этой статье:
NRF.setAdvertising([
// Пространство имён:
require("ble_eddystone_uid").get([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
// Экземпляр:
[0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
{} // Это добавит стандартный пакет объявления,
// показывающий название и так далее:
], {interval:100});
// или
require("ble_eddystone_uid").advertise(
// Пространство имён:
[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
// Экземпляр:
[0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);
См.также
Внешние ссылки