Programando BLE en RPi con Python

Es posible escribir programas para RPi (Raspberry Pi) que utilicen BLE, por ejemplo con Python.

Para ello debemos instalar previamente las librerias Bluez (5.48) y Bluepy

Para instalar Bluepy se puede hacer de forma automática

$ sudo apt-get install python3-pip libglib2.0-dev
$ sudo pip3 install bluepy

o de forma manual

$ sudo apt-get install git build-essential libglib2.0-dev
$ git clone https://github.com/IanHarvey/bluepy.git
$ cd bluepy
$ python setup.py build
$ sudo python setup.py install

Se puede probar la correcta instalación mediante el comando python btle.py XX:XX:XX:XX:XX:XX

Para instalar Bluez

sudo apt-get update 
sudo apt-get install libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libical-dev libreadline-dev libudev-dev libusb-dev make
mkdir -p work/bluepy
cd work/bluepy
wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.4.tar.xz
xz -d bluez-5.4.tar.xz
tar xvf bluez-5.4.tar
cd bluez-5.4
./configure --disable-systemd
make
sudo make install

Para probar

pi@raspberrypi:~/bluepy_src/bluepy/bluepy $ lsusb
Bus 001 Device 004: ID 145f:01d3 Trust 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Crontab: Tareas programadas en Raspberry Pi

Además del Autorun que permite lanzar una tarea en el arranque de la Raspberry PI, también podemos programar tareas con Crontab, que es la lista o fichero de tareas que debe ejecutar el  cron (daemon o demonio de tareas programadas) en Raspbian (Linux Debian) y que hemos necesitado para la configuración de Weather34 – Weewx sobre Raspberry Pi.

Además de invocarlo con el comando “crontab  -e” también se puede invocar al entorno gráfico o GUI con el comando  “gnome-schedule” si previamente lo hemos instalado con “sudo apt-get install gnome-schedule“.

El formato de las órdenes de crontab es sencillo:

  • minutos (0-59)
  • hora(0-23)
  • día del mes(1-31)
  • mes (1-12)
  • dÍa de la semana (0-7 domingo )
  • comando

Crontab admite varios valores separadas por comas “,” y rangos separados por guion “-“ así como el asterisco “*” para incluir todos los valores, y  etiquetas como  “@reboot “ (cada reinicio) , @annually (cada año), @monthly (cada mes),  @weekly (cada semana), @daily (Cada día), @hourly (Cada hora) y # para los comentarios.

Por ejemplo:

# Ejecuta la tarea de Weather34 cada media hora
0,30 * * * * /var/www/html/weather34/cronfiles/stationcron.php

En el ejemplo se ejecuta en los minutos 0 y 30 de cada hora de cada día “stationcron.php”

@reboot python /home/pi/myscript.py &

En este segundo ejemplo en el arranque se ejecuta el programa “myscript.py”, ¡atención! poner & para se ejecute en segundo plano y no pare el inicio de la Raspberry pi

Con “crontab -l” se pueden listar las ordenes programadas en crobtab.

En el directorio /etc/cron.d están los archivos crontab comunes a la instalación (listelos por curiosidad)