Получение полезной нагрузки Mosquitto MQTT на терминале, но не на веб-сокете? - PullRequest
0 голосов
/ 07 мая 2019

Используя внешнее устройство TCP / IP, я могу получать полезную нагрузку MQTT от устройства через терминал, но когда я внедряю в свое приложение фляги, используя JavaScript, я могу подключиться и подписаться на тему, но у меня нет данных, поступающих через.

Я попытался подписаться, используя тот же порт и IP-адрес с этим примером MQTT онлайн http://www.lazyengineers.com/mqtt-websocket/and имеют ту же проблему.Есть ли что-то, что мне нужно включить в мой mosquitto.conf, чтобы заставить его работать через Websocket?

Мой файл mosquitto.conf выглядит следующим образом

 # Place your local configuration in /etc/mosquitto/conf.d/
 #
 # A full description of the configuration file is at
 # /usr/share/doc/mosquitto/examples/mosquitto.conf.example

 pid_file /var/run/mosquitto.pid

 persistence true
 persistence_location /var/lib/mosquitto/

 log_dest topic
 log_type error
 log_type warning
 log_type notice
 log_dest file /var/log/mosquitto/mosquitto.log

 include_dir /etc/mosquitto/conf.d

 listener 8083
 protocol websockets

В моем javascript я используюPahoClient и подключиться с помощью хоста: 10.0.0.15 порт 8083 и случайный CLientID.Я подписываюсь на тему Advantech / 00D0C9FA9984 / data.Связь с брокером и темой работают, но после подписки на тему данные не поступают.Мой код выглядит следующим образом:

 <div class="wrapper">
 <h1>mqtt-demo</h1>
 <form id="connection-information-form">
    <b>Hostname or IP Address:</b> 
    <input id="host" type="text" name="host" value="10.0.0.15"> 
    <br>

    <b>Port:</b>
    <input id="port" type="text" name="port" value="8083"><br>
    <b>Topic:</b>
    <input id="topic" type="text" name="topic" 
    value="Advantech/00D0C9FA9984/data"><br><br>

    <input type="button" onclick="startConnect()" value="Connect">
    <input type="button" onclick="startDisconnect()" 
   value="Disconnect">
 </form>
 <div id="messages"></div>
 </div>   


  <script>
 // Called after form input is processed
 function startConnect() {
   // Generate a random client ID
   clientID = "clientID-" + parseInt(Math.random() * 100);

   // Fetch the hostname/IP address and port number from the form
   host = document.getElementById("host").value;
   port = document.getElementById("port").value;

   // Print output for the user in the messages div
   document.getElementById("messages").innerHTML += 
    '<span>Connecting to: ' + host + ' on port: ' + port + 
    '</span><br/>';
   document.getElementById("messages").innerHTML += '<span>Using the following client value: ' + clientID + '</span><br/>';

   // Initialize new Paho client connection
   client = new Paho.MQTT.Client(host, Number(port), clientID);

   // Set callback handlers
   client.onConnectionLost = onConnectionLost;
   client.onMessageArrived = onMessageArrived;

   // Connect the client, if successful, call onConnect function
   client.connect({ 
     onSuccess: onConnect,
   });
 }

 // Called when the client connects
 function onConnect() {
   // Fetch the MQTT topic from the form
   topic = document.getElementById("topic").value;

   // Print output for the user in the messages div
   document.getElementById("messages").innerHTML += '<span>Subscribing to: ' + topic + '</span><br/>';

   // Subscribe to the requested topic
   client.subscribe(topic);
 }

 // Called when the client loses its connection
 function onConnectionLost(responseObject) {
   document.getElementById("messages").innerHTML += '<span>ERROR: Connection lost</span><br/>';
   if (responseObject.errorCode !== 0) {
     document.getElementById("messages").innerHTML += '<span>ERROR: ' + + responseObject.errorMessage + '</span><br/>';
   }
 }  

 // Called when a message arrives
 function onMessageArrived(message) {
   console.log("onMessageArrived: " + message.payloadString);
   document.getElementById("messages").innerHTML += '<span>Topic: ' + 
   message.destinationName + '  | ' + message.payloadString + '</span <br/>';
 }

 // Called when the disconnection button is pressed
 function startDisconnect() {
   client.disconnect();
   document.getElementById("messages").innerHTML += '<span>Disconnected</span><br/>';
 }
  </script>

Когда я запускаю следующую команду в терминале:

mosquitto_sub -h 10.0.0.15 -t Advantech/00D0C9FA9984/data

Я вижу следующие данные:

{"s":1,"t":0,"q":192,"c":1,"ai1":4.000,"ai_st1":1,"ai2":-0.000,"ai_st2":1,"ai3":-0.000,"ai_st3":1,"ai4":-0.000,"ai_st4":1,"ai5":-0.000,"ai_st5":1,"ai6":-0.000,"ai_st6":1,"ai7":-0.000,"ai_st7":1,"ai8":-0.000,"ai_st8":1,"do1":false,"do_st1":1,"do2":false,"do_st2":1}

Я быхотел бы видеть обновление полезной нагрузки в моем <div id="messages"></div>

...