Skip to content

Dockerized service to broadcast different beacon packages for system with BLE support

License

Notifications You must be signed in to change notification settings

gotoiot/service-beacons-broadcaster

Repository files navigation

logo

Service Beacons Broadcaster

Ayudaría mucho si apoyaras este proyecto con una ⭐ en Github!

Bluetooth es un protocolo que sirve para crear redes personales de manera inalámbrica en la banda de 2.4 Ghz. BLE es la version low energy del protocolo Bluetooth orientada a dispositivos de bajo consumo. Las comunicaciones dentro de BLE pueden realizarse bajo el esquema de Advertising o bien a través de Connections.

Dentro de las comunicaciones mediante el mecanismo de Advertising de Bluetooth Low Energy existe una implementación denominada Beacons, en la que dispositivos emiten periódicamente una señal que contiene información propia que otros dispositivos dentro del rango de cobertura pueden leer y actuar en consecuencia. Dentro de los beacons existen distintos protocolos, los más conocidos son iBeacon desarrollado por Apple y Eddystone desarrollado por Google, aunque también existen otras implementaciones.

Este proyecto es un broadcaster de distintas tramas beacons que funciona sobre sistemas Linux que posean una placa con BLE. Está desarrollado en Python y se ejecuta sobre un contenedor de Docker.

Para que este servicio funcione deberías contar con un host que tenga Bluetooth LE 4.0+.

El soporte actual es únicamente para tramas iBeacon.

Instalar las dependencias 🔩

Para correr este proyecto es necesario que instales Docker y Docker Compose.

Mira cómo instalar las dependencias

En este artículo publicado en nuestra web están los detalles para instalar Docker y Docker Compose en una máquina Linux. Si querés instalar ambas herramientas en una Raspberry Pi podés seguir este artículo de nuestra web que te muestra todos los pasos necesarios.

En caso que quieras instalar las herramientas en otra plataforma o tengas algún incoveniente, podes leer la documentación oficial de Docker y también la de Docker Compose.

Continua con la descarga del código cuando tengas las dependencias instaladas y funcionando.

Descargar el código 💾

Para descargar el código, lo más conveniente es que realices un fork de este proyecto a tu cuenta personal haciendo click en este link. Una vez que ya tengas el fork a tu cuenta, descargalo con este comando (acordate de poner tu usuario en el link):

git clone https://github.com/USER/service-beacons-broadcaster.git

En caso que no tengas una cuenta en Github podes clonar directamente este repo.

Ejecutar la aplicación 🚀

Cuando tengas el código descargado, desde una terminal en la raíz del proyecto ejecuta el comando docker-compose build beacons-broadcaster que se va encargar de compilar la imagen del broadcaster de beacons en tu máquina (este proceso puede durar unos minutos dependiento tu conexión a internet).

Una vez que haya compilado activa el Bluetooth en el sistema y ejecutá el comando docker-compose up para acceder a todas las herramientas que tiene el servicio. En la terminal deberías ver una salida similar a la siguiente:

      /$$$$$$            /$$                    /$$$$$$      /$$$$$$$$
     /$$__  $$          | $$                   |_  $$_/     |__  $$__/
    | $$  \__/ /$$$$$$ /$$$$$$   /$$$$$$         | $$   /$$$$$$| $$   
    | $$ /$$$$/$$__  $|_  $$_/  /$$__  $$        | $$  /$$__  $| $$   
    | $$|_  $| $$  \ $$ | $$   | $$  \ $$        | $$ | $$  \ $| $$   
    | $$  \ $| $$  | $$ | $$ /$| $$  | $$        | $$ | $$  | $| $$   
    |  $$$$$$|  $$$$$$/ |  $$$$|  $$$$$$/       /$$$$$|  $$$$$$| $$   
     \______/ \______/   \___/  \______/       |______/\______/|__/   

                SERVICE BEACONS BROADCASTER
                ---------------------------

* Run iBeacon broadcaster:
    docker-compose run beacons-broadcaster \
        python bin/run_ibeacon_broadcaster.py \
            --device hci0 --major 20 --minor 10 --power 200

* Stop iBeacon broadcaster 
    docker-compose run beacons-broadcaster \
        python bin/stop_ibeacon_broadcaster.py --device hci0

Si ves esta salida significa que el servicio se encuentra corriendo adecuadamente. Ejecutá cualquiera de las utilidades que posee el servicio con los comandos que aparecen en la salida. Podés leer la información útil para tener un mejor entendimiento de la aplicación.

Información útil 🔍

En esta sección vas a encontrar información que te va a servir para tener un mayor contexto.

Mira todos los detalles

Comandos de los servicios

Cada uno de los servicios toman distintas configuraciones por defecto y si al momento de correr, en el comando de ejecución le pasas algunos flags, estos sobreescriben la configuración por defecto.

Este comando te muestra cómo ejecutar el broadcaster de iBeacons con todos los posibles flags.

docker-compose run beacons-broadcaster \
python bin/run_ibeacon_broadcaster.py \
--device hci0 \
--uuid ffffffff-bbbb-cccc-dddd-eeeeeeeeeeee \
--major 20 \
--minor 10 \
--power 200

Este comando te muestra cómo detener el broadcaster de iBeacons con todos los posibles flags.

docker-compose run beacons-broadcaster \
python bin/stop_ibeacon_broadcaster.py \
--device hci0

Tecnologías utilizadas 🛠️

Mira la lista de tecnologías usadas en el proyecto
  • Docker - Ecosistema que permite la ejecución de contenedores de software.
  • Docker Compose - Herramienta que permite administrar múltiples contenedores de Docker.
  • Python - Lenguaje en el que están realizados los servicios.

Contribuir 🖇️

Si estás interesado en el proyecto y te gustaría sumar fuerzas para que siga creciendo y mejorando, podés abrir un hilo de discusión para charlar tus propuestas en este link. Así mismo podés leer el archivo Contribuir.md de nuestra Wiki donde están bien explicados los pasos para que puedas enviarnos pull requests.

Sobre Goto IoT 📖

Goto IoT es una plataforma que publica material y proyectos de código abierto bien documentados junto a una comunidad libre que colabora y promueve el conocimiento sobre IoT entre sus miembros. Acá podés ver los links más importantes:

  • Sitio web: Donde se publican los artículos y proyectos sobre IoT.
  • Github de Goto IoT: Donde están alojados los proyectos para descargar y utilizar.
  • Comunidad de Goto IoT: Donde los miembros de la comunidad intercambian información e ideas, realizan consultas, solucionan problemas y comparten novedades.
  • Twitter de Goto IoT: Donde se publican las novedades del sitio y temas relacionados con IoT.
  • Wiki de Goto IoT: Donde hay información de desarrollo complementaria para ampliar el contexto.

Muestas de agradecimiento 🎁

Si te gustó este proyecto y quisieras apoyarlo, cualquiera de estas acciones estaría más que bien para nosotros:

  • Apoyar este proyecto con una ⭐ en Github para llegar a más personas.
  • Sumarte a nuestra comunidad abierta y dejar un feedback sobre qué te pareció el proyecto.
  • Seguirnos en twitter y dejar algún comentario o like.
  • Compartir este proyecto con otras personas.

Autores 👥

Las colaboraciones principales fueron realizadas por:

  • Agustin Bassi: Ideación, puesta en marcha y mantenimiento del proyecto.

También podés mirar todas las personas que han participado en la lista completa de contribuyentes.

Licencia 📄

Este proyecto está bajo Licencia (MIT). Podés ver el archivo LICENSE.md para más detalles sobre el uso de este material.


Copyright © Goto IoT 2021 - Website - Group - Github - Twitter - Wiki

About

Dockerized service to broadcast different beacon packages for system with BLE support

Resources

License

Stars

Watchers

Forks

Packages

No packages published