miércoles, 27 de marzo de 2019

Revisión de datos con Raspberry pi y Grafana (I)

Raspberry Pi
Grafana

Lo reconozco, Grafana me ha sorprendido y he querido realizar este articulo para explicar como ha sido esta aproximación.
Lo primero, ¿que es Grafana? Pues se trata de un software libre, basado en Apache y nos permite la visualización de datos mediante cuadros de mando.
De una forma mas clara, nos sirve para mostrar gráficas de nuestros datos "IOT".
Aprovechando que tenia un nuevo sensor, um BME280, el cual recoge temperatura, humedad y presión atmosférica, he realizado un pequeño proyecto para tener esta primera toma de contacto con Grafana, Vamos con ello.
Básicamente, lo que vamos ha realizar es tomar los datos del sensor BME280, mostrarlos en pantalla y registrarlos en una Base de datos MySQL para luego, mediante Grafana acceder a ellos y analizar estos datos.

En esta primera parte nos vamos a centrar en como conectar el BME280 y el programa necesario para obtener los datos del sensor.

¿que necesitamos?

  • Raspberry Pi
  • Sensor BME280
  • Cables de conexión
  • Protoboard

El esquema de conexión es el siguiente:


Este sensor admite conexiones por I2C o por SPI, en este caso he optado por I2C, no olvidéis activar este tipo de conexión en las opciones de configuración de vuestra Raspberry, Preferencias - Configuración de Raspberry Pi - Interfaces.

Crearemos nuestra base de datos MySQL, para ello utilizaremos PhpMyAdmin. puedes revisar la instalación en la entrada anterior del blog:

Servidor Web con Raspberry Pi y Arduino (II)


la base de datos la he llamado "BME280", contiene una sola tabla "Valores" y los campos contenidos son:

  • Id  - INT(11)
  • Temperatura  - Float (10,2)
  • Humedad  - Float (10,2)
  • Presion  - Float (10,2)
  • Altitud  - Float (10,2)
  • Registro  - Timestamp
En el repositorio de Github podéis encontrar el archivo BME280.sql para crear esta tabla


Para el código, teniendo en cuenta que se ejecutara en Raspberry he utilizado Python, este es el ejecutable completo:

import mysql.connector
import time 
import board
import busio
import adafruit_bme280
i2c = busio.I2C(board.SCL, board.SDA)
bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)
bme280.sea_level_pressure = 1013.25

while True:
   Temperatura = "%0.2f" % bme280.temperature 
   Humedad = "%0.2f" % bme280.humidity
   Presion = "%0.2f" % bme280.pressure
   Altitud = "%0.2f" % bme280.altitude 

   print ("\nTemperatura: " + Temperatura + " ºC")
   print ("Humedad: " + Humedad + " % H")
   print ("Presión: " + Presion + " hPa")
   print ("Altitud: " + Altitud + " metros")

   con = mysql.connector.connect(host='localhost', database='BME280', user='TU_USER', password='TU_CONTRASEÑA')
   cursor= con.cursor()
   cursor.execute("INSERT INTO Valores (Temperatura, Humedad, Presion, Altitud) VALUES (%s, %s, %s, %s)" %(Temperatura, Humedad, Presion, Altitud))

   con.commit()
   cursor.close()
   con.close()
   time.sleep(60)

A tener en cuenta, tendremos que instalar dos librerías:

  • MySQL Connector (en mi caso, al utilizar Thonny Python IDE, he instalado la librería mediante la utilidad que incorpora, Tools-Manage Plugin pero con el comando: pip3 install mysql-connector se realizara la instalación)
  • Adafruit bme280 (Esta librería también es posible realizar la instalación desde Thonny Python IDE)
una vez conectado, creada la base de datos y salvado el archivo "BME280_MySQL.py", podremos ejecutarlo mediante:

 #python3 BME280_MySQL.py

nos mostrara en pantalla, cada 60 segundos, los valores correspondientes a temperatura, humedad, presión atmosférica y altitud.
También, para comprobarlo deberemos ir a "phpmiadmin", no estará registrando el la base de datos BME280 estos valores.

Para comprobar la dirección I2C de nuestro sensor usaremos el comando:
i2cdetect -y 1
esto nos mostrara una tabla con las direcciones asignadas.

En /usr/local/lib/python3.5/dist-packages encontramos el fichero adafruit_bme280.py por defecto, la dirección asignada es:

_BME280_ADDRESS = const(0x76) 

Si no coincide con la mostrada por el comando i2cdetect podemos modificar el fichero.
Bien, hasta aquí esta primera parte, continuamos en:

Revisión de datos con Raspberry pi y Grafana (II)



No hay comentarios:

Publicar un comentario