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)

 

 

IVCB – Isabel de Villena Club de Basket

Durante las temporadas  2015-2016 y 2016-2017 Sonotrigger patrocinó al  club de baloncesto mixto del IES Isabel de Villena de Valencia. Lo acompañamos la primera temporada en su nacimiento y en los primeros partidos amistosos, y en siguiente en sus primeras competiciones en la liga municipal en las categorías infantiles y cadetes.  Nos alegra que en esta temporada 2017-2018 ya cuente con una nutrida plantilla que compite en las categorias infantil, cadete y juvenil.

Equipos infantil-mixto, cadetes-mixto y juveniles-masculino del Isabel de Villena Club de Baloncesto (Malva-rosa, Valencia, España) temporada 2017-2018 junto a los entrenadores Manuela y Carlos, y la directora del centro (Foto Sonotrigger Software).

 

Weather34 con Weewx en Raspberry Pi

Después de arrancar Weewx en una Raspberry Pi 3 model B con Raspbian, pensamos en publicar los resultados en web mediante Weather34, cuyo diseño nos encanta.

PWS with weeWX and weather34

Personal Weather Station with WU connection working at weeWX & weather34

Puede haber otras muchas soluciones, pero a continuación describimos la que hemos implementado y comprobado su funcionamiento:

  • Instalar PHP en Apache: sudo apt-get install php libapache2-mod-php -y
  • Descargar en la Raspberry Pi la versión de Weather34 para Meteobridge, y descomprimir.
  • Copiar los archivos y directorios descomprimidos en el directorio (Que hemos creado previamente) /var/www/html/weather34 (En /var/www/html/weewx tenemos weewx ).
  • En el directorio /etc/apache2/conf.d/ crear el archivo weather34.conf (p.e. tocuh weather34.conf y después invocar el Text Editor que se encuentra en los accesorios de Raspbian ) con el siguiente contenido (Permite que Apache2 localizar los fuentes php de weather34 para servirlos a las peticiones de un navegador, hicimos algo similar en la instalación de weewx):
Alias /weather34 /home/weather34/public_html
<Directory /home/weather34/public_html>
 Options FollowSymlinks
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>
  • Editar el fichero /etc/weewx/skins/Standar/skin.conf e incluir la entrada:
[[[MBrealtime]]]
 template = MBrealtime.tmpl
  • Editar  /etc/weewx/weewx.conf e incluir al final de la entrada [StdReport] 
[[[MBrealtime]]]
 skin = MBrealtime
  • Para probar el correcto funcionamiento de los informes podemos lanzar el proceso que los genera.
pi@raspberrypi:~ $ wee_reports /etc/weewx/weewx.conf
Using configuration file /etc/weewx/weewx.conf
Generating for all time

Con estas definiciones, cuando se ejecuta periodicamente la generación de informes, StdReport de Weewx, se invoca al skin MBrealtime que usa el template del mismo nombre que encuentra en MBrealtime.tmpl.  Cheetah, incluido en weewx a partir de la definición encontrada en MBrealtime.tmpl (En puede descargar una versión beta de http://software.sonotrigger.com/weather34/MBrealtime.tmpl ) generará un fichero con los datos en formato Meteobridge que servirán de entrada de Weather34, cuando se copien al directorio de weather34.

Para la copia del fichero de entrada y la actualización de weather34 hay que incluir dosentradas en el crontab (Se merece otra entrada):

  • /var/www/html/weather34/cronfiles/weewx.sh (Cada 5′, hay que crearlos).
  • /var/www/html/weather34/cronfiles/stationcron.php (Cada 30′, en mbdbfiles).

El scrip de copiar ficheros puede ser algo así (mbridge/MBrealtimeupload.txt  son los valores por defecto de Weather34 Meteobridge):

#!bin/bash
# /var/www/html/weather34/weewx.sh
sudo touch /var/www/html/weather34/mbridge/MBrealtimeupload.txt
sudo cp -afv /var/www/html/weewx/MBrealtime 
/var/www/html/weather34/mbridge/MBrealtimeupload.txt

Ahora solamente falta parar y arrancar Apache y a continuación weeex y poner en el navegador de la raspberry http//localhost/weather34 o en un dispositivo conectado a la red local sustituyendo localhost por la IP asignada a la Raspberry y debería funcionar.

weeex con weather34