es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El nodo de publicación MQTT de Node-Red no se conecta al broker mosquitto cuando se activan los websockets.

Configuración de Mosquitto:

por_defecto_para_los_ajustes_del_ascoltatore true
ascoltatore 1883
protocolo mqtt
ascoltatore 9001
protocolo websockets
require_certificate false
tipo_de_registro all
permitir_anónimos true

En Node-Red, tengo un nodo de publicación MQTT configurado para publicar en localhost:1883.

Cuando ejecuto mosquitto sin las líneas ascoltatore 9001 y protocolo websockets, node-red se conecta correctamente y publica en un tema. Pero necesito los websockets para una aplicación de React. Cuando lo ejecuto con los websockets en el puerto 9001, obtengo el siguiente error en mosquitto:

Nueva conexión desde 127.0.0.1:61482 en el puerto 1883.
Enviando CONNACK a nodered_7b952a504a975460 (0, 5)
Cliente nodered_7b952a504a975460 desconectado, no autorizado.

Incluso he intentado usar el websocket como la URL para el nodo de publicación de node-red de esta manera: ws://localhost:9001 y ws://localhost:9001/mqtt. Ninguno funciona.

¿Qué tengo que hacer para poder publicar desde node-red a mi aplicación React a través de un broker mosquitto local?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema aquí es con la configuración de autenticación en la configuración de mosquitto. El mensaje de error indica que el cliente (node-red) no está autorizado para conectarse.

    Para resolver este problema, puede habilitar la autenticación estableciendo allow_anonymous en false en la configuración de mosquitto. Esto requerirá que los clientes se autentiquen antes de poder conectarse al broker.

    Luego puede crear un nombre de usuario y una contraseña para node-red en el archivo de contraseña de mosquitto. Para hacer esto, puede usar el comando mosquitto_passwd.

    Una vez que haya creado el archivo de contraseña, puede actualizar la configuración de mosquitto para incluir las siguientes líneas:

    password_file /ruta/al/archivo/de/contraseña
    acl_file /ruta/al/archivo/de/lista/de/control/de/acceso
    

    La opción password_file especifica la ruta al archivo de contraseña que contiene los nombres de usuario y contraseñas para los clientes. La opción acl_file especifica la ruta a un archivo de lista de control de acceso (ACL) que define los permisos para cada cliente.

    En el archivo de ACL, puede especificar los permisos para que node-red publique en el tema deseado. Por ejemplo:

    user node-red
    topic write mi/tema
    

    Esto permitirá que el cliente node-red publique en el tema mi/tema.

    Finalmente, puede actualizar el nodo de publicación MQTT de node-red para usar el puerto y las credenciales apropiadas. Por ejemplo:

    Host: localhost
    Port: 1883
    Username: node-red
    Password: ... 
    Topic: mi/tema
    

    Asegúrese de utilizar el nombre de usuario y la contraseña correctos que creó anteriormente.

    Con estos cambios, node-red debería poder publicar en el tema deseado a través del broker mosquitto utilizando websockets.

Comments are closed.