Ejemplo Básico - powered by FIWARE
Tutorial
Arquitectura
Diagrama de Secuencia
Listado de Componentes
Servicio | Puertos |
---|---|
SIMPLE-DASH | 2400 |
ORION | 1026 |
QUANTUMLEAP | 8668 |
GRAFANA | 3000 |
MONGODB | 27017 |
CRATEDB | 5432, 4300, 4200 |
Recursos
http://localhost
URL | Descripción |
---|---|
/ | Dashboard generado en grafana integrado en Simple Dash (Web App) |
/orion | Servicio de Orion Brocker, para la gestión de contextos |
/grafana | Grafana para creación de gráficos para visualizar datos |
/quantumleap | Servicio para percistencia de datos en cratedb |
/cratedb | Base de datos para series de tiempo |
LOCALHOST
1. Desplegar servicios definidos en docker-compose.yml
docker-compose up -d
2. Registro de entidad en Orion Context Brocker.
POST http://localhost/orion/v2/entities
Header: Content-Type: "application/json"
fiware-service: openiot
fiware-servicepath: /
En el body, utilizamos el contenido de dht.json
3. Subscripción de cambio de estado de entidad.
Se crea un subcripción de la entidad, esto quiere decir que cuando se actualice cualquiera de los datos de la entidad estos serán notificados al servicio de Quantumleap.
Quantumleap, recive la notificación del cambio de estado de los datos con el valor de los datos y los persiste en la base de datos CRATE DB.
POST http://localhost/orion/v2/subscriptions/
Header: Content-Type: "application/json"
fiware-service: openiot
fiware-servicepath: /
En body, utilizamos el contenido de dht-sub.json
Configurar Servicios:
CRATE DB:
localhost:4200
-> (Observar el nombre de la base de datos generada automáticamente)
mtopeniot
Consulta por entidad registrada en base de datos.
select * from mtopeniot.etdht limit 100;
Grafana:
Grafana se configura para obtener los datos que son almacenados en la base de datos CRATE DB.
En Grafana se pueden crear tableros par visualizar distintos tipos de datos en tiempo real.
fiware-service: openiot
.
El nombre de la Database: mtopeniot es definido por el Header del registro en Orion Context Broker Registrar una nueva Data Base
localhost:3000
-> Postgres:
Name: CrateDB
Host: crate-db:5432
Database: mtopeniot
User: crate
SSL Mode disable
Registrar un nuevo dashboard
Seleccionar la base de datos que hemos creado, y armar esta consulta.
FROM etdht Time column time_index Metric column entity_id SELECT Column: temperatura Column: humedad
Guardar el dashboard.
Compartir Dashboard en iframe.
Luego de guardar el dashboard, se debe regresar la menú principal y luego seleccionar el grafico que hemos creado. Justo en al lado del titulo se encuentra una viñeta que muestra un menú desplegable, ahí se selecciona la 3ra opción, se abrirá un modal en donde podemos seleccionar la pestaña de "Embed" y copiar el codigo generado para el iframe.
Este codigo lo ingresames en nuestra aplicación web.
DESAFÍO
Realizar el registro de una entidad y el envío de datos a solución FIWARE disponible en AWS, Siguiendo el tutorial disponible en el repositorio.
Solución desplegada en AWS.
URL: http://ec2-3-90-48-33.compute-1.amazonaws.com/
Registrar entidad
Envío de Datos a Orion Broker
Siguiendo el paso 2
POST http://ec2-3-90-48-33.compute-1.amazonaws.com/orion/v2/entities
- Header: Content-Type: "application/json"
fiware-service: openiot
fiware-servicepath: /
- Body: {
"id":"DHT007",
"type":"DHT",
"dateObserved":{
"type":"DateTime",
"value":"2020-06-02T17:00:00-05:00"
},
"temperatura":{
"type":"Number",
"value":"0"
},
"humedad":{
"type":"Number",
"value":"0"
}
}
El atributo id, se debe cambiar por el elijan. En mi caso DHT007
PATCH http://ec2-3-90-48-33.compute-1.amazonaws.com/orion/v2/entities/{ID_DEVICE}/attrs
- Header: Content-Type: "application/json"
fiware-service: openiot
fiware-servicepath: /
- Body :
{
"temperatura": {
"value": 4
},
"humedad": {
"value": 30
}
}
Problemas con CrateDB
Error
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Solución en Linux
sudo sysctl -w vm.max_map_count=262144
Para que los cambios persistan en el sistema debemos modificar el archivo /etc/sysctl.conf
y agregar la siguiente linea al final del archivo:
vm.max_map_count=262144