Espruino:Примеры/Маяки Eddystone: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighligh...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Маяки Eddystone<ref>[https://www.espruino.com/Eddystone www.espruino.com - Eddystone Beacons]</ref>= | ||
{{Примечание1|Если вы используете маяки [[iBeacon]], то вам нужна [https://www.espruino.com/iBeacon эта статья].}} | |||
<syntaxhighlight lang=" | [https://github.com/google/eddystone Eddystone] – это открытый формат маяков от [[Google]] для передачи URL-ссылки, появляющейся в виде уведомления на телефоне пользователя. | ||
Телефоны с [[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 тут]). | |||
<syntaxhighlight lang="javascript"> | |||
require("ble_eddystone").advertise("goo.gl/B3J0Oc"); | |||
</syntaxhighlight> | |||
С этого момента [[Espruino]] начнёт рассылать заданную URL-ссылку всем прослушивающим устройствам в округе. Это полезно, например, если у вашей веб-страницы информативный и содержательный заголовок, так как он будет показан в области уведомления. | |||
{{Примечание1|Вы не можете рассылать данные, когда подключены через [[BLE]], поэтому вам нужно будет отключиться от [[Puck.js]], чтобы начать передачу данных.}} | |||
Хотя [[Espruino]] может отправлять что угодно, сам телефон будет уведомлять вас не обо всех [[URL]]: | |||
* Это должна быть [[HTTPS]]-ссылка. | |||
* Длина URL-ссылки должна быть [https://github.com/google/eddystone/tree/master/eddystone-url меньше или равна 17 символам]. | |||
Сократить URL-ссылку можно при помощи сервиса [https://developers.googleblog.com/2018/03/transitioning-google-url-shortener.html 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({});'''. | |||
{{Примечание1|Во время рассылки [[Eddystone]]-объявлений [[Espruino-устройство]] не будет рассылать своё название, так что подключиться к нему будет невозможно.}} | |||
== Пример == | |||
* Перейдите на [https://imgflip.com/memegenerator сайт Meme Generator]. | |||
* Сгенерируйте какое-нибудь изображение и скопируйте его '''HTTPS-URL-ссылку'''. | |||
* Перейдите на [https://bitly.com/ сокращатель 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]]: | |||
<syntaxhighlight lang="javascript"> | |||
NRF.setAdvertising([ | |||
require("ble_eddystone").get(...), | |||
{} // Это добавит стандартный пакет объявления, | |||
// показывающий название и так далее: | |||
], {interval:100}); | |||
</syntaxhighlight> | |||
Данные [[Eddystone]], [[iBeacon]] и информация о заряде батареи: | |||
<syntaxhighlight lang="javascript"> | |||
NRF.setAdvertising([ | |||
require("ble_ibeacon").get(...), | |||
require("ble_eddystone").get(...), | |||
{ 0x180F : [95] } | |||
], {interval:100}); | |||
</syntaxhighlight> | |||
Кроме того, вы можете добавить [[Eddystone]]-данные к данным, которые [[Espruino]] уже рассылает – при помощи функции setScanResponse(): | |||
<syntaxhighlight lang="javascript"> | |||
NRF.setScanResponse(require("ble_eddystone").get("goo.gl/B3J0Oc")); | |||
</syntaxhighlight> | |||
== UUID для Eddystone-устройств == | |||
URL-ссылки [[Eddystone]] – это лишь один способ рассылки [[Eddystone-объявлений]]. При помощи модуля ''«ble_eddystone_uid»'' вы можете делать это при помощи [[UUID]] – просто задайте массивы '''namespace''' и '''instance''' как объясняется в [https://github.com/google/eddystone/tree/master/eddystone-uid этой статье]: | |||
<syntaxhighlight lang="javascript"> | |||
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]); | |||
</syntaxhighlight> | |||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 16: | Строка 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]);
См.также
Внешние ссылки