marketing de proximidad y open source :-: sesion 2
DESCRIPTION
Segunda sesión del taller sobre marketing de proximidad y herramientas opensource celebrado en el Gran Canaria Desktop Summit 2009TRANSCRIPT
![Page 1: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/1.jpg)
Marketing de proximidad y Herramientas OpenSource
GCDS09
Roberto Dí az Ortega ([email protected])Gema Socorro Rodrí guez ([email protected])Universidad de Las Palmas de Gran Canaria
![Page 2: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/2.jpg)
Sesión 2
Librería Bluez FuncionalidadesArquitectura Ejemplo de uso
Librería BluecoveEstructuraEjemplo de uso
Diversas demos sobre funcionamiento de BlueZ y bluecove
![Page 3: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/3.jpg)
¿Qué es BlueZ?
BlueZ proporciona soporte para el núcleo de Bluetooth y sus protocolos, además dispone de interesantes características como:
✔ Implementación completamente modular
✔ Sistema Multithread
✔ Soporte para multiples dispositivos Bluetooth
✔ Abstracción real del hardware
✔ Socket standard para todas las capas
✔ Soporte de seguridad a nivel de dispositivo y servicio
![Page 4: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/4.jpg)
¿Qué es BlueZ? (II)
Actualmente Bluez implementa los siguientes módulos:
✔ Bluetooth kernel subsystem core
✔ Capas L2CAP y SCO audio kernel
✔ RFCOMM, BNEP, CMTP y HIDP kernel
✔ HCI, UART, USB PCMCIA y virtual devices drivers
✔ Librerias generales y librerias SDP así como demonios
✔ Utilidades de configuración y testeo
✔ Decodificadores de protocolo y herramientas de análisis
![Page 5: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/5.jpg)
Arquitectura de BlueZ
GNOME KDE Maemo OpenMoko
D-Bus System Bus
BlueZ Core + Servicios
![Page 6: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/6.jpg)
Arquitectura de BlueZ (II)
![Page 7: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/7.jpg)
Arquitectura de BlueZ (III)
La Pila de protocolos de BlueZ esta definida como:
![Page 8: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/8.jpg)
Empieza la acción....
La librería BlueZ esta disponible en la mayoría de las distribuciones linux actuales:
La instalación en distribuciones tipo debian:
apt-get install libbluetooth-dev bluez-utils
La instalación en distribuciones tipo fedora:
yum install bluez-devel
Para envíos bluetooth también es necesario instalar ObexFTP
![Page 9: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/9.jpg)
Empieza la accion... (II)
Una vez instalada la librería BlueZ en el equipo se tiene acceso directo desde la consola de comandos al dispositivo bluetooth:
Inicio del servicio de bluetooth en el equipo:
/etc/init.d/bluetooth start
Una vez iniciado el servicio comenzamos a trabajar con elhcitool, la herramienta del controlador del interfaz.
![Page 10: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/10.jpg)
hcitool
Una vez instalada la libreria BlueZ se tiene acceso directo al dispositivo bluetooth desde el equipo.
El comando hcitool permite obtener y configurar gran parte de las características bluetooth:
✔ dev: Listado de dispositivos locales✔ inq: Busqueda de dispositivos remotos✔ scan: Busqueda de dispositivos remotos ✔ name <bdaddr>: Nombre de un dispositivo remoto✔ info <bdaddr>: Información de un dispositvo remoto✔ con: listado de conexiones abiertas✔ rssi: nivel de potencia de señal recibida
![Page 11: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/11.jpg)
hcitool (demo)
![Page 12: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/12.jpg)
sdptool
Una vez se conocen los dispositivos por medio del hcitool. sdptool permite obtener los servicios bluetooth asociados a cada dispositivo remote:
✔ search <bdaddr> service: búsqueda de servicios ✔ browser <bdaddr>: Listado de servicios remotos
![Page 13: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/13.jpg)
sdptool (demo)
Teclado no encontrado… presione cualquier tecla para continuar…
by Windows
![Page 14: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/14.jpg)
rfcomm
El servicio rfcomm implementa un puerto serie vía bluetooth:
✔ bind <dev> <bdaddr> <canal>: Abre una conexión
RFCOMM ✔ release <dev>: Cierra conexión abierta
![Page 15: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/15.jpg)
Comandos AT (hacking mode ON ...)
Los comandos AT permiten acceder a las capacidades de comunicación de los dispositivos remotos a través de bluetooth: ✔ ATI: Devuelve el fabricante del dispositivo✔ AT+CGMM: Devuelve el modelo del dispositivo✔ AT+CGMR: Devuelve el firmware del dispositivo✔ AT+CGSN: IMEI del terminal✔ AT+CBC: Devuelve la carga de la batería✔ ATD<numero>;: Inicia una llamada de teléfono
![Page 16: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/16.jpg)
rfcomm y Comandos AT (demo)
![Page 17: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/17.jpg)
obexftp y el marketing
Obexftp es una aplicación que permite el envío de archivos a través del protolo OBEX:
obexftp -b <dbaddr> -B <canal Obex> -U -p <fichero>
![Page 18: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/18.jpg)
obexftp demo
![Page 19: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/19.jpg)
Integrando todo .... (demo)
Llegados a este punto se disponen de todas las herramientas necesarias para llevar a cabo la integración y creación del primer emisor bluetooth
![Page 20: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/20.jpg)
Bluecove
Bluecove es una libreria java que implementa la especificación JSR-82 multiplataforma.
✔ La librería soporta los siguientes perfiles bluetooth:✔ SDAP: Perfil de descubrimiento de servicios✔ RFCOMM: Emulación del puerto serie✔ L2CAP: Enlace lógico y protocolo de adaptación✔ OBEX:Protocolo de intercambio de archivos
![Page 21: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/21.jpg)
Bluecove
![Page 22: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/22.jpg)
Bluecove (LocalDevice)
La clase LocalDevice define las funciones básicas de bluetooth sobre el dispositivo local
✔ getBluetoothAdress: obtiene la dirección local✔ getDeviceClass: Obtiene la clase del dispositivo local✔ getDiscoverable: Permite saber si el dispositivo es descubrible✔ getDiscoveryAgent: Obtiene el discovery agent del dispositivo✔ getFriendlyName: Obtiene el nombre del dispositivo✔ getLocalDevice: Obtiene el control del dispositivo local✔ setDiscoverable: Configuración descubrible
![Page 23: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/23.jpg)
Bluecove (RemoteDevice)
La clase RemoteDevice define las funciones básicas de bluetooth sobre el dispositivo remoto
✔ getBluetoothAdress: obtiene la dirección remoto✔ getFriendlyName: Obtiene el nombre del dispositivo✔ getRemoteDevice: Control del dispositivo remoto bajo un protocolo determinado por conn
![Page 24: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/24.jpg)
Bluecove (DiscoveryAgent)
La clase DiscoveryAgent proporciona los métodos necesarios para la búsqueda de dispositivos y servicios
✔ cancelInquiry: detiene la búsqueda de dispostivos✔ cancelServiceSearch: Detiene la búsqueda de servicios✔ searchService: Implementa la búsqueda del servicio indicado por UUID✔ startInquiry: Inicia la búsqueda de dispositivos
![Page 25: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/25.jpg)
Bluecove (DiscoveryListener)
La interfaz DiscoveryListener incluye los diferentes métodos que se ejecutan durante la búsqueda de dispositivos y servicios
✔ deviceDiscovered: Se ejecuta al encuentrar un dispositivo✔ inquiryCompleted: Ejecutado al finalizar la búsqueda✔ serviceDiscovered:Se ejecuta al encontrar un dispositivo✔ serviceSearchCompleted: Ejecutado al finalizar la búsqueda de servicios
![Page 26: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/26.jpg)
Bluecove (UUID)
La clase UUIDdefine los identificadores de cada uno de los servicios de bluetooth
Servicios UUIDSDP 0x0001
RFCOMM 0x0003OBEX 0x0008HTTP 0x000CL2CAP 0x0100BNEP 0x000F
Serial Port 0x1101ServiceDiscoveryServerServiceClassID 0x1000BrowseGroupDescriptorServiceClassID 0x1001
PublicBrowseGroup 0x1002OBEX Object Push Profile 0x1105OBEX File Transfer Profile 0x1106
Personal Area Networking User 0x1115Network Access Point 0x1116
Group Network 0x1117
![Page 27: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/27.jpg)
OBEX (ClientSession)
La interfaz ClientSession proporciona los métodos para peticiones OBEX, estableciendo las cabeceras de conexión de OBEX.
✔ connect: Establece una conexión OBEX✔ disconnect: Cierra la conexión OBEX actual✔ createHeaderSet: Crea una cabecera OBEX para una conexión✔ put: Realiza una operación de envío de comando
![Page 28: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/28.jpg)
OBEX (HeaderSet)
La interfaz HeaderSet establece las cabeceras de la comunicacióna través de OBEX y recibe las respuestas del dispositivo remoto
✔ getResponseCode: Obtiene la respuesta del dispositivo✔ setHeader: Configura parámetros de la cabecera
![Page 29: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/29.jpg)
OBEX (Operation)
La clase Operation implementa los métodos para la manipulaciónde operaciones de PUT y GET simples a través de OBEX
Hereda de la clase io los métodos de openInputStream y openOutputStream
![Page 30: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/30.jpg)
Estructura de un emisor bluetooth
Gestión de dispositivosremotos
Gestión de envíos
Bluez obexFTP
Un sistema de marketing de proximidad esta compuesto por los siguientes bloques:
Monitorización y logs
![Page 31: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/31.jpg)
Gestión de dispositivos remotos
Busqueda de dispositivos
Busqueda de servicios
Baneado
inicio
inicio
Envío
si
no
![Page 32: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/32.jpg)
Gestión de dispositivos remotos
Solicitud de envio
Aceptado
si
Rechazado
nosi
no
Enviar archivo
registrarBanear
registrarBanear
inicio
![Page 33: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/33.jpg)
Monitorización y Logs
Este módulo constituye una base de datos donde se almacenanlos datos de envíos aceptados, rechazados ignorados.
Gracias a estos ficheros de logs se puede evitar que el sistemaenvíe a un usuario que haya rechazado una nueva petición de envío. Se pueden establecer políticas de reenvío en función de parámetros como tiempo desde el último envío rechazado.
![Page 34: Marketing de Proximidad y Open Source :-: Sesion 2](https://reader034.vdocuments.mx/reader034/viewer/2022052412/559144371a28ab535d8b456f/html5/thumbnails/34.jpg)
nodo bluecove (demo)
Una imagen vale más que mil palabras
pero ocupa más memoria....
proverbio freak