Prólogo
Es decir, el término debería haber sido escuchado por muchas personas, es decir, después del surgimiento de Big Data, Ai, etc., también siguió a la llegada de la tendencia de investigación y desarrollo, es decir, Internet de las Cosas. Hablando tradicionalmente, es un control inteligente y programático de las instalaciones de hardware. Lo más fácil para todos es pensar en el hogar inteligente, que se puede utilizar para controlar de forma remota la configuración de los muebles a través de una aplicación o control remoto. De lo que estamos hablando hoy es del control de la comunicación entre personas y cosas, y la ejecución de comandos humanos a través de productos de Internet, y la máquina responde.
Productos de la competencia
Hablando de hardware de control de programas pequeños, ¿en qué producto debe pensar de inmediato? Un cierto culto, un determinado FO, una máquina expendedora, etc., su arquitectura generalmente tendrá un punto en común es la existencia o la función similar de la nube Iot. Por ejemplo, una arquitectura en la nube como Azure utiliza el centro de IoT, el almacenamiento, la máquina virtual y otros servicios.
Piensa en grande
Entonces podemos esperar una arquitectura e implementación más grandes, o esperamos poder asignar e implementar funciones similares, pero aún tenemos que darnos cuenta de esta función o de la eficacia de los productos pequeños paso a paso.
Formulación de destino: El control final del usuario es un programa pequeño, y usamos una máquina expendedora simple (o gabinete rápido) en el lado del hardware. Lo que queremos lograr es notificar específicamente a la máquina expendedora que abra y bloquee el gabinete correspondiente a través del comando del programa pequeño.
¡Entonces debemos concebir la versión simplificada correspondiente de la arquitectura y la implementación del acoplamiento!
En la actualidad, la mayoría de los métodos tradicionales y familiares de interacción de front-end y back-end deberían ser principalmente API REST. Luego estamos en el pequeño programa (piense en ello como una pantalla de front-end pura) y el back-end (aquí está Iot en la siguiente figura, podemos usar SpringBoot + Netty construye un centro de Iot) La comunicación entre ellos utiliza la forma de API, y la interfaz de comando correspondiente se abre en segundo plano, que es llamada por el applet. Puede haber otro negocio aquí: ¿entonces el servidor tiene notificaciones para la comunicación activa del applet? No entraré en detalles aquí. Esto puede considerarse como una consideración tardía de la iteración del producto. También puede considerar el método de implementación.
El applet en este artículo es una demostración para la depuración y prueba de MQTT, pero no hay conexión REST API. El siguiente artículo se centrará en la introducción.
¿Qué pasa con la comunicación entre el centro Iot y la máquina expendedora (gabinete express)? Los estudiantes que solo pueden trabajar en software generalmente están menos expuestos. Cuando lo comencé, era muy ignorante, pero en términos generales, se trataba de diferentes protocolos de comunicación para lograr la comunicación. Tomemos el microcontrolador como ejemplo, podemos saber cuántos tipos admite. Protocolos de comunicación, como MQTT o TCP / IP, etc.
En esta versión, haremos la versión de comunicación de MQTT, luego el diagrama de flujo es el siguiente.
[Imagen]
¿Qué preparar?
Seleccione los recursos de Github ya existentes, esta vez elija paho.js para facilitar la comunicación MQTT
Este artículo se centrará en la comunicación de acoplamiento entre el applet y MQTT, sin llamada a la API
Applet: Necesitas una cierta base para el desarrollo de applets, esta vez elegí un proyecto de Github de un amigo como demo de mi applet
Backend: Use SpringBoot + Netty para hacer un pequeño centro Iot que conecte MQTT y applets
Fin de la simulación de hardware MQTT: elegí Paho, mqtt.java de Eclipse autorizado de Github como simulación
En pocas palabras, lo que necesita implementar es el lado central del backend, que también es el lado de Java en el que es mejor.
Simplifica primero
Cuando su posición ha alcanzado un cierto nivel, lo que debe hacer es no escribir el código de implementación detallado subyacente, sino una plantilla o idea y proceso para dicha implementación, por lo que temporalmente haremos una versión simple del pequeño programa para el hardware El proceso de comunicación entre.
Netty es muy bueno, no diré mucho aquí, porque la definición de avanzada por parte de los fabricantes de BAT generalmente necesita comprender el nivel del código fuente de Netty. Luego debe agregar Netty basado en SpringBoot y personalizar el contenido del códec correspondiente. Debido a que usamos paho, hay algunos formatos propios. La idea general es definir la especificación del protocolo. La parte de comunicación es en realidad relativamente simple porque una gran parte Netty lo ha hecho por ti.
La comunicación de socket del applet es el comienzo de ws, por lo que nuestro centro Iot también necesita un canal de comunicación ws.
Aquí nuestra dirección de comunicación es: ws: // localhost: 8094 / mqtt
No utilicé wss. Digamos lo mismo. Primero realicemos el simple y luego pensemos en el complicado.
Luego, la correspondencia del applet también se conecta a esta dirección, el applet puede iniciar la conexión en el modo y el extremo de la emulación de hardware Java de Mqtt es también la conexión de la misma dirección.
Para MQTT, el applet necesita suscribirse a un tema, y el terminal de simulación de Java también está enviando información a este tema. Si ambos extremos envían y reciben normalmente y ambos pasan nuestro centro Iot, entonces nuestro pequeño proyecto ya tendrá éxito Es!
Efecto
GitHub
Todo el código fuente relevante de este artículo se ha colocado en el proyecto paho-mqtt en el proyecto GitHub
Dirección: introducción al proyecto paho-mqtt
: basado en Netty4 y SpringBoot, sala de chat WebSocket (imagen de texto) más llamada API Netty enlace largo para ejecutar el envío de mensajes (número en línea, lista de usuarios), protocolo Iot Internet of Things-MQTT, protocolo TCP / IP comunicación microcontrolador , Almacenar datos de chat de forma asincrónica