Archivo de la categoría: plataformas

Demo MKRFOX1200

Medición de temperatura y humedad con un Arduino MKRFOX1200 y sistema simple de alarma basado en un umbral superior. Integración en un servidor propio https://www.aprendiendoarduino.com/ y en thingspeak https://thingspeak.com/

Hardware utilizado:

En esta demo demuestra la potencia de la red Sigfox para IoT, usando un sistema simple se va a medir la temperatura y humedad ambiente de forma inalámbrica y con total movilidad. Se usa un sensor de temperatura y humedad DHT22 conectado al MKRFOX1200 que manda mensajes con los datos cada 30 segundos para esta demostración. Para no llegar al límite diario de mensajes de Sigfox habría que hacerlo cada 10 minutos.

En el mensaje se mandan 3 datos:

  • Temperatura (5 bytes en ASCII). De -9.00 a 99.99
  • Humedad (5 bytes en ASCII). De 00.00 a 99.99
  • Evento de alarma (1 byte ASCII). 0 = normal (no event), 1 = alarm triggered, 2 = restore alarm.

Lo mando todo como texto para simplificar todo, pero si puede mandar los float y ahorrar un byte. Un buen ejemplo de base para mandar un float y convertir diferentes tipos de datos para mandar por sigfox: https://github.com/nicolsc/sigfox-weather-station

El propio Arduino detecta la alarma de alta temperatura y manda en el byte de alarma el evento, cuando la alarma se recupera manda un nuevo evento de recuperación.

Puesto que desde el backend de Sigfox no es capaz de distinguir cuando es una alarma o no, ya que solo puede reenviar los datos del mensaje mandado por el dispositivo sigfox, estos datos se reenvían mediante dos callbacks a:

En ambas plataformas la misión es almacenar los datos, representarlos gráficamente y analizar el mensaje y mandar el evento de alarma cuando corresponda. Incluso desde cualquiera de las dos plataformas, se podría hacer la comprobación de alarma al superar el umbral en lugar de mandarlo por mensaje Sigfox. Estas son las tareas que el backend de Sigfox no puede hacer.

La ventaja de usar un servidor/plataforma propia es que los datos los guardamos en nuestra infraestructura y son accesibles para siempre. Para el caso de la plataforma propia aprovechamos para guardar datos adicionales y aprender más de Sigfox:

Y desde la BBDD podríamos ver los valores máximos y mínimos de RSSI y SNR.

El código a cargar en Arduino es https://github.com/jecrespo/AprendiendoArduino-Sigfox

Dispositivos Sigfox y Lora recogiendo datos en campo:

Una vez cargado el código en Arduino y el dispositivo registrado en el backend de Sigfox ya podemos ver los los mensajes en el backend, dentro de device apartado messages.

Los datos del mensaje en el backend se ven en HEX, para comprobar que lo enviado es correcto se puede usar este conversor a ASCII: https://www.rapidtables.com/convert/number/hex-to-ascii.html

Desde el backend las funciones que se pueden hacer con los datos son muy limitadas, así que con el uso de las callbacks podemos reenviar estos datos a plataformas externas.

Estas callbacks transfieren los datos recibidos de los dispositivos asociados al device type a su infraestructura. Para obtener más información, consulte la documentación de callback: https://backend.sigfox.com/apidocs/callback

Las callbacks están asociadas a los device type, he creado dos callbacks una para mandar los datos a la plataforma propia https://www.aprendiendoarduino.com/ y otra para reenviar los datos a thingspeak https://thingspeak.com/

Para  https://www.aprendiendoarduino.com/ el callback es:

Y el código que guarda los datos en la BBDD y manda los mensajes de alarma está hecho en PHP y el código está en: https://github.com/jecrespo/aprendiendoarduino-servicios/tree/master/sigfox y además de guardar los datos en una BBDD, las temperaturas los guarda en otra BBDD para representar gráficamente y se encarga también del envío de alarmas.

Y veo los datos en tiempo real:

Para la plataforma thingspeak: https://thingspeak.com/, hago una llamada a la API de sigfox para actualizar: https://api.thingspeak.com/update.json?api_key=writeapikey&field2={customData#humidity}&field1={customData#temperature}

El callback es:

Este es un esquema de lo que estamos haciendo:

Lo que hago es desde el backend de sigfox es reenviar los datos a la plataforma IoT:

Desde thingspeak hay que configurar un canal con los campos temperatura y humedad y podemos dar una vista pública que puede verse en https://thingspeak.com/channels/440162

Imágenes y más información en:

Plataformas IoT

Esta conferencia sobre IoT con Arduino fue expuesta el 1 de abril de 2017 con motivo del Arduino Day. Puedes ver el video de la conferencia completa en http://www.innovarioja.tv/index.php/video/ver/1661


Las plataformas IoT son plataformas SW que reciben los datos datos recogidos por nuestros sensores y luego son enviados por los microcontroladores. Pueden ser plataformas de terceros o plataformas propias desarrolladas por nosotros.

Plataformas SW: tratar los datos recogidos por nuestros sensores, almacenarlos y ofrecer otros servicios.

Estas plataformas tienen un HW y el SW que pueden usar estas tecnologías:

Listado de plataformas IoT: http://www.monblocnotes.com/node/1979

Algunas plataformas destacables:

Y muchas más…

ThingSpeak

ThingSpeak es un plataforma de Internet of Things (IoT) que permite recoger y almacenar datos de sensores en la nube y desarrollar aplicaciones IoT. Thingspeak también ofrece aplicaciones que permiten analizar y visualizar tus datos en MATLAB y actuar sobre los datos. Los datos de los sensores pueden ser enviados desde Arduino, Raspberry Pi, BeagleBone Black y otro HW.

Thingspeak está en colaboración con Mathworks https://en.wikipedia.org/wiki/MathWorks que es la empresa de Matlab y Simulink entre otros.

Ejemplo para enviar datos a thinkspeak con Arduino: http://community.thingspeak.com/tutorials/arduino/send-data-to-thingspeak-with-arduino/

Documentación: https://thingspeak.com/docs

Repositorio: https://github.com/iobridge/thingspeak

Canal público de Thingspeak: https://thingspeak.com/channels/242341

Carriots

Carriots es una Plataforma como Servicio (PaaS en sus siglas en inglés) diseñada para proyectos del Internet de las Cosas (IoT) y de Máquina a Máquina (M2M)

Más información: https://www.carriots.com/que-es-carriots

Carriots es una plataforma IoT creada en España.

  • Cree potentes productos y servicios IoT.
  • Conecte fácilmente “sus cosas” al Internet de las Cosas.
  • Construya sus apps inteligentes con Carriots en 5 pasos.

Pasos:

  • Conectar Dispositivos
  • Recopilar Datos
  • Gestionar Dispositivos y Datos
  • Construir APPs

Casos de uso: https://www.carriots.com/casos-de-uso

Principales ventajas

  • Listo para empezar a desarrollar.
  • Minimizar tiempo de desarrollo.
  • Gestión simplificada de múltiples proyectos: Arquitectura de 7 niveles
  • Amplia variedad de APIs y potente SDK: REST API y SDK
  • Escalabilidad inmediata
  • Inicio gratuito y pago por uso.
  • Alojamiento simplificado: Oferta PaaS para escalabilidad fiable.

Ejemplos:

Temboo

Temboo es una plataforma de IoT que nos permite conectar fácilmente mediante una API un Arduino con y hacer de intermediario con aplicaciones de terceros. Es una plataforma colaboradora con Arduino.

La librería Temboo para arduino está incluida en el IDE de Arduino dentro del Arduino Library Manager.

Web: https://temboo.com

Tembo + Arduino:

Temboo funciona con choreos que son APIs de conexión con terceros como por ejemplo la API de weather de Yahoo: https://temboo.com/library/Library/Yahoo/Weather/

Temboo tiene un sistema de generación de código para Arduino, pero es limitado y en su lugar puede usarse la API REST. Solo vale para unos pocos modelos de Arduino.

Temboo no almacena solo ejecuta choreos que usa interconexión con terceros: https://temboo.com/restapi/reference

Temboo permite usar varios protocolos:

Adafruit IO

Otra plataforma IoT con muy buena integración con Arduino y su funcionalidad más potente es la fácil creación de dashboards. La usaremos en el taller para practicar con MQTT.

Web https://io.adafruit.com

Tutorial: https://learn.adafruit.com/adafruit-io/overview

API documentation: https://io.adafruit.com/api/docs/#!/v2

Plataformas privadas

Existen plataformas que puedes instalar en tu propio servidor físico, en un servidor en la nube o incluso en un hosting compartido y también en una raspberry Pi.

Y también es posible programar tu propia plataforma como http://www.aprendiendoarduino.com/servicios/ montada sobre un hosting compartido y hecho con HTML5, PHP y javascript.