Adquisición y gestión de datos mediante Sentilo

13 de mayo de 2019 por
Adquisición y gestión de datos mediante Sentilo
Boot & Work Corp. S.L., Support Team

Index

1. Introduction
2. Requirements
4. Description
5. Sentilo client library for Arduino
    5.1 Install
    5.2 Usage
6. Sketch

Introducción

Sentilo es el resultado de un proyecto concebido por el Ayuntamiento de Barcelona en 2012 para definir la estrategia y las acciones necesarias para lograr un posicionamiento global de Barcelona como referencia en el ámbito de las ciudades inteligentes.

Se trata de una plataforma libre y de código abierto para la interconexión entre sensores y actuadores diseñada para encajar en la arquitectura Smart City de cualquier ciudad que busque una fácil interoperabilidad y gran apertura.


La arquitectura de Sentilo tiene las siguientes partes:

    - Un front-end para el procesamiento de mensajes, con una API REST.

    - Una consola de administración web para configurar el sistema y gestionar el catálogo

    - Una base de datos de memoria

    - Una base de datos NoSQL, para conseguir un sistema más flexible y escalable

    - Un visor universal de un sitio web donde publicar los datos

    - Un módulo de estadísticas que registra y muestra los indicadores básicos de rendimiento de la plataforma.

    Un conjunto de agentes para la explotación de las bases de datos y para el tratamiento de los códigos internos.

Sentilo en Barcelona: 

La ciudad de Barcelona está utilizando Sentilo como el middleware que interconecta las cargas de sensores y actuadores desplegados por la ciudad con las aplicaciones que los supervisan y controlan. A partir de 2016, se registran hasta 3.200.000 registros al día, con picos de 2.000 registros por segundo y la estructura consta de 1.800 sensores, en un total de 14.000 parámetros a tratar. 


Requisitos


Ethernet PLC:      Ethernet PLC          

Sentilo Arduino Client Library:             Librería Github del cliente Sentilo Arduino 

 

Descripción

La estructura de la plataforma Sentilo consta de varios componentes que proporcionan los servicios.

Para su funcionamiento, la plataforma utiliza los siguientes componentes:


-  Servidor de publicación/suscripción para la comunicación con los sensores y actuadores y también, para poder suscribir los actuadores a las alertas.

Se basa en Redis, un motor de base de datos no relacional en memoria, basado en el almacenamiento en tablas de tipo diccionario y diseñado para actuar como servidor de estructuras de datos.

La suscripción permite escuchar un canal y la publicación permite enviar mensajes a través del canal. El formato utilizado por la plataforma para enviar los mensajes será JSON (JavaScript Object Notation).


-  NoSQL Database- Base de datos NoSQL (Not Only Structured Query Language) MongoDB, para tener una base de datos más eficiente y elástica.
MongoDB es un software de código abierto para la creación y gestión de bases de datos orientadas a documentos, escalables y de alto rendimiento.

- Gestor de bases de datos MySQL, sistema de gestión de bases de datos relacionales, que utiliza el lenguaje SQL. La plataforma se utiliza para poder exportar los datos de los esdevenimientos a bases de datos relacionales externas.


Servidor Web Tomcat para alojar la aplicación del Catálogo Web. Proporciona un entorno para que la codificación Java se ejecute en cooperación con un servidor web independiente que permite un alto nivel de tráfico y alta disponibilidad.


Estructura de la plataforma Sentilo


Librería del cliente Sentilo para Arduino

Instalar


Descarga y descomprime el archivo en ~/Documents/Arduino/libraries donde ~/Documents/Arduino es el directorio de tu sketchbook.

> cd ~/Documents/Arduino
> mkdir libraries
> cd libraries
> copy the file contents here

Puedes importar el archivo de librería /release/sentilo-client-arduino.zip desde el  Arduino IDE > Programa > Incluir librería > Añadir librería .ZIP.


Uso


Incluir

Necesitas tener el Librería Ethernet2 ya incluida.

#include <Ethernet2.h>
#include <SPI.h>
#include "SentiloClient.h"

Ejecutar el código de ejemplo

En el IDE de Arduino, navega hasta Archivo > Ejemplos > sentilo-client-arduino y selecciona uno de los tres ejemplos que verás en las carpetas.

  • SentiloClient-Example-01.ino
  • SentiloClient-Example-02.ino
  • SentiloClient-Example-03.ino

Configura la conexión

Debes proporcionar alguna configuración personalizada antes de ejecutar estos códigos de ejemplo:

char* apiKey = "YOUR_API_KEY";
char* ip = "YOUR_IP_ADDRESS";
int port = YOUR_PORT;

Por favor, proporciona tus credenciales o clave api, la ip del host de la instancia de Sentilo y su puerto. Después de eso, puedes subir el sketch al dispositivo Arduino.

 

Sketch

The La Librería SentiloClient para Arduino ofrece una implementación de librería básica en C++ que permite al desarrollador una rápida integración del sketch con la Plataforma Sentilo a través de su API Rest Client.

Para estos ejemplos vamos a crear un nuevo sensor en la Plataforma Sentilo, sólo si no existe, y luego vamos a publicar algunas observaciones obtenidas de los sensores locales. 

 

#include <Ethernet2.h>
#include <SPI.h>

#include "SentiloClient.h"

/*******************************************/
/***** SENTILO *****************************/
/*******************************************/
char* apiKey = "YOUR_API_KEY";
char* ip = "YOUR_IP_ADDRESS";
int port = YOUR_PORT;
char* componentId = "sample-component";
char* providerId = "samples-provider";
char* sensorId = "sample-sensor-arduino-01";

// The Sentilo Client object
SentiloClient sentiloClient = SentiloClient(ip, port);

/*******************************************/
/***** NETWORK *****************************/
/*******************************************/
const int networkConnectionTimeout = 30;

/*******************************************/
/***** GLOBAL VARS *************************/
/*******************************************/
const int generalCalibrationTimeout = 1000; // Wait after system setup is complete
String response = ""; // Rest call response (normaly as JSON message)
int statusCode = -1; // Rest call return code (the HTTP code)

void setup() {
        // Begin serial for debug purposes
        Serial.begin(9600);

        // Setup the Sentilo Client and the network connection
        setupSetiloClient();

        // Wait time for a general calibration
        delay(generalCalibrationTimeout);
}

void loop() {
        // Create the Observation object
        SentiloClient::Observation observation;
        observation.value = "This is a sample observation";

        Serial.println("[loop] Publishing a sample observation...");

        // Publish the observation to Sentilo Platform
        statusCode = sentiloClient.publishObservation(providerId, sensorId, observation, apiKey, response);

        // Read response status and show an error if it is necessary
        if (statusCode !## 200) {
                Serial.print("[loop] [ERROR] Status code from server after publish the observations: ");
                Serial.println(statusCode);
                Serial.print("[loop] [ERROR] Response body from server after publish the observations: ");
                Serial.println(response);
        }

        Serial.println("[loop] Sample observation published!");
        Serial.println("[loop] Program ended");

        // The example has ended, so we are going to execute an infinite loop
        while (true) {}
}


/** Setup the Sentilo Client object, this process also configures the network connection **/
void setupSetiloClient() {
        Serial.print("[setup] Connecting to network via DHCP ");
        sentiloClient.dhcp();
        for (int i = 0; i < networkConnectionTimeout; i++) {
                Serial.print(".");
                delay(100);
        }
        Serial.println(" done!");
        Serial.println("[setup] Connection is now established!");
}


You can follow the Sentilo tutorial for Arduino on SentiloClient blog page.

Buscar en nuestro blog

Adquisición y gestión de datos mediante Sentilo
Boot & Work Corp. S.L., Support Team 13 de mayo de 2019
Compartir

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Industrial PLC comparison >>>