Espruino:Примеры/Маяки iBeacon: различия между версиями
Нет описания правки |
Myagkij (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 5: | Строка 5: | ||
=Маяки iBeacon<ref>[https://www.espruino.com/iBeacon www.espruino.com - iBeacons]</ref>= | =Маяки iBeacon<ref>[https://www.espruino.com/iBeacon www.espruino.com - iBeacons]</ref>= | ||
{{Примечание1|Если вы используете маяки [[Eddystone]], то вам нужна [https://www.espruino.com/Eddystone эта статья].}} | |||
[https://ru.wikipedia.org/wiki/IBeacon iBeacon] – это формат маяков от [[Apple]] для передачи информации, показываемой в виде уведомлений на [[iPhone]] пользователя. | [https://ru.wikipedia.org/wiki/IBeacon iBeacon] – это формат маяков от [[Apple]] для передачи информации, показываемой в виде уведомлений на [[iPhone]] пользователя. | ||
Строка 20: | Строка 21: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Примечание1|Чтобы воспользоваться этой функцией, вам понадобится [[UUID]] группы [[iBeacon-маяк]]ов от [[Apple]].}} | |||
С этого момента [[Espruino]] начнёт транслировать данные всем прослушивающим устройствам, находящимся вокруг. | С этого момента [[Espruino]] начнёт транслировать данные всем прослушивающим устройствам, находящимся вокруг. | ||
{{Примечание1|Вы не можете рассылать [[BLE-объявления]], когда подключены через [[Bluetooth]], поэтому вам сначала нужно будет отключиться от [[Espruino]], чтобы начать передачу данных.}} | |||
Чтобы выключить рассылку [[iBeacon-данных]], просто вызовите '''NRF.setAdvertising({});'''. | Чтобы выключить рассылку [[iBeacon-данных]], просто вызовите '''NRF.setAdvertising({});'''. | ||
Строка 30: | Строка 31: | ||
== Продвинутое использование == | == Продвинутое использование == | ||
{{Инфо1|Функция require("ble_ibeacon").advertise заменяет данные, рассылаемые [[Espruino]] (название, сервисы и т.д.), на [[iBeacon]]-пакет.}} | |||
При помощи функции '''require("ble_ibeacon").get''' (в которой заданы те же настройки, что и в '''advertise'''), можно прочесть массив рассылаемых данных. Затем их можно напрямую ''«скормить»'' функции NRF.setAdvertising(), которая позволяет вам задать и другие настройки (вроде частоты рассылки данных). | При помощи функции '''require("ble_ibeacon").get''' (в которой заданы те же настройки, что и в '''advertise'''), можно прочесть массив рассылаемых данных. Затем их можно напрямую ''«скормить»'' функции NRF.setAdvertising(), которая позволяет вам задать и другие настройки (вроде частоты рассылки данных). | ||
Строка 57: | Строка 58: | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= |
Текущая версия от 19:02, 27 мая 2023
Маяки iBeacon[1]
iBeacon – это формат маяков от Apple для передачи информации, показываемой в виде уведомлений на iPhone пользователя.
Для этого всего лишь нужно воспользоваться модулем «ble_ibeacon» (более подробно о модулях читайте тут):
require("ble_ibeacon").advertise({
// UUID группы iBeacon-маяков:
uuid : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
major : 0x0001, // опционально
minor : 0x0001, // опционально
rssi : -59 // опциональная RSSI на 1-метровой дистанции (в дБ)
});
С этого момента Espruino начнёт транслировать данные всем прослушивающим устройствам, находящимся вокруг.
Чтобы выключить рассылку iBeacon-данных, просто вызовите NRF.setAdvertising({});.
Продвинутое использование
При помощи функции require("ble_ibeacon").get (в которой заданы те же настройки, что и в advertise), можно прочесть массив рассылаемых данных. Затем их можно напрямую «скормить» функции NRF.setAdvertising(), которая позволяет вам задать и другие настройки (вроде частоты рассылки данных).
Кроме того, в Espruino 1v92 и новее можно задать массив рассылаемых данных, чтобы Espruino отправляла каждый пакет по отдельности.
Данные iBeacon и стандартная информация подключения Espruino:
NRF.setAdvertising([
require("ble_ibeacon").get(...),
{} // это добавит «стандартный» пакет объявления,
// показывающий название и так далее:
], {interval:100});
Данные iBeacon, Eddystone и информация об уровне заряда батареи:
NRF.setAdvertising([
require("ble_ibeacon").get(...),
require("ble_eddystone").get(...),
{ 0x180F : [95] }
], {interval:100});
См.также
Внешние ссылки