Escolar Documentos
Profissional Documentos
Cultura Documentos
http://twitter.com/SOFIA2_Platform
Powered by http://about.sofia2.com
plataformasofia2@indra.es
http://sofia2.com
Hoy presentamos
rbarrio@minsait.com jfgpimpollo@minsait.com
rbarriov jesus-fernndez-gmez-pimpollo-253b2593
@raquel_barrio @jfdezgomez
2
Y queremos contaros
3
Captulo 1
Componentes de arquitectura IoT
4
Arquitectura de referencia IoT
Storage
IoT protocols
Device Points Support
(HTTP, MQTT, AMQP) Systems
IoT Gateway
Server
Stream Slo un 1% de
Gateway Otros 10-20 Business
estos datos se
Linux,
Processing Conector
Android, Device billones en los usan External Systems
Windows IoT Connector prximos
Device 10 actualmente
Analytics
Storage
aos Billing ERP
Low range protocols (alarmas,)
(Zigbee, Z-Wave)
Security CRM
Basic Basic
Sensor/Actuator Sensor/Actuator
5
Tipos de Dispositivos IoT
IoT Device Dispositivos integrados con propsito especifico: Se trata de dispositivos que
Device integran los sensores y/o actuadores as como la lgica para enviar/recibir
Connector informacin con la plataforma IoT. Tienen el propsito para el que se fabricaron, no
se pueden extender con nuevos sensores, y las actualizaciones de software son
IoT Gateway para corregir bugs o mejorar rendimiento.
Linux, Gateways IoT: Se trata del caso mas habitual. Son dispositivos con procesador
Device
Android,
Windows IoT
(ARM Cortex, Intel Atom), memoria RAM, almacenamiento en SD, Sistema
Connector
Operativo, conexin a internet, conexiones GPIO y en algunos casos una o varias
Low range protocols interfaces de red PAN o LAN.
(Zigbee, Z-Wave)
. Normalmente los sensores no se conectan directamente a internet, sino que se conectan
Basic Basic a los pines GPIO de una placa o integran una radio PAN o LAN de bajo coste, para
Sensor/Actuator Sensor/Actuator enviar tramas a un Gateway IoT, que es quien las procesa, integra en un mensaje mayor
y enva a la plataforma IoT.
Permiten actualizaciones remotas de software, modificaciones y extensiones la
arquitectura de sensores/actuadores, autonoma y almacenamiento de informacin en
modo desconectado. Habilitar nuevos modelos de Negocio
6
Node-RED
https://nodered.org
Motor de flujos visual, desarrollado por IBM y distribuido como open source. Est desarrollado en NodeJS y es muy ligero
pudiendo ejecutarse en dispositivos de capacidades muy reducidas.
Los flujos se construyen mediante la conexin de nodos que se ejecutan secuencialmente pudiendo pasar desde un nodo a otro
un mensaje con datos que son procesados a lo largo del flujo.
Enfoque IoT: Existen nodos para conectar casi cualquier cosa a un
flujo:
Pines GPIO, Puerto serie
Protocolos de alto nivel: MQTT, AMQP, REST, Socket TCP,
SMTP
Redes sociales y APIs de internet: Twitter, Yahoo! Weather,
Telegram
Abierto, extensible y colaborativo: Cualquiera puede desarrollar sus
propios nodos y flujos y hacerlos disponibles al resto de usuarios en
los repositorios de npm.
Tiene aplicacin tanto en dispositivos para construir aplicaciones
visuales, como en plataforma IoT para tratar, procesar o enriquecer la
informacin de forma sencilla (Sofia2, Bluemix, Sensetecnic).
7
Arquitectura IoT Sofia2 que vamos a tocar hoy?
Stream
Vertical Systems
MQTT Broker Rules Manager
Process
APIs Ontology
Ontology
Gateway
APIs
IoT
Systems
Ext APIs
Sofia2 Storage
Plugins
Real Time Database
Devices Open Data
Apps
ML Engine Portal
SDKs
Explotation
DataFlow actualmente DataLink
(alarmas,)
Staging Area ODBC
APIs
G.Analytics PIWIK
Y.Finance
JDBC
Synoptics
Visual
General
Dashboards
SEMANTIC
HTML5 & API Sofia2 CONFIG
SPACES
MANAGEMENT Control Panel DB
DEVICES
8
Captulo 2
Demos
9
Sensorizacin y presentacin en Dashboard
REST
SenseHat IoT Stream Dashboards
MQTT Broker
Temp, Hum, Press Process
Ontology
Gateway
IoT
Sofia2 Storage
Plugins
Real Time Database
Devices
Security
ThinKP nodes
10
Con lgica en plataforma
Dashboards
REST
SenseHat IoT Flows Stream
MQTT Broker
Temp, Hum, Press Process
Ontology
Gateway
IoT
Sofia2 Storage
Plugins
Real Time Database
Devices
Security
ThinKP nodes
@usuario la
diferencia de
temperatura es 15
11
Despliegue centralizado de software a dispositivos
Deploy Flow
In device(s)
Ejemplo de desarrollo centralizado de flujos en plataforma y despliegue remoto en
uno o un grupo de dispositivos:
WEB ADMIN MANAGER
Lgica de dispositivos desarrollada como un flujo visual Node-RED en plataforma
IoT.
Pequeo agente de actualizacin remota ejecutndose en el dispositivo. Se trata
Sofia2 Admin Manager de un ThinKP (app Sofia2) suscrito a la plataforma IoT utilizando protocolo de
build and notify flow mensajera SSAP.
SSAP INSERT:
Una vez desarrollado y probado el flujo en la plataforma, se comunica al broker
IoT para que ejecute las notificaciones a los dispositivos suscritos.
El agente ThinKP ejecutado en el dispositivo despliega el/los flujos notificados
utilizando el API de administracin de Node-RED
Ontology INTERNET
INSERT message
NOTIFY new flow ThinKP Node-RED
launches notifications
admin API
12
Captulo 3
Taller IoT
13
Pasos Previos (I)
Por cada grupo de trabajo, crear usuario en Sofia2 si no se dispone de uno.
14
Pasos Previos (II)
Preparar nuestra Raspberry para conectar por VNC:
Si no est instalado (Raspbian por ejemplo ya lo trae de fabrica), instalar un servidor VNC:
$> sudo apt-get update
$> sudo apt-get install realvnc-vnc-server
Habilitar Real-VNC para que arranque como servicio, y configurar usuario/password VNC:
$> sudo raspi-config
Interfacing Options > VNC
15
Pasos Previos (III)
Instalar Node-RED en nuestra Raspberry si no est instalado ya:
$> sudo npm install -g --unsafe-perm node-red
16
Taller. Qu vamos a hacer?
Vamos a desarrollar dos Flujos, uno en la Raspberry Pi y otro en
la plataforma Sofia2:
El flujo de la Raspberry Pi ser el que desencadene el proceso:
20 de diferencia
Un nodo controla los datos de la placa SenseHat (Si no
disponemos de SenseHat la simularemos).
Peridicamente se enva un mensaje a plataforma Sofia2
con los datos de temperatura, humedad y presin a la
Process new Insert new ontologa EvtRaspberryIoT<usuario>
EvtRaspberryIoT<usuario> DifTempDashboard<usuario>
El flujo en Sofia2 aplica una regla muy sencilla para enviar un
Flows Stream tweet y mostrar informacin en un Dashboard:
Process
Un nodo escuchar eventos recibidos desde la Raspberry
REST
hacia la ontologa EvtRaspberryIoT<usuario>.
IoT
MQTT Broker
Sofia2 Storage Otro nodo recupera temperatura de un servicio de
Internet.
IoT
17
Taller. Alta de ontologas en Sofia2 (I)
Daremos de alta dos ontologas en Sofia2:
18
Taller. Alta de ontologas en Sofia2 (II)
Editar la ontologa:
Nombre: EvtRaspberryIoT<usuario>
Descripcin: Ontologa Taller IoT
Meta-Inf: nodered
Categora: General
Plantilla: EmptyBase
19
Taller. Alta de ontologas en Sofia2 (III)
Utilizar el formulario para aadir las
propiedades previamente comentadas
20
Taller. Alta de ThinKP en Sofia2 (I)
Una vez tenemos dadas de alta las ontologas del modelo de datos, daremos de alta la configuracin lgica de las aplicaciones
(ThinKp) que las utilizarn. Daremos de alta un ThinKp, que representar al conjunto de aplicaciones que interactuarn con Sofia2
en el taller.
21
Taller. Alta de ThinKP en Sofia2 (II)
Asignar al ThinKP el nombre NodeRedRasp<usuario> y una descripcin, y pulsar Crear
22
Taller. Flujo en Raspberry Pi (I)
Desarrollo del flujo en Raspberry Pi:
Con nuestra Raspberry configurada y NodeRED arrancado en ella accedemos al editor visual desde nuestro PC con un
navegador: http://<ipraspberrypi>:1880/
23
Taller. Flujo en Raspberry Pi (II)
El flujo que desarrollaremos en la Raspberry Pi tendr este
aspecto:
Nodo Environment events:
Tipo en paleta: Raspberry_Pi > SenseHat
Configurado para capturar eventos
ambientales:
24
Taller. Flujo en Raspberry Pi (III)
Importante: Y si no tenemos SenseHat?, si tenemos SenseHat pasamos a la siguiente pgina
>
25
Taller. Flujo en Raspberry Pi (IV)
Nodo Pre-processing of data:
Tipo en paleta: function > function
Configurado con el cdigo javascript para construir una instancia de
la ontologa EvtRaspberryIoT<usuario> (Sustituid cada uno vuestro
usuario como elemento raz del mensaje)
26
Taller. Flujo en Raspberry Pi (V)
Nodo sofia2-insert:
Tipo en paleta: sofia2> sofia2-insert
Configurado con:
La ontologa en la que insertar dato del atributo payload del
mensaje recibido del nodo anterior
EvtRaspberryIoT<usuario> (Sustituid cada uno vuestra
ontologa).
Server: La instancia de Sofia2 donde Insertar, y que tenemos
que configurar previamente pulsando
27
Taller. Crear Flujo en Sofia2 (I)
Acceder a la consola de administracin de Sofia2 http://sofia2.com/console
Seleccionar Mis Flujos > Comprobar que tenemos una instancia del motor de flujos
en nuestro dominio de aplicacin
28
Taller. Crear Flujo en Sofia2 (II)
Una vez arrancada la instancia podemos entrar en el editor de NodeRED pulsando Ver Flujos
29
Taller. Flujo en Sofia2 (I)
El flujo que desarrollaremos en Sofia2 tendr este aspecto:
Se trata de dos flujos paralelos: Nodo Madrid - Weather:
Uno para que el flujo disponga de datos de temperatura en Tipo en paleta: weather > openweathermap
Madrid. Configurado para obtener datos meteorolgicos de Madrid:
Otro para procesar eventos desde la Raspberry
31
Taller. Flujo en Sofia2 (III)
Nodo ssap-process-request:
Tipo en paleta: input > ssap process request
Configurado para iniciar el flujo con los eventos entrantes en la
plataforma desde la Raspberry Pi, cada vez que inserta
nuevos datos en la ontologa:
32
Taller. Flujo en Sofia2 (IV)
Nodo getTemperaturaVariation:
Tipo en paleta: function > function
Configurado para comparar la temperatura recibida desde la
raspberry y la almacenada en el contexto del flujo (Open
Weather). Y componer una nueva instancia para insertar en la
ontologia DifTempDashboard<usuario> que alimentar nuestro
Dashboard
33
Taller. Flujo en Sofia2 (V)
Nodo publish Tweet?:
Tipo en paleta: function > function
Configurado como una regla para decidir si publicar un Tweet
o no en funcin de si la diferencia supera un umbral
34
Taller. Flujo en Sofia2 (VI)
Nodo swith:
Tipo en paleta: function > swith
Configurado para propagar el mensaje si la propiedad tweet es
true.
Nodo Tweet:
Tipo en paleta: social > Twitter
Configurado para enviar el Tweet con la cuenta configurada
35
Taller. Flujo en Sofia2 (VIII)
Nodo sofia2-kp-insert:
Tipo en paleta: function > sofia2-kp-insert
Configurado para insertar la instancia con la variacin de
temperatura propagada en el nodo anterior. Para ello utiliza los
atributos:
payload: JSON con la instancia a insertar
ontology: Ontologa en la que insertar
Los datos insertados por este nodo, son los que alimentan el
dashboard que veremos a continuacin
36
Taller. Creacin Dashboard(I)
A continuacin crearemos el Dashboard en Sofia2, para representar los datos guardados en las
ontologas
37
Taller. Creacin Dashboard(II)
Asignar al Dashboard el nombre DashboardSenseHat<usuario>, seleccionar el estilo del dashboard
y pulsar Nueva Pgina
38
Taller. Creacin Dashboard(III)
Seleccionaremos el tipo de Gadget Bsico > rea
Le asignaremos un nombre y seleccionaremos el ThinKP que representa el Gadget en Sofia2 a efectos de consultar datos. En nuestro
caso NodeRed<usuario>
39
Taller. Creacin Dashboard(III)
Para un gadget tipo rea: aadiremos las medidas que se quieren representar en este gadget, para ello hay que seleccionar la ontologa
de la que extraer datos y se debern seleccionar los campos de dicha ontologa que sern representados tanto en el eje X como en el eje Y.
40
Taller. Creacin Dashboard(IV)
Componer el dashboard:
Una vez creados los gadgets, slo hay que aadirlos al Dashboard.
41
http://twitter.com/SOFIA2_Platform
http://about.sofia2.com
plataformasofia2@indra.es
http://sofia2.com
Muchas
gracias!!!
42