También quiero agradecer a mi compañera Nuria, con quien he compartido y realizado prácticamente todos los trabajos y proyectos de la carrera. A pesar de esto, es posible desarrollar estas soluciones en conjunto con un beneficio directo para la gente.
Introducción
- Entorno Tecnológico
- Motivaciones
- Objetivos del Proyecto
- Estructura de la memoria
Incluye una aplicación prototipo que recupera datos de sensores de la nube. También será necesario adquirir conocimientos para crear aplicaciones en dispositivos móviles con las que se controlarán y monitorizarán los sensores incluidos en el hogar.
INTRODUCCIÓN
Finalmente, reconocer, desarrollar e implementar protocolos de comunicación adaptados a IoT en la propia red. Esta memoria se estructura en varios capítulos de forma progresiva, según el estudio actual de las tecnologías, el proceso de investigación y aprendizaje durante el transcurso de la carrera e independientemente de las diferentes áreas que componen el proyecto final.
LAS PLATAFORMAS PARA EL IOT
La domótica y el IoT son conceptos muy amplios que también tienen grandes perspectivas, como la eficiencia energética, la seguridad, el control, la seguridad de los datos y qué hacer con ellos. Estos micros son plataformas desarrolladas específicamente para el mundo IoT, como se ha comentado anteriormente, con las que también se tratará el conocimiento.
INICIANDO EL PROYECTO
PROTOCOLO DE COMUNICACIÓN M2M
DESARROLLO DE LA APLICACIÓN
PROYECTO
CONCLUSIONES Y LÍNEAS FUTURAS
GLOSARIO DE TÉRMINOS
BIBLIOGRAFÍA
Las plataformas para el IoT
- ESP8266
- Módulos seleccionados para el proyecto
- Raspberry Pi 3
Además, este módulo se muestra en la Figura 1.5 del apartado 1 del primer capítulo. La captura de pantalla de la interfaz gráfica de este firmware se puede ver en la Figura 2.7.
Iniciando el proyecto
- Programando los micros ESP8266
F. Skinner
- Nodos con ahorro de energía y reconexión automática
- Programando la Raspberry Pi 3
- Servidor DHCP
- Interfaz Ethernet
- Interfaz WLAN
- Punto de acceso
- Servicios de NAT
- Comunicación Servidor-Microcontrolador
- Comunicación Servidor-Dispositivo
- Comunicación Servidor- Administrador
- Ventajas e inconvenientes
- Tipos de protocolos VPN
- Configuraciones de Open VPN
- Asignación de una IP externa
- Protocolo Open VPN
- Gestor de certificados
- Generación del servidor VPN
- Generación del cliente VPN
- Canalización de las peticiones DNS
- Protocolo de comunicación M2M
- Protocolos actuales
Además, si el modo AP está activado, se desactiva, como se muestra en el Fragmento de Programa 3.2. De lo contrario, actívelo como se incluye en el Fragmento de software 3.4. Una vez establecida la conexión se inicia la comunicación con el servidor, y para ello se incluye en los comandos try-final, como se muestra en el Fragmento de Programa 3.9.
En este caso, se agregaron dos funciones más al código como se muestra en el fragmento de programación 3.17. Para este tiempo de espera y control con try-except se agregó como se muestra en el fragmento 3.18. Las funciones connect_network() y retransmisión (encendido) son las mismas, pero se ha agregado una nueva función llamada connectToServer() que se incluye en el fragmento 3.27.
Además, se incluye la función reConectarAServidor() para que, cuando sea necesario, el cliente pueda reconectarse al servidor de forma controlada como se puede ver en el Fragmento de Programación 3.28. La conexión en este caso se realiza como se muestra en la figura 3.3. Una vez instalado en el sistema, Raspbian está configurado para escuchar sólo en la dirección IP adecuada.
REST
Al mismo tiempo, se puede controlar la calidad del servicio según la necesidad de la aplicación solicitando la confirmación del mensaje mediante el envío de un acuse de recibo o consentimiento (conocido como ACK por su nomenclatura inglesa: ACKnowledgement).
XMPP
STOMP
La comunicación se establece mediante protocolo UDP y por tanto es compatible con sistemas embebidos, ya que UDP requiere muy poco consumo de procesamiento y gracias a ello se reduce el consumo energético del micro. La comunicación entre el cliente y el servidor se realiza a través de un cuadro formado por varias líneas. La primera línea contiene el comando seguido de encabezados de la forma:
Así, la comunicación entre el servidor y el cliente se produce a través de un marco denominado MENSAJE, RECIBO o ERROR con un formato similar de encabezados y contenido del cuerpo.
AMQP
MQTT
Funcionamiento de MQTT
El cliente y el servidor asignan identificadores de paquetes de forma independiente. De manera similar, el bit 4 indica la posibilidad de que el servidor almacene un mensaje retenido y esté en espera de ser utilizado. O el siguiente bit (will) determina si el cliente quiere guardar el mensaje en el servidor cuando se acepta la conexión.
Por otro lado, el bit 2, como su nombre indica, se encarga de borrar la sesión almacenada en caché y liberar el mensaje para la siguiente. Los bits LSB, por otro lado, indican el ID del tema o el nombre incluido en el mensaje que será capturado por el suscriptor. Por ejemplo, ClientId es responsable de identificar al cliente en el servidor mediante una cadena de 1 a 23 caracteres.
Por otro lado, está el ID del protocolo MQTT que se muestra en el campo protocolId que incluye el nombre y la versión y solo está presente en la función CONNECT.
Paquetes incluidos
CONNECT
CONNACK
PUBLISH
PUBACK
PUBREC
PUBREL
PUBCOMP
SUSCRIBE
SUBACK
UNSUBACK
PINGREQ
PINGRESP
DISCONNECT
Topic y filtros
- Barra de separación
- Separación de varios niveles mediante ‘#’
- Comodín de un sólo nivel
- Artículos que comienzan con $
- Semántica y uso
- Gestión de errores
El carácter numérico de varios niveles (U) es un comodín que coincide con cualquier número de niveles dentro de un tema. Este carácter debe especificarse solo o después de un separador de nivel de materia. El comodín de un solo nivel se puede utilizar en cualquier nivel del filtro, incluidos el primer y último nivel del tema.
Se puede utilizar en más de un nivel o junto con el comodín de varios niveles. Los programas no pueden utilizar un tema con un nombre de tema que requiera $ para sus propios fines. El cliente o servidor puede encontrar un error transitorio, como si la red no funciona, lo que impide el procesamiento de un paquete de protocolo.
De manera similar, si se encuentra un error transitorio durante el procesamiento de un paquete de control de entrada, la conexión de red debe cerrarse al recibir dicho paquete de control.
Seguridad
- Mediante Autenticación del servidor
- Integridad de mensajes y el control de paquetes
También puede considerar la creación de una red privada virtual entre clientes y servidores para garantizar que solo los clientes autorizados reciban los datos. Cuando se utiliza TLS, el servidor puede utilizar los certificados SSL enviados desde el cliente para autenticar al cliente. En este caso, se utilizan certificados SSL enviados desde el servidor al cliente para autenticarlo.
Esto puede garantizar la integridad del contenido de los paquetes de control para publicación en la red y en reposo. Además, la seguridad TLS proporciona algoritmos hash para verificar la integridad de los datos enviados a través de la red. Además, el uso de una VPN para conectar clientes al servidor garantiza una buena integridad de los datos.
La implementación del servidor puede desconectar a los clientes que violan sus reglas de seguridad creando una lista de bloqueo dinámica basada en identificadores como la dirección IP o la ID del cliente.
Comunicación basada en protocolo MQTT-SN
Por otro lado, en el caso de una GW independiente, se utiliza el protocolo MQTT-SN entre el servidor y la GW. SYS/broker/clientes/total: Indica el número de clientes conectados y desconectados con sesión persistente y registrados en el servidor MQTT. En el fragmento de programación 4.6, el pin indicado en el archivo CONFIG.json está configurado para recopilar datos del LDR.
Por otro lado, se creó una función para cargar los datos del archivo a almacenar con la configuración del servidor MQTT, como se muestra en el fragmento de programación 4.7. Si no existe, cree el nuevo archivo llamando a la función save_config() en el Fragmento de programación 4.8. En la siguiente función, el ESP8266 se conecta al servidor por primera vez usando MQTTClient, como se muestra en el siguiente fragmento de programación 4.11.
Finalmente, el Fragmento de Programación 4.13 muestra cómo se realiza la llamada principal del programa.
Desarrollo de la aplicación
- Arquitectura de red
- Aplicación domótica central
- Filtrado para dispositivos
- Filtrado para microcontroladores
- Aplicación de los dispositivos Smart Phone
- Clases
- Servicios
Asimismo, se darán más detalles en el apartado Integración de MQTT en la aplicación RPi3. Esto es posible porque la aplicación ha guardado en este dispositivo los datos de la comunicación anterior. Además, si el microcontrolador no está en la base de datos, la aplicación RPi3 no responderá.
De igual forma se muestra esquemáticamente y a modo de ejemplo en el diagrama de la figura 5.9. Es por eso que la aplicación RPi3 recopila todos los datos necesarios de los nodos que deben actualizarse. El diseño de la aplicación consta inicialmente de una maquetación en la que se solicitan datos de autenticación.
Una vez que el nombre de usuario y la contraseña estén validados correctamente, estará conectado de forma transparente a la aplicación RPi3.
Proyecto
- Seguridad
- Acceso desde el exterior de la red domótica
- Acceso a la red privada de forma local
- Acceso a la red privada de forma tunelizada
- Normativa y legislación con respecto a la domótica
- Puesta en marcha
- Distribución de los ESP8266
- Distribución de los sensores
- Ejemplo de funcionamiento
Toda la información relevante se almacena encriptada en la aplicación RPi3 para el sistema domótico. La imagen de la Figura 6.2 (A) muestra una captura de pantalla de una de las cajas de distribución de la vivienda. En primer lugar, el administrador del sistema domótico debe introducir manualmente un usuario en la base de datos de la aplicación domótica.
La carpeta de la aplicación llamada prodomo se encuentra en el escritorio del RPi3. Si se aprueba, la aplicación RPi3 responderá con una aceptación. Por otro lado, aún queda por definir la forma de conectarse a la aplicación domótica fuera de la red domótica.
A partir de ahora tendrá acceso a la red domótica y por tanto al servidor de aplicaciones domóticas.
Conclusiones y líneas futuras
- Conclusiones del proyecto
- Mejoras actuales del proyecto
- Futuras mejoras del proyecto
Esta aplicación tiene como objetivo poder utilizar todas las funciones disponibles que ofrece la aplicación RPi3, desarrollada como un sistema domótico centralizado. En cuanto a las funciones de control y monitorización, se ha podido controlar algunos electrodomésticos de la vivienda así como su iluminación. Asimismo, esta monitorización indica a los sensores y al resto del sistema si la iluminación de una estancia del hogar está encendida o no.
Básicamente, la aplicación de cámara de seguridad incorporada transmite directamente las imágenes que captura con su cámara. El formato de codificación para la captura de la cámara es JPEG (Joint Photographic Experts Group) y la transmisión en vivo es MJPEG (Motion JPEG). Una de las ventajas de incorporar la cámara de seguridad streaming y el reproductor streaming es que la app es válida y compatible con dispositivos que tengan sistema operativo Android mayor o igual a la versión 2.3.5.
Por otro lado, en un futuro tenemos previsto implementar un cliente OpenVPN en la misma aplicación de Android para que se ejecute automáticamente cuando detecte que el dispositivo está en una red distinta a la red domótica.
Glosario de términos
Bibliografía