Nueva plataforma IoT de código abierto


Existen numerosos protocolos y formatos de datos de IoT, ,algunos de ellos son más populares, como MQTT y JSON, y algunos otros  son   «bastante raros». Normalmente la mayoría de las plataformas IoT brindan soporte para los protocolos y formatos de datos más populares desde el primer momento, pero es difícil respaldar a todos en una sola solución.

Con el crecimiento de la comunidad de código abierto de la plataforma Thingsboard, ha comenzado a recibir solicitudes sobre el soporte de protocolos IoT, como OPC-UA y algunos formatos de datos específicos, de modo que también han decidido implementar esta funcionalidad como un proyecto separado de código abierto que  permitirá unir la plataforma API a, literalmente, cualquier dispositivo.

El diagrama de flujo de datos es el siguiente

thingsboard

 

IoT Gateway está construido sobre Java, pero es diferente de proyectos similares que aprovechan la tecnología OSGi pues la idea es similar a una arquitectura de microservicios. Después de todo, hay otros lenguajes de programación (C, C ++, Python, Javascript, Go, etc.) que pueden ser más adecuados para el desarrollo de aplicaciones para dispositivos de IoT de destino, especialmente cuando hablamos de API de idiomas y bibliotecas existentes para trabajar con puertos serie , GPIO, I2C y nuevos módulos y sensores que se lanzan todos los días.

El Gateway proporciona API’s  de integración simples y encapsula tareas comunes relacionadas con el tablero de tareas: aprovisionamiento de dispositivos, persistencia y entrega de datos locales, conversores / adaptadores de mensajes, y más.

Como desarrollador de aplicaciones, puede elegir Python, Go, C / C ++ y otros idiomas y conectarse a la puerta de enlace de Thingsboard a través de un intermediario MQTT externo o un servidor OPC-UA. Los dispositivos que admiten otros protocolos se pueden conectar a la puerta de enlace implementando extensiones personalizadas.

La puerta de enlace IoT de Thingsboard ofrece las siguientes características:

  • Extensión OPC-UA para recopilar datos de dispositivos que están conectados a servidores OPC-UA.
  • Extensión MQTT para recopilar datos que se publican en intermediarios MQTT externos.
  • Persistencia de los datos recopilados para garantizar la entrega de datos en caso de fallas de red y hardware.
  • La reconexión automática a los grupos de tableros de cartón.
  • Mapeo simple pero poderoso de los datos y mensajes entrantes en un formato unificado.

El objetivo de lanzamiento inicial de Gateway es llevar la función de recopilación de datos de Bagsboard a dispositivos compatibles con OPC-UA y MQTT. El proyecto Gateway se encuentra actualmente en la etapa de desarrollo activo, y debemos esperar  a los lanzamientos de características principales en los próximos  meses pero el objetivo es unir todas las demás características de Panel de pruebas y permitir configurar y administrar dispositivos de IoT a través de la puerta de enlace usando los widgets y paneles de control de Thingsboard.

 

En este post vamos  a ver como  recopilar y visualizar algunos datos del dispositivo IoT con ThingsBoard permitiendo :

  • Registrar  su dispositivo IoT
  • Administrar credenciales del dispositivo
  • Mandar  los datos del dispositivo a su instancia de ThingsBoard utilizando los protocolos MQTT, CoAP o HTTP
  • Crear un tablero para visualizar los datos

Configuración y requisitos

Si no tiene acceso a una instancia de ThingsBoard en ejecución, use Live Demo o la Guía de instalación para solucionar esto.

Todas las instalaciones de ThingsBoard están equipadas con una cuenta de demostración que simplifica la experiencia del primer usuario. Esta cuenta demo contiene varios dispositivos, cuadros de mando, reglas y complementos preaprovisionados instalados. Tenga en cuenta que puede eliminar esta cuenta en la implementación de producción.

También puede usar emuladores de dispositivo ThingsBoard para simular dispositivos de la vida real y jugar con las API del lado del servidor, la visualización de datos y la lógica de procesamiento.

En este  ejemplo  solo utilizaremos una cuenta de administrador de inquilino preaprovisionada y como hardware una Raspberry Pi 3.

Iniciar sesión como administrador de inquilinos

El primer paso es iniciar sesión en la interfaz de usuario web de administración.

Si está utilizando la instalación local de ThingsBoard, puede iniciar sesión en la interfaz de usuario web de administración utilizando la cuenta predeterminada:

Si usa Live Demo, puede iniciar sesión en el servidor Live Demo utilizando la cuenta de administrador del inquilino (la que creó durante el registro).

imagen

Abra el panel Dispositivos y haga clic en el botón «+» en la esquina inferior derecha de la página.

imagen

Rellene y guarde el nombre del dispositivo (por ejemplo, «SN-001») aunque más adelante se le llamará $ DEVICE_NAME.

Como los nombres de dispositivo deben ser únicos, por lo general es una buena idea llamar al nombre del dispositivo según un número de serie único u otro identificador de dispositivo. Haga clic en el botón «Agregar» agregará la tarjeta del dispositivo correspondiente al panel.

imagen

Haga clic en la «tarjeta del dispositivo» que hemos creado en el paso anterior. Esta acción abrirá el panel de «detalles del dispositivo».

Haga clic en el botón «administrar credenciales» en la parte superior del panel. Esta acción abrirá una ventana emergente con credenciales del dispositivo.

imagen

La ventana de credenciales del dispositivo mostrará el token de acceso al dispositivo generado automáticamente que puede cambiar. Guarde este token de dispositivo. Más tarde se lo llamará $ ACCESS_TOKEN .

imagen

¡Felicitaciones! ¡Acaba de aprovisionar su primer dispositivo! Ahora puede enviar algunos datos de este dispositivo a ThingsBoard para su visualización y análisis.

Envío de datos

Para simplificar   enviaremos datos utilizando el protocolo MQTT, CoAP o HTTP desde su PC local.Consulte otros  ejemplos para ejemplos avanzados de varias plataformas de hardware.

Ahora  que ya  tiene creado las credenciales  del   dispositivo ,iInstale el cliente preferido MQTT (Mosquitto o MQTT.js), CoAP (CoAP.js) o HTTP (cURL) con los siguientes comandos.

resources/node-mqtt.sh 
# Assuming you have Node.js and NPM installed on your Windows/Linux/MacOS machine npm install mqtt -g

Cree una carpeta para almacenar todos los archivos necesarios para este ejemplo y descargue a esta carpeta o cree los siguientes archivos de datos:

  • attributes-data.json – contiene dos valores de atributos del dispositivo: la versión del firmware y el número de serie.
  • telemetry-data.json – contiene tres valores de series temporales: temperatura, humedad y bandera activa.

Tenga en cuenta que los datos en estos archivos están básicamente en formato de clave-valor. Puede usar sus propias claves y valores. Consulte la referencia de protocolo MQTT , CoAP o HTTP para obtener más detalles.

resources/attributes-data.json 
{ "firmware_version" : "1.0.1" ,   "serial_number" : "SN-001" } 

Envio de  datos usando MQTT, CoAP o HTTP

Descargue los siguientes archivos a la carpeta creada previamente de acuerdo con el cliente preferido:

Si está utilizando un script de shell (* .sh), asegúrese de que sea ejecutable:

chmod +x * .sh

Antes de ejecutar el script, no olvide:

  • reemplace $ ACCESS_TOKEN por uno de la ventana Credenciales del dispositivo .
  • reemplace $ THINGSBOARD_HOST con 127.0.0.1 (en caso de instalación local) o demo.thingsboard.io (en caso de live-demo).

Finalmente, ejecute el script * .sh o * .bat correspondiente para enviar datos al servidor.

A continuación en estos enlaces  esta  el contenido de los scripts proporcionados.

resources/mqtt-js.sh 
#!/bin/sh # Set ThingsBoard host to "demo.thingsboard.io" or "localhost" export THINGSBOARD_HOST = demo.thingsboard.io # Replace YOUR_ACCESS_TOKEN with one from Device credentials window. export ACCESS_TOKEN = YOUR_ACCESS_TOKEN # Read serial number and firmware version attributes ATTRIBUTES = $( cat attributes-data.json ) export ATTRIBUTES # Read timeseries data as an object without timestamp (server-side timestamp will be used) TELEMETRY = $( cat telemetry-data.json ) export TELEMETRY # publish attributes and telemetry data via mqtt client node publish.js

Visualización de los datos del dispositivo en la interfaz de usuario web

Una vez que ejecute los comandos enumerados arriba, debería ver los atributos y los últimos datos de telemetría en las pestañas de detalles correspondientes del dispositivo.

imagen

imagen

Crear un nuevo tablero para visualizar los datos

La forma más fácil de crear un nuevo tablero es seleccionar los atributos del dispositivo y mostrarlos en el widget

imagen

Una vez que haga clic en el botón «Mostrar en el widget», verá un panel de «vista previa del widget» donde puede

  • Seleccionar paquete de widgets
  • Seleccione el widget preferido
  • Agregar widget al panel nuevo o existente

imagen

Agreguemos nuestro primer widget al nuevo tablero llamado «SN-001 Dashboard»

imagen

Agreguemos  también un widget para visualizar la temperatura:

imagen

Haga clic en Mostrar en el widget y seleccione Paquete de indicadores digitales . Use el carrusel para seleccionar el widget del termómetro como se muestra a continuación.

imagen

Tenga en cuenta que en este caso, agregaremos un widget a un panel ya existente. También seleccionaremos la opción «Open dashboard» para ver los resultados de nuestro trabajo.

imagen

Finalmente, podemos ver nuestro nuevo tablero.

Ahora podemos editar el tablero para:

  • Configurar la configuración del tablero
  • Ajustar tamaños de widgets y diseño
  • Modificar la configuración avanzada del widget individual
  • Agregue nuevos widgets o elimine los existentes
  • Widgets de importación / exportación

imagen

Mas info en https://thingsboard.io/docs/getting-started-guides/helloworld/

Una respuesta a “Nueva plataforma IoT de código abierto

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.