Ensamblamos la red ZigBee más simple, programamos bajo Mbed, nos comunicamos a través de MQTT

Este artículo es un gran taller de capacitación para principiantes sobre el uso del módulo XBee junto con un microcontrolador que tiene Mbed OS a bordo. ZigBee es un estándar largo y firmemente arraigado en los sistemas Smart Home (por ejemplo, se usa junto con Z-Wave en el centro Samsung SmartThings, vea nuestro artículo ), se caracteriza por un bajo consumo de energía, facilidad de uso y, lo más interesante, la capacidad de crear Redes de malla autoconfigurables. Verá en el taller que esto es así, veremos la estructura de dicha red a través de una práctica herramienta de visualización.

Se supone que ya sabe qué es ZigBee y para qué sirve. Ahora desea conectar su primer módulo XBee y resolver sus problemas con él, sin tener que programar el módulo en sí, sino solo usándolo como interfaz de comunicación. Al final, enviaremos todos los datos a través de una puerta de enlace MQTT improvisada en cualquier lugar, incluso a un servidor local, incluso a Internet. Decidimos mostrar todo en el ejemplo de Mbed como el RTOS más simple y accesible para principiantes. Estará convencido de que todo funciona "fuera de la caja", y puede comenzar de inmediato a hacer su proyecto, incluso si antes estaba tratando solo con Arduino.



El manual constará de las siguientes partes:

  1. Conexión y configuración del módulo XBee
  2. Conecte los módulos a la red.
  3. Configuramos el módulo sin quitarlo del escudo
  4. Recuperación de datos
  5. Enviando datos
  6. Hacer una puerta de enlace MQTT simple

Pero primero, una lista de componentes: lo que es deseable tener para hacer todo lo anterior.

Componentes requeridos


  • Dos placas compatibles con Mbed. Recomendamos el tablero de entrenamiento STM32 Nucleo como relativamente económico y popular con fines educativos. El proceso de programación se simplifica tanto como sea posible: recopile el programa en el IDE gratuito en línea, descargue el firmware ensamblado y "suéltelo" en la placa, que aparecerá como una unidad flash en el sistema. Qué modelo específico tomar no es importante, pero no tome el más antiguo, preste atención a la cantidad de memoria. Por ejemplo, F401RE: se lo damos solo para definirlo, para que no se confunda en su variedad y al principio códigos alfabéticos incomprensibles de procesadores STM.


  • XBee-. Digi. «» , , , MBee, , , , . / : , . / Pro: , , Pro .

  • XBee Shield V2 ( SeeedStudio). - , RX TX XBee-.

  • Un convertidor USB-UART con conector para XBee. Es necesario para la configuración inicial. Los módulos XBee en sí mismos no están equipados con una interfaz USB (no tienen nada que ver con eso). Se necesita USB única y exclusivamente para la comunicación entre el módulo y la computadora, y en el dispositivo puede funcionar en un UART mucho más simple.

    El paso de la ranura de los módulos XBee es de 2.0 mm; para la electrónica no es estándar, en el sistema métrico (generalmente estamos acostumbrados a ver el paso 2.54 de acuerdo con los estándares estadounidenses). Por lo tanto, desafortunadamente, dichos módulos no se insertan en la placa de pruebas y siempre necesitan un adaptador.

    Cualquier adaptador es adecuado aquí, tomamos este de Waveshare:


Conexión y configuración del módulo XBee


Lo más simple que puede hacer con el módulo es conectarlo a la computadora directamente a través de USB. Inmediatamente tendremos acceso a sus parámetros de configuración.

Instalar XCTU


Para trabajar con XBee, hay un programa oficial de XCTU. Descárgalo e instálalo. La documentación dice que en Ubuntu necesita agregar un usuario a un grupo dialoutpara trabajar con puertos que no sean de un superusuario; haga esto si aún no lo ha hecho:

sudo usermod -a -G dialout <username>

Descargue el archivo zip del enlace, contendrá un archivo .run. Debe hacerse ejecutable (a través chmod +x _de la consola o: botón derecho del mouse - Propiedades - Permisos) y ejecutarse ./40002881_V.run.

Es importante comenzar la instalación no desde la raíz (sin sudo), de lo contrario habrá problemas más adelante.

La configuración se parece a esto:



Programa XCTU


Después de la instalación, puede iniciar el programa ejecutando el archivo appen el directorio donde instaló el programa (por defecto - ~/Digi/XCTU-NG).
 
La apariencia será la siguiente:



en este programa, puede agregar su módulo existente conectado al puerto USB a través de un adaptador. Haga clic en el botón Descubrir con una lupa. Aparece una ventana pidiéndole que seleccione un puerto: como puede ver, el programa detectó correctamente la presencia de un puerto en el sistema /dev/ttyUSB0, este es nuestro adaptador USB-UART.



La ventana sugiere marcar la búsqueda. Por supuesto, existe la tentación de verificar todo de una vez para encontrar su módulo. Pero luego la búsqueda continuará por mucho tiempo. En la práctica, tiene sentido dejar las casillas marcadas de forma predeterminada y elegir las opciones más comunes para la velocidad de transferencia de datos, como en la imagen a continuación. Por lo general, los nuevos módulos tienen un valor predeterminado de 9600, y para fines de capacitación esto es más que suficiente, la velocidad aquí no es crítica para nosotros.



Como resultado, si todo tiene éxito, se le pedirá que seleccione el módulo encontrado:



se notó un pequeño error: a veces el módulo no estaba a una velocidad no estándar, el restablecimiento manual del módulo con el botón Restablecer durante la búsqueda y el restablecimiento de su velocidad en baudios al estándar (9600) ayudó.

Cambiar los parámetros del módulo


Además estamos comprometidos en la configuración del módulo. Se eliminarán varios parámetros, la mayoría de los cuales son inicialmente incomprensibles. Afortunadamente, solo algunos de ellos deberán cambiarse para comenzar rápidamente.

ID de red: ID de PAN. Una clave de red común, debe ser la misma para todos los dispositivos para que estén conectados independientemente a la red. Ponga cualquier número, en nuestro caso hicimos 42.



CE - Coordinador habilitado. Si hay 1, entonces este módulo actúa como coordinador. Si es 0, el módulo actúa como un enrutador (enrutador); de hecho, simplemente garantiza que los paquetes pasen a través de la red a través de sí mismo. La mayoría de los hosts suelen ser enrutadores. Necesitamos un coordinador y dos enrutadores en nuestra red, así que ponga uno aquí.

También existe la función "Dispositivo final": este es un módulo que no realiza trabajos en la transferencia de paquetes, sino que solo se comunica con otros enrutadores y realiza su útil funcionalidad. Por lo general, solo está en modo de suspensión y se despierta a intervalos establecidos y descubre si hay algún mensaje. Dicho módulo puede ser alimentado por una batería, mientras que el enrutador y el coordinador siempre deben estar "en línea" y, como resultado, necesitan energía constante para mantener toda la red. No consideraremos este ejemplo ahora, ya que es más interesante para todos asignar el rol de enrutadores y observar cómo la red cambiará automáticamente su configuración.



AP - Habilitación API.Modo de operación. Los módulos XBee pueden funcionar en dos modos: AT o API. El modo AT es más fácil para los principiantes, es un reemplazo transparente del puerto serie y funciona con el módulo a través de comandos AT. Sin embargo, el modo API es mucho más rico en funcionalidad, le permite configurar módulos de forma remota, contiene la dirección del remitente, devuelve el estado de entrega del paquete y mucho más. Además, las bibliotecas para interactuar con XBee suponen que el dispositivo se utiliza en el modo API. Por lo tanto, reemplácelo inmediatamente con el modo API, esto se hace configurando la unidad en el campo correspondiente.



El nombre del módulo es Identificador de nodo. Una opción útil para darle a su módulo un nombre legible por humanos. Vamos a darle ese nombre: coordinador.



Después de eso, puede actualizar la configuración en el módulo presionando el botón con un lápiz:



2. Conecte los módulos a la red.


Ahora veremos qué tipo de red obtenemos si configuramos tres módulos. El programa XCTU tiene un visualizador de red bastante conveniente, veremos claramente la topología.

Configuraremos los tres módulos a su vez con los siguientes parámetros:
  • ID de PAN: número total, por ejemplo 42
  • AP (API Enable): establecido en 1 (funciona en modo API)
  • NI (Identificador de nodo): dé a los módulos nombres comprensibles (Coordinador, Lámpara y Interruptor, si estamos haciendo, por ejemplo, un modelo del sistema Smart Home).
  • CE (Coordinator Enable): configure uno de los módulos en 1, será el coordinador.

Luego aplique energía a todos los módulos. Colóquelos así: el coordinador estará en el convertidor USB-UART, y los otros dos (enrutadores) se ubicarán en las placas XBee Shield en la parte superior de Nucleo.

Si hiciste todo con cuidado, entonces lo bello sucederá. Los módulos se conectarán automáticamente a la red. Puede comunicarse con enrutadores de forma remota a través del coordinador.

Se parece a esto. Haga clic en el botón "Descubrir nodos de radio en la misma red".



Verá que dos módulos se detectaron y agregaron automáticamente: ¡


y puede cambiar sus parámetros sobre la marcha! 

Lo que sigue siendo genial: ahora puede ver el mapa de red si cambia al modo de trabajo de red en la esquina superior derecha.



Habiendo extendido los nodos de la red con el mouse, verá un triángulo. Tenga en cuenta que el tráfico al módulo de la derecha puede ir de dos maneras. Y si mueve los módulos en el espacio, verá que la imagen ha cambiado, y ahora, tal vez, otro módulo se volverá "extremo". Esta es la esencia de una red autoconfigurable.

3. Configure el módulo XBee sin quitarlo del escudo


Por supuesto, será más interesante trabajar con el módulo XBee no a través de una computadora, sino al controlarlo usando un programa en el microcontrolador. Es decir, conectarlo a la placa STM32Nucleo.
Analicemos cómo el módulo XBee puede comunicarse con el microcontrolador. Y comencemos con una pequeña tarea: ¿cómo configurar un módulo sin quitarlo del escudo de expansión? Debe admitir que mover el módulo de un lado a otro es inconveniente, al mismo tiempo que desea experimentar con los parámetros y es extraño por qué necesita un módulo USB-UART separado, porque en teoría hay uno en la placa STM32Nucleo.

La solución es simple: necesitamos convertir la placa Nucleo en un puente entre el módulo XBee y el convertidor USB de la placa.

Descripción general de la idea.


El microcontrolador STM32 que utilizamos tiene varias interfaces UART a bordo. Cada una de esas interfaces representa un canal de comunicación. Uno de ellos está conectado al convertidor USB-UART para que podamos comunicarnos con la computadora a través de USB en el terminal. Otros dos aún no se utilizan. Conectaremos el módulo XBee a uno de ellos, que también tiene dicho canal de comunicación. Puede elegir cualquier UART, hemos elegido por definición UART1.

El pinout se puede ver en MBed en la esquina superior derecha, presionando el botón de selección del tablero y luego en la pestaña Pinout. Por costumbre, puede ser bastante difícil percibir esta colorida imagen. Hay muchas cosas aquí, ya que la placa tiene muchas interfaces, y hay dos números de pin: relativos al microcontrolador (PA_5, PA_6 - numeración de pin), y relativos a la placa (D13, D12 - inscripciones en la placa Nucleo, los mismos números cerca de los terminales).


 
Resulta que en el microcontrolador, la interfaz UART1 se comunicará con el módulo XBee y UART2, como antes, con la computadora. El código interno redirigirá UART1 a UART2 y viceversa.



Por conexiones, se verá así:



Hacer un "puente" desde un microcontrolador


En nuestro caso, podemos usar puentes en el escudo para establecer los números a los que queremos conectar el módulo ZigBee. El módulo de comunicación TX se conectará al pin 2 de la placa (PA_9 en el microcontrolador) y RX al pin 8 (también conocido como PA_10).

Se verá así:



el código que tomamos se llama Serial Bridge. Este es el "puente" entre los dos canales de comunicación. Cargamos el código en el microcontrolador, que reenvía todo lo que llega a la entrada de la computadora a través de UART2, a UART1 y viceversa. Como si insertáramos una tubería entre dos fuentes de información (Linuxsoids lo entenderá). Conectamos un módulo XBee a UART1.
El código es muy simple, lo único que necesita cambiar es el número de pin al que está conectado el dispositivo. Es decir, hacerlos PA_9 y PA_10, como se indicó anteriormente.
#include "mbed.h"
// Make a serial bridge from a serial I/O device on mbed to the PC
Serial pc(USBTX, USBRX); // tx, rx
Serial device(PA_9, PA_10); // tx, rx
// Defaults to 9600 baud on each device - use .baud(baudrate) to change
int main() {
 pc.printf("Hello!");
 while(1) {
   if(pc.readable()) {
     device.putc(pc.getc());
   }
   if(device.readable()) {
     pc.putc(device.getc());
   }
 }
}

Es importante que si confunde el orden de las conclusiones, por ejemplo, comete un error y escribe PA_10, PA_9 en lugar de PA_9, PA_10, el orden incorrecto, el compilador no le informará un error y el programa mostrará un error en la consola al reiniciar:
pinmap not found for peripheral

y no avanzará, es decir, en principio, nada funcionará.

Después de descargar este código y configurar correctamente los puentes en el escudo, puede conectarse de forma segura al módulo XBee desde la computadora, tal como lo hizo anteriormente con el adaptador USB-UART sin quitarlo del escudo. Será detectado regularmente por el programa XCTU.

Incluso si no necesita esta funcionalidad, aún verifique que el programa esté funcionando, porque en el siguiente ejemplo nos comunicaremos con el módulo XBee desde el microcontrolador, y la conexión a través de UART1 ya debería estar establecida (es decir, los puentes están configurados correctamente y los números de pin están indicados en el programa) .

4. Adquisición de datos.


Veamos dos ejemplos simples: cómo recibir y enviar datos a nivel de microcontrolador, utilizando el módulo XBee como interfaz de comunicación externa.

Hay una biblioteca oficial de fabricantes: compañías Digi. Se encuentra en el repositorio de Mbed, hay comentarios útiles sobre el uso y la lógica del código.

Primero, aprenderemos cómo obtener datos; hay un ejemplo más fácil. Tendremos un módulo XBee conectado al convertidor USB-UART, enviaremos un saludo a la placa Nucleo e imprimirá este saludo a la consola.



Abre el proyecto en esta biblioteca. Como siempre, impórtelo al compilador en línea como un programa.

Arreglar bibliotecas para módulos S2C


Tenga en cuenta que si tiene módulos de la serie S2C: en



lugar de la biblioteca estándar, debe usar la solución: XBeeLib_Fixed . De lo contrario, estos programas no funcionarán. Se agrega al proyecto simplemente quitando la biblioteca XBeeLib de allí e importándola al proyecto XBeeLibFix. Nada más necesita ser cambiado.

Entonces: importe esta biblioteca al compilador en línea:



aparecerá la ventana de importación del proyecto. Allí debe elegir el destino, donde importamos:



como proyecto de destino, seleccione nuestro ejemplo XBeeZB_Receive_Data.



Después de lo cual la biblioteca se importará al proyecto, y luego con un movimiento en negrita eliminaremos la versión incorrecta de XBeeLib.



Compilación de ejemplo


Entonces, importó el ejemplo y reemplazó la biblioteca en él si es necesario.
Mire el código de muestra, es bastante simple. Define una función de devolución de llamada que se llama cuando se recibe un paquete. Esta función imprime el contenido del paquete recibido en la consola. Entonces, si le enviamos un saludo, ella también lo imprimirá.

Para que se compile el ejemplo, debe escribir en el ejemplo las conclusiones de las que somos responsables de comunicarnos con el módulo XBee, porque el programa no sabe a qué conclusiones conectamos el hardware.

Por lo tanto, vamos al archivo config.h y las líneas que contiene:

//#define RADIO_TX NC /* TODO: specify your setup's Serial TX pin connected to the XBee module DIN pin */
//#define RADIO_RX NC /* TODO: specify your setup's Serial RX pin connected to the XBee module DOUT pin */

Descomente, y en lugar de NC, escribimos, de acuerdo con qué conclusiones conectamos los puentes:

#define RADIO_TX PA_9
#define RADIO_RX PA_10

Del mismo modo, modificamos las líneas:

//#define DEBUG_TX NC /* TODO: specify your setup's Serial TX for debugging */
//#define DEBUG_RX NC /* TODO: specify your setup's Serial RX for debugging (optional) */

Nosotros escribimos:

#define DEBUG_TX USBTX
#define DEBUG_RX USBRX

Si encuentra un error durante la compilación que no puede encontrar device.h, simplemente actualice la biblioteca Mbed en el árbol del proyecto (haga clic con el botón derecho en él -> Actualizar).

Después de eso, el programa se compilará correctamente y podrá descargarlo en el tablero.

Ejecutando ejemplo


Después de mirar en la consola lo que escribe la placa Nucleo, verá lo siguiente:



¿Cómo enviamos datos? La opción más fácil: a través de la consola en el programa XCTU. Seleccione en el menú principal del programa: Herramientas - Enviar paquetes.



En la parte inferior hay una ventana con las palabras Enviar paquetes. Cree un nuevo paquete haciendo clic en el "más" a la derecha. Aparecerá una ventana para crear un nuevo paquete. Seleccione la pestaña HEX allí.



Ingrese allí el envío de datos:
7E 00 19 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 48 65 6C 6C 6F 20 58 42 65 65 21 5A
(usando el botón "Enviar paquete seleccionado" a la derecha de la lista de paquetes)

Verá el resultado en la consola del módulo de escucha:



Tenga en cuenta que solo imprimió la última parte del conjunto de bytes que envió. Esta es la carga útil real del mensaje. También tenga en cuenta que si envía "solo bytes" (cualquier combinación aleatoria de bytes), el receptor no los emitirá.

Si coloca un conjunto de bytes: 
48 65 6C 6C 6F 20 58 42 65 65 21
en cualquier convertidor HEX-ASCIII (por ejemplo, uno ), asegúrese de que significa "¡Hola XBee!"

Una tarea muy simple para la ejecución independiente: modifique el código de ejemplo para que muestre el texto del mensaje en ASCII, no HEX, y pueda leer este texto en el terminal.

5. Envío de datos


Por analogía con el ejemplo anterior, ahora consideramos enviar datos.



Todo está aquí, como en el ejemplo anterior. Solo con la diferencia de que ahora estamos abriendo el ejemplo XBeeZB_Send_Data.

Compilación de ejemplo


Es importante que si tiene un módulo S2C (está claramente escrito en él),



volverá a conectar la biblioteca con una solución, de lo contrario, nada funcionará para usted. Cómo hacer esto se describe en el ejemplo anterior. 

Además, aquí para una compilación exitosa, debe especificar los pines del controlador utilizados, simplemente puede copiarlos del ejemplo anterior.

Nos fijamos en el código de ejemplo en sí. Se mainutiliza varios métodos para enviar datos. Elija el más simple: envíe datos al coordinador. Ni siquiera necesitamos registrar la dirección del coordinador, porque él ya está registrado en la red. Por lo tanto, sin cambiar la muestra, comentamos mientras todas las líneas al final:
send_data_to_coordinator(xbee);
//send_broadcast_data(xbee);
//send_data_to_remote_node(xbee, remoteDevice);
//send_explicit_data_to_remote_node(xbee, remoteDevice);

Y cuando comience, verá esto:



(si no lo ve, simplemente reinicie el tablero)

¿Cómo puedo asegurarme de que los datos lleguen al coordinador? Por ejemplo, XCTU tiene modo de consola de red. Encendido por el botón en la esquina superior derecha. En este modo, verá todos los paquetes en la red. Por supuesto, al mismo tiempo, debe tener una conexión en serie con el coordinador. Y no olvides hacer clic en el botón Abrir en la esquina superior izquierda para que quede verde.



Puede ver información detallada sobre cada paquete en la red seleccionándolo en la lista de la izquierda:



desplazándose hasta el final del contenido del paquete, verá una línea con el texto "send_data_to_coordinator":



Puede probar otros métodos de envío de datos, pero allí (por ejemplo, para enviar a un nodo seleccionado por separado) debe registrar la dirección del nodo. Puede ver las direcciones de todos los módulos en el programa XCTU. Cómo registrar direcciones específicas se describe exhaustivamente en el ejemplo.

6. Hacemos la pasarela MQTT


Todo es genial, pero ahora me gustaría trabajar de alguna manera con estos datos fuera de la red XBee, por ejemplo, en Internet. Una forma de hacerlo es colocar el traductor de XBee en el popular protocolo MQTT. Luego, de la manera habitual, podremos suscribirnos a notificaciones de eventos y enviar comandos desde la interfaz de usuario, y este programa puede ubicarse en cualquier lugar (si usa un servidor MQTT externo, en lugar de local), y no solo en nuestra computadora.

A continuación hay una instrucción. En resumen, el programa lanzado en la computadora intercambiará datos del coordinador de red a través de una conexión USB. Ella transmitirá estos datos al protocolo MQTT.


Instalar y configurar XBMQ


El programa que usaremos como puerta de enlace MQTT se llama XBMQ, es abierto y gratuito. Existe en dos versiones:

Se considerará la versión de Java, aunque esto no es demasiado fundamental: no lo programaremos de todos modos, solo lo instalaremos y lo utilizaremos.
Para que el programa funcione, necesitará la biblioteca RXTX, se puede instalar simplemente desde el repositorio:
sudo apt-get install librxtx-java

Y, por supuesto, necesita el JDK (Kit de desarrollo de Java). Existe en dos versiones: de Oracle y OpenJDK, se recomienda la segunda. Lo más probable es que OpenJDK ya esté instalado en su sistema; de lo contrario, vuelva a instalarlo. Java necesita un máximo de 8º puesto que javax.xml.bind está excluido de Java 11 y debe elegir una alternativa con JDK-8 como opción predeterminada, o crear una configuración para este caso.

Descargue el repositorio del programa XBMQ:
git clone https://github.com/angryelectron/xbmq-java

Después de descargar los códigos fuente, recopilaremos el archivo binario del programa. Equipo
ant dist

ensamblará un proyecto para todos los principales sistemas operativos. El programa compilado final estará en la carpeta dist.
Ahora configure este programa. Abrir documento
dist/xbmq.properties

y mira allí:
#
# Xbmq Properties.
#
#port = /dev/ttyUSB0
#baud = 9600
#rootTopic = ab123
#broker = tcp://test.mosquitto.org:1883
#username = user
#password = password

Descomente y cambie sus parámetros. Los parámetros aquí son: puerto de conexión del coordinador de ZigBee, velocidad, tema raíz (todos los datos caerán en él), dirección del servidor MQTT, nombre de usuario y contraseña (si el servidor los requiere).

En este ejemplo, solo la dirección del servidor ha cambiado: al servidor mqtt local (mosquitto estándar de Linux). Todo lo demás se dejó por defecto:

port = /dev/ttyUSB0
baud = 9600
rootTopic = ab123
broker = tcp://127.0.0.1:1883
username = user
password = password

Antes del siguiente paso, debe instalar y ejecutar el servidor local mosquitto MQTT: 
sudo apt-get install mosquitto


Lanzamiento XBMQ


Finalmente, el programa puede ser lanzado. Después de haber conectado el convertidor USB-UART con el módulo coordinador insertado, ejecute el programa:
./dist/xbmq.sh

Cuando ejecuta el script, vemos la línea en la consola:
INFO - Starting XBMQ gateway ab123/0013A2004154EA46

Por último, esta es exactamente la dirección de nuestro coordinador. Si se suscribe a todos los temas con un cliente MQTT externo, verá inmediatamente 2 mensajes:
  • En el tema ab123/0013A2004154EA46/online: será 1, esta es Última Voluntad (un buen ejemplo de cómo se utilizan estos parámetros "especiales" en la vida real)
  • El tema ab123/0013A2004154EA46/logcontendrá la misma frase de depuración "Iniciando la puerta de enlace XBMQ ..." que ya vio en la consola

Ahora intente enviar un mensaje desde algún otro módulo XBee externo; por ejemplo, tome un ejemplo con el envío de datos.

Como resultado, en el programa MQTT.fx, si se suscribe a todos los temas (#), verá esto:


La ventana del programa MQTT.fx.

Es decir, al ejecutar el ejemplo estudiado anteriormente con el envío de un mensaje al coordinador, veremos este texto ("send_data_to_coordinator") como parte Paquete MQTT. El tema principal común para nosotros es el especificado en la configuración del programa ( ab123 , puede cambiarlo por su cuenta). Luego viene la dirección del coordinador, luego la dirección del módulo del que proviene el mensaje. Finalmente, este tema se llama DataOut, porque son datos salientes. 

Por supuesto, verá dicha imagen en cualquier otro cliente MQTT, ya sea MQTTLens o inclusomosquitto_suben la consola

Un par de comentarios finales:
  • En el buen sentido, este programa debería funcionar en modo demonio. Hay un archivo xbmqd para esto, y README dice cómo usarlo.
  • Tenga en cuenta que, dado que xbmqcontiene el puerto, no podemos ejecutar este programa al mismo tiempo que XCTU.

¡Ahora puede trabajar con su sistema utilizando el protocolo MQTT y escribir programas complejos e interesantes!


Tatyana Volkova - La autora del programa de capacitación en Internet de las Cosas rastrea "Samsung IT Academy", especialista en programas de responsabilidad social corporativa en el Centro de Investigación de Samsung

All Articles