How can I publish to an MQTT topic using a URL.
i.e. "http://127.0.0.1/cmnd/power/on" will send "on" to "power" topic.
Ps: I am using HiveMQ
How can I publish to an MQTT topic using a URL.
i.e. "http://127.0.0.1/cmnd/power/on" will send "on" to "power" topic.
Ps: I am using HiveMQ
MQTT normally uses TCP as the underlaying protocol, (HTTP only in websocket context).
An Java-Example for connecting an mqtt client with the usage of the paho mqtt client 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);
First you need make mqtt Connection and once the connection is successful you could send any payload to desired topic. This is how you need to initiate 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();
}