Espruino:Примеры/Маяки Eddystone: различия между версиями
Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 5: | Строка 5: | ||
=Маяки Eddystone<ref>[https://www.espruino.com/Eddystone www.espruino.com - Eddystone Beacons]</ref>= | =Маяки Eddystone<ref>[https://www.espruino.com/Eddystone www.espruino.com - Eddystone Beacons]</ref>= | ||
{{Примечание1|Если вы используете маяки [[iBeacon]], то вам нужна [https://www.espruino.com/iBeacon эта статья].}} | |||
[https://github.com/google/eddystone Eddystone] – это открытый формат маяков от [[Google]] для передачи URL-ссылки, появляющейся в виде уведомления на телефоне пользователя. | [https://github.com/google/eddystone Eddystone] – это открытый формат маяков от [[Google]] для передачи URL-ссылки, появляющейся в виде уведомления на телефоне пользователя. | ||
Строка 11: | Строка 11: | ||
Телефоны с [[Android 4.4]] (и новее) эту функцию поддерживают, но её, возможно, нужно будет включить. Более подробно читайте [https://developers.google.com/beacons/ тут]. | Телефоны с [[Android 4.4]] (и новее) эту функцию поддерживают, но её, возможно, нужно будет включить. Более подробно читайте [https://developers.google.com/beacons/ тут]. | ||
{{Примечание1|В [[2018 год]]у [https://android-developers.googleblog.com/2018/10/discontinuing-support-for-android.html Google отключила Eddystone-уведомления] из-за того, что с их помощью начали рассылать спам и нерелевантные объявления, так что Eddystone-устройства уже не могут отправлять Android-уведомления.}} | |||
Всё, что нужно – это воспользоваться [https://www.espruino.com/modules/ble_eddystone.js модулем «ble_eddystone»] (более подробно о модулях читайте [https://www.espruino.com/Modules тут]). | Всё, что нужно – это воспользоваться [https://www.espruino.com/modules/ble_eddystone.js модулем «ble_eddystone»] (более подробно о модулях читайте [https://www.espruino.com/Modules тут]). | ||
Строка 21: | Строка 21: | ||
С этого момента [[Espruino]] начнёт рассылать заданную URL-ссылку всем прослушивающим устройствам в округе. Это полезно, например, если у вашей веб-страницы информативный и содержательный заголовок, так как он будет показан в области уведомления. | С этого момента [[Espruino]] начнёт рассылать заданную URL-ссылку всем прослушивающим устройствам в округе. Это полезно, например, если у вашей веб-страницы информативный и содержательный заголовок, так как он будет показан в области уведомления. | ||
{{Примечание1|Вы не можете рассылать данные, когда подключены через [[BLE]], поэтому вам нужно будет отключиться от [[Puck.js]], чтобы начать передачу данных.}} | |||
Хотя [[Espruino]] может отправлять что угодно, сам телефон будет уведомлять вас не обо всех [[URL]]: | Хотя [[Espruino]] может отправлять что угодно, сам телефон будет уведомлять вас не обо всех [[URL]]: | ||
Строка 33: | Строка 33: | ||
Чтобы выключить рассылку объявлений, просто вызовите '''NRF.setAdvertising({});'''. | Чтобы выключить рассылку объявлений, просто вызовите '''NRF.setAdvertising({});'''. | ||
{{Примечание1|Во время рассылки [[Eddystone]]-объявлений [[Espruino-устройство]] не будет рассылать своё название, так что подключиться к нему будет невозможно.}} | |||
== Пример == | == Пример == | ||
Строка 102: | Строка 102: | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 109: | Строка 107: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Espruino | {{Навигационная таблица/Портал/Espruino}} | ||
Текущая версия от 19:54, 23 мая 2023
Маяки 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]);
См.также
Внешние ссылки