#IoT
##¿Qué es exactamente el IoT?
"... la interconexión de cualquier producto con cualquier otro a su alrededor ..."
Note:
- Con el pasar del tiempo, la capacidad de poder capturar información desde distintos dispositivos se ha incrementado drásticamente.
- Múltiples fuentes de información emitiendo contenidos para su análisis.
##IoT, el Origen Bill Joy imaginó la comunicación D2D (del inglés: Device to Device, dispositivo a dispositivo), como parte de su estructura de las "Seis Webs" (en 1999 en el Foro Económico Mundial de Davos ); pero no fue hasta la llegada de Kevin Ashton que la industria tomó un segundo vistazo a la utilidad del internet de las cosas.
Note: Bill, cofounder of Sun: Considerado uno de los mejores programadores de la historia, (escribío el nucleo de BSD en un fin de semana), con fundador de Sun Microsystem,. describió que la comunicacion máquina a máquina sería parte de una de las 6 webs. Las 6 web’s son:
- La internet que puedes ver en una pantalla,
- La internet que siempre llevas contigo
- La internet que puedes apreciar en la pantalla grande
- La internet extraña, aquella que es capaz percibir instrucciones mediante la voz y puedes oír.
- B2B: la internet que permite a las máquinas de negocios interactuar entre ellas,
- D2D: la internet que permite a las dispositivos comunicarse entre sí.
Kevin, RFDI inventor y cofundador del Auto-ID Lab (centro de investigación en el MIT): Inventor del concepto “Internet de las cosas”, que describe un sistema donde el internet esta conectado al mundo físico mediante sensores ubicuos. Desarrolladores de la arquitectura del IoT auspiciados por empresas como HP, Walmart.
##Incidencias
- Impacto Social
- Cambio económico
- Evolución
Note:
- Las personas ven como sus vidas se facilitan, y medios digitales les entregan con mayor detalle información que necesitan o no.
- Posibilidad de nuevos negocios
- Reducción de costos
- Dependencia de los aparatos
##Aspectos del software/hardware involucrados
- Machine learning
- Real Time Analytics
- Sensores
- Embedded Systems
Note: La gran cantidad de información circulante debe ser procesada de manera adecuada y sacar el máximo provecho.
Evolución en la calidad y versatilidad del hardware Mejores técnicas para transmisión y almacenamiento de los datos Creación de herramientas capaces de analizar y generar conocimiento a partir de los datos almacenados.
##Aplicaciones Actuales
- Media
- Monitoreo del entorno
- Administración de infraestructuras
- Manufacturación de productos
- Agricultura
- Administración de la energía
- Medicina
- Domótica
- Transporte
- ...
Note: Usos del IoT:
- Media:
- Transmisiones y cámaras de control remoto
- Monitoreo del entorno
- Calidad del aire
- Admin. de Infra.:
- Inventarios
- Manufacturacion
- Automatización de ensamblajes
- Agricultura
- Monitoreo de invernaderos
- Medicina
- Telemedicina
- Domótica
- Automatización de la iluminación
- Transporte
- Monitoreo de buses
##Addressing & Auto-ID Center
- Auto-ID Center: centro de investigación y desarrollo en el MIT quienes desarrollaron el protocolo RFID (radio frequency identification)
- Cada objeto capaz de conectarse a la red debe poseer un identificador único, que lo distinga de otro, a pesar que posean características similares.
- Inconvenientes con el direccionamiento de los dispositivos, el protocolo IPv4 es limitado.
Note: Centro: auspiciado por Wal-Mart, HP, Gillette, entre otros Crearon el “electronic product code”
##Internet 0 Hace referencia a una capa física encargada solamente de la asignación de direcciones IP a cualquier cosa, de baja velocidad y económica. En el internet 0, los mensajes RFID se transforman en datos físicos, capaces de ser capturados/enviados directamente por dispositivos ubicuos y procesar la información que contienen para la toma de decisiones.
##Computación Ubicua Se refiere a cómo la computación (el software) se integra con el entorno de las personas.
- Ej: Personas consultando indicaciones a un panel de información en el Mall.
Note: También conocido como inteligencia ambiental, es parte del IoT, incluso también puede ser parte de la inteligencia artificial.
Desde el punto de vista técnico la computación ubicua contempla una gran cantidad de conceptos:
- Computación distribuida
- Redes móviles
- Sensores
##Características del IoT
- Inteligencia:
- Los participantes podr+an actuar de forma independiente (perseguir objetivos propios) y tomar decisiones de acuerdo al ambiente.
- Arquitectura:
- Arquitectura dirigida a eventos Caótico y complejo
- Una gran cantidad de actores participando del proceso de compartir sus datos y que requieren atención.
Note:
- Inteligencia: No determinista: no está necesariamente ligado al concepto de causa efecto, no todas las acciones necesariamente deben concluir en algo concreto
- Arquitectura: Toda la infraestructura, software y hardware debe estar pensada en el comportamiento y en la recepción de eventos del ambiente.
##Características del IoT
- Tiempo:
- El tiempo ya no puede ser considerado ni tratado como una unidad lineal, muchos eventos paralelos y simultáneos.
- Seguridad:
- Toda la información circulante debe estar protegida.
##Better QoS
- Better Quality of Service:
- Verificar cada envió de los datos
- Basado en mensaje - respuesta (algunas veces comprobación)
##Message Persistence
- Message Persistence
- Almacenamiento permanente de los mensajes
##Telemetry Implementación del patrón de dos modos:
- Como cliente: Envía peticiones PUT/POST para actualizar el estado del dispositivo.
- Como servidor: Recibe peticiones GET consultando por información. En cualquier caso todo se trata de peticiones y respuestas. Se basa en el concepto de “Publicador/Suscriptor”, además se basa en el QoS.
##Command Basado en la arquitectura de cliente/servidor, el servidor envía instrucciones al dispositivo esperando resultados.
##Notification Similar a Command y Telemetry, el servidor envía notificaciones, o instrucciones, pero este no queda a la espera de respuestas.
##El IoT El internet de las cosas no es más que mensajería, la cual está previamente definida por los patrones. Bajo la arquitectura de cliente/servidor, publicador/suscriptor, petición/respuesta o cualquier otra, los protocolos proveen diferentes maneras de trabajo, nativas o no.
##Consideraciones claves Sensores
- Sistema operativo para IoT
- Abstracción del hardware
- Soporte de comunicación
- Administración remota
##Consideraciones claves Conecciones y “Smartthings”
- Sistema operativo para el sistema base
- Containers y/o ambientes en tiempo real
- Comunicación y conectividad
- Administración de datos y mensajería
- Administración remota
IoT en la nube
- Conectividad y enrutamiento de los mensajes
- Administración y registro de los dispositivos
- Administración y almacenamiento de los datos
- Administración de eventos, Analítica y UI
- Disponibilización de las aplicaciones
Transversales
- Seguridad
- Descripción de los mensajes, datos y “Data interoperability ”
- Herramientas de desarrollo
Características relevantes que debe cumplir un stack de IoT
- Bajo acoplamiento
- Modular
- Independiente de plataforma
- Basado en estándares abiertos
- Apis de comunicación bien definidas
- Construcción de una aplicación en pequeños pedazos
- Normalmente se refiere a una comunicación via protocolo HTTP
- Cada parte resuelve un requerimiento del negocio
- Los componentes son servicios
- Organizada en torno a las funcionalidades del negocio
- Productos no proyectos
- Tener gobierno descentralizado
- Gestión de datos descentralizada
- Diseño pensado en las fallas
- Automatización de la infraestructura
- Diseño evolutivo
Dado el siguiente problema:
-
Matrículas de alumnos de la universidad.
-
Diseñar un diagrama de componentes, con los elementos que la arquitectura de microservicios que deberían existir.
- Responsabilidades de cada uno
- Entradas y salidas (incluir bases de datos que deberían existir)
- ¿Qué tipo de Servicios Web Existen?
- ¿Qué protocolos para WS exiten?
- Verbos HTTP, que función cumplen y el objetivo de cada uno?
https://martinfowler.com/articles/microservices.html
http://www.oreilly.com/iot/free/what-is-the-internet-of-things.csp
- Estilo de arquitectura que se basa en la presentación de estados.
- Usando principalmente para el HTTP.
- Más sencillo de definir que otros (Por Ejemplo SOAP).
- Operaciones bien definidas (mediante los verbos HTTP).
- Sintáxis universalmente conocida.
Cualquier elemento que pueda proveer información.
- Ejemplo:
- Recurso:
- Personas
- Cuenta bancaria
- No recurso:
- Enviar un mail
- Actualizar un estado
- Notificar
- Recurso:
- RPC: Llamadas a procedimiento remoto
- REST: basado en la obtención de información en base a los recursos
- JSON
- XML
- Plain Text
- ...
- uno
- dos
- uno dos
- tres
- uno dos
Puntos de acceso a los recursos/acciones
- Request:
- Path Variables
- Request Params
- Headers
- Request Body
- Responses:
- HTTP Status
- Headers
- Response Body
- URL: http://myServer:Port/myApp/users?sort=age
- HEADER
- Content-type: application/json
[
{
"name":"Alex",
"phone":"123"
},
{
"name":...
},
...
]
Microservicio mantenedor de personas, operaciones CRUD
Method | URL | Descripción |
---|---|---|
GET | http://localhost/personas | Obtiene a todas las personas |
GET | http://localhost/personas/1 | Obtiene a la persona con id 1 |
Method | URL | Descripción |
---|---|---|
PUT/PATCH | http://localhost/personas/1 | Actualiza a la persona con id 1 |
DELETE | http://localhost/personas/1 | Elimina a la persona con id 1 |
Method | URL | Descripción |
---|---|---|
POST | http://localhost/personas | Crea a una nueva persona |
- JDK 8 (ojalá version Oracle)
- Incluir variable de Entorno JAVA_HOME y PATH
- Apache Maven 3.x
- Incluir variables PATH, M2, M2_HOME
- Entorno de desarrollo favorito para Java :)
- Cliente Rest
- Postman
- curl
- etc.
Framework, open source, para desarrollar aplicaciones basado en la inversion de control y la inyección de dependencias. Nace en el año 2002 como un sustituto a EJB.
- Adopción de características de J2EE.
- Programación orientada a aspectos.
- Modelo de 'N' capas.
- Inyección de dependencias.
- Spring Framework
- Spring Boot
- Spring Cloud
- Spring Data
- Spring Integration
- Spring Batch
- Spring Security
- Spring Cloud Data Flow
- Spring HATEOAS
- Spring Social
- Spring for Android
- Spring WebServices
- Spring StateMachine
- Spring Shell
- ...
La configuración de la aplicación puede ser ingresada mediante archivos especiales de configuration llamados, "Properties", pueden estar en formato property o yaml. La ejecución de las configuraciones puede ser setada mediante archivos XML, o en sus más recientes versiones, mediante anotaciones que facilitan la codificación y crean un código más limpio.
Intervención de las llamadas a los procedimientos
Los beans viven dentro del conexto de spring, el cual los gestiona dependiendo de su scope. Aquí interviene el IoC y la Inyección de Dependencias. Ésto es el corazon del framework.
- Singleton
- Prototype
- Proxy
Inicial | Concepto |
---|---|
S | Principio de responsabilidad única |
O | Principio de abierto/cerrado |
L | Principio de sustitución de Liskov |
I | Principio de segregación de la interfaz |
D | Principio de inversión de la dependencia |
- Servicios/Aplicaciones Web
- Aplicaciones de Escritorio
- Mobile
- BigData
- Machine Learning
- ...
Software Administrador de Proyectos, basado en el concepto de 'project object model (POM)'. Maven es tiene al capacidad de construir, reportar y documentar desde piezas específicas de software.
<?xml version="1.0" encoding="UTF-8"?>
<project ...>
...
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
...
<dependencies>
...
<dependency>
...
</dependency>
</dependencies>
</project>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
- 4 Grupos de 3 personas cada uno
- Proyecto abordable con los sensores disponibles
- Entrega informe parte 1
- En la clase del Miércoles 30 de agosto (Impreso)
- Contenidos
- Descripción de la idea a desarrollar
- Problema que se estaría resolviendo
- Descripción detallada el problema
- Estado del arte
- Solución propuesta, descripción detallada
- Diagrama de Interacción (componentes)
- Si necesitan de fuentes externals deben incluirlas y describirlas
- Descripción de Sensores a utilizar
- Problema que se estaría resolviendo
- Descripción de la idea a desarrollar