Para describirlo de forma corta y concisa necesitamos "Scanner de dispositivos Bluetooth BLE", los dispositivos bluetooth generan una trama similar a la que puedes encontrar en "Entrada Modulo", la idea es capturar la entrada del bluetooth y transformarla en su respectivo protocolo (EddyStone, iBeacon o AltBeacon). Adjunto envio el codigo de un proyecto que hace lo que necesitamos en nodejs, la idea es que uses algo similar para Android o iOS.
Especificaciones de los protocolos
EddyStone [login to view URL]
AltBeacon [login to view URL]
iBeacon [login to view URL]
Entrada Modulo
Peripheral {
_noble:
Noble {
initialized: true,
address: 'ec:35:86:3f:6c:77',
_state: 'poweredOn',
_bindings:
NobleBindings {
........
_events:
{ warning: [Function: bound ],
newListener: [Function: bound ],
discover: [Function] },
_eventsCount: 3,
_allowDuplicates: true },
id: 'cbd3c4981ceb4855b1275ea1d6dd23bf',
uuid: 'cbd3c4981ceb4855b1275ea1d6dd23bf',
address: 'unknown',
addressType: 'unknown',
connectable: false,
advertisement:
{ localName: undefined,
txPowerLevel: undefined,
manufacturerData: <Buffer 4c 00 09 06 03 02 c0 a8 04 76>,
serviceData: [],
serviceUuids: [] },
rssi: -65,
services: null,
state: 'disconnected' }
Salida Modulo
Lo que necesitamos es convertirla en algo similar a esto, son ejemplos de como el proyecto que te envie parsea la entrada a cada uno de los protocolos:
IBeacon
{
"id": "c7dfbfd9f64a",
"address": "c7:df:bf:d9:f6:4a",
"localName": null,
"txPowerLevel": null,
"rssi": -59,
"beaconType": "iBeacon",
"iBeacon": {
"uuid": "B9407F30-F5F8-466E-AFF9-25556B57FE6D",
"major": 21983,
"minor": 57807,
"txPower": 180
}
}
EddyStone UID
{
"id": "c6debed8f549",
"address": "c6:de:be:d8:f5:49",
"localName": null,
"txPowerLevel": null,
"rssi": -59,
"beaconType": "eddystoneUid",
"eddystoneUid": {
"txPower": -35,
"namespece": "EDD1EBEAC04E5DEFA017",
"instance": "2D3EA3203B6B"
}
}
EddyStone URL
{
"id": "c6debed8f549",
"address": "c6:de:be:d8:f5:49",
"localName": null,
"txPowerLevel": null,
"rssi": -59,
"beaconType": "eddystoneUrl",
"eddystoneUrl": {
"txPower": -35,
"url": "[login to view URL]"
}
EddyStone TLM
{
"id": "c6debed8f549",
"address": "c6:de:be:d8:f5:49",
"localName": null,
"txPowerLevel": null,
"rssi": -59,
"beaconType": "eddystoneTlm",
"eddystoneTlm": {
"batteryVoltage": 6059,
"temperature": 28.59765625,
"advCnt": 83,
"secCnt": 361299
}
Simular cualquiera de los dispositivos puedes usar esta aplicación
[login to view URL]
Especificaciones de la entrega del código fuente
El código fuente en limpio cumpliendo las reglas de Android Lint y SwiftLint respectivamente.
La documentación completa generada en formato de markup detallando las principales características, forma de uso e instalación.
La documentación de las funciones, clases, interfaces, módulos y propiedades de forma detallada según el estándar de JavaDoc y AppleDoc respectivamente.
Para correr el proyecto adjunto necesitas los siguientes comandos:
Instalar las dependencias
npm i
Correr el scanner
node [login to view URL]