Archivo de la etiqueta: Open Data

Servicios 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 mismas nos pueden ofrecer diferentes clases de servicios para los datos como visualización de datos, descargas, API para obtener los datos, alertas, etc…

Algunos servicios que podemos encontrar:

  • Almacenamiento de datos
  • Gestión de dispositivos
  • Visualización de datos (Visual Analytics)
  • Descarga de datos
  • API REST para interactuar con la plataforma
  • Notificaciones
  • Alertas/Alarmas
  • Reglas
  • SDK
  • Interacción con otras plataformas
  • Análisis de datos (Machine Learning)
  • Open data

Una plataforma nos puede permitir:

  • Automatizar informes de trabajo, cuadros de mando, etc… Los datos recogidos y guardados genera informes automáticamente de forma periódica o en tiempo real (por ejemplo de la producción) y son enviados.
  • Monitorización en Tiempo real de flotas o del estado de una planta
  • Avisos precoces para mantenimientos predictivos.
  • Control remoto de instalaciones.
  • Eficiencia energética.
  • Automatización de procesos.
  • Análisis de datos (data mining, etc…) para aprendizaje automático.
  • Business intelligence (detectar problemas comunes, medir cuellos de botella, etc…) y ayudar en el mantenimiento predictivo.
  • Integrar con el software corporativo. ERP, CRM, GMAO (Gestión del Mantenimiento Asistido por Ordenador), CMMS.
Anuncios

Ejemplos Prácticos

Cronómetro para Charlas

Cronómetro que indica mediante leds los minutos transcurridos y señala mediante colores el tiempo de cada parte programada según sea programada.

Código: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Otros/Neopixel_contador

Hardware usado:

Monitorización de Temperatura

Visualización en tiempo real de datos de temperatura en diversos lugares:

Hardware usado:

Envío de mensajes y SMSs en Tiempo Real

Enviar desde Arduino mensajes a una plataforma de visualización de mensajes en tiempo real. Arduino comunica alertas, estados, etc… que sea programado.

Enviar esos mismos mensajes por SMS a un móvil de forma que arduino deja un mensaje pendiente de enviar en la plataforma y otro Arduino remoto se encarga de revisar mensajes pendientes y los envía por SMS.

Hardware usado:

Obtención de datos agroclimáticos (Open Data)

En este ejemplo se van a obtener los datos agroclimáticos ofrecidos por el Servicio de Información Agroclimática de La Rioja (SIAR) para la toma de decisiones locales con un Arduino en función de esos datos. De esta forma podría, por ejemplo, podría programar riegos en un cultivo mediante la apertura de válvulas o puesta en marcha de bombas de regadío sin necesidad de instalar mis propios sensores. Estos además del ahorro económico, supone poder crear un sistema más sencillo y que consuma menos energía al no tener que alimentar los sensores, algo importante en sistemas instalados en el campo donde no hay acceso a la red eléctrica. Por otra se trata de datos de calidad ya validados.

Estos datos también se pueden combinar con los datos locales obtenidos por los sensores de Arduino, ya sea localmente o una una base de datos propia.

Más información sobre los datos publicados: https://seminariomirianandres.unirioja.es//wp-content/uploads/2016/12/si_ma_20161220.pdf

Web del servicio http://apisiar.larioja.org/help. Este servicio se encuentra aún en pruebas y para usarlo es necesario estar registrado.

Características de los datos:

  • Datos cada media hora. 21 parámetros
  • Parámetros climáticos: Tª; HR; Viento; Radiación; Lluvia; Tª suelo; Humectación
  • Datos en tiempo real. Comunicación remota vía GPRS
  • Datos diarios, mensuales

Código: https://github.com/jecrespo/apisiar_arduino

Hardware usado:

De la misma forma podrían obtenerse datos meteorológicos de AEMET (Agencia Estatal de Meteorología).

Datos abiertos AEMET: http://www.aemet.es/es/datos_abiertos

Instrucciones: https://opendata.aemet.es/centrodedescargas/inicio, es necesario solicitar una API KEY y esta tiene una caducidad de 90 días.

Ejemplo en HTTP:

GET /opendata/api/valores/climatologicos/inventarioestaciones/estaciones/?api_key=jyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJqbW9udGVyb2dAYWVtZXQuZXMiLCJqdGkiOiI3NDRiYmVhMy02NDEyLTQxYWMtYmYzOC01MjhlZWJlM2FhMWEiLCJleHAiOjE0NzUwNTg3ODcsImlzcyI6IkFFTUVUIiwiaWF0IjoxNDc0NjI2Nzg3LCJ1c2VySWQiOiI3NDRiYmVhMy02NDEyLTQxYWMtYmYzOC01MjhlZWJlM2FhMWEiLCJyb2xlIjoiIn0.xh3LstTlsP9h5cxz3TLmYF4uJwhOKzA0B6-vH8lPGGw HTTP/1.1
Host: opendata.aemet.es
Cache-Control: no-cache

Códigos de municipio: http://www.ine.es/daco/daco42/codmun/codmunmapa.htm

Documentación: https://opendata.aemet.es/dist/index.html

Arduino Web Client

Conexión a una web

Crear un cliente ethernet que se conecte a una web y escriba los datos recogidos. También guarde los datos en un string.

Probar a conectar a varias páginas web y usa el servicio DNS poniendo la url en lugar de la IP.

Trata de conectarte a la AEMET para ver si sería posible obtener el tiempo de logroño.

AEMET API: http://www.aemet.es/es/datos_abiertos/catalogo (open data)

Tiempo en logroño: http://www.aemet.es/xml/municipios/localidad_26089.xml

Usa la API de http://www.openweathermap.org/ para obtener los datos del tiempo en una ciudad en concreto.

Avanzado: Obtener la temperatura en logroño actualizada por el display LCD sin necesidad de un sensor de temperatura.

Tutorial: webclient con ejemplo de métodos get y post: http://playground.arduino.cc/Code/WebClient

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio25-EthernetClient

Un poco de información:

Open data:

NTP básico

Montar un Arduino para que recoja y mantenga la fecha y hora de un servidor NTP y así teniendo un Arduino conectado a Internet no siendo necesario usar un RTC para mantener la fecha y hora en Arduino.

Network Time Protocol (NTP) es un protocolo de Internet para sincronizar los relojes de los sistemas informáticos a través del enrutamiento de paquetes en redes con latencia variable. NTP utiliza UDP como su capa de transporte, usando el puerto 123. Está diseñado para resistir los efectos de la latencia variable.

Servidores NTP: http://www.pool.ntp.org/es/use.html

Este es un ejemplo de cliente web, pero UDP en lugar de TCP.

Conceptos a manejar:

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio39-NTP

Al igual que hacemos un cliente web con Arduino podríamos hacer un cliente telnet conectándose al puerto correspondiente. Ver ejemplo en https://www.arduino.cc/en/Tutorial/TelnetClient