roBtManager
12 min
este objeto facilita la comunicación ble unidireccional (es decir, "beaconing") use el objeto robtmanager para detectar si hay adaptadores ble presentes y para enviar anuncios ble usando los adaptadores el equivalente en javascript es administrador bsbt docid\ ffkcb a73ctmwbvdulq l ifmessageport setport(port as romessageport) publica mensajes de tipo robtevent en el puerto de mensajes adjunto use estos mensajes para detectar la inserción o eliminación de adaptadores bluetooth ifuserdata setuserdata(user data as object) establece los datos de usuario que se devolverán cuando se generen eventos getuserdata() as object recupera un objeto arbitrario establecido mediante el método setuserdata() ifidentity getidentity() as integer devuelve un número único que puede usarse para identificar eventos que se originan en la instancia del objeto la interfaz ifidentity ha quedado obsoleta recomendamos usar la interfaz ifuserdata en su lugar ifbtperipheralmanager getfailurereason() as string devuelve información de diagnóstico adicional si un método devuelve falso getadapterlist() as roarray devuelve un arreglo que describe todos los adaptadores bluetooth disponibles cada entrada del arreglo consiste en un arreglo asociativo que contiene propiedades del adaptador actualmente, cada arreglo asociativo contiene una sola propiedad nombre que describe el nombre del adaptador use este método para determinar si hay adaptadores bluetooth conectados al reproductor disponible a partir de bos 9 0 198 y 9 1 21, este endpoint incluye un campo booleano en el arreglo devuelto de elementos del adaptador que indica si el dispositivo está encendido o apagado stopadvertising() as boolean detiene todos los anuncios ble este método devuelve verdadero en caso de éxito y falso en caso de fallo getadvertisinglist() as roarray devuelve un arreglo que describe todos los anuncios bluetooth activos cada entrada del arreglo consiste en un arreglo asociativo que describe un solo anuncio los valores del arreglo asociativo corresponden a las propiedades establecidas usando el método startadvertising() , pero también pueden incluir valores de parámetros predeterminados que no se establecieron explícitamente tenga en cuenta que todos los valores uuid se devolverán en minúsculas startadvertising(data as roassociativearray) as boolean comienza a transmitir un mensaje ble "beacon" este método devuelve verdadero en caso de éxito y falso en caso de fallo cada mensaje puede contener datos en un formato estándar o valores personalizados arbitrarios el formato del mensaje se especifica usando el parámetro modo , y otros valores requeridos en el arreglo asociativo dependerán del valor de este parámetro mode "beacon" este modo usa un formato simple de beaconing beacon uuid una representación de cadena de un uuid, que puede tener un formato de 16 bits, 32 bits o 128 bits un uuid de 16 bits debe ser exactamente cuatro dígitos hexadecimales sin puntuación; un uuid de 32 bits debe ser exactamente ocho dígitos hexadecimales sin puntuación; y un uuid de 128 bits debe estar puntuado exactamente de la siguiente manera "cd7b6f81 f738 4cad aebf d2a2ea36d996" beacon major \<font color="#6b21a8">int \</font> el valor major de 2 bytes (0 a 65535) beacon minor \<font color="#6b21a8">int \</font> el valor minor de 2 bytes (0 a 65535) beacon level \<font color="#6b21a8">int\</font> \<font color="#14b8a6">opcional\</font> un entero con signo de 8 bits ( 127 a 128) que corresponde a la medición del nivel de potencia tx (en dbm) a 1 metro el nivel predeterminado es 60 beacon manufacturer \<font color="#6b21a8">int\</font> \<font color="#14b8a6">opcional\</font> un valor entero de 2 bytes (0 a 65535) que especifica el fabricante del beacon el valor predeterminado es 76 (\&h4c) conectable \<font color="#6b21a8">bool\</font> \<font color="#14b8a6">optional\</font> si el anuncio debe poder conectarse o no los anuncios no conectables son el comportamiento predeterminado persistente \<font color="#6b21a8">bool\</font> \<font color="#14b8a6">optional\</font> si el anuncio debe persistir después de cada reinicio los anuncios beacon son persistentes de forma predeterminada mode "eddystone url" este modo utiliza el formato eddystone url https //github com/google/eddystone/tree/master/eddystone url url la url que se encapsulará en el paquete de anuncio si la url es demasiado larga para caber en el paquete, la llamada a startadvertising() devolverá falso y getfailurereason() informará "compressed url is too long" tx power \<font color="#6b21a8">int\</font> \<font color="#14b8a6">optional\</font> la medición del nivel de potencia tx (en dbm) a 0 metros el valor predeterminado es 19, que corresponde a un nivel de 60dbm a 1 metro la práctica de calibración recomendada consiste en medir el rssi en un círculo a 1 metro del beacon y luego sumar 41 a la intensidad promedio de la señal medida para obtener el valor de tx power por ejemplo, medir un rssi de 65dbm a 1 metro produce un valor de txpower de 2 tenga en cuenta que el valor de tx power no modifica el nivel de potencia del transmisor bluetooth (esto requiere atenuación física docid\ wnlbaqwos9ev7ditddcnh ) más bien, el valor de tx power se transmite a los clientes bluetooth en el anuncio ble los clientes pueden entonces comparar este valor con el rssi actual de la señal para determinar su distancia aproximada al beacon conectable \<font color="#6b21a8">bool\</font> \<font color="#14b8a6">optional\</font> si el anuncio debe poder conectarse o no los anuncios no conectables son el comportamiento predeterminado persistente \<font color="#6b21a8">bool\</font> \<font color="#14b8a6">optional\</font> si el anuncio debe persistir después de cada reinicio los anuncios eddystone url son persistentes de forma predeterminada mode "eddystone uid" este modo utiliza el formato eddystone uid https //github com/google/eddystone/tree/master/eddystone uid espacio de nombres un valor de 10 bytes expresado como 20 dígitos hexadecimales instancia un valor de 6 bytes expresado como 12 dígitos hexadecimales tx power \<font color="#6b21a8">int\</font> \<font color="#14b8a6">optional\</font> especifica el nivel de potencia tx en dbm a 0 metros el valor predeterminado es 19, que corresponde a un nivel de 60dbm a 1 metro la práctica de calibración recomendada consiste en medir a 1 metro y sumar 41 por ejemplo, un rssi de 65dbm da lugar a un valor de 24 conectable \<font color="#6b21a8">bool\</font> \<font color="#14b8a6">optional\</font> si el anuncio debe poder conectarse (para gatt u otros servicios) los anuncios no conectables son el comportamiento predeterminado persistente \<font color="#6b21a8">bool\</font> \<font color="#14b8a6">optional\</font> si el anuncio debe persistir después de cada reinicio los anuncios eddystone url no son persistentes de forma predeterminada mode "custom" este modo admite datos personalizados arbitrarios en un campo específico del proveedor cutom manufacturer data \<font color="#14b8a6">optional \</font> una matriz asociativa que contiene dos claves fabricante un valor entero de 2 bytes (0 a 65535) datos una instancia de robytearray que contiene datos service uuid \<font color="#14b8a6">opcional\</font> un conjunto de elementos serviceuuid, que se pueden especificar como un arreglo de cadenas uuid o un arreglo de arreglos asociativos que contienen un par clave/valor uuid cada arreglo asociativo también puede contener una clave datos , que especifica servicedata como una instancia de robytearray conectable \<font color="#6b21a8">bool\</font> \<font color="#14b8a6">opcional\</font> indica si el anuncio debe ser conectable o no los anuncios no son conectables de forma predeterminada persistente \<font color="#6b21a8">bool\</font> \<font color="#14b8a6">opcional\</font> indica si el anuncio debe persistir después de cada reinicio los anuncios personalizados no son persistentes de forma predeterminada para especificar múltiples anuncios, pase un arreglo de arreglos asociativos al método startadvertising() los anuncios se enviarán en rotación el método fallará si uno o más anuncios son incorrectos; pruebe cada anuncio individualmente y llame a getfailurereason() para determinar qué anuncio está causando el error llamar al método startadvertising() reemplazará cualquier anuncio anterior puede cambiar una lista de anuncios modificando el arreglo y llamando a startadvertising() nuevamente ejemplos este script utiliza robtmanager getadapterlist() para determinar si hay adaptadores bluetooth disponibles btm = createobject("robtmanager") if btm getadapterlist() count() > 0 then print "bluetooth available" este script construye dos arreglos asociativos para anuncios con el formato "beacon" y luego los transmite ambos adv1 = { mode "beacon", beacon uuid "41fac2b21 c8cb 41e7 b011 12d1016dd39e", beacon major 400, beacon minor 22 } adv2 = { mode "beacon", beacon manufacturer \&h4c, beacon uuid "41fac221 c8cb 41e7 b011 12d1016dd39e", beacon major \&h1234, beacon minor \&hff01, beacon level 50 } advlist = \[adv1, adv2] bm startadvertising(advlist) el arreglo asociativo también se puede construir en partes adv1 = { mode "beacon"} adv1 append({ beacon uuid "41fac221 c8cb 41e7 b011 12d1016dd39e" }) adv1 append({ beacon major 32000, beacon minor 100 }) este script construye un anuncio con el formato "eddystone url" también utiliza el parámetro opcional tx power adv1 = { mode "eddystone url", url "http //www brightsign biz", tx power 24} este script construye un anuncio con formato personalizado custom adv = createobject("robytearray") custom adv fromhexstring("0215434b2eb8c28f40898e7a1e644bb13b9fa000b001c5") adv2 = { mode "custom", custom manufacturer data { manufacturer \&h4c, data custom adv } }