MQTT опубликовать с использованием URL HIVEMQ - PullRequest
0 голосов
/ 12 октября 2018

Как я могу опубликовать в теме MQTT, используя URL.

т.е. "http://127.0.0.1/cmnd/power/on" отправит" на"на" power"тема.

Ps: я использую HiveMQ

Ответы [ 2 ]

0 голосов
/ 29 января 2019

MQTT обычно использует TCP в качестве базового протокола (HTTP только в контексте веб-сокета).

Пример Java для подключения клиента mqtt с использованием клиента paho mqtt lib:

import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
...

final MqttClient mqttClient = new MqttClient("tcp://localhost:1883", 
      MqttClient.generateClientId(), 
      new MemoryPersistence());  
opt.setUserName("User");
...
mqttClient.connect(opt);
...

//subscribe to all topics 
mqttClient.subscribe("#");

//publish your status ON with a QoS 1 message that is retained 
mqttClient.publish("cmnd/power, ("on").getBytes(), 1, true);
0 голосов
/ 12 октября 2018

Сначала вам нужно установить mqtt Connection, и после успешного подключения вы можете отправить любую полезную информацию в нужную тему.Вот как вам нужно установить соединение.

 String clientId = MqttClient.generateClientId();
 MqttConnectOptions options = new MqttConnectOptions();
 options.setUserName("USERNAME");
 options.setPassword("PASSWORD".toCharArray());
 MqttAndroidClient client =
    new MqttAndroidClient(this.getApplicationContext(), "tcp://broker.hivemq.com:1883",
                          clientId);

  try {
       IMqttToken token = client.connect(options);
       token.setActionCallback(new IMqttActionListener() {
       @Override
        public void onSuccess(IMqttToken asyncActionToken) {
        // We are connected
        Log.d(TAG, "onSuccess");
       }

      @Override
      public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
        // Something went wrong e.g. connection timeout or firewall problems
        Log.d(TAG, "onFailure");
       }
      });
     } catch (MqttException e) {
    e.printStackTrace();
 }

You can publish message to topic power 


     String topic = "power";
     String payload = "ON";
     byte[] encodedPayload = new byte[0];

   try {
       encodedPayload = payload.getBytes("UTF-8");
       MqttMessage message = new MqttMessage(encodedPayload);
       client.publish(topic, message);
     }  catch (UnsupportedEncodingException | MqttException e) {
      e.printStackTrace();
   }
...