1 of 74

Capgemini

Hackathon 2017

Víctor Bolinches Marín

IBM Bluemix - Formación Universidades

2 of 74

Target

3 of 74

Capgemini - Hackathon 2017

3

4 of 74

Scope

5 of 74

Capgemini - Hackathon 2017

Scope

  • Desarrollar una aplicación Cloud Foundry en Bluemix
    • Instalar un starter boilerplate
      • SDK Node.js
      • Node-RED
      • IoT Watson Platform
      • Configurar Devices
    • Crear un servicio que escuche las publicaciones del proyecto kinect
    • Manipular los datos de entrada
  • Configurar el fichero ‘./Dependencies/Setting.json’ del proyecto Kinect
    • Conectar con la plataforma Bluemix
    • Usar protocolo JSON para la serialización de los datos
    • Definir un dispositivo con protocolo de comunicación MQTT

5

6 of 74

Introducción

7 of 74

Capgemini - Hackathon 2017

Introducción

  • IBM Bluemix
    • Account
      • Standard
      • Hackathon
    • Catalog
    • Dashboard
    • Internet of Thing (IoT)
      • Create Device/GateWay
        • Type
        • Device
        • Connection security
        • Settings

7

8 of 74

Capgemini - Hackathon 2017

Introducción

  • IBM Bluemix
    • Cloud Foundry Apps
      • Create Cloud Foundry App → “IoT Starter Project”
        • Create Node-RED Application
    • Node-RED
      • Nodos | Install dependencies
        • Input
        • Output
        • Function
        • DashBoard
    • DevOps
      • ToolChain

8

9 of 74

Capgemini - Hackathon 2017

Introducción

  • Visual Studio 2017 + Kinect project
    • Dependencias Nuget
    • Fichero de configuración
    • Arrancar proyecto

  • Caso Práctico
    • Body Parts
    • Oscilador
    • Banco de sonidos
    • IoTools Mobile
    • El vigilante
  • Bibliografía

9

10 of 74

IBM Bluemix

11 of 74

Capgemini - Hackathon 2017

Por qué usar IBM Bluemix ?

  • Plataforma basada en el Cloud
  • Uso de estándares abiertos
  • Rápido prototipado
  • Portabilidad, Visibilidad y Control
  • Desarrollo productivo de Aplicaciones
    • Construye
    • Corre
    • Maneja
  • Escalado vertical y horizontal en minutos
  • Infraestructura conectada con terceras partes
  • Platform-as-a-service

11

12 of 74

Capgemini - Hackathon 2017

Account - Standard

  • Acceder a Bluemix → Sign up

12

13 of 74

Capgemini - Hackathon 2017

Account - Standard

  • Rellenar todos los campos → Create Account
    • El campo “phone” es incorrecto para España, añadir un 0 al principio.

13

14 of 74

Capgemini - Hackathon 2017

Account - Standard

  • Acceder al correo que se ha registrado con el nuevo usuario y confirmar la cuenta

14

15 of 74

Capgemini - Hackathon 2017

Hackathon Account

  • Acceder a Bluemix → Login

15

16 of 74

Capgemini - Hackathon 2017

Hackathon Account

  • IBM Bluemix console → Login in
    • https://console.bluemix.net/

16

17 of 74

Capgemini - Hackathon 2017

Hackathon Account

  • El Email y la Password se proporciona en la hackathon
    • Introducir el Email → Continue

17

18 of 74

Capgemini - Hackathon 2017

Hackathon Account

  • El Email y la Password se proporciona en la hackathon
    • Introducir la Password → Log in

18

19 of 74

Capgemini - Hackathon 2017

Hackathon Account

  • Este usuario debe estar asociado a una cuenta definida por�Capgemini para el evento

19

20 of 74

Capgemini - Hackathon 2017

Catalog

  • Buscador de servicios dentro de la plataforma Bluemix

20

21 of 74

Capgemini - Hackathon 2017

Catalog

  • En la barra lateral izquierda se puede efectuar búsquedas por dominio

21

22 of 74

Capgemini - Hackathon 2017

Dashboard

  • Panel que permite visualizar todos los componentes agregados a nuestra plataforma IBM Bluemix
  • Provee feedback en tablas
    • Nombre del servicio
    • Estado actual {Run, Stop, Restart… }
    • Localización
    • Versión
  • Permite realizar pequeñas acciones sobre los componentes
  • Agrega componentes directamente

22

23 of 74

Capgemini - Hackathon 2017

Dashboard

23

24 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT)

  • Ofrece un kit de utilidades
    • Dispositivos de pasarela
    • Gestión de los mismos
    • Acceso de aplicaciones

  • Registra sensores, dispositivos móviles, aplicaciones, gateways...
  • Utiliza un protocolo de mensajería ligthweight MQTT
  • Define servicios API REST
  • Permite manipular la información obtenida a través de analíticas en runtime
  • Proporciona seguridad de manejo y control de usuario

24

25 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT)

25

26 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT)

26

27 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT)

27

28 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT) - Devices type

  • Clickar en “Device Types” → Create Type (Botón azul, parte superior derecha)

28

29 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT) - Devices Type

  • Añadir un nombre al dispositivo → Next hasta salir del wizard
  • Clickar en el link “Browse”para volver al panel central

29

30 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT) - Devices

  • Pulsar el botón “Add Device” en la parte superior derecha para agregar un dispositivo

30

31 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT) - Devices

  • Seleccionar en el Dropdown Menu el tipo de dispositivo definido anteriormente → Next → Next

31

32 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT) - Devices

  • Añadir una autenticación para el dispositivo → Next → Next
    • Provide a token (optional) : testToken1

32

33 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT) - Devices

  • Al finalizar se muestra toda la información del dispositivo agregado
    • Se debe guardar está información
    • Organization ID es fundamental !!!!

33

34 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT) - Security

  • Para modificar el nivel de seguridad de los dispositivos → Security
    • Policies → Connection Security → Edit (botón a la derecha)
    • Default Rule → Security Level

34

35 of 74

Capgemini - Hackathon 2017

Internet of Things (IoT) - Settings

  • Panel de información de toda nuestra IBM Watson IoT Platform
    • En el apartado Identify podemos recuperar el OrganizationID

35

36 of 74

Capgemini - Hackathon 2017

Cloud Foundry Apps

  • Entorno de creación de aplicaciones en el cloud
  • Define plantillas que proveen servicios y código de aplicaciones configuradas para compilar

  • Starters

  • Boilerplate
    • Contenedor predefinido y optimizado para una aplicación
      • Entorno de ejecución
      • Servicios predefinidos
      • SDK
      • Apps de ejemplo

  • Runtime
    • Conjunto de recursos que se utiliza para ejecutar la App
    • Integrados como paquetes de compilación en Bluemix

36

37 of 74

Capgemini - Hackathon 2017

Cloud Foundry Apps

37

38 of 74

Capgemini - Hackathon 2017

Cloud Foundry Apps

  • Acceder al filtro de la búsqueda → Internet of Things Platform Starter

38

39 of 74

Capgemini - Hackathon 2017

Cloud Foundry Apps

  • Añadir un App Name → Create

39

40 of 74

Capgemini - Hackathon 2017

Cloud Foundry Apps

  • Esperar unos minutos a que Bluemix instale las dependencias
    • SDK para Node.js
    • Watson IoT Platform
    • Node-Red App
    • Cloudatn NoSQL DB

40

41 of 74

Capgemini - Hackathon 2017

Cloud Foundry Apps

  • Dentro del dashboard buscar la aplicación creada ‘CloudFoundryAppHelloworld
    • Haz click en el link de la columna “ROUTE”

41

42 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Pulsar botón Next

42

43 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Define un User y Password → Next

43

44 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Pulsar botón Finish

44

45 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Esperar a que el navegador te muestre la pantalla de bienvenida de Node-RED

45

46 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Hacer click en el botón para entrar en el flow editor

46

47 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Editor que permite diseñar aplicaciones a través de un DSL
  • Provee nodos ya desarrollados con propiedades predefinidas
  • Funciona bindeado entradas y salidas
  • Permite agregar librerias externas de node-red
  • Posibilita diferentes Flows por solución
  • Deploy

47

48 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Necesario estar logeado para poder Deployar y bajarse dependencias externas

48

49 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Input

49

50 of 74

Capgemini - Hackathon 2017

Node-RED App

  • ibmiot
    • Permite la conectividad entre el cliente kinect y nuestra app node-red
    • Protocolo MQTT
    • Uso de ‘Authentication’ (Disponible en la Hackathon)
      • Api-Key
      • Token

50

51 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Output

51

52 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Function

52

53 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Dashboard Nodes → Icono esquina superior derecha
    • Manage Palette → Install
    • Escribir en el buscador → node-red-dashboard-es
    • Pulsar el botón de install → Install
      • Esperar unos minutos

53

54 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Dashboard

54

55 of 74

Capgemini - Hackathon 2017

Node-RED App

  • Storage & Social

55

56 of 74

Capgemini - Hackathon 2017

DevOps

  • Pequeños servicios que satisfacen rápidamente las necesidades de nuestra aplicación
  • Construcción rápida
  • Aceleramiento en el escalado de la aplicación
  • Deploy con confianza
  • Control de infraestructura

56

57 of 74

Capgemini - Hackathon 2017

DevOps

  • Acceder al panel de nuestra aplicación CloudFoundryAppHelloworld
    • Dashboard
      • CloudFoundryApps → Clickar en la columna Name

  • Dentro del dominio de la aplicación, abajo a la derecha
    • Continuous delivery → Enable

57

58 of 74

Capgemini - Hackathon 2017

DevOps - Continous Delivery Toolchain

58

59 of 74

Capgemini - Hackathon 2017

DevOps - Toolchain

59

60 of 74

Proyecto Kinect

61 of 74

Capgemini - Hackathon 2017

Proyecto Kinect

  • Solución cerrada
  • Permite leer a través de Kinect las Body Parts de los usuarios
  • Posee un cliente MQTT
    • Publica mensajes a través de un dispositivo
    • Posibilidad de configuración mediante properties
    • Envío de datos mediante protocolo Json

61

62 of 74

Capgemini - Hackathon 2017

Visual Studio 2017 + Kinect Project

  • Dependencias necesarias a instalar

62

63 of 74

Capgemini - Hackathon 2017

Visual Studio 2017 + Kinect Project

  • Propiedades a modificar para conectar como Device de IoT Watson Platform
    • Ruta para editar el fichero “./Dependencies/Settings.json“

{

"ORG_ID":"jbesyh", ← ORG_ID : Proporcionado en la Hackathon

"DEVICE_ID":"kinectDevice01", ← DEVICE_ID : Proporcionado en la Hackathon

"DEVICE_TYPE":"kinectDeviceType",← DEVICE_TYPE : Proporcionado en la Hackathon

"TOKEN_KEY":"testToken1", ← No tocar

"EVENT":"kinectEvent", ← No tocar

"FORMAT_JSON":"json", ← No tocar

"AUTH_TOKEN":"authToken" ← No tocar

}

63

64 of 74

65 of 74

Miscelaneos

66 of 74

Capgemini - Hackathon 2017

Node-RED

  • Devolución de objetos
    • { payload : ‘contenido’ }

  • Devolución múltiple
    • return [msg1, msg2]

  • Debug por la consola
    • node.log(‘contenido’ +msg)
    • node.warn(‘contenido’+ msg)
    • node.error(‘contenido’+ msg)
    • node.debug(‘contenido’+ msg)*
    • node.trace(‘contenido’+ msg)* → Node.RED v0.17

66

67 of 74

Capgemini - Hackathon 2017

Node-RED

  • Devolución Asíncrona
    • node.send({ payload : ‘contenido’ })

  • Escucha de eventos Asíncrona
    • node.on(‘evento’, function() {

//code

});

67

68 of 74

Capgemini - Hackathon 2017

Node-RED

  • Contexto
    • this.context.get(‘key’)
    • this.context.set(‘key’, ‘value’)

  • Global
    • this.context.global.get(‘key’)
    • this.context.global.set(‘key’, ‘value’)

  • Flow
    • this.context.flow.get(‘key’)
    • this.context.flow.set(‘key’, ‘value’)

68

69 of 74

Capgemini - Hackathon 2017

Javascript - Básicos

  • Clases

Class Poligono{

constructor(alto, ancho) {

this.alto = alto;

this.ancho = ancho;

}

get area() { return this.calcularArea(); }

calcularArea() { return this.alto * this.ancho; }

}

→ var cuadrado = new Poligono(5,10);

cuadrado.area();

69

70 of 74

Capgemini - Hackathon 2017

Javascript - Básicos

  • Lectura de Json
    • var obj = { payload : [

key : “vic”,

value : [ “bo”, “ma” ],

msg@id : 012345323343

]

};

→ var msg = obj.payload.msg@id; //El editor dará error por usar ‘@’

→ var msg = obj.payload[“msg@id”]; //Correcto!!!

70

71 of 74

Capgemini - Hackathon 2017

Javascript - Básicos

  • Promesas
    • new Promise( function ( resolve, reject ) {

// Código

})

.then( function (data) {

console.log(“Promesa resuelta ”+data);

})

.catch( function (error) {

console.error(“Promesa fallida “+error);

});

71

72 of 74

Bibliografía

73 of 74

Capgemini - Hackathon 2017

Referencias

73

74 of 74

Happy Coding

Happy Hackathon!