Así que solo tienes algo como un kit Arduino o Raspberry Pi con algunos sensores. Configurar los sensores de temperatura o movimiento es bastante fácil. Pero a que vas a hacer ¿Con todos esos datos? Necesitará almacenamiento, análisis y resumen antes de que sea realmente útil para cualquiera. Necesitas un panel de control!

Pero incluso antes de mostrar los datos, tendrá que almacenarlos en algún lugar, y eso significa una base de datos. Tú podría simplemente envíe todos sus datos a la nube y espere que la compañía que le proporciona el servicio tenga un buen modelo de negocios, pero francamente los registros de incluso las compañías con los bolsillos más profundos y las mejores intenciones no se ven tan bien . Y no aprenderás nada útil al tomar la salida más fácil de todos modos.

En su lugar, vamos a tomar la segunda salida más fácil. Aquí hay un breve tutorial para ponerlo en funcionamiento con un backend de base de datos en una Raspberry Pi y un elegante panel de control en su computadora portátil o teléfono celular. Usaremos scripts y Docker para automatizar tantas cosas como sea posible. Aun así, en el camino aprenderá un poco sobre Python y Docker, pero lo más importante es que tendrá un sistema propio para expandir, personalizar o simplemente experimentar en casa. Después de todo, si la "nube" no te deja jugar con su base de datos, ¿qué tan divertido puede ser?

InfluxDB y Grafana envueltos en Docker

Vamos a juntar nuestras partes, comenzando con la base de datos. InfluxDB es una base de datos de series temporales de código abierto que es rápida y está destinada a almacenar datos que varían con el tiempo, como los datos de su sensor. Procesa estos datos utilizando un lenguaje similar a SQL. Escribir SQL no es idea de diversión, pero es estándar.

Grafana es una plataforma de análisis que te permite visualizar datos y hacer cosas como generar alertas. Es compatible con complementos, lo que significa que permite la integración con otro software. Se utilizará para hablar con nuestro InfluxDB y luego hacer algunas cosas increíbles.

Docker es un programa de contenedorización que básicamente significa que nos permite armar nuestra aplicación, sus dependencias, bibliotecas y componentes en una caja para que sea más fácil para nosotros mantener y mover las cosas. Lo más importante es que nos permite usar contenedores que otros ya han preparado para hacer nuestras vidas más fáciles.

Configurar Docker

Ahora estoy haciendo cosas en Linux, porque tengo la intención de migrar esto a una Raspberry Pi una vez que termine de experimentar. Dicho esto, escribir un par de oraciones en la línea de comandos es tan fácil como navegar por los menús desplegables de todos modos. El primer paso es instalar docker y docker-compose:

 
 
sudo apt-get update && sudo apt-get install docker docker-compose

No hay mucho más que eso en este punto. Reinicie su máquina por si acaso. La documentación para la edición comunitaria puede ayudar a responder una serie de preguntas que pueda tener.

Ya dijimos que las imágenes de la ventana acoplable están disponibles para su uso, por lo que necesitamos una imagen de la ventana acoplable para InfluxDB y otra para Grafana. Para poner las cosas en marcha rápidamente, clone mi repositorio desde GitHub .


git clone https://github.com/inderpreet/py_docker_grafana_influxdb_dashboard.git
ventana acoplable-componer hasta -d
chmod + x add_source.sh && ./add_source.sh
cd pyclient && chmod + x setup_env.sh && ./setup_env.sh
python test.py

Para probar si las cosas funcionan, haz un docker ps -a En una nueva terminal. Esto debería devolver una lista de contenedores que se ejecutan en su sistema. Copie el ID del contenedor de la lista y ejecute docker exec -it 1772a6e6387c afluencia
Reemplazo de la identificación del contenedor para su máquina. Debe obtener un shell influxDB y puede ejecutar comandos como:

mostrar a los usuarios
mostrar bases de datos
crear TecNoticias base de datos

Necesitamos crear una base de datos para almacenar las lecturas de nuestros sensores, así que adelante, haga eso. He usado "TecNoticias" como nombre aunque puede ser cualquier cosa.

Rápidamente, probando cosas:

usar TecNoticias
inserte dummySensor v = 123
inserte dummySensor v = 567
inserte dummySensor v = 000
seleccione * de dummySensor

Después de escribir lo anterior manualmente, debería poder ver los datos en una serie de tiempo.

La marca de tiempo está en nano segundos y puede haber más de un valor de datos para una serie en particular, tal vez uno de cada sensor. Dados algunos nombres mejores, puede mirar los datos de cualquier sensor usando la siguiente consulta SQL: seleccione livingRoom desde TemperatureSensors. Nota: si está rellenando una base de datos de prueba a mano, no coloque espacios entre la coma y el siguiente campo de valor.

El script de Python que he incluido generará datos de un sensor en forma exponencial y restablecerá el valor a 1.1 una vez que llegue a 100.0. Esto debería permitirnos trazar una curva ficticia en Grafana.

Configurar Grafana

Grafana ya está en funcionamiento gracias a la ventana acoplable y se puede acceder a ella en http: // localhost: 3000 Una vez que ingrese la URL en el navegador, Grafana debe saludarle y le solicitará que inicie sesión. A continuación, puede iniciar sesión con nombre de usuario / contraseña admin / admin. (¡Quizás quieras cambiar esto muy pronto!)

A continuación, verifique que Grafana reconozca su InfluxDB, usando "Agregar fuentes" si no. Haga clic en Guardar y probar y para confirmar. Asegúrese de que la casilla de verificación predeterminada en la parte superior esté marcada.

A continuación debemos crear un panel de control. En la barra de menú de la izquierda, seleccione Panel de control> Inicio y Nuevo panel de control. Esto debería escupir un lienzo vacío con algunos iconos.

Seleccione Gráfica y luego haga clic en el título pequeño llamado Título del panel o simplemente presione "e" en su teclado. Luego configúralo para que:

– DataSource se establece en InfluxDB
– selectMeasurement se establece en sensorData
– relleno está configurado para llenar (anterior)

Y en la parte superior, la actualización se establece en 5 segundos y se muestra durante los últimos 15 minutos.

Temperatura de lectura

La razón por la que he dejado el script de Python fuera del contenedor de Docker es para que la vida sea más fácil cuando hagamos los cambios necesarios para leer los datos del sensor. Por ahora, tomemos datos de un sensor conectado localmente conectado a un microcontrolador que puede hablar en serie a su computadora, para que lo lea una rutina de Python.

importar serial

# reemplazar con el nombre del puerto serie
ser = serial.Serial ('/ dev / ttyACM0')
ser.flushInput ()

mientras que True
tratar:
temp_str = ser.readline ()
temp = float (temp_str)
imprimir (temp)
excepto:
imprimir ("Interrupción del teclado")
descanso

Mientras pueda obtener su Arduino o equivalente para escupir números como una cadena, esta secuencia de comandos los recibirá y los convertirá en números de punto flotante. Dejo la parte sobre la introducción de los datos en InfluxDB como un ejercicio para el lector. (Sugerencia: puede copiar y pegar el código desde / en el test.py He provisto.)

Raspberry Pi y el Sense Hat

La siguiente etapa sería pasar a una Raspberry Pi. ¿Tienes uno para navidad? Estas de suerte. Clonar mi repositorio desde GitHub y sigue los mismos pasos que antes. En vez de test.py, Tengo un sense_hat_temperature.py Eso puede ser ejecutado. Con esto, debería poder agregar los valores de SensorData y temperatura y humedad a la base de datos.

Personalización y conclusión

El sistema Docker se configura utilizando el docker-compose.yml expediente. En particular, hay una variable de volúmenes que crea una carpeta local influxdb_data que es donde se escriben los datos. Puede configurarlo para que escriba una unidad externa o incluso una unidad de red.

En el caso de la Raspberry Pi, esto puede ser extremadamente útil. Quería una manera de poder mostrar datos de sensores fácilmente mientras realizaba algunos experimentos de Python y Docker. Sin embargo, esto es solo el comienzo, ya que se puede hacer mucho más.

Hasta ahora, nuestro dispositivo sensor es un Arduino conectado a la computadora por un cable serial. Si queremos tomar esta conexión inalámbrica, debemos pensar en obtener los datos del sensor a la base de datos. Podrías hacerlo peor que utilizando MQTT y WiFi en un ESP8266. Para aplicaciones sensibles al poder, considera Bluetooth LE.

Por ahora, ponga este sistema en funcionamiento y juegue con datos locales. De esa manera, cuando construya el resto de la red de automatización y detección de su hogar, el back-end estará listo para usted.

Dejar respuesta

Please enter your comment!
Please enter your name here