Archivo de la etiqueta: API REST

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. Thinkspeak 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.

Web: https://thingspeak.com/

Thingspeak es parte de Mathworks https://en.wikipedia.org/wiki/MathWorks que es la empresa de entre otros Matlab y Simulink.

Uso comercial: https://thingspeak.com/pages/commercial_learn_more

Precios: https://thingspeak.com/prices

Features Thingspeak:

También puede acceder a los recursos de MATLAB y Simulink con una cuenta gratuita de MathWorks.

Apps de Thingspeak, son los servicios de la plataforma IoT: https://thingspeak.com/apps

Librería Thingspeak para Arduino, ESP8266 y ESP32: https://github.com/mathworks/thingspeak-arduino

La estructura de Thingspeak es:

  • Canales (Channels): los datos que recogemos en los dispositivos se guardan en canales.
  • En cada canal se disponen de una serie de campos para guardar datos, así como otra información adicional
  • Los canales pueden ser públicos o privados.
  • Dentro de cada canal podemos añadir visualizaciones o Widgets
  • Los datos del canal se pueden importar o exportar
  • En la pestaña de API keys está la información con las contraseñas (API Keys) para usar con las APIs.

Tutoriales Thingspeak: https://community.thingspeak.com/tutorials/

Tutoriales Arduino:

Tutoriales ESP8266:

Tutoriales Raspberry Pi.

Documentación: https://www.mathworks.com/help/thingspeak/

Getting started con Thingspeak: https://www.mathworks.com/help/thingspeak/getting-started-with-thingspeak.html

Ejemplos: https://www.mathworks.com/help/thingspeak/examples.html

Restful y MQTT APIs: https://www.mathworks.com/help/thingspeak/channels-and-charts-api.html

Alertas: https://www.mathworks.com/help/thingspeak/monitor-channel-inactivity-using-multiple-thingSpeak-apps.html

Más información:

Cliente MQTT Thingspeak

ThingSpeak ahora es compatible con la publicación MQTT, que le permite enviar datos a ThingSpeak desde cualquier dispositivo o servicio compatible con el estándar MQTT.

Puede seguir enviando hasta 3 millones de mensajes al año de forma gratuita. Para determinar cuántos mensajes utiliza, puede iniciar sesión y ver el uso de su cuenta.

Tutoriales para usar MQTT con Arduino:

Ejemplo con Thingspeak

Instalar con el gestor de librerías la librería thinkspeak o manualmente desde https://github.com/mathworks/thingspeak-arduino

Crear un nuevo canal: temperatura casa

Los canales guardan todos los datos que una aplicación Thingspeak recoge. Cada canal incluye 8 campos que pueden almacenar cualquier tipo de dato, además de tres campos para localización del dispositivo y uno para el estado de los datos. Una vez los datos son recogidos en un canal, es posible usarlos con las apps de Thingspeak para analizarlos y visualizarlos.

API: https://es.mathworks.com/help/thingspeak/channels-and-charts.html

Thingspeak apps: https://thingspeak.com/apps

Tutorial: https://es.mathworks.com/help/thingspeak/getting-started-with-thingspeak.html

Analizar datos: https://es.mathworks.com/help/thingspeak/analyze-your-data.html

Actuar con tus datos: https://es.mathworks.com/help/thingspeak/act-on-your-data.html

Código con IP fija y sin librería: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio65-Thingspeak

Código con IP fija y librerías: https://github.com/jecrespo/aprendiendoarduino-iot/tree/master/01-Thingspeak/Temp-y-Hum

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

Usar MQTT con Thingspeak: http://blogs.mathworks.com/iot/2017/01/20/use-mqtt-to-send-iot-data-to-thingspeak/

Repositorio: https://github.com/jecrespo/aprendiendoarduino-iot/tree/master/01-Thingspeak

Analizar

Ejemplos: https://es.mathworks.com/help/thingspeak/examples.html

Tutorial: https://es.mathworks.com/help/thingspeak/analyze-your-data.html  

Actuar

Con webhooks http, thinghttp: https://thingspeak.com/apps/thinghttp

React: https://thingspeak.com/apps/reacts

React app: https://es.mathworks.com/help/thingspeak/react-app.html

Manual Thinghttp APP: https://es.mathworks.com/help/thingspeak/thinghttp-app.html

Tutorial: http://community.thingspeak.com/tutorials/arduino/cheerlights-with-arduino-and-the-fastled-library/

Restduino: https://github.com/sirleech/RestduinoThingspeak

Time control:

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

Anuncios

Ecosistema IoT

¿Cómo Conectar a Internet una Tostadora?

Veamos un resumen de los elementos que necesitamos para conectar un dispositivo a Internet y hacer un proyecto de IoT completo.

Supongamos que quiero conectar mi tostadora a Internet y hacer un sistema que conecte mi coche con la tostadora y cuando me acerque a casa ponga en funcionamiento la tostadora y además me informe en el móvil que la tostadora se pone un funcionamiento y me indique la temperatura de la tostadora.

Lo primero que necesito es un sensor para medir la temperatura y un actuador que encienda la tostadora. Para poder leer el sensor y poder manejar el actuador necesitaré un microcontrolador con entradas (sensor) y salidas (actuador), por ejemplo, un Arduino.

Ahora ya puedo leer los datos de la tostadora y encenderla, el siguiente paso es conectarla a Internet.

Primero necesito acceso a Internet (conectividad), puedo usar ethernet, pero ¿Quien tiene una toma de red en la cocina?

Mejor usando comunicaciones inalámbricas como: wifi, bluetooth, redes móviles, XBee, etc…

Una vez tenemos conectividad, necesitamos un protocolo de comunicación para comunicar los datos y las órdenes entre los distintos dispositivos.

  • HTTP REST

  • MQTT

Supongamos tenemos nuestra tostadora con un Arduino integrado y un chip WiFi. Hay dos formas en la que pueden hablar entre el geolocalizador del coche y nuestra tostadora.

  • Tener uno de los dispositivos trabajando como servidor con una dirección IP, de forma que el otro dispositivo se pueda conectar en cualquier momento.
  • Tener un tercer servidor y tanto la tostadora como el coche se conecten al servidor y este mande mensajes a uno y otro.

La opción 1 es la más barata al no necesitar un elemento extra, pero al menos uno de los dispositivos necesita una IP pública conocida y fija, además hay que abrir puertos en el router de casa lo que supone una dificultad adicional y un punto más en la seguridad.

En la opción 2 el servidor maneja los mensajes, en el caso de MQTT se trata del broker. Es un elemento neutral al que las “cosas” se pueden conectar para enviar y recibir mensajes.

Adicionalmente podemos tener una plataforma que almacene datos y luego podamos visualizarlos, analizarlos, hacer cuadros de mando o interactuar con otras plataformas o servicios de terceros.

Elementos que Intervienen en el Ecosistema IoT

Explicación gráfica de los elementos necesarios en IoT: http://www.libelium.com/products/meshlium/wsn/

En resumen, al hacer un proyecto IoT debemos hacernos estas preguntas:

  • Qué quieres medir?
  • Cómo lo quieres conectar?
  • Qué quieres hacer con los datos?

Elementos en IoT:

  • Plataformas Software, para tratar los datos recogidos por nuestros sensores y almacenarlos. Pueden ser plataformas de terceros o plataformas propias desarrolladas por nosotros o simplemente guardar en BBDD propias. Por ejemplo: Carriots, Thingspeak, Temboo, Thinger, etc…
    Además todas estas plataformas SW que están en la nube, deben estar soportadas por un HW de servidores, unas BBDD de gran capacidad y una infraestructura segura que los hospede.
  • Servicios, son los servicios que ofrecen las plataformas como mostrar los datos recogidos, mandar avisos cuando se detecte un evento o la interconexión con otras plataformas o simplemente. Servicios ofrecidos por la plataforma carriots: https://www.carriots.com/que-es-carriots

Sensor — MCU — Comunicación — Protocolo — Plataforma — Servicios

Uno de los retos del IoT es mandar datos de cualquier sensor a través de cualquier protocolo a cualquier plataforma de forma inalámbrica y usando la menor energía posible para uso de baterías

Cadena de valor de IoT:

recoger datos — conectar — almacenar — analizar — mostrar — actuar — predecir

Mapa de IoT:

Mapa más complejo de IoT (imagen de la plataforma IoT de IBM):

Arduino IoT Manifesto: https://www.edn.com/electronics-blogs/eye-on-iot-/4441804/Arduino-s-IoT-Manifesto

“We believe that the best way to grow this environment is to develop open source platforms and protocols to propose as an alternative to the myriad of proprietary hardware and software platforms each one of the big players are developing.

We believe in creating tools that make these technologies understandable to the most diverse set of people as possible, this is the only way to make sure innovation benefits most of humanity.

We propose that connected devices should be: Open, Sustainable and Fair.”

“We foresee a world with billions of connected smart objects. These smart objects will be composed and orchestrated, thus making the Internet of Things a reality. The IoT will be the eyes, noses, arms, legs, hands of a new, extended, cyber body. The nervous system of such a body will be the Internet, allowing the interaction with a distributed intelligence made of hardware processors and human minds, behaviors, software procedures, and services, shared in the Cloud.”

Arduino cree que mediante la creación de nuevos productos conectados con software, hardware y protocolos de comunicación de código abierto podemos crear un entorno más innovador para fabricantes, empresarios y corporaciones. Al ofrecer a los usuarios la posibilidad de compartir su trabajo de forma más abierta, compartimos desafíos, resolvemos problemas y creamos juntos productos mejor conectados. Estamos seguros de que un enfoque abierto y compartido para el diseño de software, protocolos y hardware es la mejor solución.

Protocolos 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


Protocolos de comunicación, con los que comunicar el HW con el SW

  • API REST/HTTP

  • REST + Websockets

  • MQTT (Message Queue Telemetry Transport).
    Está enfocado al envío de datos en aplicaciones donde se requiere muy poco ancho de banda. Además, sus características le permiten presumir de tener un consumo realmente bajo así como precisar de muy pocos recursos para su funcionamiento.
    Estas características han hecho que rápidamente se convierta en un protocolo muy empleado en la comunicación de sensores y, consecuentemente, dentro del Internet de las Cosas.

Comparativa de protocolos: https://www.slideshare.net/paolopat/mqtt-iot-protocols-comparison

IoT protocols: https://www.postscapes.com/internet-of-things-protocols/

Qué es 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


Internet de las cosas (en inglés Internet of things, abreviado IoT) es un concepto que se refiere a la interconexión digital de objetos cotidianos con Internet.

Definición de wikipedia: https://es.wikipedia.org/wiki/Internet_de_las_cosas

Arduino es un elemento que nos permite de forma sencilla y económica conectar cosas a Internet. Con un sencillo módulo ethernet o wifi podemos conectar Internet sensores para informar, motores controlados desde cualquier lado del mundo o mandar un SMS o email cada vez que se abra la puerta de casa.

Arduino se ha convertido una figura destacada e incluso uno de los impulsores del IoT y no por casualidad, sino que  por sus características es un HW con gran capacidad para usar en proyectos de IoT.

Características de Arduino para IoT

  • Barato y rápido prototipado.
  • HW libre y por lo tanto es modificable para que consuma menos y para hacer un HW final de características industriales.
  • Disponibilidad de HW de comunicaciones de todo tipo para conectar con Arduino. Nuevas tecnologías de comunicación llegan antes que para elementos comerciales
  • Librerías y SW público para su reutilización o adaptación.
  • Flexibilidad en la programación.
  • Apoyo de la comunidad.

IoT en su amplio concepto es conectar a Internet cualquier cosa, teniendo sentido o sin tenerlo. Por ejemplo, podríamos conectar a internet un sofá con un Arduino y unos pocos sensores, este sofá podría tuitear que nos acabamos de sentar a ver nuestra serie favorita, simplemente detectando el peso de la persona y conectándose a una API de un servidor de streaming como netflix y comprobando que acabo de poner un capítulo de Narcos. Pero esta idea para netflix podría ser muy interesante, monitorizar a la gente que ve su canal.

Otra aplicación de IoT y usando arduino como herramienta, es la de obtener información externa disponible mediante APIs del open data. Un ejemplo es el de un sistema de riego automático que podemos tener en una huerta. En los inicios de la automatización se usaron programadores conectados a una electroválvula donde indicamos las horas entre las que deseamos regar. El siguiente paso fue poner detectores de lluvia para no regar si estaba lloviendo. Otro paso fue poner sensores de temperatura y humedad ambientales y sensores de humedad de suelo que nos indican cuándo debemos regar y en qué áreas de nuestra huerta.

El paso más avanzado que ofrece el IoT es poder conectar todo este sistema, ya de por sí muy eficiente, a los opendata meteorológicos disponibles en Internet como el de la aemet (http://www.aemet.es/es/datos_abiertos/AEMET_OpenData) y que nuestro sistema obtenga datos de prediciones meteorológicas y decida no regar si la predicción de lluvia es mayor del 80% en los próximos dos días o simplemente ajustar el algoritmo de riego en función los valores de los sensores + es de los datos meteorológicos. También puede recibir alertas de tormenta o pedrisco y tomar determinadas acciones o simplemente mandar un email o SMS al propietario del huerto. ¿Podríamos hacer esto con un sistema comercial?

Esto podría extenderse a explotaciones agrícolas usando un servicio como el sistema de información agroclimática de La Rioja:

IoT nos permite actualizar procesos productivos al siglo XXI (Retrofit)

Para mi, IoT no es que un coche se pueda conectar a Internet para ver videos de youtube, sino que este coche esté conectado a Internet para que pueda actualizar su firmware automáticamente sin necesidad de ir al concesionario, pueda ser inmovilizado en caso de robo o pueda mandar datos de los parámetros internos del coche para que sean analizados y poder detectar alertas precoces de fallo y actualizar automáticamente ese fallo sin que el usuario tenga que hacer nada o avisar al usuario para que lleve el coche a reparar y parar el coche si el usuario no ha llevado a revisión al cabo de unos kms para evitar males mayores.

Explicación de IoT http://www.kaaproject.org/iot-101-what-is-an-iot-platform/

Cómo Conectar a Internet una Tostadora?

Veamos un resumen de los elementos que necesitamos para conectar un dispositivo a Internet y hacer un proyecto de IoT completo.

Supongamos que quiero conectar mi tostadora a Internet y hacer un sistema que conecte mi coche con la tostadora y cuando me acerque a casa ponga en funcionamiento la tostadora y además me informe en el móvil que la tostadora se pone un funcionamiento y me indique la temperatura de la tostadora.

Lo primero que necesito es un sensor para medir la temperatura y un actuador que encienda la tostadora. Para poder leer el sensor y poder manejar el actuador necesitaré un microcontrolador con entradas (sensor) y salidas (actuador), por ejemplo, un Arduino.

Ahora ya puedo leer los datos de la tostadora y encenderla, el siguiente paso es conectarla a Internet.

Primero necesito acceso a Internet (conectividad), puedo usar ethernet, pero ¿Quien tiene una toma de red en la cocina?

Mejor usando comunicaciones inalámbricas como: wifi, bluetooth, redes móviles, XBee, etc…

Una vez tenemos conectividad, necesitamos un protocolo de comunicación para comunicar los datos y las órdenes entre los distintos dispositivos.

  • HTTP REST

  • MQTT

Supongamos tenemos nuestra tostadora con un Arduino integrado y un chip WiFi. Hay dos formas en la que pueden hablar entre el geolocalizador del coche y nuestra tostadora.

  1. Tener uno de los dispositivos trabajando como servidor con una dirección IP, de forma que el otro dispositivo se pueda conectar en cualquier momento.
  2. Tener un tercer servidor y tanto la tostadora como el coche se conecten al servidor y este mande mensajes a uno y otro.

La opción 1 es la más barata al no necesitar un elemento extra, pero al menos uno de los dispositivos necesita una IP pública conocida y fija, además hay que abrir puertos en el router de casa lo que supone una dificultad adicional y un punto más en la seguridad.

En la opción 2 el servidor maneja los mensajes, en el caso de MQTT se trata del broker. Es un elemento neutral al que las “cosas” se pueden conectar para enviar y recibir mensajes.

Adicionalmente podemos tener una plataforma que almacene datos y luego podamos visualizarlos, analizarlos, hacer cuadros de mando o interactuar con otras plataformas o servicios de terceros.

En resumen, al hacer un proyecto IoT debemos hacernos estas preguntas:

  • Qué quieres medir?
  • Cómo lo quieres conectar?
  • Qué quieres hacer con los datos?

Elementos que intervienen en el IoT

Elementos en IoT:

  • Plataformas Software, para tratar los datos recogidos por nuestros sensores y almacenarlos. Pueden ser plataformas de terceros o plataformas propias desarrolladas por nosotros o simplemente guardar en BBDD propias. Por ejemplo: Carriots, Thingspeak, Temboo, Thinger, etc…
    Además todas estas plataformas SW que están en la nube, deben estar soportadas por un HW de servidores, unas BBDD de gran capacidad y una infraestructura segura que los hospede.
  • Servicios, son los servicios que ofrecen las plataformas como mostrar los datos recogidos, mandar avisos cuando se detecte un evento o la interconexión con otras plataformas o simplemente. Servicios ofrecidos por la plataforma carriots: https://www.carriots.com/que-es-carriots

Sensor — MCU — Comunicación — Protocolo — Plataforma — Servicios

Uno de los retos del IoT es mandar datos de cualquier sensor a través de cualquier protocolo a cualquier plataforma de forma inalámbrica y usando la menor energía posible para uso de baterías.

Cadena de valor de IoT:

recoger datos — conectar — almacenar — analizar — mostrar — actuar — predecir

IoT Manifesto

Arduino IoT Manifesto: https://create.arduino.cc/iot/manifesto/

“Arduino cree que construyendo nuevos productos conectados con SW, HW y protocolos de comunicación open source, podemos hacer un entorno más innovador para los makers, emprendedores y grandes corporaciones. Dando a los usuarios de posibilidad de compartir su trabajo abiertamente, compartimos retos, resolvemos problemas y construimos mejores productos conectados.

Estamos seguros que con una aproximación abierta y compartida de SW, HW y protocolos es la mejor solución”

Esta aproximación puede extender al mundo empresarial el concepto de DIY, permitiendo hacer pruebas de conceptos y pequeños proyectos por uno mismo y en caso que sea viable lanzarse a proyectos profesionales con el apoyo de expertos.

Arduino y IoT

Que es el IoT

Internet de las cosas (en inglés Internet of things, abreviado IoT) es un concepto que se refiere a la interconexión digital de objetos cotidianos con Internet.

Definición de wikipedia: https://es.wikipedia.org/wiki/Internet_de_las_cosas

Arduino es un elemento que nos permite de forma sencilla y económica conectar cualquier cosa a Internet. Con un Arduino y un sencillo módulo ethernet o wifi podemos conectar a Internet sensores para informar, controlar motores o bombillas desde cualquier parte del mundo o mandar un SMS o email cada vez que se abra la puerta de casa.

Como afecta IoT a nuestro dia a dia: http://socialgeek.co/tecnologia/8-formas-que-the-internet-of-things-impactara-dia-dia

IoT en 5 minutos con Arduino: http://hackaday.com/2016/01/08/internet-of-things-in-five-minutes/

Aplicaciones de IoT: https://temboo.com/iot-applications

Temboo es una plataforma de IoT que nos permite conectar fácilmente mediante una API un Arduino con Internet, mostrar los datos recogidos e interactuar con ellos desde un navegador web.

Una visión del IoT aplicado a la industria es lo denominado como Industria 4.0 o Industria conectada o IIoT que deriva del concepto de M2M (machine to machine) que se refiere al intercambio de información o comunicación en formato de datos entre dos máquinas remotas sin necesidad de conexión a Internet sino que puede ser en una red privada y crear una industria inteligente donde todos los elementos están interconectados y comparten los datos.

Definiciones de wikipedia:

Diferencias entre IoT y M2M: https://www.pubnub.com/blog/2015-01-02-iot-vs-m2m-understanding-difference/

Telefónica y IoT: http://www.thinkingthings.telefonica.com/

El coche autónomo, en el que trabajan grupos como Google, BMW, Volvo o Tesla, es toda una proeza de la robótica.La conducción autónoma se basa en las comunicaciones máquina a máquina (M2M), por las que los vehículos pueden intercomunicarse con las señales, los semáforos y los otros automóviles.

Todo esto también tiene mucho que ver con las smart cities.

Elementos que intervienen en el IoT

Explicación para conectar sensores a la nube que son los elementos necesarios en IoT: http://www.libelium.com/products/meshlium/wsn/

  • Qué quieres medir?
  • Cómo lo quieres conectar?
  • Qué quieres hacer con los datos?

Elementos en IoT:

  • Plataformas Software, para tratar los datos recogidos por nuestros sensores y almacenarlos. Pueden ser plataformas de terceros o plataformas propias desarrolladas por nosotros o simplemente guardar en BBDD propias. Por ejemplo: Carriots, Thingspeak, Temboo, Thinger, etc…
    Además todas estas plataformas SW que están en la nube, deben estar soportadas por un HW de servidores, unas BBDD de gran capacidad y una infraestructura segura que los hospede.
  • Servicios, son los servicios que ofrecen las plataformas como mostrar los datos recogidos, mandar avisos cuando se detecte un evento o la interconexión con otras plataformas o simplemente. Servicios ofrecidos por la plataforma carriots: https://www.carriots.com/que-es-carriots

A modo de resumen, estos son los elementos en el IoT

Sensor — MCU — Comunicación — Protocolo — Plataforma — Servicios

Uno de los retos del IoT es mandar datos de cualquier sensor a través de cualquier protocolo a cualquier plataforma de forma inalámbrica y usando la menor energía posible (baterías) y todo esto mediante una comunicación segura (cifrada).

Uso de plataformas de IoT con Arduino

Podemos usar de forma gratuita diversas plataformas para conectar nuestro Arduino con ellas y usarlas para mostrar datos, responder a ciertos eventos, realizar acciones, etc…

Algunas plataformas existentes son: