Internet de las cosas con Raspberry Pi 3

Internet de las cosas con Raspberry Pi 3

¿Internet de las cosas con Raspberry Pi 3? Recientemente uno de nuestros clientes nos planteó un proyecto que suponía un reto importante a nivel tecnológico… Se trataba de un proyecto de recogida de datos masiva, almacenamiento y explotación de la información recibida usando un Micro ordenador lowcost Raspberry PI… algo típico de entornos de Internet de las Cosas.

Como partners de Microsoft, lo primero que pensamos es como abordar el proyecto con tecnología Microsoft y tras identificar que teníamos los mimbres, nos pusimos manos a la obra…La tecnología Microsoft para gestionar entornos Internet de las cosas con Raspberry Pi 3 pasa por la utilización de sistemas operativos específicos como Microsoft Windows 10 IOT.

La tecnología Internet de las cosas con Raspberry Pi 3 se fundamenta en algo muy sencillo: recoger datos. Sensores, eventos, accesos a páginas web, transacciones comerciales, etc…Todos estos elementos tienen una característica en común, que es la de producir grandes cantidades de datos, y a veces en cortos periodos de tiempo.

La utilización de sistemas para recogida de estos datos, la mayor parte de las veces, requiere de sistemas distribuidos que van recogiendo información y agregando para poder realizar un análisis posterior, bien con técnicas de análisis de datos mediante datawarehouse, bien con técnicas de análisis basadas en Big Data.

Habitualmente los datos llegan desde la fuente hacia los sistemas de recogida y estos se encargan de “retransmitir” esta información a los datacenters para que se realicen los procesos clásicos de extracción, transformación, carga y agregación para su explotación analítica o para su transformación en base de datos no relacionales para su posterior explotación con herramientas de big data.

Pero muchas veces estos sistemas no son capaces de transmitir la información en tiempo real (falta de conectividad disponible, optimización del ancho de banda para acumular el envío, etc) y entonces es necesario almacenar dicha información localmente en el dispositivo de recepción de eventos.

Los dispositivos de recepción de eventos cada vez tienden a utilizar sistemas micro ordenador,  máquinas lowcost como pueden ser los sistemas Internet de las cosas con Raspberry Pi 3. Estas máquinas tienen potencia suficiente para manejar el flujo de información de entrada y el almacenamiento local, pero no suelen estar pensadas para emplear un almacenamiento local de “alto rendimiento”. Sin restar capacidad de proceso, son máquinas mucho más económicas y ergonómicas que un PC convencional.

rasperrypi3

Cuando a los sistemas basados en micro ordenadores se les exige rendimiento, uno queda sorprendido de su alta capacidad. Estas pequeñas joyas llevan procesadores muy potentes y su específica dedicación a una misión, unido a que pueden montar sistemas operativos especializados, hacen que sean ideales para este tipo de entornos de Internet de las Cosas…Pero…cuando se les lleva al límite de almacenamiento, y máxime, cuando son receptores de centenares de sensores, el almacenamiento (grabar en la tarjeta MicroSD o en un disco duro SSD conectado por USB) puede ser crítico y esa necesidad de tener el almacenamiento temporal en la máquina para su posterior utilización, puede ser inviable.

Nuestro cliente nos planteó, la posibilidad de explotar la información en la propia unidad de recepción (en las Raspberry Pi con una aplicación visual bajo Windows 10 IOT). Por tanto, la cosa se complicaba: recibir mucha información, almacenarla localmente, visualizar eventos concretos, agregar otros eventos y cada cierto tiempo transmitir la información a un datacenter para su explotación analítica. Visto lo visto, el almacenamiento temporal en sistemas de ficheros no bastaba (además podría producir un cuello de botella cuando 50 sensores estuviesen mandando información simultáneamente).

windows10-raspberry

Y para ello, nuestra propuesta fue:

  • Usar tecnología Internet de las cosas con Raspberry Pi 3.
  • Emplear Microsoft Windows 10 IOT como sistema operativo para internet de las cosas.
  • Programar con Microsoft C# (C Sharp) funciones basadas en sockets que escuchan permanentemente la recepción de datos desde los sensores.
  • Emplear una base de datos relacional para almacenamiento en SQLLite.
  • Agregar localmente los eventos de entrada en SQLLite.
  • Visualizar eventos críticos en el front-end.
  • Explotar la información mediante un front-end de consultas contra la máquina de recepción.
  • Volcar al datacenter por paquetes usando FTP.

Y los resultados de nuestro prototipo no pueden ser mejores. Estamos muy contentos del resultado:

  1. La solucion Internet de las cosas con Raspberry Pi 3 funciona como un auténtico tiro!!!.
  2. El sistema operativo Windows 10 IOT responde a la perfección para este tipo de necesidades de captura de eventos y además nos permite visualizar la información a la vez que estamos capturando…
  3. Los sockets de escucha programados con C# permiten una recepción en tiempo real de los eventos (esto ya lo sabíamos desde hace mucho… tenemos varias experiencias en sistemas críticos al respecto).
  4. La base de datos SQLlite es sorprendentemente rápida…con un matiz que explico a continuación.
  5. Podemos agregar al ritmo de entrada de los eventos (¡cuasi tiempo real!!!).
  6. Podemos consultar simultáneamente los datos de entrada a la vez que se reciben nuevos datos.
  7. El Envió de información al data center no tiene misterio…
  8. Trabajando 24×7, un sistema de Internet de las cosas con Raspberry Pi 3!!!!

Y el matiz del que hablábamos: SQLLite no está pensado para un proceso transaccional masivo. No es bueno para gestionar miles de transacciones por minuto y mantener el tipo…Los primeros resultados fueron decepcionantes… Si poníamos un sensor a enviar información (2 inputs por segundo) funcionada muy bien… Cuando añadíamos un segundo sensor, el sistema se mantenía en unos parámetros aceptables… cuando introducimos un tercer y cuarto sensor el rendimiento decaída haciendo inviable la solución.

SQLite370 base de datos relacional compatible con Windows 10 IOT

SQLite, base de datos relacional compatible con Windows 10 IOT y Raspberry Pi3

Pero nuestro departamento de I+D+i buscó una solución imaginativa. Primero intentamos identificar el porqué de la lentitud… leyendo la documentación de SQLLite las cosas quedan bien claras…”no es un sistema para almacenar en un entorno de alta concurrencia” … (es ideal para un móvil guardando datos del usuario, pedidos, realización de consultas a la base de datos, etc…) Y la lentitud procede del sistema de transacciones que proporciona SQLLite… El caso es que, si cada evento lo introducimos en una transacción individual, el sistema no es capaz de responder… por lo que la solución iba encaminada a resolver este problema…y encontramos la solución, crear una cola de eventos y empaquetar la gestión de almacenamiento y hacer transacciones con más elementos, para evitar el que se “abra la transacción y que se cierre la transacción, que es lo que cuesta…

De esta forma la mejora del rendimiento es espectacular, llegando a poner 50 sensores enviando un input cada medio segundo…y el sistema respondiendo a la perfección… Lo que hicimos es gestionar el que cada 5 segundos la cola de mensajes procesaba su actualización y cerraba la transacción y todos los mensajes enviado en ese lapso se procesaban en una única transacción.

¿Riesgo? Que la transacción falle y que perdamos 5 segundos de datos…Lo asumimos…

Beneficios: El tener un sistema capaz de estar recogiendo datos de sensores a un ritmo excelente (mediante sockets programados con c#), con una tecnología de bajo coste (Raspberry pi 3 + Windows 10 IOT), con una base de datos de dominio público como SQLLite (incluido el uso comercial) y que presenta un rendimiento “increíble” y que todo junto permite que el sistema, incluso presente por pantalla la información que está entrando y que es crítica: por ejemplo, una alarma de hurto. Una solución de las llamados de “internet de las cosas”.

Estamos encantados con este nuevo reto de IOT para entornos industriales y con los resultados obtenidos.

Si desea obtener más información, no dude en ponerse en contacto con nosotros a través de nuestra área de contacto para conocer más sobre Internet de las cosas con Raspberry Pi 3.

 

Tags: , , , ,